diff --git a/libxenia.vcxproj b/libxenia.vcxproj
index 2a6e568bb..f6514e97e 100644
--- a/libxenia.vcxproj
+++ b/libxenia.vcxproj
@@ -388,7 +388,6 @@
-
diff --git a/libxenia.vcxproj.filters b/libxenia.vcxproj.filters
index 42cf5c742..f5c621472 100644
--- a/libxenia.vcxproj.filters
+++ b/libxenia.vcxproj.filters
@@ -1341,9 +1341,6 @@
third_party\xbyak\xbyak
-
- src\xenia\kernel
-
src\xenia\apu
diff --git a/src/xenia/kernel/util/shim_utils.h b/src/xenia/kernel/util/shim_utils.h
index 664709a30..95908c996 100644
--- a/src/xenia/kernel/util/shim_utils.h
+++ b/src/xenia/kernel/util/shim_utils.h
@@ -107,6 +107,7 @@ template
class ParamBase : public Param {
public:
ParamBase() : Param(), value_(0) {}
+ ParamBase(T value) : Param(), value_(value) {}
ParamBase(Init& init) : Param(init) { LoadValue(init); }
ParamBase& operator=(const T& other) {
value_ = other;
@@ -206,6 +207,31 @@ class PrimitivePointerParam : public ParamBase {
xe::be* host_ptr_;
};
+template
+class StringPointerParam : public ParamBase {
+ public:
+ StringPointerParam(Init& init) : ParamBase(init) {
+ host_ptr_ = value_ ? reinterpret_cast(
+ init.ppc_context->virtual_membase + value_)
+ : nullptr;
+ }
+ StringPointerParam(CHAR* host_ptr) : ParamBase(), host_ptr_(host_ptr) {}
+ StringPointerParam& operator=(const CHAR*& other) {
+ host_ptr_ = other;
+ return *this;
+ }
+ uint32_t guest_address() const { return value_; }
+ uintptr_t host_address() const {
+ return reinterpret_cast(host_ptr_);
+ }
+ STR value() const { return STR(host_ptr_); }
+ operator CHAR*() const { return host_ptr_; }
+ operator bool() const { return host_ptr_ != nullptr; }
+
+ protected:
+ CHAR* host_ptr_;
+};
+
template
class TypedPointerParam : public ParamBase {
public:
@@ -265,9 +291,11 @@ using lpdword_t = const shim::PrimitivePointerParam&;
using lpqword_t = const shim::PrimitivePointerParam&;
using lpfloat_t = const shim::PrimitivePointerParam&;
using lpdouble_t = const shim::PrimitivePointerParam&;
+using lpstring_t = const shim::StringPointerParam&;
+using lpwstring_t = const shim::StringPointerParam&;
using function_t = const shim::ParamBase&;
using unknown_t = const shim::ParamBase&;
-using unknown_pointer_t = const shim::PointerParam&;
+using lpunknown_t = const shim::PointerParam&;
template
using pointer_t = const shim::TypedPointerParam&;
diff --git a/src/xenia/kernel/xam_info.cc b/src/xenia/kernel/xam_info.cc
index ccee2b23d..008956582 100644
--- a/src/xenia/kernel/xam_info.cc
+++ b/src/xenia/kernel/xam_info.cc
@@ -65,13 +65,6 @@ SHIM_CALL XGetLanguage_shim(PPCContext* ppc_context,
SHIM_SET_RETURN_32(desired_language);
}
-SHIM_CALL XamVoiceIsActiveProcess_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- XELOGD("XamVoiceIsActiveProcess()");
- // Returning 0 here will short-circuit a bunch of voice stuff.
- SHIM_SET_RETURN_32(0);
-}
-
SHIM_CALL XamGetExecutionId_shim(PPCContext* ppc_context,
KernelState* kernel_state) {
uint32_t info_ptr = SHIM_GET_ARG_32(0);
@@ -217,7 +210,6 @@ void xe::kernel::xam::RegisterInfoExports(
SHIM_SET_MAPPING("xam.xex", XGetGameRegion, state);
SHIM_SET_MAPPING("xam.xex", XGetLanguage, state);
- SHIM_SET_MAPPING("xam.xex", XamVoiceIsActiveProcess, state);
SHIM_SET_MAPPING("xam.xex", XamGetExecutionId, state);
SHIM_SET_MAPPING("xam.xex", XamLoaderSetLaunchData, state);
diff --git a/src/xenia/kernel/xam_module.cc b/src/xenia/kernel/xam_module.cc
index 4ec00c02a..be48c4a44 100644
--- a/src/xenia/kernel/xam_module.cc
+++ b/src/xenia/kernel/xam_module.cc
@@ -29,8 +29,6 @@ XamModule::XamModule(Emulator* emulator, KernelState* kernel_state)
xam::RegisterNotifyExports(export_resolver_, kernel_state_);
xam::RegisterUIExports(export_resolver_, kernel_state_);
xam::RegisterUserExports(export_resolver_, kernel_state_);
- xam::RegisterVideoExports(export_resolver_, kernel_state_);
- xam::RegisterVoiceExports(export_resolver_, kernel_state_);
}
std::vector xam_exports;
diff --git a/src/xenia/kernel/xam_private.h b/src/xenia/kernel/xam_private.h
index 1167f68e0..3b889f44b 100644
--- a/src/xenia/kernel/xam_private.h
+++ b/src/xenia/kernel/xam_private.h
@@ -38,10 +38,6 @@ void RegisterUIExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
void RegisterUserExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
-void RegisterVideoExports(xe::cpu::ExportResolver* export_resolver,
- KernelState* kernel_state);
-void RegisterVoiceExports(xe::cpu::ExportResolver* export_resolver,
- KernelState* kernel_state);
} // namespace xam
} // namespace kernel
diff --git a/src/xenia/kernel/xam_video.cc b/src/xenia/kernel/xam_video.cc
index eda28bd75..e43818439 100644
--- a/src/xenia/kernel/xam_video.cc
+++ b/src/xenia/kernel/xam_video.cc
@@ -18,27 +18,14 @@ namespace kernel {
// TODO(benvanik): actually check to see if these are the same.
void VdQueryVideoMode(pointer_t video_mode);
-SHIM_CALL XGetVideoMode_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t video_mode_ptr = SHIM_GET_ARG_32(0);
- X_VIDEO_MODE* video_mode = (X_VIDEO_MODE*)SHIM_MEM_ADDR(video_mode_ptr);
- XELOGD("XGetVideoMode(%.8X)", video_mode_ptr);
-
- VdQueryVideoMode(video_mode);
+void XGetVideoMode(pointer_t video_mode) {
+ VdQueryVideoMode(std::move(video_mode));
}
+DECLARE_XAM_EXPORT(XGetVideoMode, ExportTag::kVideo | ExportTag::kStub);
-SHIM_CALL XGetVideoCapabilities_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- XELOGD("XGetVideoCapabilities()");
- SHIM_SET_RETURN_32(0);
-}
+dword_result_t XGetVideoCapabilities() { return 0; }
+DECLARE_XAM_EXPORT(XGetVideoCapabilities, ExportTag::kVideo | ExportTag::kStub);
} // namespace kernel
} // namespace xe
-
-void xe::kernel::xam::RegisterVideoExports(
- xe::cpu::ExportResolver* export_resolver, KernelState* kernel_state) {
- SHIM_SET_MAPPING("xam.xex", XGetVideoCapabilities, state);
- SHIM_SET_MAPPING("xam.xex", XGetVideoMode, state);
-}
diff --git a/src/xenia/kernel/xam_voice.cc b/src/xenia/kernel/xam_voice.cc
index 3aa4d446c..2eabee165 100644
--- a/src/xenia/kernel/xam_voice.cc
+++ b/src/xenia/kernel/xam_voice.cc
@@ -17,44 +17,26 @@
namespace xe {
namespace kernel {
-SHIM_CALL XamVoiceCreate_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t unk1 = SHIM_GET_ARG_32(0); // 0
- uint32_t unk2 = SHIM_GET_ARG_32(1); // 0xF
- uint32_t out_voice_ptr = SHIM_GET_ARG_32(2);
-
- XELOGD("XamVoiceCreate(%.8X, %.8X, %.8X)", unk1, unk2, out_voice_ptr);
+dword_result_t XamVoiceIsActiveProcess() {
+ // Returning 0 here will short-circuit a bunch of voice stuff.
+ return 0;
+}
+DECLARE_XAM_EXPORT(XamVoiceIsActiveProcess, ExportTag::kStub);
+dword_result_t XamVoiceCreate(unknown_t unk1, // 0
+ unknown_t unk2, // 0xF
+ lpdword_t out_voice_ptr) {
// Null out the ptr.
- SHIM_SET_MEM_32(out_voice_ptr, 0);
-
- SHIM_SET_RETURN_32(X_ERROR_ACCESS_DENIED);
+ out_voice_ptr.Zero();
+ return X_ERROR_ACCESS_DENIED;
}
+DECLARE_XAM_EXPORT(XamVoiceCreate, ExportTag::kStub);
-SHIM_CALL XamVoiceClose_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t voice_ptr = SHIM_GET_ARG_32(0);
+dword_result_t XamVoiceClose(lpunknown_t voice_ptr) { return 0; }
+DECLARE_XAM_EXPORT(XamVoiceClose, ExportTag::kStub);
- XELOGD("XamVoiceClose(%.8X)", voice_ptr);
-
- SHIM_SET_RETURN_32(0);
-}
-
-SHIM_CALL XamVoiceHeadsetPresent_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t voice_ptr = SHIM_GET_ARG_32(0);
-
- XELOGD("XamVoiceHeadsetPresent(%.8X)", voice_ptr);
-
- SHIM_SET_RETURN_32(0);
-}
+dword_result_t XamVoiceHeadsetPresent(lpunknown_t voice_ptr) { return 0; }
+DECLARE_XAM_EXPORT(XamVoiceHeadsetPresent, ExportTag::kStub);
} // namespace kernel
} // namespace xe
-
-void xe::kernel::xam::RegisterVoiceExports(
- xe::cpu::ExportResolver* export_resolver, KernelState* kernel_state) {
- SHIM_SET_MAPPING("xam.xex", XamVoiceCreate, state);
- SHIM_SET_MAPPING("xam.xex", XamVoiceClose, state);
- SHIM_SET_MAPPING("xam.xex", XamVoiceHeadsetPresent, state);
-}
diff --git a/src/xenia/kernel/xboxkrnl_debug.cc b/src/xenia/kernel/xboxkrnl_debug.cc
index 9c9cde089..9353b8fe8 100644
--- a/src/xenia/kernel/xboxkrnl_debug.cc
+++ b/src/xenia/kernel/xboxkrnl_debug.cc
@@ -17,210 +17,15 @@
namespace xe {
namespace kernel {
-#define SHIM_GPR_32(n) (uint32_t)(ppc_context->r[n])
-
-// TODO: clean me up!
-SHIM_CALL DbgPrint_shim(PPCContext* ppc_context, KernelState* kernel_state) {
- uint32_t format_ptr = SHIM_GET_ARG_32(0);
- if (format_ptr == 0) {
- SHIM_SET_RETURN_32(-1);
- return;
- }
-
- const char* format = (const char*)SHIM_MEM_ADDR(format_ptr);
-
- int arg_index = 0;
-
- char buffer[512]; // TODO: ensure it never writes past the end of the
- // buffer...
- char* b = buffer;
- for (; *format != '\0'; ++format) {
- const char* start = format;
-
- if (*format != '%') {
- *b++ = *format;
- continue;
- }
-
- ++format;
- if (*format == '\0') {
- break;
- }
-
- if (*format == '%') {
- *b++ = *format;
- continue;
- }
-
- const char* end;
- end = format;
-
- // skip flags
- while (*end == '-' || *end == '+' || *end == ' ' || *end == '#' ||
- *end == '0') {
- ++end;
- }
-
- if (*end == '\0') {
- break;
- }
-
- int arg_extras = 0;
-
- // skip width
- if (*end == '*') {
- ++end;
- arg_extras++;
- } else {
- while (*end >= '0' && *end <= '9') {
- ++end;
- }
- }
-
- if (*end == '\0') {
- break;
- }
-
- // skip precision
- if (*end == '.') {
- ++end;
-
- if (*end == '*') {
- ++end;
- ++arg_extras;
- } else {
- while (*end >= '0' && *end <= '9') {
- ++end;
- }
- }
- }
-
- if (*end == '\0') {
- break;
- }
-
- // get length
- int arg_size = 4;
-
- if (*end == 'h') {
- ++end;
- arg_size = 4;
- if (*end == 'h') {
- ++end;
- }
- } else if (*end == 'l') {
- ++end;
- arg_size = 4;
- if (*end == 'l') {
- ++end;
- arg_size = 8;
- }
- } else if (*end == 'j') {
- arg_size = 8;
- ++end;
- } else if (*end == 'z') {
- arg_size = 4;
- ++end;
- } else if (*end == 't') {
- arg_size = 8;
- ++end;
- } else if (*end == 'L') {
- arg_size = 8;
- ++end;
- }
-
- if (*end == '\0') {
- break;
- }
-
- if (*end == 'd' || *end == 'i' || *end == 'u' || *end == 'o' ||
- *end == 'x' || *end == 'X' || *end == 'f' || *end == 'F' ||
- *end == 'e' || *end == 'E' || *end == 'g' || *end == 'G' ||
- *end == 'a' || *end == 'A' || *end == 'c') {
- char local[512];
- local[0] = '\0';
- strncat(local, start, end + 1 - start);
-
- assert_true(arg_size == 8 || arg_size == 4);
- if (arg_size == 8) {
- if (arg_extras == 0) {
- uint64_t value =
- arg_index < 7
- ? SHIM_GET_ARG_64(1 + arg_index)
- : SHIM_MEM_32(SHIM_GPR_32(1) + 16 + ((1 + arg_index) * 8));
- int result = sprintf(b, local, value);
- b += result;
- arg_index++;
- } else {
- assert_true(false);
- }
- } else if (arg_size == 4) {
- if (arg_extras == 0) {
- uint64_t value =
- arg_index < 7
- ? SHIM_GET_ARG_64(1 + arg_index)
- : SHIM_MEM_32(SHIM_GPR_32(1) + 16 + ((1 + arg_index) * 8));
- int result = sprintf(b, local, (uint32_t)value);
- b += result;
- arg_index++;
- } else {
- assert_true(false);
- }
- }
- } else if (*end == 'n') {
- assert_true(arg_size == 4);
- if (arg_extras == 0) {
- uint32_t value = arg_index < 7
- ? SHIM_GET_ARG_32(1 + arg_index)
- : (uint32_t)SHIM_MEM_64(SHIM_GPR_32(1) + 16 +
- ((1 + arg_index) * 8));
- SHIM_SET_MEM_32(value, (uint32_t)((b - buffer) / sizeof(char)));
- arg_index++;
- } else {
- assert_true(false);
- }
- } else if (*end == 's' || *end == 'p') {
- char local[512];
- local[0] = '\0';
- strncat(local, start, end + 1 - start);
-
- assert_true(arg_size == 4);
- if (arg_extras == 0) {
- uint32_t value = arg_index < 7
- ? SHIM_GET_ARG_32(1 + arg_index)
- : (uint32_t)SHIM_MEM_64(SHIM_GPR_32(1) + 16 +
- ((1 + arg_index) * 8));
- const void* pointer = (const void*)SHIM_MEM_ADDR(value);
- int result = sprintf(b, local, pointer);
- b += result;
- arg_index++;
- } else {
- assert_true(false);
- }
- } else {
- assert_true(false);
- break;
- }
-
- format = end;
- }
- *b++ = '\0';
-
- XELOGD("(DbgPrint) %s", buffer);
-}
-
-SHIM_CALL DbgBreakPoint_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- XELOGD("DbgBreakPoint()");
- DebugBreak();
-}
+void DbgBreakPoint() { DebugBreak(); }
+DECLARE_XBOXKRNL_EXPORT(DbgBreakPoint, ExportTag::kImportant);
// https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
typedef struct {
- xe::be type;
- xe::be name_ptr;
- xe::be thread_id;
- xe::be flags;
+ xe::be type;
+ xe::be name_ptr;
+ xe::be thread_id;
+ xe::be flags;
} X_THREADNAME_INFO;
static_assert_size(X_THREADNAME_INFO, 0x10);
@@ -234,24 +39,24 @@ typedef struct {
xe::be exception_information[15];
} X_EXCEPTION_RECORD;
static_assert_size(X_EXCEPTION_RECORD, 0x50);
+void AppendParam(StringBuffer& string_buffer,
+ pointer_t record) {
+ string_buffer.AppendFormat("%.8X(%.8X)", record.guest_address(),
+ record->exception_code);
+}
-SHIM_CALL RtlRaiseException_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t record_ptr = SHIM_GET_ARG_32(0);
-
- auto record = reinterpret_cast(SHIM_MEM_ADDR(record_ptr));
-
- XELOGD("RtlRaiseException(%.8X(%.8X))", record_ptr, record->exception_code);
-
+void RtlRaiseException(pointer_t record) {
if (record->exception_code == 0x406D1388) {
// SetThreadName. FFS.
// https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
// TODO: check record->number_parameters to make sure it's a correct size
- auto thread_info = reinterpret_cast(&record->exception_information[0]);
+ auto thread_info =
+ reinterpret_cast(&record->exception_information[0]);
assert_true(thread_info->type == 0x1000);
- const char* name = (const char*)SHIM_MEM_ADDR(thread_info->name_ptr);
+ auto name =
+ kernel_memory()->TranslateVirtual(thread_info->name_ptr);
object_ref thread;
if (thread_info->thread_id == -1) {
@@ -259,7 +64,7 @@ SHIM_CALL RtlRaiseException_shim(PPCContext* ppc_context,
thread = retain_object(XThread::GetCurrentThread());
} else {
// Lookup thread by ID.
- thread = kernel_state->GetThreadByID(thread_info->thread_id);
+ thread = kernel_state()->GetThreadByID(thread_info->thread_id);
}
if (thread) {
@@ -282,39 +87,20 @@ SHIM_CALL RtlRaiseException_shim(PPCContext* ppc_context,
// This is going to suck.
DebugBreak();
}
+DECLARE_XBOXKRNL_EXPORT(RtlRaiseException, ExportTag::kImportant);
-void xeKeBugCheckEx(uint32_t code, uint32_t param1, uint32_t param2,
- uint32_t param3, uint32_t param4) {
+void KeBugCheckEx(dword_t code, dword_t param1, dword_t param2, dword_t param3,
+ dword_t param4) {
XELOGD("*** STOP: 0x%.8X (0x%.8X, 0x%.8X, 0x%.8X, 0x%.8X)", code, param1,
param2, param3, param4);
fflush(stdout);
DebugBreak();
assert_always();
}
+DECLARE_XBOXKRNL_EXPORT(KeBugCheckEx, ExportTag::kImportant);
-SHIM_CALL KeBugCheck_shim(PPCContext* ppc_context, KernelState* kernel_state) {
- uint32_t code = SHIM_GET_ARG_32(0);
- xeKeBugCheckEx(code, 0, 0, 0, 0);
-}
-
-SHIM_CALL KeBugCheckEx_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t code = SHIM_GET_ARG_32(0);
- uint32_t param1 = SHIM_GET_ARG_32(1);
- uint32_t param2 = SHIM_GET_ARG_32(2);
- uint32_t param3 = SHIM_GET_ARG_32(3);
- uint32_t param4 = SHIM_GET_ARG_32(4);
- xeKeBugCheckEx(code, param1, param2, param3, param4);
-}
+void KeBugCheck(dword_t code) { KeBugCheckEx(code, 0, 0, 0, 0); }
+DECLARE_XBOXKRNL_EXPORT(KeBugCheck, ExportTag::kImportant);
} // namespace kernel
} // namespace xe
-
-void xe::kernel::xboxkrnl::RegisterDebugExports(
- xe::cpu::ExportResolver* export_resolver, KernelState* kernel_state) {
- SHIM_SET_MAPPING("xboxkrnl.exe", DbgPrint, state);
- SHIM_SET_MAPPING("xboxkrnl.exe", DbgBreakPoint, state);
- SHIM_SET_MAPPING("xboxkrnl.exe", RtlRaiseException, state);
- SHIM_SET_MAPPING("xboxkrnl.exe", KeBugCheck, state);
- SHIM_SET_MAPPING("xboxkrnl.exe", KeBugCheckEx, state);
-}
diff --git a/src/xenia/kernel/xboxkrnl_error.cc b/src/xenia/kernel/xboxkrnl_error.cc
index 3edddb180..888a7257e 100644
--- a/src/xenia/kernel/xboxkrnl_error.cc
+++ b/src/xenia/kernel/xboxkrnl_error.cc
@@ -7,8 +7,6 @@
******************************************************************************
*/
-#include "xenia/kernel/xboxkrnl_error.h"
-
#include
#include "xenia/base/atomic.h"
@@ -24,979 +22,785 @@
namespace xe {
namespace kernel {
-struct error_lookup_table
-{
- uint32_t base_code;
- size_t count;
- const uint32_t* entries;
+struct error_lookup_table {
+ uint32_t base_code;
+ size_t count;
+ const uint32_t* entries;
};
// TODO(gibbed): replace these with named error codes
const uint32_t error_table_0x00000103[] = {
- 0x000003E5, // 0x00000103
- 0,
- 0x000000EA, // 0x00000105
- 0x00000514, // 0x00000106
- 0x00000515, // 0x00000107
- 0,
- 0,
- 0,
- 0,
- 0x000003FE, // 0x0000010C
- 0x00000516, // 0x0000010D
+ 0x000003E5, // 0x00000103
+ 0,
+ 0x000000EA, // 0x00000105
+ 0x00000514, // 0x00000106
+ 0x00000515, // 0x00000107
+ 0, 0, 0, 0,
+ 0x000003FE, // 0x0000010C
+ 0x00000516, // 0x0000010D
};
const uint32_t error_table_0x40000002[] = {
- 0x00000057, // 0x40000002
- 0,
- 0,
- 0,
- 0x00000517, // 0x40000006
- 0,
- 0x00000460, // 0x40000008
- 0x000003F6, // 0x40000009
- 0,
- 0,
- 0x00000461, // 0x4000000C
- 0x00000518, // 0x4000000D
+ 0x00000057, // 0x40000002
+ 0, 0, 0,
+ 0x00000517, // 0x40000006
+ 0,
+ 0x00000460, // 0x40000008
+ 0x000003F6, // 0x40000009
+ 0, 0,
+ 0x00000461, // 0x4000000C
+ 0x00000518, // 0x4000000D
};
const uint32_t error_table_0x40020056[] = {
- 0x00000720, // 0x40020056
+ 0x00000720, // 0x40020056
};
const uint32_t error_table_0x400200AF[] = {
- 0x00000779, // 0x400200AF
+ 0x00000779, // 0x400200AF
};
const uint32_t error_table_0x80000001[] = {
- 0x80000001, // 0x80000001
- 0x000003E6, // 0x80000002
- 0x80000003, // 0x80000003
- 0x80000004, // 0x80000004
- 0x000000EA, // 0x80000005
- 0x00000012, // 0x80000006
- 0,
- 0,
- 0,
- 0,
- 0x0000056F, // 0x8000000B
- 0,
- 0x0000012B, // 0x8000000D
- 0x0000001C, // 0x8000000E
- 0x00000015, // 0x8000000F
- 0x00000015, // 0x80000010
- 0x000000AA, // 0x80000011
- 0x00000103, // 0x80000012
- 0x000000FE, // 0x80000013
- 0x000000FF, // 0x80000014
- 0x000000FF, // 0x80000015
- 0x00000456, // 0x80000016
- 0,
- 0,
- 0,
- 0x00000103, // 0x8000001A
- 0x0000044D, // 0x8000001B
- 0x00000456, // 0x8000001C
- 0x00000457, // 0x8000001D
- 0x0000044C, // 0x8000001E
- 0x0000044E, // 0x8000001F
- 0,
- 0x0000044F, // 0x80000021
- 0x00000450, // 0x80000022
- 0,
- 0,
- 0x00000962, // 0x80000025
+ 0x80000001, // 0x80000001
+ 0x000003E6, // 0x80000002
+ 0x80000003, // 0x80000003
+ 0x80000004, // 0x80000004
+ 0x000000EA, // 0x80000005
+ 0x00000012, // 0x80000006
+ 0, 0, 0, 0,
+ 0x0000056F, // 0x8000000B
+ 0,
+ 0x0000012B, // 0x8000000D
+ 0x0000001C, // 0x8000000E
+ 0x00000015, // 0x8000000F
+ 0x00000015, // 0x80000010
+ 0x000000AA, // 0x80000011
+ 0x00000103, // 0x80000012
+ 0x000000FE, // 0x80000013
+ 0x000000FF, // 0x80000014
+ 0x000000FF, // 0x80000015
+ 0x00000456, // 0x80000016
+ 0, 0, 0,
+ 0x00000103, // 0x8000001A
+ 0x0000044D, // 0x8000001B
+ 0x00000456, // 0x8000001C
+ 0x00000457, // 0x8000001D
+ 0x0000044C, // 0x8000001E
+ 0x0000044E, // 0x8000001F
+ 0,
+ 0x0000044F, // 0x80000021
+ 0x00000450, // 0x80000022
+ 0, 0,
+ 0x00000962, // 0x80000025
};
const uint32_t error_table_0x80000288[] = {
- 0x0000048D, // 0x80000288
- 0x0000048E, // 0x80000289
+ 0x0000048D, // 0x80000288
+ 0x0000048E, // 0x80000289
};
const uint32_t error_table_0x80090300[] = {
- 0x000005AA, // 0x80090300
- 0x00000006, // 0x80090301
- 0x00000001, // 0x80090302
- 0x00000035, // 0x80090303
- 0x0000054F, // 0x80090304
- 0x00000554, // 0x80090305
- 0x00000120, // 0x80090306
- 0x00000554, // 0x80090307
- 0x00000057, // 0x80090308
- 0x00000057, // 0x80090309
- 0x00000032, // 0x8009030A
- 0x00000558, // 0x8009030B
- 0x0000052E, // 0x8009030C
- 0x00000057, // 0x8009030D
- 0x00000520, // 0x8009030E
- 0x00000005, // 0x8009030F
- 0x00000005, // 0x80090310
- 0x0000051F, // 0x80090311
- 0,
- 0,
- 0,
- 0,
- 0x00000554, // 0x80090316
- 0,
- 0x000006F8, // 0x80090318
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000057, // 0x80090320
- 0x0000007A, // 0x80090321
- 0x00000574, // 0x80090322
- 0,
- 0,
- 0x000006FE, // 0x80090325
- 0x00000057, // 0x80090326
- 0x00000057, // 0x80090327
- 0x00000532, // 0x80090328
- 0x00001770, // 0x80090329
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00001771, // 0x80090330
- 0x00000001, // 0x80090331
+ 0x000005AA, // 0x80090300
+ 0x00000006, // 0x80090301
+ 0x00000001, // 0x80090302
+ 0x00000035, // 0x80090303
+ 0x0000054F, // 0x80090304
+ 0x00000554, // 0x80090305
+ 0x00000120, // 0x80090306
+ 0x00000554, // 0x80090307
+ 0x00000057, // 0x80090308
+ 0x00000057, // 0x80090309
+ 0x00000032, // 0x8009030A
+ 0x00000558, // 0x8009030B
+ 0x0000052E, // 0x8009030C
+ 0x00000057, // 0x8009030D
+ 0x00000520, // 0x8009030E
+ 0x00000005, // 0x8009030F
+ 0x00000005, // 0x80090310
+ 0x0000051F, // 0x80090311
+ 0, 0, 0, 0,
+ 0x00000554, // 0x80090316
+ 0,
+ 0x000006F8, // 0x80090318
+ 0, 0, 0, 0, 0, 0, 0,
+ 0x00000057, // 0x80090320
+ 0x0000007A, // 0x80090321
+ 0x00000574, // 0x80090322
+ 0, 0,
+ 0x000006FE, // 0x80090325
+ 0x00000057, // 0x80090326
+ 0x00000057, // 0x80090327
+ 0x00000532, // 0x80090328
+ 0x00001770, // 0x80090329
+ 0, 0, 0, 0, 0, 0,
+ 0x00001771, // 0x80090330
+ 0x00000001, // 0x80090331
};
const uint32_t error_table_0xC0000001[] = {
- 0x0000001F, // 0xC0000001
- 0x00000001, // 0xC0000002
- 0x00000057, // 0xC0000003
- 0x00000018, // 0xC0000004
- 0x000003E6, // 0xC0000005
- 0x000003E7, // 0xC0000006
- 0x000005AE, // 0xC0000007
- 0x00000006, // 0xC0000008
- 0x000003E9, // 0xC0000009
- 0x000000C1, // 0xC000000A
- 0x00000057, // 0xC000000B
- 0,
- 0x00000057, // 0xC000000D
- 0x00000002, // 0xC000000E
- 0x00000002, // 0xC000000F
- 0x00000001, // 0xC0000010
- 0x00000026, // 0xC0000011
- 0x00000022, // 0xC0000012
- 0x00000015, // 0xC0000013
- 0x000006F9, // 0xC0000014
- 0x0000001B, // 0xC0000015
- 0x000000EA, // 0xC0000016
- 0x00000008, // 0xC0000017
- 0x000001E7, // 0xC0000018
- 0x000001E7, // 0xC0000019
- 0x00000057, // 0xC000001A
- 0x00000057, // 0xC000001B
- 0x00000001, // 0xC000001C
- 0xC000001D, // 0xC000001D
- 0x00000005, // 0xC000001E
- 0x00000005, // 0xC000001F
- 0x000000C1, // 0xC0000020
- 0x00000005, // 0xC0000021
- 0x00000005, // 0xC0000022
- 0x0000007A, // 0xC0000023
- 0x00000006, // 0xC0000024
- 0xC0000025, // 0xC0000025
- 0xC0000026, // 0xC0000026
- 0,
- 0,
- 0,
- 0x0000009E, // 0xC000002A
- 0xC000002B, // 0xC000002B
- 0x000001E7, // 0xC000002C
- 0x000001E7, // 0xC000002D
- 0,
- 0,
- 0x00000057, // 0xC0000030
- 0,
- 0x00000571, // 0xC0000032
- 0x0000007B, // 0xC0000033
- 0x00000002, // 0xC0000034
- 0x000000B7, // 0xC0000035
- 0,
- 0x00000006, // 0xC0000037
- 0,
- 0x000000A1, // 0xC0000039
- 0x00000003, // 0xC000003A
- 0x000000A1, // 0xC000003B
- 0x0000045D, // 0xC000003C
- 0x0000045D, // 0xC000003D
- 0x00000017, // 0xC000003E
- 0x00000017, // 0xC000003F
- 0x00000008, // 0xC0000040
- 0x00000005, // 0xC0000041
- 0x00000006, // 0xC0000042
- 0x00000020, // 0xC0000043
- 0x00000718, // 0xC0000044
- 0x00000057, // 0xC0000045
- 0x00000120, // 0xC0000046
- 0x0000012A, // 0xC0000047
- 0x00000057, // 0xC0000048
- 0x00000057, // 0xC0000049
- 0x0000009C, // 0xC000004A
- 0x00000005, // 0xC000004B
- 0x00000057, // 0xC000004C
- 0x00000057, // 0xC000004D
- 0x00000057, // 0xC000004E
- 0x0000011A, // 0xC000004F
- 0x000000FF, // 0xC0000050
- 0x00000570, // 0xC0000051
- 0x00000570, // 0xC0000052
- 0x00000570, // 0xC0000053
- 0x00000021, // 0xC0000054
- 0x00000021, // 0xC0000055
- 0x00000005, // 0xC0000056
- 0x00000032, // 0xC0000057
- 0x00000519, // 0xC0000058
- 0x0000051A, // 0xC0000059
- 0x0000051B, // 0xC000005A
- 0x0000051C, // 0xC000005B
- 0x0000051D, // 0xC000005C
- 0x0000051E, // 0xC000005D
- 0x0000051F, // 0xC000005E
- 0x00000520, // 0xC000005F
- 0x00000521, // 0xC0000060
- 0x00000522, // 0xC0000061
- 0x00000523, // 0xC0000062
- 0x00000524, // 0xC0000063
- 0x00000525, // 0xC0000064
- 0x00000526, // 0xC0000065
- 0x00000527, // 0xC0000066
- 0x00000528, // 0xC0000067
- 0x00000529, // 0xC0000068
- 0x0000052A, // 0xC0000069
- 0x00000056, // 0xC000006A
- 0x0000052C, // 0xC000006B
- 0x0000052D, // 0xC000006C
- 0x0000052E, // 0xC000006D
- 0x0000052F, // 0xC000006E
- 0x00000530, // 0xC000006F
- 0x00000531, // 0xC0000070
- 0x00000532, // 0xC0000071
- 0x00000533, // 0xC0000072
- 0x00000534, // 0xC0000073
- 0x00000535, // 0xC0000074
- 0x00000536, // 0xC0000075
- 0x00000537, // 0xC0000076
- 0x00000538, // 0xC0000077
- 0x00000539, // 0xC0000078
- 0x0000053A, // 0xC0000079
- 0x0000007F, // 0xC000007A
- 0x000000C1, // 0xC000007B
- 0x000003F0, // 0xC000007C
- 0x0000053C, // 0xC000007D
- 0x0000009E, // 0xC000007E
- 0x00000070, // 0xC000007F
- 0x0000053D, // 0xC0000080
- 0x0000053E, // 0xC0000081
- 0x00000044, // 0xC0000082
- 0x00000103, // 0xC0000083
- 0x0000053F, // 0xC0000084
- 0x00000103, // 0xC0000085
- 0x0000009A, // 0xC0000086
- 0x0000000E, // 0xC0000087
- 0x000001E7, // 0xC0000088
- 0x00000714, // 0xC0000089
- 0x00000715, // 0xC000008A
- 0x00000716, // 0xC000008B
- 0xC000008C, // 0xC000008C
- 0xC000008D, // 0xC000008D
- 0xC000008E, // 0xC000008E
- 0xC000008F, // 0xC000008F
- 0xC0000090, // 0xC0000090
- 0xC0000091, // 0xC0000091
- 0xC0000092, // 0xC0000092
- 0xC0000093, // 0xC0000093
- 0xC0000094, // 0xC0000094
- 0x00000216, // 0xC0000095
- 0xC0000096, // 0xC0000096
- 0x00000008, // 0xC0000097
- 0x000003EE, // 0xC0000098
- 0x00000540, // 0xC0000099
- 0x000005AA, // 0xC000009A
- 0x00000003, // 0xC000009B
- 0x00000017, // 0xC000009C
- 0x0000048F, // 0xC000009D
- 0x00000015, // 0xC000009E
- 0x000001E7, // 0xC000009F
- 0x000001E7, // 0xC00000A0
- 0x000005AD, // 0xC00000A1
- 0x00000013, // 0xC00000A2
- 0x00000015, // 0xC00000A3
- 0x00000541, // 0xC00000A4
- 0x00000542, // 0xC00000A5
- 0x00000543, // 0xC00000A6
- 0x00000544, // 0xC00000A7
- 0x00000545, // 0xC00000A8
- 0x00000057, // 0xC00000A9
- 0,
- 0x000000E7, // 0xC00000AB
- 0x000000E7, // 0xC00000AC
- 0x000000E6, // 0xC00000AD
- 0x000000E7, // 0xC00000AE
- 0x00000001, // 0xC00000AF
- 0x000000E9, // 0xC00000B0
- 0x000000E8, // 0xC00000B1
- 0x00000217, // 0xC00000B2
- 0x00000218, // 0xC00000B3
- 0x000000E6, // 0xC00000B4
- 0x00000079, // 0xC00000B5
- 0x00000026, // 0xC00000B6
- 0,
- 0,
- 0,
- 0x00000005, // 0xC00000BA
- 0x00000032, // 0xC00000BB
- 0x00000033, // 0xC00000BC
- 0x00000034, // 0xC00000BD
- 0x00000035, // 0xC00000BE
- 0x00000036, // 0xC00000BF
- 0x00000037, // 0xC00000C0
- 0x00000038, // 0xC00000C1
- 0x00000039, // 0xC00000C2
- 0x0000003A, // 0xC00000C3
- 0x0000003B, // 0xC00000C4
- 0x0000003C, // 0xC00000C5
- 0x0000003D, // 0xC00000C6
- 0x0000003E, // 0xC00000C7
- 0x0000003F, // 0xC00000C8
- 0x00000040, // 0xC00000C9
- 0x00000041, // 0xC00000CA
- 0x00000042, // 0xC00000CB
- 0x00000043, // 0xC00000CC
- 0x00000044, // 0xC00000CD
- 0x00000045, // 0xC00000CE
- 0x00000046, // 0xC00000CF
- 0x00000047, // 0xC00000D0
- 0x00000048, // 0xC00000D1
- 0x00000058, // 0xC00000D2
- 0,
- 0x00000011, // 0xC00000D4
- 0x00000005, // 0xC00000D5
- 0x000000F0, // 0xC00000D6
- 0x00000546, // 0xC00000D7
- 0,
- 0x000000E8, // 0xC00000D9
- 0x00000547, // 0xC00000DA
- 0,
- 0x00000548, // 0xC00000DC
- 0x00000549, // 0xC00000DD
- 0x0000054A, // 0xC00000DE
- 0x0000054B, // 0xC00000DF
- 0x0000054C, // 0xC00000E0
- 0x0000054D, // 0xC00000E1
- 0x0000012C, // 0xC00000E2
- 0x0000012D, // 0xC00000E3
- 0x0000054E, // 0xC00000E4
- 0x0000054F, // 0xC00000E5
- 0x00000550, // 0xC00000E6
- 0x00000551, // 0xC00000E7
- 0x000006F8, // 0xC00000E8
- 0,
- 0,
- 0,
- 0,
- 0x00000552, // 0xC00000ED
- 0x00000553, // 0xC00000EE
- 0x00000057, // 0xC00000EF
- 0x00000057, // 0xC00000F0
- 0x00000057, // 0xC00000F1
- 0x00000057, // 0xC00000F2
- 0x00000057, // 0xC00000F3
- 0x00000057, // 0xC00000F4
- 0x00000057, // 0xC00000F5
- 0x00000057, // 0xC00000F6
- 0x00000057, // 0xC00000F7
- 0x00000057, // 0xC00000F8
- 0x00000057, // 0xC00000F9
- 0x00000057, // 0xC00000FA
- 0x00000003, // 0xC00000FB
- 0,
- 0x000003E9, // 0xC00000FD
- 0x00000554, // 0xC00000FE
- 0,
- 0x000000CB, // 0xC0000100
- 0x00000091, // 0xC0000101
- 0x00000570, // 0xC0000102
- 0x0000010B, // 0xC0000103
- 0x00000555, // 0xC0000104
- 0x00000556, // 0xC0000105
- 0x000000CE, // 0xC0000106
- 0x00000961, // 0xC0000107
- 0x00000964, // 0xC0000108
- 0x0000013D, // 0xC0000109
- 0x00000005, // 0xC000010A
- 0x00000557, // 0xC000010B
- 0,
- 0x00000558, // 0xC000010D
- 0x00000420, // 0xC000010E
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x000005A4, // 0xC0000117
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x000003EE, // 0xC000011E
- 0x00000004, // 0xC000011F
- 0x000003E3, // 0xC0000120
- 0x00000005, // 0xC0000121
- 0x000004BA, // 0xC0000122
- 0x00000005, // 0xC0000123
- 0x0000055B, // 0xC0000124
- 0x0000055C, // 0xC0000125
- 0x0000055D, // 0xC0000126
- 0x0000055E, // 0xC0000127
- 0x00000006, // 0xC0000128
- 0,
- 0,
- 0x0000055F, // 0xC000012B
- 0,
- 0x000005AF, // 0xC000012D
- 0,
- 0,
- 0x000000C1, // 0xC0000130
- 0,
- 0,
- 0x00000576, // 0xC0000133
- 0,
- 0x0000007E, // 0xC0000135
- 0,
- 0,
- 0x000000B6, // 0xC0000138
- 0x0000007F, // 0xC0000139
- 0,
- 0x00000040, // 0xC000013B
- 0x00000040, // 0xC000013C
- 0x00000033, // 0xC000013D
- 0x0000003B, // 0xC000013E
- 0x0000003B, // 0xC000013F
- 0x0000003B, // 0xC0000140
- 0x0000003B, // 0xC0000141
- 0x0000045A, // 0xC0000142
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x0000007C, // 0xC0000148
- 0x00000056, // 0xC0000149
- 0,
- 0x0000006D, // 0xC000014B
- 0x000003F1, // 0xC000014C
- 0x000003F8, // 0xC000014D
- 0,
- 0x000003ED, // 0xC000014F
- 0x0000045E, // 0xC0000150
- 0x00000560, // 0xC0000151
- 0x00000561, // 0xC0000152
- 0x00000562, // 0xC0000153
- 0x00000563, // 0xC0000154
- 0x00000564, // 0xC0000155
- 0x00000565, // 0xC0000156
- 0x00000566, // 0xC0000157
- 0x00000567, // 0xC0000158
- 0x000003EF, // 0xC0000159
- 0x00000568, // 0xC000015A
- 0x00000569, // 0xC000015B
- 0x000003F9, // 0xC000015C
- 0x0000056A, // 0xC000015D
- 0,
- 0,
- 0,
- 0,
- 0x00000459, // 0xC0000162
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000466, // 0xC0000169
- 0x00000467, // 0xC000016A
- 0x00000468, // 0xC000016B
- 0x0000045F, // 0xC000016C
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000451, // 0xC0000172
- 0x00000452, // 0xC0000173
- 0x00000453, // 0xC0000174
- 0x00000454, // 0xC0000175
- 0x00000455, // 0xC0000176
- 0x00000469, // 0xC0000177
- 0x00000458, // 0xC0000178
- 0,
- 0x0000056B, // 0xC000017A
- 0x0000056C, // 0xC000017B
- 0x000003FA, // 0xC000017C
- 0x000003FB, // 0xC000017D
- 0x0000056D, // 0xC000017E
- 0x0000056E, // 0xC000017F
- 0x000003FC, // 0xC0000180
- 0x000003FD, // 0xC0000181
- 0x00000057, // 0xC0000182
- 0x0000045D, // 0xC0000183
- 0x00000016, // 0xC0000184
- 0x0000045D, // 0xC0000185
- 0x0000045D, // 0xC0000186
- 0,
- 0x000005DE, // 0xC0000188
- 0x00000013, // 0xC0000189
- 0x000006FA, // 0xC000018A
- 0x000006FB, // 0xC000018B
- 0x000006FC, // 0xC000018C
- 0x000006FD, // 0xC000018D
- 0x000005DC, // 0xC000018E
- 0x000005DD, // 0xC000018F
- 0x000006FE, // 0xC0000190
- 0,
- 0x00000700, // 0xC0000192
- 0x00000701, // 0xC0000193
- 0x0000046B, // 0xC0000194
- 0x000004C3, // 0xC0000195
- 0x000004C4, // 0xC0000196
- 0x000005DF, // 0xC0000197
- 0x0000070F, // 0xC0000198
- 0x00000710, // 0xC0000199
- 0x00000711, // 0xC000019A
- 0x00000712, // 0xC000019B
+ 0x0000001F, // 0xC0000001
+ 0x00000001, // 0xC0000002
+ 0x00000057, // 0xC0000003
+ 0x00000018, // 0xC0000004
+ 0x000003E6, // 0xC0000005
+ 0x000003E7, // 0xC0000006
+ 0x000005AE, // 0xC0000007
+ 0x00000006, // 0xC0000008
+ 0x000003E9, // 0xC0000009
+ 0x000000C1, // 0xC000000A
+ 0x00000057, // 0xC000000B
+ 0,
+ 0x00000057, // 0xC000000D
+ 0x00000002, // 0xC000000E
+ 0x00000002, // 0xC000000F
+ 0x00000001, // 0xC0000010
+ 0x00000026, // 0xC0000011
+ 0x00000022, // 0xC0000012
+ 0x00000015, // 0xC0000013
+ 0x000006F9, // 0xC0000014
+ 0x0000001B, // 0xC0000015
+ 0x000000EA, // 0xC0000016
+ 0x00000008, // 0xC0000017
+ 0x000001E7, // 0xC0000018
+ 0x000001E7, // 0xC0000019
+ 0x00000057, // 0xC000001A
+ 0x00000057, // 0xC000001B
+ 0x00000001, // 0xC000001C
+ 0xC000001D, // 0xC000001D
+ 0x00000005, // 0xC000001E
+ 0x00000005, // 0xC000001F
+ 0x000000C1, // 0xC0000020
+ 0x00000005, // 0xC0000021
+ 0x00000005, // 0xC0000022
+ 0x0000007A, // 0xC0000023
+ 0x00000006, // 0xC0000024
+ 0xC0000025, // 0xC0000025
+ 0xC0000026, // 0xC0000026
+ 0, 0, 0,
+ 0x0000009E, // 0xC000002A
+ 0xC000002B, // 0xC000002B
+ 0x000001E7, // 0xC000002C
+ 0x000001E7, // 0xC000002D
+ 0, 0,
+ 0x00000057, // 0xC0000030
+ 0,
+ 0x00000571, // 0xC0000032
+ 0x0000007B, // 0xC0000033
+ 0x00000002, // 0xC0000034
+ 0x000000B7, // 0xC0000035
+ 0,
+ 0x00000006, // 0xC0000037
+ 0,
+ 0x000000A1, // 0xC0000039
+ 0x00000003, // 0xC000003A
+ 0x000000A1, // 0xC000003B
+ 0x0000045D, // 0xC000003C
+ 0x0000045D, // 0xC000003D
+ 0x00000017, // 0xC000003E
+ 0x00000017, // 0xC000003F
+ 0x00000008, // 0xC0000040
+ 0x00000005, // 0xC0000041
+ 0x00000006, // 0xC0000042
+ 0x00000020, // 0xC0000043
+ 0x00000718, // 0xC0000044
+ 0x00000057, // 0xC0000045
+ 0x00000120, // 0xC0000046
+ 0x0000012A, // 0xC0000047
+ 0x00000057, // 0xC0000048
+ 0x00000057, // 0xC0000049
+ 0x0000009C, // 0xC000004A
+ 0x00000005, // 0xC000004B
+ 0x00000057, // 0xC000004C
+ 0x00000057, // 0xC000004D
+ 0x00000057, // 0xC000004E
+ 0x0000011A, // 0xC000004F
+ 0x000000FF, // 0xC0000050
+ 0x00000570, // 0xC0000051
+ 0x00000570, // 0xC0000052
+ 0x00000570, // 0xC0000053
+ 0x00000021, // 0xC0000054
+ 0x00000021, // 0xC0000055
+ 0x00000005, // 0xC0000056
+ 0x00000032, // 0xC0000057
+ 0x00000519, // 0xC0000058
+ 0x0000051A, // 0xC0000059
+ 0x0000051B, // 0xC000005A
+ 0x0000051C, // 0xC000005B
+ 0x0000051D, // 0xC000005C
+ 0x0000051E, // 0xC000005D
+ 0x0000051F, // 0xC000005E
+ 0x00000520, // 0xC000005F
+ 0x00000521, // 0xC0000060
+ 0x00000522, // 0xC0000061
+ 0x00000523, // 0xC0000062
+ 0x00000524, // 0xC0000063
+ 0x00000525, // 0xC0000064
+ 0x00000526, // 0xC0000065
+ 0x00000527, // 0xC0000066
+ 0x00000528, // 0xC0000067
+ 0x00000529, // 0xC0000068
+ 0x0000052A, // 0xC0000069
+ 0x00000056, // 0xC000006A
+ 0x0000052C, // 0xC000006B
+ 0x0000052D, // 0xC000006C
+ 0x0000052E, // 0xC000006D
+ 0x0000052F, // 0xC000006E
+ 0x00000530, // 0xC000006F
+ 0x00000531, // 0xC0000070
+ 0x00000532, // 0xC0000071
+ 0x00000533, // 0xC0000072
+ 0x00000534, // 0xC0000073
+ 0x00000535, // 0xC0000074
+ 0x00000536, // 0xC0000075
+ 0x00000537, // 0xC0000076
+ 0x00000538, // 0xC0000077
+ 0x00000539, // 0xC0000078
+ 0x0000053A, // 0xC0000079
+ 0x0000007F, // 0xC000007A
+ 0x000000C1, // 0xC000007B
+ 0x000003F0, // 0xC000007C
+ 0x0000053C, // 0xC000007D
+ 0x0000009E, // 0xC000007E
+ 0x00000070, // 0xC000007F
+ 0x0000053D, // 0xC0000080
+ 0x0000053E, // 0xC0000081
+ 0x00000044, // 0xC0000082
+ 0x00000103, // 0xC0000083
+ 0x0000053F, // 0xC0000084
+ 0x00000103, // 0xC0000085
+ 0x0000009A, // 0xC0000086
+ 0x0000000E, // 0xC0000087
+ 0x000001E7, // 0xC0000088
+ 0x00000714, // 0xC0000089
+ 0x00000715, // 0xC000008A
+ 0x00000716, // 0xC000008B
+ 0xC000008C, // 0xC000008C
+ 0xC000008D, // 0xC000008D
+ 0xC000008E, // 0xC000008E
+ 0xC000008F, // 0xC000008F
+ 0xC0000090, // 0xC0000090
+ 0xC0000091, // 0xC0000091
+ 0xC0000092, // 0xC0000092
+ 0xC0000093, // 0xC0000093
+ 0xC0000094, // 0xC0000094
+ 0x00000216, // 0xC0000095
+ 0xC0000096, // 0xC0000096
+ 0x00000008, // 0xC0000097
+ 0x000003EE, // 0xC0000098
+ 0x00000540, // 0xC0000099
+ 0x000005AA, // 0xC000009A
+ 0x00000003, // 0xC000009B
+ 0x00000017, // 0xC000009C
+ 0x0000048F, // 0xC000009D
+ 0x00000015, // 0xC000009E
+ 0x000001E7, // 0xC000009F
+ 0x000001E7, // 0xC00000A0
+ 0x000005AD, // 0xC00000A1
+ 0x00000013, // 0xC00000A2
+ 0x00000015, // 0xC00000A3
+ 0x00000541, // 0xC00000A4
+ 0x00000542, // 0xC00000A5
+ 0x00000543, // 0xC00000A6
+ 0x00000544, // 0xC00000A7
+ 0x00000545, // 0xC00000A8
+ 0x00000057, // 0xC00000A9
+ 0,
+ 0x000000E7, // 0xC00000AB
+ 0x000000E7, // 0xC00000AC
+ 0x000000E6, // 0xC00000AD
+ 0x000000E7, // 0xC00000AE
+ 0x00000001, // 0xC00000AF
+ 0x000000E9, // 0xC00000B0
+ 0x000000E8, // 0xC00000B1
+ 0x00000217, // 0xC00000B2
+ 0x00000218, // 0xC00000B3
+ 0x000000E6, // 0xC00000B4
+ 0x00000079, // 0xC00000B5
+ 0x00000026, // 0xC00000B6
+ 0, 0, 0,
+ 0x00000005, // 0xC00000BA
+ 0x00000032, // 0xC00000BB
+ 0x00000033, // 0xC00000BC
+ 0x00000034, // 0xC00000BD
+ 0x00000035, // 0xC00000BE
+ 0x00000036, // 0xC00000BF
+ 0x00000037, // 0xC00000C0
+ 0x00000038, // 0xC00000C1
+ 0x00000039, // 0xC00000C2
+ 0x0000003A, // 0xC00000C3
+ 0x0000003B, // 0xC00000C4
+ 0x0000003C, // 0xC00000C5
+ 0x0000003D, // 0xC00000C6
+ 0x0000003E, // 0xC00000C7
+ 0x0000003F, // 0xC00000C8
+ 0x00000040, // 0xC00000C9
+ 0x00000041, // 0xC00000CA
+ 0x00000042, // 0xC00000CB
+ 0x00000043, // 0xC00000CC
+ 0x00000044, // 0xC00000CD
+ 0x00000045, // 0xC00000CE
+ 0x00000046, // 0xC00000CF
+ 0x00000047, // 0xC00000D0
+ 0x00000048, // 0xC00000D1
+ 0x00000058, // 0xC00000D2
+ 0,
+ 0x00000011, // 0xC00000D4
+ 0x00000005, // 0xC00000D5
+ 0x000000F0, // 0xC00000D6
+ 0x00000546, // 0xC00000D7
+ 0,
+ 0x000000E8, // 0xC00000D9
+ 0x00000547, // 0xC00000DA
+ 0,
+ 0x00000548, // 0xC00000DC
+ 0x00000549, // 0xC00000DD
+ 0x0000054A, // 0xC00000DE
+ 0x0000054B, // 0xC00000DF
+ 0x0000054C, // 0xC00000E0
+ 0x0000054D, // 0xC00000E1
+ 0x0000012C, // 0xC00000E2
+ 0x0000012D, // 0xC00000E3
+ 0x0000054E, // 0xC00000E4
+ 0x0000054F, // 0xC00000E5
+ 0x00000550, // 0xC00000E6
+ 0x00000551, // 0xC00000E7
+ 0x000006F8, // 0xC00000E8
+ 0, 0, 0, 0,
+ 0x00000552, // 0xC00000ED
+ 0x00000553, // 0xC00000EE
+ 0x00000057, // 0xC00000EF
+ 0x00000057, // 0xC00000F0
+ 0x00000057, // 0xC00000F1
+ 0x00000057, // 0xC00000F2
+ 0x00000057, // 0xC00000F3
+ 0x00000057, // 0xC00000F4
+ 0x00000057, // 0xC00000F5
+ 0x00000057, // 0xC00000F6
+ 0x00000057, // 0xC00000F7
+ 0x00000057, // 0xC00000F8
+ 0x00000057, // 0xC00000F9
+ 0x00000057, // 0xC00000FA
+ 0x00000003, // 0xC00000FB
+ 0,
+ 0x000003E9, // 0xC00000FD
+ 0x00000554, // 0xC00000FE
+ 0,
+ 0x000000CB, // 0xC0000100
+ 0x00000091, // 0xC0000101
+ 0x00000570, // 0xC0000102
+ 0x0000010B, // 0xC0000103
+ 0x00000555, // 0xC0000104
+ 0x00000556, // 0xC0000105
+ 0x000000CE, // 0xC0000106
+ 0x00000961, // 0xC0000107
+ 0x00000964, // 0xC0000108
+ 0x0000013D, // 0xC0000109
+ 0x00000005, // 0xC000010A
+ 0x00000557, // 0xC000010B
+ 0,
+ 0x00000558, // 0xC000010D
+ 0x00000420, // 0xC000010E
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x000005A4, // 0xC0000117
+ 0, 0, 0, 0, 0, 0,
+ 0x000003EE, // 0xC000011E
+ 0x00000004, // 0xC000011F
+ 0x000003E3, // 0xC0000120
+ 0x00000005, // 0xC0000121
+ 0x000004BA, // 0xC0000122
+ 0x00000005, // 0xC0000123
+ 0x0000055B, // 0xC0000124
+ 0x0000055C, // 0xC0000125
+ 0x0000055D, // 0xC0000126
+ 0x0000055E, // 0xC0000127
+ 0x00000006, // 0xC0000128
+ 0, 0,
+ 0x0000055F, // 0xC000012B
+ 0,
+ 0x000005AF, // 0xC000012D
+ 0, 0,
+ 0x000000C1, // 0xC0000130
+ 0, 0,
+ 0x00000576, // 0xC0000133
+ 0,
+ 0x0000007E, // 0xC0000135
+ 0, 0,
+ 0x000000B6, // 0xC0000138
+ 0x0000007F, // 0xC0000139
+ 0,
+ 0x00000040, // 0xC000013B
+ 0x00000040, // 0xC000013C
+ 0x00000033, // 0xC000013D
+ 0x0000003B, // 0xC000013E
+ 0x0000003B, // 0xC000013F
+ 0x0000003B, // 0xC0000140
+ 0x0000003B, // 0xC0000141
+ 0x0000045A, // 0xC0000142
+ 0, 0, 0, 0, 0,
+ 0x0000007C, // 0xC0000148
+ 0x00000056, // 0xC0000149
+ 0,
+ 0x0000006D, // 0xC000014B
+ 0x000003F1, // 0xC000014C
+ 0x000003F8, // 0xC000014D
+ 0,
+ 0x000003ED, // 0xC000014F
+ 0x0000045E, // 0xC0000150
+ 0x00000560, // 0xC0000151
+ 0x00000561, // 0xC0000152
+ 0x00000562, // 0xC0000153
+ 0x00000563, // 0xC0000154
+ 0x00000564, // 0xC0000155
+ 0x00000565, // 0xC0000156
+ 0x00000566, // 0xC0000157
+ 0x00000567, // 0xC0000158
+ 0x000003EF, // 0xC0000159
+ 0x00000568, // 0xC000015A
+ 0x00000569, // 0xC000015B
+ 0x000003F9, // 0xC000015C
+ 0x0000056A, // 0xC000015D
+ 0, 0, 0, 0,
+ 0x00000459, // 0xC0000162
+ 0, 0, 0, 0, 0, 0,
+ 0x00000466, // 0xC0000169
+ 0x00000467, // 0xC000016A
+ 0x00000468, // 0xC000016B
+ 0x0000045F, // 0xC000016C
+ 0, 0, 0, 0, 0,
+ 0x00000451, // 0xC0000172
+ 0x00000452, // 0xC0000173
+ 0x00000453, // 0xC0000174
+ 0x00000454, // 0xC0000175
+ 0x00000455, // 0xC0000176
+ 0x00000469, // 0xC0000177
+ 0x00000458, // 0xC0000178
+ 0,
+ 0x0000056B, // 0xC000017A
+ 0x0000056C, // 0xC000017B
+ 0x000003FA, // 0xC000017C
+ 0x000003FB, // 0xC000017D
+ 0x0000056D, // 0xC000017E
+ 0x0000056E, // 0xC000017F
+ 0x000003FC, // 0xC0000180
+ 0x000003FD, // 0xC0000181
+ 0x00000057, // 0xC0000182
+ 0x0000045D, // 0xC0000183
+ 0x00000016, // 0xC0000184
+ 0x0000045D, // 0xC0000185
+ 0x0000045D, // 0xC0000186
+ 0,
+ 0x000005DE, // 0xC0000188
+ 0x00000013, // 0xC0000189
+ 0x000006FA, // 0xC000018A
+ 0x000006FB, // 0xC000018B
+ 0x000006FC, // 0xC000018C
+ 0x000006FD, // 0xC000018D
+ 0x000005DC, // 0xC000018E
+ 0x000005DD, // 0xC000018F
+ 0x000006FE, // 0xC0000190
+ 0,
+ 0x00000700, // 0xC0000192
+ 0x00000701, // 0xC0000193
+ 0x0000046B, // 0xC0000194
+ 0x000004C3, // 0xC0000195
+ 0x000004C4, // 0xC0000196
+ 0x000005DF, // 0xC0000197
+ 0x0000070F, // 0xC0000198
+ 0x00000710, // 0xC0000199
+ 0x00000711, // 0xC000019A
+ 0x00000712, // 0xC000019B
};
const uint32_t error_table_0xC0000202[] = {
- 0x00000572, // 0xC0000202
- 0x0000003B, // 0xC0000203
- 0x00000717, // 0xC0000204
- 0x0000046A, // 0xC0000205
- 0x000006F8, // 0xC0000206
- 0x000004BE, // 0xC0000207
- 0x000004BE, // 0xC0000208
- 0x00000044, // 0xC0000209
- 0x00000034, // 0xC000020A
- 0x00000040, // 0xC000020B
- 0x00000040, // 0xC000020C
- 0x00000040, // 0xC000020D
- 0x00000044, // 0xC000020E
- 0x0000003B, // 0xC000020F
- 0x0000003B, // 0xC0000210
- 0x0000003B, // 0xC0000211
- 0x0000003B, // 0xC0000212
- 0x0000003B, // 0xC0000213
- 0x0000003B, // 0xC0000214
- 0x0000003B, // 0xC0000215
- 0x00000032, // 0xC0000216
- 0x00000032, // 0xC0000217
- 0,
- 0,
- 0,
- 0,
- 0x000017E6, // 0xC000021C
- 0,
- 0,
- 0,
- 0x0000046C, // 0xC0000220
- 0x000000C1, // 0xC0000221
- 0,
- 0,
- 0x00000773, // 0xC0000224
- 0x00000490, // 0xC0000225
- 0,
- 0,
- 0,
- 0,
- 0xC000022A, // 0xC000022A
- 0xC000022B, // 0xC000022B
- 0,
- 0x000004D5, // 0xC000022D
- 0,
- 0,
- 0x00000492, // 0xC0000230
- 0,
- 0,
- 0x00000774, // 0xC0000233
- 0x00000775, // 0xC0000234
- 0x00000006, // 0xC0000235
- 0x000004C9, // 0xC0000236
- 0x000004CA, // 0xC0000237
- 0x000004CB, // 0xC0000238
- 0x000004CC, // 0xC0000239
- 0x000004CD, // 0xC000023A
- 0x000004CE, // 0xC000023B
- 0x000004CF, // 0xC000023C
- 0x000004D0, // 0xC000023D
- 0x000004D1, // 0xC000023E
- 0x000004D2, // 0xC000023F
- 0x000004D3, // 0xC0000240
- 0x000004D4, // 0xC0000241
- 0,
- 0x000004C8, // 0xC0000243
- 0,
- 0,
- 0x000004D6, // 0xC0000246
- 0x000004D7, // 0xC0000247
- 0x000004D8, // 0xC0000248
- 0x000000C1, // 0xC0000249
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x0000054F, // 0xC0000253
- 0,
- 0,
- 0,
- 0x000004D0, // 0xC0000257
- 0,
- 0x00000573, // 0xC0000259
- 0,
- 0,
- 0,
- 0,
- 0x00000422, // 0xC000025E
- 0,
- 0,
- 0,
- 0x000000B6, // 0xC0000262
- 0x0000007F, // 0xC0000263
- 0x00000120, // 0xC0000264
- 0x00000476, // 0xC0000265
- 0,
- 0x000010FE, // 0xC0000267
- 0,
- 0,
- 0,
- 0,
- 0x000007D1, // 0xC000026C
- 0x000004B1, // 0xC000026D
- 0x00000015, // 0xC000026E
- 0,
- 0,
- 0,
- 0x00000491, // 0xC0000272
- 0,
- 0,
- 0x00001126, // 0xC0000275
- 0x00001129, // 0xC0000276
- 0x0000112A, // 0xC0000277
- 0x00001128, // 0xC0000278
- 0x00000780, // 0xC0000279
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000781, // 0xC0000280
- 0x000000A1, // 0xC0000281
- 0,
- 0x00000488, // 0xC0000283
- 0x00000489, // 0xC0000284
- 0x0000048A, // 0xC0000285
- 0x0000048B, // 0xC0000286
- 0x0000048C, // 0xC0000287
- 0,
- 0,
- 0x00000005, // 0xC000028A
- 0x00000005, // 0xC000028B
- 0,
- 0x00000005, // 0xC000028D
- 0x00000005, // 0xC000028E
- 0x00000005, // 0xC000028F
- 0x00000005, // 0xC0000290
- 0x00001777, // 0xC0000291
- 0x00001778, // 0xC0000292
- 0x00001772, // 0xC0000293
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000001, // 0xC000029C
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00001127, // 0xC00002B2
- 0,
- 0,
- 0,
- 0x00000651, // 0xC00002B6
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000575, // 0xC00002C3
- 0,
- 0x000003E6, // 0xC00002C5
- 0,
- 0,
- 0,
- 0,
- 0x000010E8, // 0xC00002CA
- 0,
- 0x000004E3, // 0xC00002CC
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000052, // 0xC00002EA
+ 0x00000572, // 0xC0000202
+ 0x0000003B, // 0xC0000203
+ 0x00000717, // 0xC0000204
+ 0x0000046A, // 0xC0000205
+ 0x000006F8, // 0xC0000206
+ 0x000004BE, // 0xC0000207
+ 0x000004BE, // 0xC0000208
+ 0x00000044, // 0xC0000209
+ 0x00000034, // 0xC000020A
+ 0x00000040, // 0xC000020B
+ 0x00000040, // 0xC000020C
+ 0x00000040, // 0xC000020D
+ 0x00000044, // 0xC000020E
+ 0x0000003B, // 0xC000020F
+ 0x0000003B, // 0xC0000210
+ 0x0000003B, // 0xC0000211
+ 0x0000003B, // 0xC0000212
+ 0x0000003B, // 0xC0000213
+ 0x0000003B, // 0xC0000214
+ 0x0000003B, // 0xC0000215
+ 0x00000032, // 0xC0000216
+ 0x00000032, // 0xC0000217
+ 0, 0, 0, 0,
+ 0x000017E6, // 0xC000021C
+ 0, 0, 0,
+ 0x0000046C, // 0xC0000220
+ 0x000000C1, // 0xC0000221
+ 0, 0,
+ 0x00000773, // 0xC0000224
+ 0x00000490, // 0xC0000225
+ 0, 0, 0, 0,
+ 0xC000022A, // 0xC000022A
+ 0xC000022B, // 0xC000022B
+ 0,
+ 0x000004D5, // 0xC000022D
+ 0, 0,
+ 0x00000492, // 0xC0000230
+ 0, 0,
+ 0x00000774, // 0xC0000233
+ 0x00000775, // 0xC0000234
+ 0x00000006, // 0xC0000235
+ 0x000004C9, // 0xC0000236
+ 0x000004CA, // 0xC0000237
+ 0x000004CB, // 0xC0000238
+ 0x000004CC, // 0xC0000239
+ 0x000004CD, // 0xC000023A
+ 0x000004CE, // 0xC000023B
+ 0x000004CF, // 0xC000023C
+ 0x000004D0, // 0xC000023D
+ 0x000004D1, // 0xC000023E
+ 0x000004D2, // 0xC000023F
+ 0x000004D3, // 0xC0000240
+ 0x000004D4, // 0xC0000241
+ 0,
+ 0x000004C8, // 0xC0000243
+ 0, 0,
+ 0x000004D6, // 0xC0000246
+ 0x000004D7, // 0xC0000247
+ 0x000004D8, // 0xC0000248
+ 0x000000C1, // 0xC0000249
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x0000054F, // 0xC0000253
+ 0, 0, 0,
+ 0x000004D0, // 0xC0000257
+ 0,
+ 0x00000573, // 0xC0000259
+ 0, 0, 0, 0,
+ 0x00000422, // 0xC000025E
+ 0, 0, 0,
+ 0x000000B6, // 0xC0000262
+ 0x0000007F, // 0xC0000263
+ 0x00000120, // 0xC0000264
+ 0x00000476, // 0xC0000265
+ 0,
+ 0x000010FE, // 0xC0000267
+ 0, 0, 0, 0,
+ 0x000007D1, // 0xC000026C
+ 0x000004B1, // 0xC000026D
+ 0x00000015, // 0xC000026E
+ 0, 0, 0,
+ 0x00000491, // 0xC0000272
+ 0, 0,
+ 0x00001126, // 0xC0000275
+ 0x00001129, // 0xC0000276
+ 0x0000112A, // 0xC0000277
+ 0x00001128, // 0xC0000278
+ 0x00000780, // 0xC0000279
+ 0, 0, 0, 0, 0, 0,
+ 0x00000781, // 0xC0000280
+ 0x000000A1, // 0xC0000281
+ 0,
+ 0x00000488, // 0xC0000283
+ 0x00000489, // 0xC0000284
+ 0x0000048A, // 0xC0000285
+ 0x0000048B, // 0xC0000286
+ 0x0000048C, // 0xC0000287
+ 0, 0,
+ 0x00000005, // 0xC000028A
+ 0x00000005, // 0xC000028B
+ 0,
+ 0x00000005, // 0xC000028D
+ 0x00000005, // 0xC000028E
+ 0x00000005, // 0xC000028F
+ 0x00000005, // 0xC0000290
+ 0x00001777, // 0xC0000291
+ 0x00001778, // 0xC0000292
+ 0x00001772, // 0xC0000293
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x00000001, // 0xC000029C
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x00001127, // 0xC00002B2
+ 0, 0, 0,
+ 0x00000651, // 0xC00002B6
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x00000575, // 0xC00002C3
+ 0,
+ 0x000003E6, // 0xC00002C5
+ 0, 0, 0, 0,
+ 0x000010E8, // 0xC00002CA
+ 0,
+ 0x000004E3, // 0xC00002CC
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x00000052, // 0xC00002EA
};
const uint32_t error_table_0xC0020001[] = {
- 0x000006A4, // 0xC0020001
- 0x000006A5, // 0xC0020002
- 0x00000006, // 0xC0020003
- 0x000006A7, // 0xC0020004
- 0x000006A8, // 0xC0020005
- 0x000006A9, // 0xC0020006
- 0x000006AA, // 0xC0020007
- 0x000006AB, // 0xC0020008
- 0x000006AC, // 0xC0020009
- 0x000006AD, // 0xC002000A
- 0x000006AE, // 0xC002000B
- 0x000006AF, // 0xC002000C
- 0x000006B0, // 0xC002000D
- 0x000006B1, // 0xC002000E
- 0x000006B2, // 0xC002000F
- 0x000006B3, // 0xC0020010
- 0x000006B4, // 0xC0020011
- 0x000006B5, // 0xC0020012
- 0x000006B6, // 0xC0020013
- 0x000006B7, // 0xC0020014
- 0x000006B8, // 0xC0020015
- 0x000006B9, // 0xC0020016
- 0x000006BA, // 0xC0020017
- 0x000006BB, // 0xC0020018
- 0x000006BC, // 0xC0020019
- 0x000006BD, // 0xC002001A
- 0x000006BE, // 0xC002001B
- 0x000006BF, // 0xC002001C
- 0x000006C0, // 0xC002001D
- 0,
- 0x000006C2, // 0xC002001F
- 0,
- 0x000006C4, // 0xC0020021
- 0x000006C5, // 0xC0020022
- 0x000006C6, // 0xC0020023
- 0x000006C7, // 0xC0020024
- 0x000006C8, // 0xC0020025
- 0x000006C9, // 0xC0020026
- 0,
- 0x000006CB, // 0xC0020028
- 0x000006CC, // 0xC0020029
- 0x000006CD, // 0xC002002A
- 0x000006CE, // 0xC002002B
- 0x000006CF, // 0xC002002C
- 0x000006D0, // 0xC002002D
- 0x000006D1, // 0xC002002E
- 0x000006D2, // 0xC002002F
- 0x000006D3, // 0xC0020030
- 0x000006D4, // 0xC0020031
- 0x000006D5, // 0xC0020032
- 0x000006D6, // 0xC0020033
- 0x000006D7, // 0xC0020034
- 0x000006D8, // 0xC0020035
- 0x000006D9, // 0xC0020036
- 0x000006DA, // 0xC0020037
- 0x000006DB, // 0xC0020038
- 0x000006DC, // 0xC0020039
- 0x000006DD, // 0xC002003A
- 0x000006DE, // 0xC002003B
- 0x000006DF, // 0xC002003C
- 0x000006E0, // 0xC002003D
- 0x000006E1, // 0xC002003E
- 0x000006E2, // 0xC002003F
- 0x000006E3, // 0xC0020040
- 0x000006E4, // 0xC0020041
- 0x000006E5, // 0xC0020042
- 0x000006E6, // 0xC0020043
- 0x000006E7, // 0xC0020044
- 0x000006E8, // 0xC0020045
- 0x000006E9, // 0xC0020046
- 0x000006EA, // 0xC0020047
- 0x000006EB, // 0xC0020048
- 0x000006FF, // 0xC0020049
- 0x0000070E, // 0xC002004A
- 0x0000076A, // 0xC002004B
- 0x0000076B, // 0xC002004C
- 0x0000076C, // 0xC002004D
- 0,
- 0x00000719, // 0xC002004F
- 0x0000071A, // 0xC0020050
- 0x0000071B, // 0xC0020051
- 0x0000071C, // 0xC0020052
- 0x0000071D, // 0xC0020053
- 0x0000071E, // 0xC0020054
- 0x0000071F, // 0xC0020055
- 0,
- 0x00000721, // 0xC0020057
- 0x00000722, // 0xC0020058
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x0000077A, // 0xC0020062
- 0x0000077B, // 0xC0020063
+ 0x000006A4, // 0xC0020001
+ 0x000006A5, // 0xC0020002
+ 0x00000006, // 0xC0020003
+ 0x000006A7, // 0xC0020004
+ 0x000006A8, // 0xC0020005
+ 0x000006A9, // 0xC0020006
+ 0x000006AA, // 0xC0020007
+ 0x000006AB, // 0xC0020008
+ 0x000006AC, // 0xC0020009
+ 0x000006AD, // 0xC002000A
+ 0x000006AE, // 0xC002000B
+ 0x000006AF, // 0xC002000C
+ 0x000006B0, // 0xC002000D
+ 0x000006B1, // 0xC002000E
+ 0x000006B2, // 0xC002000F
+ 0x000006B3, // 0xC0020010
+ 0x000006B4, // 0xC0020011
+ 0x000006B5, // 0xC0020012
+ 0x000006B6, // 0xC0020013
+ 0x000006B7, // 0xC0020014
+ 0x000006B8, // 0xC0020015
+ 0x000006B9, // 0xC0020016
+ 0x000006BA, // 0xC0020017
+ 0x000006BB, // 0xC0020018
+ 0x000006BC, // 0xC0020019
+ 0x000006BD, // 0xC002001A
+ 0x000006BE, // 0xC002001B
+ 0x000006BF, // 0xC002001C
+ 0x000006C0, // 0xC002001D
+ 0,
+ 0x000006C2, // 0xC002001F
+ 0,
+ 0x000006C4, // 0xC0020021
+ 0x000006C5, // 0xC0020022
+ 0x000006C6, // 0xC0020023
+ 0x000006C7, // 0xC0020024
+ 0x000006C8, // 0xC0020025
+ 0x000006C9, // 0xC0020026
+ 0,
+ 0x000006CB, // 0xC0020028
+ 0x000006CC, // 0xC0020029
+ 0x000006CD, // 0xC002002A
+ 0x000006CE, // 0xC002002B
+ 0x000006CF, // 0xC002002C
+ 0x000006D0, // 0xC002002D
+ 0x000006D1, // 0xC002002E
+ 0x000006D2, // 0xC002002F
+ 0x000006D3, // 0xC0020030
+ 0x000006D4, // 0xC0020031
+ 0x000006D5, // 0xC0020032
+ 0x000006D6, // 0xC0020033
+ 0x000006D7, // 0xC0020034
+ 0x000006D8, // 0xC0020035
+ 0x000006D9, // 0xC0020036
+ 0x000006DA, // 0xC0020037
+ 0x000006DB, // 0xC0020038
+ 0x000006DC, // 0xC0020039
+ 0x000006DD, // 0xC002003A
+ 0x000006DE, // 0xC002003B
+ 0x000006DF, // 0xC002003C
+ 0x000006E0, // 0xC002003D
+ 0x000006E1, // 0xC002003E
+ 0x000006E2, // 0xC002003F
+ 0x000006E3, // 0xC0020040
+ 0x000006E4, // 0xC0020041
+ 0x000006E5, // 0xC0020042
+ 0x000006E6, // 0xC0020043
+ 0x000006E7, // 0xC0020044
+ 0x000006E8, // 0xC0020045
+ 0x000006E9, // 0xC0020046
+ 0x000006EA, // 0xC0020047
+ 0x000006EB, // 0xC0020048
+ 0x000006FF, // 0xC0020049
+ 0x0000070E, // 0xC002004A
+ 0x0000076A, // 0xC002004B
+ 0x0000076B, // 0xC002004C
+ 0x0000076C, // 0xC002004D
+ 0,
+ 0x00000719, // 0xC002004F
+ 0x0000071A, // 0xC0020050
+ 0x0000071B, // 0xC0020051
+ 0x0000071C, // 0xC0020052
+ 0x0000071D, // 0xC0020053
+ 0x0000071E, // 0xC0020054
+ 0x0000071F, // 0xC0020055
+ 0,
+ 0x00000721, // 0xC0020057
+ 0x00000722, // 0xC0020058
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x0000077A, // 0xC0020062
+ 0x0000077B, // 0xC0020063
};
const uint32_t error_table_0xC0030001[] = {
- 0x000006EC, // 0xC0030001
- 0x000006ED, // 0xC0030002
- 0x000006EE, // 0xC0030003
- 0x00000006, // 0xC0030004
- 0x00000006, // 0xC0030005
- 0x000006F1, // 0xC0030006
- 0x000006F2, // 0xC0030007
- 0x000006F3, // 0xC0030008
- 0x000006F4, // 0xC0030009
- 0x000006F5, // 0xC003000A
- 0x000006F6, // 0xC003000B
- 0x000006F7, // 0xC003000C
+ 0x000006EC, // 0xC0030001
+ 0x000006ED, // 0xC0030002
+ 0x000006EE, // 0xC0030003
+ 0x00000006, // 0xC0030004
+ 0x00000006, // 0xC0030005
+ 0x000006F1, // 0xC0030006
+ 0x000006F2, // 0xC0030007
+ 0x000006F3, // 0xC0030008
+ 0x000006F4, // 0xC0030009
+ 0x000006F5, // 0xC003000A
+ 0x000006F6, // 0xC003000B
+ 0x000006F7, // 0xC003000C
};
const uint32_t error_table_0xC0030059[] = {
- 0x00000723, // 0xC0030059
- 0x00000724, // 0xC003005A
- 0x00000725, // 0xC003005B
- 0x00000726, // 0xC003005C
- 0,
- 0x00000728, // 0xC003005E
- 0x0000077C, // 0xC003005F
- 0x0000077D, // 0xC0030060
- 0x0000077E, // 0xC0030061
+ 0x00000723, // 0xC0030059
+ 0x00000724, // 0xC003005A
+ 0x00000725, // 0xC003005B
+ 0x00000726, // 0xC003005C
+ 0,
+ 0x00000728, // 0xC003005E
+ 0x0000077C, // 0xC003005F
+ 0x0000077D, // 0xC0030060
+ 0x0000077E, // 0xC0030061
};
const uint32_t error_table_0xC0050003[] = {
- 0x0000045D, // 0xC0050003
- 0x00000456, // 0xC0050004
+ 0x0000045D, // 0xC0050003
+ 0x00000456, // 0xC0050004
};
const uint32_t error_table_0xC0980001[] = {
- 0x00000037, // 0xC0980001
- 0x00000037, // 0xC0980002
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x00000037, // 0xC0980008
+ 0x00000037, // 0xC0980001
+ 0x00000037, // 0xC0980002
+ 0, 0, 0, 0, 0,
+ 0x00000037, // 0xC0980008
};
-#define MAKE_ENTRY(x) { ##x, xe::countof(error_table_##x), error_table_##x }
+#define MAKE_ENTRY(x) \
+ { ##x, xe::countof(error_table_##x), error_table_##x }
const error_lookup_table error_tables[] = {
- MAKE_ENTRY(0x00000103),
- MAKE_ENTRY(0x40000002),
- MAKE_ENTRY(0x40020056),
- MAKE_ENTRY(0x400200AF),
- MAKE_ENTRY(0x80000001),
- MAKE_ENTRY(0x80000288),
- MAKE_ENTRY(0x80090300),
- MAKE_ENTRY(0xC0000001),
- MAKE_ENTRY(0xC0000202),
- MAKE_ENTRY(0xC0020001),
- MAKE_ENTRY(0xC0030001),
- MAKE_ENTRY(0xC0030059),
- MAKE_ENTRY(0xC0050003),
- MAKE_ENTRY(0xC0980001),
- { 0, 0, nullptr },
+ MAKE_ENTRY(0x00000103),
+ MAKE_ENTRY(0x40000002),
+ MAKE_ENTRY(0x40020056),
+ MAKE_ENTRY(0x400200AF),
+ MAKE_ENTRY(0x80000001),
+ MAKE_ENTRY(0x80000288),
+ MAKE_ENTRY(0x80090300),
+ MAKE_ENTRY(0xC0000001),
+ MAKE_ENTRY(0xC0000202),
+ MAKE_ENTRY(0xC0020001),
+ MAKE_ENTRY(0xC0030001),
+ MAKE_ENTRY(0xC0030059),
+ MAKE_ENTRY(0xC0050003),
+ MAKE_ENTRY(0xC0980001),
+ {0, 0, nullptr},
};
#undef MAKE_ENTRY
-SHIM_CALL RtlNtStatusToDosError_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t status = SHIM_GET_ARG_32(0);
-
- XELOGD("RtlNtStatusToDosError(%.4X)", status);
-
+dword_result_t RtlNtStatusToDosError(dword_t source_status) {
+ uint32_t status = source_status;
if (!status || (status & 0x20000000)) {
- SHIM_SET_RETURN_32(status);
- return;
+ return status & 0xFFFF;
}
-
+
if ((status >> 16) == 0x8007) {
- SHIM_SET_RETURN_32(status & 0xFFFF);
- return;
+ return status & 0xFFFF;
}
if ((status & 0xF0000000) == 0xD0000000) {
@@ -1016,25 +820,20 @@ SHIM_CALL RtlNtStatusToDosError_shim(PPCContext* ppc_context,
break;
}
XELOGE("RtlNtStatusToDosError => %X", result);
- SHIM_SET_RETURN_32(result);
- return;
+ return result;
}
++error_table;
}
if ((status >> 16) == 0xC001) {
- SHIM_SET_RETURN_32(status & 0xFFFF);
- return;
+ return status & 0xFFFF;
}
XELOGE("RtlNtStatusToDosError lookup NOT IMPLEMENTED");
- SHIM_SET_RETURN_32(317); // ERROR_MR_MID_NOT_FOUND
+ return 317; // ERROR_MR_MID_NOT_FOUND
}
+DECLARE_XBOXKRNL_EXPORT(RtlNtStatusToDosError,
+ ExportTag::kImportant | ExportTag::kLogResult);
} // namespace kernel
} // namespace xe
-
-void xe::kernel::xboxkrnl::RegisterErrorExports(
- xe::cpu::ExportResolver* export_resolver, KernelState* kernel_state) {
- SHIM_SET_MAPPING("xboxkrnl.exe", RtlNtStatusToDosError, state);
-}
diff --git a/src/xenia/kernel/xboxkrnl_error.h b/src/xenia/kernel/xboxkrnl_error.h
deleted file mode 100644
index c76a569b4..000000000
--- a/src/xenia/kernel/xboxkrnl_error.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- ******************************************************************************
- * Xenia : Xbox 360 Emulator Research Project *
- ******************************************************************************
- * Copyright 2013 Ben Vanik. All rights reserved. *
- * Released under the BSD license - see LICENSE in the root for more details. *
- ******************************************************************************
- */
-
-#ifndef XENIA_KERNEL_XBOXKRNL_ERROR_H_
-#define XENIA_KERNEL_XBOXKRNL_ERROR_H_
-
-#include "xenia/xbox.h"
-
-namespace xe {
-namespace kernel {
-
-} // namespace kernel
-} // namespace xe
-
-#endif // XENIA_KERNEL_XBOXKRNL_ERROR_H_
diff --git a/src/xenia/kernel/xboxkrnl_hal.cc b/src/xenia/kernel/xboxkrnl_hal.cc
index 2655f3b4b..df341dd44 100644
--- a/src/xenia/kernel/xboxkrnl_hal.cc
+++ b/src/xenia/kernel/xboxkrnl_hal.cc
@@ -16,12 +16,7 @@
namespace xe {
namespace kernel {
-SHIM_CALL HalReturnToFirmware_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t routine = SHIM_GET_ARG_32(0);
-
- XELOGD("HalReturnToFirmware(%d)", routine);
-
+void HalReturnToFirmware(dword_t routine) {
// void
// IN FIRMWARE_REENTRY Routine
@@ -33,11 +28,7 @@ SHIM_CALL HalReturnToFirmware_shim(PPCContext* ppc_context,
XELOGE("Game requested shutdown via HalReturnToFirmware");
exit(0);
}
+DECLARE_XBOXKRNL_EXPORT(HalReturnToFirmware, ExportTag::kImportant);
} // namespace kernel
} // namespace xe
-
-void xe::kernel::xboxkrnl::RegisterHalExports(
- xe::cpu::ExportResolver* export_resolver, KernelState* kernel_state) {
- SHIM_SET_MAPPING("xboxkrnl.exe", HalReturnToFirmware, state);
-}
diff --git a/src/xenia/kernel/xboxkrnl_module.cc b/src/xenia/kernel/xboxkrnl_module.cc
index c14cbcdfc..464c12cc3 100644
--- a/src/xenia/kernel/xboxkrnl_module.cc
+++ b/src/xenia/kernel/xboxkrnl_module.cc
@@ -30,9 +30,6 @@ XboxkrnlModule::XboxkrnlModule(Emulator* emulator, KernelState* kernel_state)
// Register all exported functions.
xboxkrnl::RegisterAudioExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterAudioXmaExports(export_resolver_, kernel_state_);
- xboxkrnl::RegisterDebugExports(export_resolver_, kernel_state_);
- xboxkrnl::RegisterErrorExports(export_resolver_, kernel_state_);
- xboxkrnl::RegisterHalExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterIoExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterMemoryExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterMiscExports(export_resolver_, kernel_state_);
@@ -41,7 +38,6 @@ XboxkrnlModule::XboxkrnlModule(Emulator* emulator, KernelState* kernel_state)
xboxkrnl::RegisterRtlExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterStringExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterThreadingExports(export_resolver_, kernel_state_);
- xboxkrnl::RegisterUsbcamExports(export_resolver_, kernel_state_);
xboxkrnl::RegisterVideoExports(export_resolver_, kernel_state_);
// KeDebugMonitorData (?*)
diff --git a/src/xenia/kernel/xboxkrnl_private.h b/src/xenia/kernel/xboxkrnl_private.h
index be0ff9267..501cb221a 100644
--- a/src/xenia/kernel/xboxkrnl_private.h
+++ b/src/xenia/kernel/xboxkrnl_private.h
@@ -25,12 +25,6 @@ void RegisterAudioExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
void RegisterAudioXmaExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
-void RegisterDebugExports(xe::cpu::ExportResolver* export_resolver,
- KernelState* kernel_state);
-void RegisterErrorExports(xe::cpu::ExportResolver* export_resolver,
- KernelState* kernel_state);
-void RegisterHalExports(xe::cpu::ExportResolver* export_resolver,
- KernelState* kernel_state);
void RegisterIoExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
void RegisterMemoryExports(xe::cpu::ExportResolver* export_resolver,
@@ -47,8 +41,6 @@ void RegisterStringExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
void RegisterThreadingExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
-void RegisterUsbcamExports(xe::cpu::ExportResolver* export_resolver,
- KernelState* kernel_state);
void RegisterVideoExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state);
} // namespace xboxkrnl
diff --git a/src/xenia/kernel/xboxkrnl_strings.cc b/src/xenia/kernel/xboxkrnl_strings.cc
index ee823aef6..e87bca78c 100644
--- a/src/xenia/kernel/xboxkrnl_strings.cc
+++ b/src/xenia/kernel/xboxkrnl_strings.cc
@@ -961,6 +961,28 @@ SHIM_CALL _vscwprintf_shim(PPCContext* ppc_context, KernelState* kernel_state) {
SHIM_SET_RETURN_32(count);
}
+SHIM_CALL DbgPrint_shim(PPCContext* ppc_context, KernelState* kernel_state) {
+ uint32_t format_ptr = SHIM_GET_ARG_32(0);
+ if (!format_ptr) {
+ SHIM_SET_RETURN_32(X_STATUS_INVALID_PARAMETER);
+ return;
+ }
+ auto format = (const uint8_t*)SHIM_MEM_ADDR(format_ptr);
+
+ StackArgList args(ppc_context);
+ StringFormatData data(format);
+
+ int32_t count = format_core(ppc_context, data, args, false);
+ if (count <= 0) {
+ SHIM_SET_RETURN_32(X_STATUS_SUCCESS);
+ return;
+ }
+
+ XELOGD("(DbgPrint) %s", data.str().c_str());
+
+ SHIM_SET_RETURN_32(X_STATUS_SUCCESS);
+}
+
} // namespace kernel
} // namespace xe
@@ -971,4 +993,5 @@ void xe::kernel::xboxkrnl::RegisterStringExports(
SHIM_SET_MAPPING("xboxkrnl.exe", _vsnprintf, state);
SHIM_SET_MAPPING("xboxkrnl.exe", vswprintf, state);
SHIM_SET_MAPPING("xboxkrnl.exe", _vscwprintf, state);
+ SHIM_SET_MAPPING("xboxkrnl.exe", DbgPrint, state);
}
diff --git a/src/xenia/kernel/xboxkrnl_usbcam.cc b/src/xenia/kernel/xboxkrnl_usbcam.cc
index 976b58bb7..c118c7a9c 100644
--- a/src/xenia/kernel/xboxkrnl_usbcam.cc
+++ b/src/xenia/kernel/xboxkrnl_usbcam.cc
@@ -16,30 +16,19 @@
namespace xe {
namespace kernel {
-SHIM_CALL XUsbcamCreate_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- uint32_t unk1 = SHIM_GET_ARG_32(0); // E
- uint32_t unk2 = SHIM_GET_ARG_32(1); // 0x4B000
- uint32_t unk3_ptr = SHIM_GET_ARG_32(3);
-
- XELOGD("XUsbcamCreate(%.8X, %.8X, %.8X)", unk1, unk2, unk3_ptr);
-
+dword_result_t XUsbcamCreate(unknown_t unk1, // E
+ unknown_t unk2, // 0x4B000
+ lpunknown_t unk3_ptr) {
// 0 = success.
- SHIM_SET_RETURN_32(X_ERROR_DEVICE_NOT_CONNECTED);
+ return X_ERROR_DEVICE_NOT_CONNECTED;
}
+DECLARE_XBOXKRNL_EXPORT(XUsbcamCreate, ExportTag::kStub);
-SHIM_CALL XUsbcamGetState_shim(PPCContext* ppc_context,
- KernelState* kernel_state) {
- XELOGD("XUsbcamGetState()");
+dword_result_t XUsbcamGetState() {
// 0 = not connected.
- SHIM_SET_RETURN_32(0);
+ return 0;
}
+DECLARE_XBOXKRNL_EXPORT(XUsbcamGetState, ExportTag::kStub);
} // namespace kernel
} // namespace xe
-
-void xe::kernel::xboxkrnl::RegisterUsbcamExports(
- xe::cpu::ExportResolver* export_resolver, KernelState* kernel_state) {
- SHIM_SET_MAPPING("xboxkrnl.exe", XUsbcamCreate, state);
- SHIM_SET_MAPPING("xboxkrnl.exe", XUsbcamGetState, state);
-}
diff --git a/src/xenia/kernel/xboxkrnl_video.cc b/src/xenia/kernel/xboxkrnl_video.cc
index d225d003d..47f2c8089 100644
--- a/src/xenia/kernel/xboxkrnl_video.cc
+++ b/src/xenia/kernel/xboxkrnl_video.cc
@@ -115,8 +115,8 @@ DECLARE_XBOXKRNL_EXPORT(VdSetDisplayModeOverride,
ExportTag::kVideo | ExportTag::kStub);
dword_result_t VdInitializeEngines(unknown_t unk0, function_t callback,
- unknown_t unk1, unknown_pointer_t unk2_ptr,
- unknown_pointer_t unk3_ptr) {
+ unknown_t unk1, lpunknown_t unk2_ptr,
+ lpunknown_t unk3_ptr) {
// r3 = 0x4F810000
// r4 = function ptr (cleanup callback?)
// r5 = 0
@@ -175,8 +175,7 @@ void VdEnableRingBufferRPtrWriteBack(lpvoid_t ptr, int_t block_size) {
}
DECLARE_XBOXKRNL_EXPORT(VdEnableRingBufferRPtrWriteBack, ExportTag::kVideo);
-void VdGetSystemCommandBuffer(unknown_pointer_t p0_ptr,
- unknown_pointer_t p1_ptr) {
+void VdGetSystemCommandBuffer(lpunknown_t p0_ptr, lpunknown_t p1_ptr) {
p0_ptr.Zero(0x94);
xe::store_and_swap(p0_ptr, 0xBEEF0000);
xe::store_and_swap(p1_ptr, 0xBEEF0001);
@@ -184,7 +183,7 @@ void VdGetSystemCommandBuffer(unknown_pointer_t p0_ptr,
DECLARE_XBOXKRNL_EXPORT(VdGetSystemCommandBuffer,
ExportTag::kVideo | ExportTag::kStub);
-void VdSetSystemCommandBufferGpuIdentifierAddress(unknown_pointer_t unk) {
+void VdSetSystemCommandBufferGpuIdentifierAddress(lpunknown_t unk) {
// r3 = 0x2B10(d3d?) + 8
}
DECLARE_XBOXKRNL_EXPORT(VdSetSystemCommandBufferGpuIdentifierAddress,
@@ -196,16 +195,16 @@ DECLARE_XBOXKRNL_EXPORT(VdSetSystemCommandBufferGpuIdentifierAddress,
// no op?
dword_result_t VdInitializeScalerCommandBuffer(
- unknown_t unk0, // 0?
- unknown_t unk1, // 0x050002d0 size of ?
- unknown_t unk2, // 0?
- unknown_t unk3, // 0x050002d0 size of ?
- unknown_t unk4, // 0x050002d0 size of ?
- unknown_t unk5, // 7?
- unknown_pointer_t unk6, // 0x2004909c <-- points to zeros?
- unknown_t unk7, // 7?
- lpvoid_t dest_ptr // Points to the first 80000000h where the memcpy
- // sources from.
+ unknown_t unk0, // 0?
+ unknown_t unk1, // 0x050002d0 size of ?
+ unknown_t unk2, // 0?
+ unknown_t unk3, // 0x050002d0 size of ?
+ unknown_t unk4, // 0x050002d0 size of ?
+ unknown_t unk5, // 7?
+ lpunknown_t unk6, // 0x2004909c <-- points to zeros?
+ unknown_t unk7, // 7?
+ lpvoid_t dest_ptr // Points to the first 80000000h where the memcpy
+ // sources from.
) {
// We could fake the commands here, but I'm not sure the game checks for
// anything but success (non-zero ret).
@@ -290,14 +289,13 @@ dword_result_t VdRetrainEDRAM(unknown_t unk0, unknown_t unk1, unknown_t unk2,
}
DECLARE_XBOXKRNL_EXPORT(VdRetrainEDRAM, ExportTag::kVideo | ExportTag::kStub);
-void VdSwap(
- lpvoid_t buffer_ptr, // ptr into primary ringbuffer
- lpvoid_t fetch_ptr, // frontbuffer texture fetch
- unknown_t unk2, //
- unknown_pointer_t unk3, // buffer from VdGetSystemCommandBuffer
- unknown_pointer_t unk4, // from VdGetSystemCommandBuffer (0xBEEF0001)
- lpdword_t frontbuffer_ptr, // ptr to frontbuffer address
- lpdword_t color_format_ptr, lpdword_t color_space_ptr) {
+void VdSwap(lpvoid_t buffer_ptr, // ptr into primary ringbuffer
+ lpvoid_t fetch_ptr, // frontbuffer texture fetch
+ unknown_t unk2, //
+ lpunknown_t unk3, // buffer from VdGetSystemCommandBuffer
+ lpunknown_t unk4, // from VdGetSystemCommandBuffer (0xBEEF0001)
+ lpdword_t frontbuffer_ptr, // ptr to frontbuffer address
+ lpdword_t color_format_ptr, lpdword_t color_space_ptr) {
gpu::xenos::xe_gpu_texture_fetch_t fetch;
xe::copy_and_swap_32_unaligned(
reinterpret_cast(&fetch),