diff --git a/include/libCallTypes.h b/include/libCallTypes.h new file mode 100644 index 00000000..ce1ebacc --- /dev/null +++ b/include/libCallTypes.h @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: ODbL-1.0 + +CALL_(unknown) // Unknown, intended to be used for "not a function" types and for "function" documentation when reverse-engineering efforts could not narrow it down to either the stack or one of the registers. +CALL_(none) +CALL_(cdecl) +CALL_(stdcall) +CALL_(thiscall) +CALL_(fastcall) diff --git a/include/libParamTypes.h b/include/libParamTypes.h new file mode 100644 index 00000000..141e5a6c --- /dev/null +++ b/include/libParamTypes.h @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: ODbL-1.0 + +PARAM_TYPE_32(unk) // Unknown, intended to be used for "not a function" types and for "function" documentation when reverse-engineering efforts could not narrow it down to either the stack or one of the registers. +PARAM_TYPE__0(void) // 0 bits +PARAM_TYPE_64(psh2) // 64 bits (two pushes) +PARAM_TYPE_32(psh) // 32 bits (one push) +PARAM_TYPE_32(eax) // 32 bits +PARAM_TYPE_16_(ax) // 16 bits +PARAM_TYPE__8_(ah) // 8 bits +PARAM_TYPE__8_(al) // 8 bits +PARAM_TYPE_32(ebx) // 32 bits +PARAM_TYPE_16_(bx) // 16 bits +PARAM_TYPE__8_(bh) // 8 bits +PARAM_TYPE__8_(bl) // 8 bits +PARAM_TYPE_32(ecx) // 32 bits +PARAM_TYPE_16_(cx) // 16 bits +PARAM_TYPE__8_(ch) // 8 bits +PARAM_TYPE__8_(cl) // 8 bits +PARAM_TYPE_32(edx) // 32 bits +PARAM_TYPE_16_(dx) // 16 bits +PARAM_TYPE__8_(dh) // 8 bits +PARAM_TYPE__8_(dl) // 8 bits +PARAM_TYPE_32(ebp) // 32 bits +PARAM_TYPE_32(edi) // 32 bits +PARAM_TYPE_32(esi) // 32 bits diff --git a/include/libXbSymbolDatabase.h b/include/libXbSymbolDatabase.h index e6390cec..0529e648 100644 --- a/include/libXbSymbolDatabase.h +++ b/include/libXbSymbolDatabase.h @@ -127,6 +127,39 @@ static const char* xbe_type_str[XB_XBE_TYPE_MAX] = { "CHIHIRO" }; +typedef enum _XbSDBSymbolType { + symbol_internal = 0, // Only for internal usage. + symbol_variable, + symbol_function +} XbSDBSymbolType; + +typedef enum _XbSDBCallType { +#define CALL_(type) call_##type, +#include +#undef CALL_ + call_max +} XbSDBCallType; + +typedef enum _XbSDBParamType { +#define PARAM_TYPE__0(type) param_##type, +#define PARAM_TYPE_64(type) param_##type, +#define PARAM_TYPE_32(type) param_##type, +#define PARAM_TYPE_16_(type) param__##type, +#define PARAM_TYPE__8_(type) param__##type, +#include +#undef PARAM_TYPE__0 +#undef PARAM_TYPE_64 +#undef PARAM_TYPE_32 +#undef PARAM_TYPE_16_ +#undef PARAM_TYPE__8_ + param_max +} XbSDBParamType; + +typedef struct _XbSDBSymbolParam { + XbSDBParamType type; + const char* const name; +} XbSDBSymbolParam; + #ifndef xbaddr typedef uint32_t xbaddr; #endif @@ -197,15 +230,18 @@ void XbSymbolDatabase_SetOutputMessage(xb_output_message_t message_func); /// /// To register any detected symbol name with address and build version back to third-party program. -/// NOTE: Be aware of library name will be varity since some libraries are detecting in other sections as well. +/// NOTE: Be aware that the library name will vary since some libraries are detected in other sections as well. /// /// Name of the library in string. /// Name of the library in flag. /// Output unique xreference of symbol name. /// Name of the library in symbol string. /// Return xbox's virtual address. -/// Found with specific build verison. -typedef void (*xb_symbol_register_t)(const char* library_str, uint32_t library_flag, uint32_t xref_index, const char* symbol_str, xbaddr address, uint32_t build_verison); +/// Found with specific build version. +/// Type of symbol. If symbol type is a function, then the following arguments starting with a param_ prefix will be set. +/// Total count of parameters. +/// List of parameters. +typedef void (*xb_symbol_register_t)(const char* library_str, uint32_t library_flag, uint32_t xref_index, const char* symbol_str, xbaddr address, uint32_t build_version, uint32_t symbol_type, uint32_t call_type, uint32_t param_count, const XbSDBSymbolParam* param_list); /// /// DEPRECATED: To scan symbols in memory of raw xbe or host's virtual xbox environment. @@ -223,6 +259,27 @@ bool XbSymbolScan(const void* xb_header_addr, xb_symbol_register_t register_func /// Return "UNKNOWN" string if does not exist in the database. Otherwise will return library name string. const char* XbSymbolDatabase_LibraryToString(uint32_t library_flag); +/// +/// To convert parameter type into string format. +/// +/// Input provided param_type from symbol register callback. +/// Return "unk" string if does not exist in the database. Otherwise it will return the string representation of the parameter type. +const char* XbSymbolDatabase_ParamToString(uint32_t param_type); + +/// +/// To convert calling convention type into string format. +/// +/// Input provided call_type from symbol register callback. +/// Return "unknown" string if does not exist in the database. Otherwise it will return the string representation of the calling convention type. +const char* XbSymbolDatabase_CallingConventionToString(uint32_t call_type); + +/// +/// To convert a symbol reference index into string format. +/// +/// Input provided xref_index from symbol register callback. +/// Returns a demangled symbol name string. +const char* XbSymbolDatabase_SymbolReferenceToString(uint32_t xref_index); + /// /// To convert library name string into flag format. /// diff --git a/include/xref/d3d8.def b/include/xref/d3d8.def index 7e89938c..1f80b33b 100644 --- a/include/xref/d3d8.def +++ b/include/xref/d3d8.def @@ -60,15 +60,15 @@ XREF_SYMBOL(D3DTSS_TEXCOORDINDEX) // Offsets : -XREF_SYMBOL(OFFSET_D3DDevice__m_PixelShader) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_Textures) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_Palettes) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_RenderTarget) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_DepthStencil) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_VerticalBlankEvent) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_SwapCallback) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_VBlankCallback) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_D3DDevice__m_VertexShader) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_PixelShader_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_Textures_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_Palettes_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_RenderTarget_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_DepthStencil_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_VerticalBlankEvent_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_SwapCallback_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_VBlankCallback_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(D3DDevice__m_VertexShader_OFFSET) // initially set to XREF_ADDR_DERIVE // Functions // include D3D8 prefix diff --git a/include/xref/list_xref.h b/include/xref/list_xref.h index 851ab064..3f559aa0 100644 --- a/include/xref/list_xref.h +++ b/include/xref/list_xref.h @@ -422,6 +422,9 @@ typedef enum _XRefDatabase { // Also, if XREF_COUNT > sizeof(uint16), enlarge struct OOVPA.XRefSaveIndex (and Value somehow) } XRefDatabase; +#define XREF_API_TO_PUBLIC_INDEX(xref_api_index) xref_api_index - XREF_KT_COUNT - 1 +#define XREF_PUBLIC_TO_API_INDEX(xref_public_index) xref_public_index + XREF_KT_COUNT + 1 + #define XREF_ADDR_UNDETERMINED -1 #define XREF_ADDR_NOT_FOUND ((void*)0) #define XREF_ADDR_DERIVE 1 diff --git a/include/xref/xapilib.def b/include/xref/xapilib.def index a440b1af..62f56ccc 100644 --- a/include/xref/xapilib.def +++ b/include/xref/xapilib.def @@ -20,8 +20,8 @@ // ****************************************************************** // Variables -XREF_SYMBOL(XAPI__tls_array) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(XAPI__tls_index) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(_tls_array) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(_tls_index) // initially set to XREF_ADDR_DERIVE XREF_SYMBOL(g_DeviceType_Gamepad) // initially set to XREF_ADDR_DERIVE XREF_SYMBOL(g_DeviceType_IRDongle) // initially set to XREF_ADDR_DERIVE XREF_SYMBOL(g_DeviceType_Keyboard) // initially set to XREF_ADDR_DERIVE @@ -35,51 +35,50 @@ XREF_SYMBOL(g_XapiAltLett_MU) // initially set to XREF_ADDR_DERIVE XREF_SYMBOL(g_XapiMountedMUs) // initially set to XREF_ADDR_DERIVE // Offsets -XREF_SYMBOL(OFFSET_XapiCurrentFiber) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_XapiLastErrorCode) // initially set to XREF_ADDR_DERIVE -XREF_SYMBOL(OFFSET_XapiThreadFiberData) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(XapiCurrentFiber_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(XapiLastErrorCode_OFFSET) // initially set to XREF_ADDR_DERIVE +XREF_SYMBOL(XapiThreadFiberData_OFFSET) // initially set to XREF_ADDR_DERIVE // Functions -// include XAPI prefix XREF_SYMBOL(IUsbInit_GetMaxDeviceTypeCount) XREF_SYMBOL(MU_Init) -XREF_SYMBOL(XAPI__cinit) -XREF_SYMBOL(XAPI__rtinit) -XREF_SYMBOL(XAPI_ConvertThreadToFiber) -XREF_SYMBOL(XAPI_CreateEventA) -XREF_SYMBOL(XAPI_CreateFiber) -XREF_SYMBOL(XAPI_CreateMutexA) -XREF_SYMBOL(XAPI_CreateThread) -XREF_SYMBOL(XAPI_DeleteFiber) -XREF_SYMBOL(XAPI_ExitThread) -XREF_SYMBOL(XAPI_GetExitCodeThread) -XREF_SYMBOL(XAPI_GetLastError) -XREF_SYMBOL(XAPI_GetOverlappedResult) -XREF_SYMBOL(XAPI_GetThreadPriority) -XREF_SYMBOL(XAPI_GetTimeZoneInformation) -XREF_SYMBOL(XAPI_GetTypeInformation_4) -XREF_SYMBOL(XAPI_GetTypeInformation_8) -XREF_SYMBOL(XAPI_mainCRTStartup) -XREF_SYMBOL(XAPI_mainXapiStartup) -XREF_SYMBOL(XAPI_MoveFileA) -XREF_SYMBOL(XAPI_OpenEventA) -XREF_SYMBOL(XAPI_OutputDebugStringA) -XREF_SYMBOL(XAPI_OutputDebugStringW) -XREF_SYMBOL(XAPI_PulseEvent) -XREF_SYMBOL(XAPI_QueueUserAPC) -XREF_SYMBOL(XAPI_QueryPerformanceCounter) -XREF_SYMBOL(XAPI_RaiseException) -XREF_SYMBOL(XAPI_ResetEvent) -XREF_SYMBOL(XAPI_SetEvent) -XREF_SYMBOL(XAPI_SetLastError) -XREF_SYMBOL(XAPI_SetThreadPriority) -XREF_SYMBOL(XAPI_SetThreadPriorityBoost) -XREF_SYMBOL(XAPI_SignalObjectAndWait) -XREF_SYMBOL(XAPI_SwitchToFiber) -XREF_SYMBOL(XAPI_SwitchToThread) -XREF_SYMBOL(XAPI_timeKillEvent) -XREF_SYMBOL(XAPI_timeSetEvent) -XREF_SYMBOL(XAPI_UnhandledExceptionFilter) +XREF_SYMBOL(_cinit) +XREF_SYMBOL(_rtinit) +XREF_SYMBOL(ConvertThreadToFiber) +XREF_SYMBOL(CreateEventA) +XREF_SYMBOL(CreateFiber) +XREF_SYMBOL(CreateMutexA) +XREF_SYMBOL(CreateThread) +XREF_SYMBOL(DeleteFiber) +XREF_SYMBOL(ExitThread) +XREF_SYMBOL(GetExitCodeThread) +XREF_SYMBOL(GetLastError) +XREF_SYMBOL(GetOverlappedResult) +XREF_SYMBOL(GetThreadPriority) +XREF_SYMBOL(GetTimeZoneInformation) +XREF_SYMBOL(GetTypeInformation_4) +XREF_SYMBOL(GetTypeInformation_8) +XREF_SYMBOL(mainCRTStartup) +XREF_SYMBOL(mainXapiStartup) +XREF_SYMBOL(MoveFileA) +XREF_SYMBOL(OpenEventA) +XREF_SYMBOL(OutputDebugStringA) +XREF_SYMBOL(OutputDebugStringW) +XREF_SYMBOL(PulseEvent) +XREF_SYMBOL(QueueUserAPC) +XREF_SYMBOL(QueryPerformanceCounter) +XREF_SYMBOL(RaiseException) +XREF_SYMBOL(ResetEvent) +XREF_SYMBOL(SetEvent) +XREF_SYMBOL(SetLastError) +XREF_SYMBOL(SetThreadPriority) +XREF_SYMBOL(SetThreadPriorityBoost) +XREF_SYMBOL(SignalObjectAndWait) +XREF_SYMBOL(SwitchToFiber) +XREF_SYMBOL(SwitchToThread) +XREF_SYMBOL(timeKillEvent) +XREF_SYMBOL(timeSetEvent) +XREF_SYMBOL(UnhandledExceptionFilter) // Xapi prefix XREF_SYMBOL(XapiBootToDash) XREF_SYMBOL(XapiCallThreadNotifyRoutines) diff --git a/projects/libXbSymbolDatabase/CMakeLists.txt b/projects/libXbSymbolDatabase/CMakeLists.txt index 29e08aca..e081e3e9 100644 --- a/projects/libXbSymbolDatabase/CMakeLists.txt +++ b/projects/libXbSymbolDatabase/CMakeLists.txt @@ -8,6 +8,8 @@ find_package(Threads) file(GLOB INCLUDES "${XBSDB_ROOT_DIR}/include/Xbe.h" + "${XBSDB_ROOT_DIR}/include/libCallTypes.h" + "${XBSDB_ROOT_DIR}/include/libParamTypes.h" "${XBSDB_ROOT_DIR}/include/libXbSymbolDatabase.h" # Include xrefs for ABI feature support. @@ -36,6 +38,7 @@ file(GLOB HEADERS "${XBSDB_ROOT_DIR}/src/lib/manual_custom.h" "${XBSDB_ROOT_DIR}/src/lib/manual_d3d8__ltcg.h" "${XBSDB_ROOT_DIR}/src/lib/manual_dsound.h" + "${XBSDB_ROOT_DIR}/src/lib/manual_jvs.h" "${XBSDB_ROOT_DIR}/src/lib/manual_xapilib.h" "${XBSDB_ROOT_DIR}/src/OOVPADatabase/OOVPA.h" ) diff --git a/src/OOVPADatabase/.clang-format b/src/OOVPADatabase/.clang-format index e6801694..39ecb0cb 100644 --- a/src/OOVPADatabase/.clang-format +++ b/src/OOVPADatabase/.clang-format @@ -14,7 +14,7 @@ Cpp11BracedListStyle: 'false' IndentCaseLabels: 'true' IndentWidth: '4' MacroBlockBegin: ^OOVPA_XREF$|^OOVPA_NO_XREF$|^OOVPA_XREF_DETECT$|^OOVPA_NO_XREF_DETECT$|^OOVPA_XREF_EXTEND$|^OOVPA_SIG_HEADER_XREF$|^OOVPA_SIG_HEADER_NO_XREF$|^OOVPA_SIG_HEADER_XREF_DETECT$|^OOVPA_SIG_HEADER_NO_XREF_DETECT$|^OOVPA_SIG_HEADER_XREF_EXTEND$ -MacroBlockEnd: ^OOVPA_END$|^OOVPA_SIG_MATCH$ +MacroBlockEnd: ^OOVPA_END$|^OOVPA_SIG_MATCH$|^OOVPA_SIG_MATCH_DUMMY$ MaxEmptyLinesToKeep: '2' PointerAlignment: Left SortIncludes: 'false' diff --git a/src/OOVPADatabase/D3D8/3911.inl b/src/OOVPADatabase/D3D8/3911.inl index 7847e729..19c32287 100644 --- a/src/OOVPADatabase/D3D8/3911.inl +++ b/src/OOVPADatabase/D3D8/3911.inl @@ -42,7 +42,7 @@ OOVPA_SIG_MATCH( XREF_ENTRY(0x01, XREF_D3D_g_pDevice), // add eax, OFFSET_D3DDevice__m_VerticalBlankEvent - XREF_ENTRY(0x18, XREF_OFFSET_D3DDevice__m_VerticalBlankEvent), // <-- Deriving this XRef is the purpose of this OOVPA + XREF_ENTRY(0x18, XREF_D3DDevice__m_VerticalBlankEvent_OFFSET), // <-- Deriving this XRef is the purpose of this OOVPA // mov eax,[D3D_g_pDevice] OV_MATCH(0x00, 0xA1), @@ -110,6 +110,54 @@ OOVPA_SIG_MATCH( // ); +// ****************************************************************** +// * D3D_g_pDevice +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(D3D_g_pDevice, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * D3DDevice__m_PixelShader OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_PixelShader_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * D3DDevice__m_VerticalBlankEvent OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_VerticalBlankEvent_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * D3DDevice__m_SwapCallback OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_SwapCallback_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * D3DDevice__m_VBlankCallback OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_VBlankCallback_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * D3DDevice__m_VertexShader OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_VertexShader_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + // ****************************************************************** // * Direct3D_CreateDevice // ****************************************************************** @@ -1557,7 +1605,7 @@ OOVPA_SIG_MATCH( XREF_ENTRY(0x01, XREF_D3D_g_pDevice), // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, OFFSET_D3DDevice__m_VerticalBlankEvent - XREF_ENTRY(0x18, XREF_OFFSET_D3DDevice__m_VerticalBlankEvent), + XREF_ENTRY(0x18, XREF_D3DDevice__m_VerticalBlankEvent_OFFSET), // D3DDevice_BlockUntilVerticalBlank+0x00 : mov eax,[D3D_g_pDevice] OV_MATCH(0x00, 0xA1), @@ -1596,7 +1644,7 @@ OOVPA_SIG_MATCH( XREF_ENTRY(0x06, XREF_D3D_g_pDevice), // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+OFFSET_D3DDevice__m_VBlankCallback],eax - XREF_ENTRY(0x0C, XREF_OFFSET_D3DDevice__m_VBlankCallback), + XREF_ENTRY(0x0C, XREF_D3DDevice__m_VBlankCallback_OFFSET), // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax,[esp+0x04] OV_MATCH(0x00, 0x8B, 0x44, 0x24, 0x04), @@ -1753,7 +1801,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x12, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived + XREF_ENTRY(0x12, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived // D3DDevice_SetVertexShader+0x00 : push ebx { 0x00, 0x53 }, diff --git a/src/OOVPADatabase/D3D8/4034.inl b/src/OOVPADatabase/D3D8/4034.inl index c11204e3..51b8f15e 100644 --- a/src/OOVPADatabase/D3D8/4034.inl +++ b/src/OOVPADatabase/D3D8/4034.inl @@ -1027,7 +1027,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x13, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived + XREF_ENTRY(0x13, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived // D3DDevice_SetVertexShader+0x06 : test bl, 1 { 0x06, 0xF6 }, diff --git a/src/OOVPADatabase/D3D8/4039.inl b/src/OOVPADatabase/D3D8/4039.inl index 1b162464..d06005da 100644 --- a/src/OOVPADatabase/D3D8/4039.inl +++ b/src/OOVPADatabase/D3D8/4039.inl @@ -157,7 +157,7 @@ OOVPA_SIG_MATCH( XREF_ENTRY(0x06, XREF_D3D_g_pDevice), // D3DDevice_SetSwapCallback+0x0A : mov [ecx+OFFSET_D3DDevice__m_SwapCallback],eax - XREF_ENTRY(0x0C, XREF_OFFSET_D3DDevice__m_SwapCallback), + XREF_ENTRY(0x0C, XREF_D3DDevice__m_SwapCallback_OFFSET), // D3DDevice_SetSwapCallback+0x00 : mov eax,[esp+0x04] OV_MATCH(0x00, 0x8B, 0x44, 0x24, 0x04), diff --git a/src/OOVPADatabase/D3D8/4134.inl b/src/OOVPADatabase/D3D8/4134.inl index 23a8643a..66ffcbc0 100644 --- a/src/OOVPADatabase/D3D8/4134.inl +++ b/src/OOVPADatabase/D3D8/4134.inl @@ -90,7 +90,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x13, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived + XREF_ENTRY(0x13, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived // D3DDevice_SetVertexShader+0x06 : test bl, 1 { 0x06, 0xF6 }, diff --git a/src/OOVPADatabase/D3D8/5028.inl b/src/OOVPADatabase/D3D8/5028.inl index 2688a8d5..e95f18b8 100644 --- a/src/OOVPADatabase/D3D8/5028.inl +++ b/src/OOVPADatabase/D3D8/5028.inl @@ -81,7 +81,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x13, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived + XREF_ENTRY(0x13, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived // D3DDevice_SetVertexShader+0x06 : test bl, 1 { 0x06, 0xF6 }, diff --git a/src/OOVPADatabase/D3D8/5455.inl b/src/OOVPADatabase/D3D8/5455.inl index 8ee96911..4cf23415 100644 --- a/src/OOVPADatabase/D3D8/5455.inl +++ b/src/OOVPADatabase/D3D8/5455.inl @@ -116,7 +116,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x13, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived (confirmed) + XREF_ENTRY(0x13, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived (confirmed) { 0x1E, 0x89 }, { 0x3E, 0x5F }, diff --git a/src/OOVPADatabase/D3D8LTCG/3911.inl b/src/OOVPADatabase/D3D8LTCG/3911.inl index e019ab5e..f1b3992e 100644 --- a/src/OOVPADatabase/D3D8LTCG/3911.inl +++ b/src/OOVPADatabase/D3D8LTCG/3911.inl @@ -27,7 +27,7 @@ // * Direct3D_CreateDevice // ****************************************************************** //85C9750AC705 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ebx_ppReturnedDeviceInterface, +OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_16__LTCG_eax4_ebx6, 2024) OOVPA_SIG_MATCH( @@ -97,7 +97,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_BumpEnv // ****************************************************************** //000085C08BDF75 ...C20800 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BumpEnv_8, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BumpEnv_8__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -168,7 +168,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** //538BD9C1E107 ...C3 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_0, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2, 2039, XRefOne) OOVPA_SIG_MATCH( @@ -193,7 +193,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** //C1..0681..241B040089 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_0__LTCG_eax1_ebx2, 2024) OOVPA_SIG_MATCH( @@ -217,7 +217,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** //83C008C1E707890689 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_0__LTCG_esi1_ebx2, 2024) OOVPA_SIG_MATCH( @@ -863,12 +863,12 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexShader // ****************************************************************** //F6C30155568B35 ...C3 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader_0, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader_0__LTCG_ebx1, 2024, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x0D, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived (confirmed) + XREF_ENTRY(0x0D, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived (confirmed) { 0x00, 0xF6 }, { 0x01, 0xC3 }, @@ -959,7 +959,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexShaderConstant // ****************************************************************** //83C160C1E202A810 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexShaderConstant_8, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexShaderConstant_8__LTCG_edx3, 2024) OOVPA_SIG_MATCH( @@ -1022,7 +1022,7 @@ OOVPA_SIG_MATCH( //* D3DDevice_LoadVertexShader //****************************************************************** //C7009C1E04008B ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_0__LTCG_ecx1_eax2, 2024) OOVPA_SIG_MATCH( @@ -1068,7 +1068,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * D3DDevice_DeleteVertexShader // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_DeleteVertexShader_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_DeleteVertexShader_0__LTCG_eax1, 3911) OOVPA_SIG_MATCH( @@ -1144,7 +1144,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTexture // ****************************************************************** //81C10000F8FF89 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTexture_4__LTCG_eax_pTexture, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTexture_4__LTCG_eax2, 2024) OOVPA_SIG_MATCH( @@ -1163,7 +1163,7 @@ OOVPA_SIG_MATCH( // * D3D_BlockOnResource // ****************************************************************** //00007800750C85 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0, +OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -1186,8 +1186,8 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetStreamSource // ****************************************************************** //7406810300000800 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber, - 1039, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_8__LTCG_edx1, + 2039, XRefOne) OOVPA_SIG_MATCH( @@ -1212,7 +1212,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetPixelShader // ****************************************************************** //C740040000210083C008 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax_handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax1, 2060) OOVPA_SIG_MATCH( @@ -1249,7 +1249,7 @@ OOVPA_SIG_MATCH( XREF_ENTRY(0x01, XREF_D3D_g_pDevice), // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, OFFSET_D3DDevice__m_VerticalBlankEvent - XREF_ENTRY(0x18, XREF_OFFSET_D3DDevice__m_VerticalBlankEvent), + XREF_ENTRY(0x18, XREF_D3DDevice__m_VerticalBlankEvent_OFFSET), // D3DDevice_BlockUntilVerticalBlank+0x00 : mov eax,[D3D_g_pDevice] OV_MATCH(0x00, 0xA1), @@ -1279,7 +1279,7 @@ OOVPA_SIG_MATCH( // * D3D_DestroyResource // ****************************************************************** // Generic OOVPA as of 3911 and newer. -OOVPA_SIG_HEADER_XREF(D3D_DestroyResource__LTCG, +OOVPA_SIG_HEADER_XREF(D3D_DestroyResource_0__LTCG_edi1, 3911, XRefOne) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/4039.inl b/src/OOVPADatabase/D3D8LTCG/4039.inl index ce377872..f68bc58a 100644 --- a/src/OOVPADatabase/D3D8LTCG/4039.inl +++ b/src/OOVPADatabase/D3D8LTCG/4039.inl @@ -157,7 +157,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** //51538B5C240C8BC6 ...C20400 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1, 2040, XRefOne) OOVPA_SIG_MATCH( @@ -182,7 +182,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** //8BCEC1E10681C1241B04 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_4__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -401,7 +401,7 @@ OOVPA_SIG_MATCH( // * GetLevelDesc Simply redirects to that function // ****************************************************************** //7909C74608010000 ...C3 -OOVPA_SIG_HEADER_NO_XREF(Get2DSurfaceDesc_0, +OOVPA_SIG_HEADER_NO_XREF(Get2DSurfaceDesc_0__LTCG_edi1_ebx2_esi3, 2024) OOVPA_SIG_MATCH( @@ -423,7 +423,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** //E00A040089 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_4__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -447,7 +447,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x12, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived (unverified, yet should be align base on existing 4 bytes in signatures) + XREF_ENTRY(0x12, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived (unverified, yet should be align base on existing 4 bytes in signatures) { 0x00, 0x53 }, { 0x01, 0x8B }, @@ -657,7 +657,7 @@ OOVPA_SIG_MATCH( // NOTE: Custom stdcall with params 1 - 7 pushed onto stack but has // param 8 as DL and param 9 as EDI registers. // NOTE2: Can confirm NASCAR Heat 2002 (3925) does not use D3D_CreateTexture. -OOVPA_SIG_HEADER_NO_XREF(D3D_CreateTexture_28__LTCG_edx8_edi9, +OOVPA_SIG_HEADER_NO_XREF(D3D_CreateTexture_28__LTCG_dl8_edi9, 4039) OOVPA_SIG_MATCH( @@ -729,7 +729,7 @@ OOVPA_SIG_MATCH( //* Lock2DSurface //****************************************************************** //2418F6C320558B ...C21000 -OOVPA_SIG_HEADER_NO_XREF(Lock2DSurface_16, +OOVPA_SIG_HEADER_NO_XREF(Lock2DSurface_16__LTCG_esi4_eax5, 2048) OOVPA_SIG_MATCH( @@ -748,7 +748,7 @@ OOVPA_SIG_MATCH( //* Lock3DSurface //****************************************************************** //83EC08538A5C241CF6C32055 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(Lock3DSurface_16, +OOVPA_SIG_HEADER_NO_XREF(Lock3DSurface_16__LTCG_eax4, 2048) OOVPA_SIG_MATCH( @@ -771,7 +771,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetPixelShader // ****************************************************************** //C740040000210083C008 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax_handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax1, 2072) OOVPA_SIG_MATCH( @@ -797,7 +797,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_DeletePixelShader // ****************************************************************** //FF08750D8B480485C9740650E8 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_DeletePixelShader_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_DeletePixelShader_0__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -824,7 +824,7 @@ OOVPA_SIG_MATCH( // * D3DResource_GetType // ****************************************************************** //3D00000300772274 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DResource_GetType_0, +OOVPA_SIG_HEADER_NO_XREF(D3DResource_GetType_0__LTCG_ecx1, 2024) OOVPA_SIG_MATCH( @@ -848,7 +848,7 @@ OOVPA_SIG_MATCH( // * D3D_BlockOnResource // ****************************************************************** //F7C20000780075 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0, +OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0__LTCG_eax1, 2036) OOVPA_SIG_MATCH( @@ -893,7 +893,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_GetBackBuffer // ****************************************************************** //7507B801000000EB07F7 ...C20800 -OOVPA_SIG_HEADER_XREF(D3DDevice_GetBackBuffer_8, +OOVPA_SIG_HEADER_XREF(D3DDevice_GetBackBuffer_8__LTCG_eax1, 2048, XRefTwo) OOVPA_SIG_MATCH( @@ -974,7 +974,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexData4f // ****************************************************************** //B918150000EB09 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexData4f_16, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexData4f_16__LTCG_edi1, 2024) OOVPA_SIG_MATCH( @@ -1083,7 +1083,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_MultiplyTransform // ****************************************************************** //558BEC83E4F081EC8800000056578BF0 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_MultiplyTransform_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_MultiplyTransform_0__LTCG_ebx1_eax2, 2024) OOVPA_SIG_MATCH( @@ -1140,7 +1140,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetStreamSource // ****************************************************************** //7406810300000800 ...C20800 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_8, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_8__LTCG_eax1, 2040, XRefOne) OOVPA_SIG_MATCH( @@ -1192,10 +1192,10 @@ OOVPA_SIG_MATCH( ); // ****************************************************************** -// * D3DDevice_LightEnable_4 +// * D3DDevice_LightEnable // ****************************************************************** //F64401680175 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LightEnable_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LightEnable_4__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -1297,7 +1297,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_LoadVertexShader // ****************************************************************** //C7009C1E0400894804 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_4__LTCG_eax1, 2036) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/4432.inl b/src/OOVPADatabase/D3D8LTCG/4432.inl index cd8fe4de..62cf9472 100644 --- a/src/OOVPADatabase/D3D8LTCG/4432.inl +++ b/src/OOVPADatabase/D3D8LTCG/4432.inl @@ -482,7 +482,7 @@ OOVPA_SIG_MATCH( // * GetLevelDesc Simply redirects to that function // ****************************************************************** //7909C74608010000 ...C3 -OOVPA_SIG_HEADER_NO_XREF(Get2DSurfaceDesc_0, +OOVPA_SIG_HEADER_NO_XREF(Get2DSurfaceDesc_0__LTCG_edi1_ebx2_esi3, 2036) OOVPA_SIG_MATCH( @@ -531,7 +531,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x13, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived (OK, yet unverified) + XREF_ENTRY(0x13, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived (OK, yet unverified) { 0x00, 0x51 }, { 0x01, 0x53 }, @@ -697,7 +697,7 @@ OOVPA_SIG_MATCH( //* D3DDevice_LoadVertexShader //****************************************************************** //C7009C1E040089 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_0__LTCG_ecx1_eax2, 2036) OOVPA_SIG_MATCH( @@ -874,7 +874,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_GetViewportOffsetAndScale_0 // ****************************************************************** //000085F6577D06D805 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_GetViewportOffsetAndScale_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_GetViewportOffsetAndScale_0__LTCG_edx1_ecx2, 2024) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/4531.inl b/src/OOVPADatabase/D3D8LTCG/4531.inl index 92048804..7c056e3c 100644 --- a/src/OOVPADatabase/D3D8LTCG/4531.inl +++ b/src/OOVPADatabase/D3D8LTCG/4531.inl @@ -27,7 +27,7 @@ // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** //51538B5C240C8BC6C1E0 ...C20400 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1, 2045, XRefOne) OOVPA_SIG_MATCH( @@ -52,7 +52,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** //8BCEC1E10681C1241B04 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_4__LTCG_eax1, 2060) OOVPA_SIG_MATCH( @@ -75,7 +75,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** //8D0CB5E00A0400 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_4__LTCG_eax1, 2060) OOVPA_SIG_MATCH( @@ -97,7 +97,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_Swap // ****************************************************************** //7505BB050000008B ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_Swap_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_Swap_0__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -146,7 +146,7 @@ OOVPA_SIG_MATCH( // * CMiniport_InitHardware // ****************************************************************** //558BEC83EC1053578BF85768 -OOVPA_SIG_HEADER_NO_XREF(CMiniport_InitHardware, +OOVPA_SIG_HEADER_NO_XREF(CMiniport_InitHardware_4, 1024) OOVPA_SIG_MATCH( @@ -169,7 +169,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetFlickerFilter // ****************************************************************** //6A00566A0B50FF15 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetFlickerFilter_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetFlickerFilter_0__LTCG_esi1, 2024) OOVPA_SIG_MATCH( @@ -191,7 +191,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetPixelShader // ****************************************************************** //C740040000210083C008 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax_handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -217,7 +217,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_BeginPushBuffer // ****************************************************************** //008107000008008B -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_BeginPushBuffer_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_BeginPushBuffer_0__LTCG_edi1, 2048) OOVPA_SIG_MATCH( @@ -239,7 +239,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_RunPushBuffer // ****************************************************************** //00576A00568BF8E8 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_RunPushBuffer_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_RunPushBuffer_4__LTCG_eax2, 2048) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/4627.inl b/src/OOVPADatabase/D3D8LTCG/4627.inl index 36a3dca7..dc49e135 100644 --- a/src/OOVPADatabase/D3D8LTCG/4627.inl +++ b/src/OOVPADatabase/D3D8LTCG/4627.inl @@ -27,7 +27,7 @@ // * Direct3D_CreateDevice // ****************************************************************** //85C9750AC705 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface, +OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_16__LTCG_eax4_ecx6, 2036) OOVPA_SIG_MATCH( @@ -51,7 +51,7 @@ OOVPA_SIG_MATCH( // * GetLevelDesc Simply redirects to that function // ****************************************************************** //7909C74608010000 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(Get2DSurfaceDesc_4, +OOVPA_SIG_HEADER_NO_XREF(Get2DSurfaceDesc_4__LTCG_edi1_esi3, 2048) OOVPA_SIG_MATCH( @@ -429,7 +429,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_EndVisibilityTest // ****************************************************************** //B80E0007805E ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_EndVisibilityTest_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_EndVisibilityTest_0__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -684,7 +684,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_RunVertexStateShader // ****************************************************************** //C740EC801E1000D9 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_RunVertexStateShader_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_RunVertexStateShader_4__LTCG_esi2, 2048) OOVPA_SIG_MATCH( @@ -754,7 +754,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_CreateVertexShader // ****************************************************************** //C740040000210083C008 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax_handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax1, 2036) OOVPA_SIG_MATCH( @@ -801,7 +801,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexData4f // ****************************************************************** //B918150000EB09 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexData4f_16, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexData4f_16__LTCG_edi1, 2036) OOVPA_SIG_MATCH( @@ -946,7 +946,7 @@ OOVPA_SIG_MATCH( // * D3D_BlockOnResource // ****************************************************************** //F7C20000780075 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0, +OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -1165,7 +1165,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetIndices_4 // ****************************************************************** //74108103000008008B ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetIndices_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetIndices_4__LTCG_ebx1, 2024) OOVPA_SIG_MATCH( @@ -1273,7 +1273,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetSoftDisplayFilter // ****************************************************************** //6A00566A0E52FF15 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetSoftDisplayFilter_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetSoftDisplayFilter_0__LTCG_unk1, 2048) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/4721.inl b/src/OOVPADatabase/D3D8LTCG/4721.inl index dde6bf21..f335cc80 100644 --- a/src/OOVPADatabase/D3D8LTCG/4721.inl +++ b/src/OOVPADatabase/D3D8LTCG/4721.inl @@ -27,7 +27,7 @@ // * D3DDevice_Swap // ****************************************************************** //7505BB050000008B ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_Swap_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_Swap_0__LTCG_eax1, 2036) OOVPA_SIG_MATCH( @@ -78,7 +78,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTexture // ****************************************************************** //81C10000F8FF89 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTexture_4__LTCG_eax_Stage, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTexture_4__LTCG_eax1, 2036) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/4928.inl b/src/OOVPADatabase/D3D8LTCG/4928.inl index d7f8501a..d08876d0 100644 --- a/src/OOVPADatabase/D3D8LTCG/4928.inl +++ b/src/OOVPADatabase/D3D8LTCG/4928.inl @@ -71,7 +71,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_BeginPushBuffer // ****************************************************************** //008107000008008B -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_BeginPushBuffer_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_BeginPushBuffer_0__LTCG_edi1, 2060) OOVPA_SIG_MATCH( @@ -238,7 +238,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SelectVertexShaderDirect // ****************************************************************** //B940000000BF ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SelectVertexShaderDirect_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SelectVertexShaderDirect_0__LTCG_eax1_ebx2, 2024) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/5028.inl b/src/OOVPADatabase/D3D8LTCG/5028.inl index b7ddc526..a16622d4 100644 --- a/src/OOVPADatabase/D3D8LTCG/5028.inl +++ b/src/OOVPADatabase/D3D8LTCG/5028.inl @@ -27,7 +27,7 @@ // * Direct3D_CreateDevice // ****************************************************************** //85C9750AC705 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface, +OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_16__LTCG_eax4_ecx6, 2048) OOVPA_SIG_MATCH( @@ -48,7 +48,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** // ...C20400 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1, 2058, XRefOne) OOVPA_SIG_MATCH( @@ -74,7 +74,7 @@ OOVPA_SIG_MATCH( //* D3DDevice_LoadVertexShader //****************************************************************** //C7009C1E040089 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_4__LTCG_eax1, 2024) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/5233.inl b/src/OOVPADatabase/D3D8LTCG/5233.inl index aeaf7c90..f18c8986 100644 --- a/src/OOVPADatabase/D3D8LTCG/5233.inl +++ b/src/OOVPADatabase/D3D8LTCG/5233.inl @@ -90,7 +90,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** //81E30000FFFFB901 ...C20400 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1, 2052, XRefOne) OOVPA_SIG_MATCH( @@ -115,7 +115,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** //8BCEC1E10681C1241B04 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_0__LTCG_eax1_ebx2, 2036) OOVPA_SIG_MATCH( @@ -138,7 +138,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** //8D0CB5E00A0400 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_0__LTCG_esi1_ebx2, 2036) OOVPA_SIG_MATCH( @@ -160,12 +160,12 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexShader // ****************************************************************** //F6C30155568B35 ...C3 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader_0, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader_0__LTCG_ebx1, 2036, XRefOne) OOVPA_SIG_MATCH( - XREF_ENTRY(0x0E, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived (unverified, yet should be align base on existing 4 bytes in signatures) + XREF_ENTRY(0x0E, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived (unverified, yet should be align base on existing 4 bytes in signatures) { 0x00, 0x51 }, @@ -191,7 +191,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexShaderConstantNotInline // ****************************************************************** //56578BFBC1E704 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexShaderConstantNotInline_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexShaderConstantNotInline_0__LTCG_ebx1_eax2_edx3, 2048) OOVPA_SIG_MATCH( @@ -264,7 +264,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SelectVertexShaderDirect // ****************************************************************** //53568BF185F68BD8741E57B8 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SelectVertexShaderDirect_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SelectVertexShaderDirect_0__LTCG_eax1_ebx2, 2048) OOVPA_SIG_MATCH( @@ -311,7 +311,7 @@ OOVPA_SIG_MATCH( //****************************************************************** //* D3DDevice_SetRenderTarget //****************************************************************** -OOVPA_SIG_HEADER_XREF(D3DDevice_SetRenderTarget_0, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetRenderTarget_0__LTCG_ecx1_eax2, 2048, XRefOne) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/5344.inl b/src/OOVPADatabase/D3D8LTCG/5344.inl index c7db6b46..2c72f175 100644 --- a/src/OOVPADatabase/D3D8LTCG/5344.inl +++ b/src/OOVPADatabase/D3D8LTCG/5344.inl @@ -27,7 +27,7 @@ // * D3DDevice_DeleteVertexShader // ****************************************************************** //Generic OOVPA as of 5344 and newer. -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_DeleteVertexShader_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_DeleteVertexShader_0__LTCG_eax1, 5344) OOVPA_SIG_MATCH( @@ -313,7 +313,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_LightEnable // ****************************************************************** //F64401680175 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LightEnable_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LightEnable_4__LTCG_eax1, 2048) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/5455.inl b/src/OOVPADatabase/D3D8LTCG/5455.inl index 72891f72..b8b3dbab 100644 --- a/src/OOVPADatabase/D3D8LTCG/5455.inl +++ b/src/OOVPADatabase/D3D8LTCG/5455.inl @@ -273,7 +273,7 @@ OOVPA_SIG_MATCH( // * D3D_BlockOnResource // ****************************************************************** //F7C20000780075 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0, +OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnResource_0__LTCG_eax1, 2060) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/5788.inl b/src/OOVPADatabase/D3D8LTCG/5788.inl index f78fcaad..26b98cfb 100644 --- a/src/OOVPADatabase/D3D8LTCG/5788.inl +++ b/src/OOVPADatabase/D3D8LTCG/5788.inl @@ -54,7 +54,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetPalette // ****************************************************************** //000085C05774258B4E ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPalette_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPalette_4__LTCG_eax1, 2024) OOVPA_SIG_MATCH( @@ -101,7 +101,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_CreateVertexShader // ****************************************************************** //C740040000210083C008 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax_handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShader_0__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -127,7 +127,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetPixelShaderConstant // ****************************************************************** //F30F2DC0C1E0100FC6C039 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShaderConstant_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetPixelShaderConstant_4__LTCG_ecx1_eax3, 2024) OOVPA_SIG_MATCH( @@ -467,7 +467,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** //891089580483 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_BorderColor_0__LTCG_eax1_ebx2, 2048) OOVPA_SIG_MATCH( @@ -506,7 +506,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** //E00A040089 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_0__LTCG_esi1_ebx2, 2048) OOVPA_SIG_MATCH( @@ -569,7 +569,7 @@ OOVPA_SIG_MATCH( // * D3D_BlockOnTime // ****************************************************************** //C747101001040089 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnTime_4, +OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnTime_4__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -590,7 +590,7 @@ OOVPA_SIG_MATCH( // * D3D_MakeRequestedSpace // ****************************************************************** //81C5004000003BE9 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3D_MakeRequestedSpace_4__LTCG_eax_RequestedSpace, +OOVPA_SIG_HEADER_NO_XREF(D3D_MakeRequestedSpace_4__LTCG_eax2, 2048) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG/5849.inl b/src/OOVPADatabase/D3D8LTCG/5849.inl index 09a9f65f..8f1f8eaf 100644 --- a/src/OOVPADatabase/D3D8LTCG/5849.inl +++ b/src/OOVPADatabase/D3D8LTCG/5849.inl @@ -27,7 +27,7 @@ // * Direct3D_CreateDevice // ****************************************************************** //85C9750AC705 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_4, +OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_4__LTCG_eax1_ecx3, 2048) OOVPA_SIG_MATCH( @@ -48,7 +48,7 @@ OOVPA_SIG_MATCH( // * Direct3D_CreateDevice // ****************************************************************** //85C9750AC705 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_4, +OOVPA_SIG_HEADER_NO_XREF(Direct3D_CreateDevice_4__LTCG_eax1_ecx3, 2060) OOVPA_SIG_MATCH( @@ -168,7 +168,7 @@ OOVPA_SIG_MATCH( // * D3D_BlockOnTime // ****************************************************************** //C747101001040089 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnTime_4, +OOVPA_SIG_HEADER_NO_XREF(D3D_BlockOnTime_4__LTCG_eax1, 2060) OOVPA_SIG_MATCH( @@ -237,7 +237,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** //81E30000FFFFB901 ...C3 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_0, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2, 2058, XRefOne) OOVPA_SIG_MATCH( @@ -397,7 +397,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_LoadVertexShader // ****************************************************************** //C7009C1E040089 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_0__LTCG_edx1_eax2, 2048) OOVPA_SIG_MATCH( @@ -418,7 +418,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_LoadVertexShader // ****************************************************************** //C7009C1E040089 ...C20400 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_4, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_LoadVertexShader_4__LTCG_eax1, 2048) OOVPA_SIG_MATCH( @@ -594,7 +594,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetVertexData4f // ****************************************************************** //B918150000EB09 ...C21000 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexData4f_16, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetVertexData4f_16__LTCG_edi1, 2048) OOVPA_SIG_MATCH( @@ -727,7 +727,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * D3DDevice_SetStreamSource // ****************************************************************** -OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_0__LTCG_eax1_edi2_ebx3, 2058, XRefOne) OOVPA_SIG_MATCH( @@ -746,7 +746,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_SetStreamSource // ****************************************************************** //7406810300000800 ...C20400 -OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_4, +OOVPA_SIG_HEADER_XREF(D3DDevice_SetStreamSource_4__LTCG_eax1_ebx2, 2058, XRefOne) OOVPA_SIG_MATCH( @@ -794,7 +794,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_UpdateOverlay // ****************************************************************** //7707B800001000EB ...C21000 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_UpdateOverlay_16, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_UpdateOverlay_16__LTCG_eax2, 2048) OOVPA_SIG_MATCH( @@ -817,7 +817,7 @@ OOVPA_SIG_MATCH( // * D3DDevice_EnableOverlay // ****************************************************************** //00010000003990 ...C3 -OOVPA_SIG_HEADER_NO_XREF(D3DDevice_EnableOverlay_0, +OOVPA_SIG_HEADER_NO_XREF(D3DDevice_EnableOverlay_0__LTCG, 2048) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/D3D8LTCG_OOVPA.inl b/src/OOVPADatabase/D3D8LTCG_OOVPA.inl index ee80e5e5..469bef85 100644 --- a/src/OOVPADatabase/D3D8LTCG_OOVPA.inl +++ b/src/OOVPADatabase/D3D8LTCG_OOVPA.inl @@ -78,207 +78,406 @@ // ****************************************************************** OOVPATable D3D8LTCG_OOVPA[] = { - REGISTER_OOVPAS_BIND_XREF(D3D_CreateTexture_28__LTCG_edx8_edi9, D3D_CreateTexture, 4039), // Final generic OOVPA: 4039; Removed: 4627 // See note for details. - REGISTER_OOVPAS_BIND_XREF(D3D_MakeRequestedSpace_8, D3D_MakeRequestedSpace, 1036), // NOTE: OOVPA is in 5849. In used by (5849) Manhunt title - REGISTER_OOVPAS_BIND_XREF(D3D_MakeRequestedSpace_4__LTCG_eax_RequestedSpace, D3D_MakeRequestedSpace, 2048), - REGISTER_OOVPAS(D3D_SetFence, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3D_BlockOnTime, 1024, 1036, 1048), - REGISTER_OOVPAS_BIND_XREF(D3D_BlockOnTime_4, D3D_BlockOnTime, 2048, 2060), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_CreateTexture, CALL(unk), STACK(28), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, isCube), PARAM(_dl, isVolume), PARAM(edi, ppTexture))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 4627 // See note for details. + REGISTER_OOVPAS(SYM_FUN(D3D_MakeRequestedSpace, CALL(std), STACK(8), PARAMS(PARAM(psh, MinimumSpace), PARAM(psh, RequestedSpace))), + SYM_SIG(1036)), // NOTE: OOVPA is in 5849. In used by (5849) Manhunt title + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_MakeRequestedSpace, CALL(unk), STACK(4), PARAMS(PARAM(psh, MinimumSpace), PARAM(eax, RequestedSpace))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN(D3D_SetFence, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Flags))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3D_BlockOnTime, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Time), PARAM(psh, MakeSpace))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_BlockOnTime, CALL(unk), STACK(4), PARAMS(PARAM(eax, Time), PARAM(psh, MakeSpace))), + SYM_SIG(2048, 2060)), - REGISTER_OOVPAS_BIND_XREF(CDevice_FreeFrameBuffers_0__LTCG_ebx1, D3D_CDevice_FreeFrameBuffers, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS_BIND_XREF(CDevice_FreeFrameBuffers_4, D3D_CDevice_FreeFrameBuffers, 4432, 4433), // stdcall - REGISTER_OOVPAS_BIND_XREF(CDevice_InitializeFrameBuffers_8, D3D_CDevice_InitializeFrameBuffers, 3911, 4627), // stdcall - REGISTER_OOVPAS_BIND_XREF(CDevice_InitializeFrameBuffers_4__LTCG_esi1, D3D_CDevice_InitializeFrameBuffers, 4039), - REGISTER_OOVPAS_BIND_XREF(CDevice_InitializeFrameBuffers_4__LTCG_ebx1, D3D_CDevice_InitializeFrameBuffers, 4432, 4433, 4531), - REGISTER_OOVPAS_BIND_XREF(CDevice_InitializeFrameBuffers_4__LTCG_edi1, D3D_CDevice_InitializeFrameBuffers, 5455), + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_FreeFrameBuffers, CALL(unk), STACK(0), PARAMS(PARAM(ebx, this))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_FreeFrameBuffers, CALL(std), STACK(4), PARAMS(PARAM(psh, this))), + SYM_SIG(4432, 4433)), + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_InitializeFrameBuffers, CALL(std), STACK(8), PARAMS(PARAM(psh, this), PARAM(psh, pPresentationParams))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_InitializeFrameBuffers, CALL(unk), STACK(4), PARAMS(PARAM(esi, this), PARAM(psh, pPresentationParams))), + SYM_SIG(4039)), + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_InitializeFrameBuffers, CALL(unk), STACK(4), PARAMS(PARAM(ebx, this), PARAM(psh, pPresentationParams))), + SYM_SIG(4432, 4433, 4531)), + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_InitializeFrameBuffers, CALL(unk), STACK(4), PARAMS(PARAM(edi, this), PARAM(psh, pPresentationParams))), + SYM_SIG(5455)), - REGISTER_OOVPAS_D3D(CMiniport_InitHardware, 1024), - REGISTER_OOVPAS(D3DCubeTexture_GetCubeMapSurface2, 1024), - REGISTER_OOVPAS(D3DCubeTexture_GetCubeMapSurface, 1024), - REGISTER_OOVPAS(D3DDevice_Begin, 1024, 1036, 1048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_BeginPush_4, D3DDevice_BeginPush, 1024, 1036), - REGISTER_OOVPAS(D3DDevice_BeginPushBuffer, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_BeginPushBuffer_0, D3DDevice_BeginPushBuffer, 2048, 2060), - REGISTER_OOVPAS(D3DDevice_BeginVisibilityTest, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_BlockUntilVerticalBlank, 1024), // NOTE: NASCAR Heat 2002 reveal this function is inlined, need some sort of indicator which is inline or not. - REGISTER_OOVPAS(D3DDevice_Clear, 1024, 1036), - REGISTER_OOVPAS(D3DDevice_CopyRects, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_CreateCubeTexture, 4432), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_CreateCubeTexture_4__LTCG_eax1_edx3_ecx4_edi6, D3DDevice_CreateCubeTexture, 4039), - REGISTER_OOVPAS(D3DDevice_CreatePixelShader, 1024), - REGISTER_OOVPAS(D3DDevice_CreateTexture, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_CreateTexture_8__LTCG_edx3_ecx4_eax5_edi7, D3DDevice_CreateTexture, 4039), - REGISTER_OOVPAS(D3DDevice_CreateTexture2, 1024, 1048), - REGISTER_OOVPAS(D3DDevice_CreateVertexShader, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_CreateVolumeTexture_12__LTCG_edx4_ecx5_eax6_edi8, D3DDevice_CreateVolumeTexture, 4039), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_DeletePixelShader_0, D3DDevice_DeletePixelShader, 2024), - REGISTER_OOVPAS(D3DDevice_DeleteStateBlock, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_DeleteVertexShader_0, D3DDevice_DeleteVertexShader, 3911, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(D3DDevice_DrawIndexedVertices, 1024, 1036, 1037), - REGISTER_OOVPAS(D3DDevice_DrawIndexedVerticesUP, 1024, 1036, 1048), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(D3DDevice_DrawVertices, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_DrawVertices_4__LTCG_ecx2_eax3, D3DDevice_DrawVertices, 2024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_DrawVertices_8__LTCG_eax3, D3DDevice_DrawVertices, 4039), - REGISTER_OOVPAS(D3DDevice_DrawVerticesUP, 1024, 1048), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS_BIND_XREF(D3DDevice_DrawVerticesUP_12__LTCG_ebx3, D3DDevice_DrawVerticesUP, 2024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_EnableOverlay_0, D3DDevice_EnableOverlay, 2048), - REGISTER_OOVPAS(D3DDevice_End, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_EndPushBuffer, 1024), // Final generic OOVPA: 4432?; Removed: 0 - REGISTER_OOVPAS(D3DDevice_EndVisibilityTest, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_EndVisibilityTest_0, D3DDevice_EndVisibilityTest, 2048), - REGISTER_OOVPAS(D3DDevice_GetBackBuffer2, 4626), // Due to non-LTCG signature conflict, lowered down by one number. - REGISTER_OOVPAS_BIND_XREF(D3DDevice_GetBackBuffer_8, D3DDevice_GetBackBuffer, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_GetBackBuffer2_0__LTCG_eax1, D3DDevice_GetBackBuffer2, 4627, 5233), - REGISTER_OOVPAS(D3DDevice_GetDepthStencilSurface, 1024), - REGISTER_OOVPAS(D3DDevice_GetDepthStencilSurface2, 1024, 1048), - REGISTER_OOVPAS(D3DDevice_GetDisplayMode, 1024), - REGISTER_OOVPAS(D3DDevice_GetRenderTarget2, 1024, 1036), - REGISTER_OOVPAS(D3DDevice_GetTransform, 1024), - REGISTER_OOVPAS(D3DDevice_GetViewportOffsetAndScale, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_GetViewportOffsetAndScale_0, D3DDevice_GetViewportOffsetAndScale, 2024), - REGISTER_OOVPAS(D3DDevice_IsBusy, 1024), - REGISTER_OOVPAS(D3DDevice_IsFencePending, 1024), - REGISTER_OOVPAS(D3DDevice_LightEnable, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_LightEnable_4, D3DDevice_LightEnable, 2024, 2048), - REGISTER_OOVPAS(D3DDevice_LoadVertexShaderProgram, 1024, 1036, 1048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle, D3DDevice_LoadVertexShader, 2024, 2036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle, D3DDevice_LoadVertexShader, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_LoadVertexShader_4, D3DDevice_LoadVertexShader, 2024, 2036, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_MultiplyTransform_0, D3DDevice_MultiplyTransform, 2024), - REGISTER_OOVPAS(D3DDevice_PersistDisplay, 1024, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_Present, 1024), - REGISTER_OOVPAS(D3DDevice_Reset, 4432, 4627, 5120), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_Reset_0__LTCG_edi1, D3DDevice_Reset, 3911, 4039, 4040, 4041), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_Reset_0__LTCG_ebx1, D3DDevice_Reset, 5344), - REGISTER_OOVPAS(D3DDevice_RunPushBuffer, 1024, 1048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_RunPushBuffer_4, D3DDevice_RunPushBuffer, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_RunVertexStateShader_4, D3DDevice_RunVertexStateShader, 2048), - REGISTER_OOVPAS(D3DDevice_SelectVertexShader, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SelectVertexShader_0__LTCG_eax1_ebx2, D3DDevice_SelectVertexShader, 2024, 2048, 2060, 2061, 2062, 2072, 2084), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SelectVertexShader_4__LTCG_eax1, D3DDevice_SelectVertexShader, 3911, 4039, 4531, 4627), - REGISTER_OOVPAS(D3DDevice_SelectVertexShaderDirect, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SelectVertexShaderDirect_0, D3DDevice_SelectVertexShaderDirect, 2024, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetFlickerFilter_0, D3DDevice_SetFlickerFilter, 2024), - REGISTER_OOVPAS(D3DDevice_SetGammaRamp, 1024, 1036), - REGISTER_OOVPAS(D3DDevice_SetIndices, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetIndices_4, D3DDevice_SetIndices, 2024), - REGISTER_OOVPAS(D3DDevice_SetLight, 1024, 1048), - REGISTER_OOVPAS(D3DDevice_SetPalette, 1024, 1036, 1048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetPalette_4, D3DDevice_SetPalette, 2024), - REGISTER_OOVPAS(D3DDevice_SetPixelShader, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_SetPixelShaderConstant, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetPixelShaderConstant_4, D3DDevice_SetPixelShaderConstant, 2024), - REGISTER_OOVPAS(D3DDevice_SetPixelShaderProgram, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetPixelShader_0__LTCG_eax_handle, D3DDevice_SetPixelShader, 2024, 2036, 2048, 2060, 2072), - REGISTER_OOVPAS_M(D3DDevice_SetRenderStateInline__GenericFragment, 3911, 4039), // Final generic OOVPA: 4039?; Removed: 0 // NOTE: see notes from 4039 sig. - //REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetRenderStateNotInline_0__LTCG_esi1_edi2, D3DDevice_SetRenderStateNotInline, 2048), // NOTE: Signature is unlikely correct and need correction or removal (maybe) - REGISTER_OOVPAS(D3DDevice_SetRenderState_BackFillMode, 1024, 1036), - REGISTER_OOVPAS_C(D3DDevice_SetRenderState_CullMode, 1045, 1049, 1052, 1053), - REGISTER_OOVPAS(D3DDevice_SetRenderState_EdgeAntiAlias, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS_M(D3DDevice_SetRenderState_FillMode, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_FogColor, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_FrontFace, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_LineWidth, 1024), - REGISTER_OOVPAS(D3DDevice_SetRenderState_LogicOp, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleAntiAlias, 1024, 1060), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMask, 1024, 1060), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_NormalizeNormals, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_SampleAlpha, 1024), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_ShadowFunc, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilEnable, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilFail, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_TextureFactor, 1036), - REGISTER_OOVPAS(D3DDevice_SetRenderState_TwoSidedLighting, 1024, 1036, 1060, 1061, 1084), - REGISTER_OOVPAS(D3DDevice_SetRenderState_VertexBlend, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_SetRenderState_ZBias, 1024, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderState_ZEnable, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_SetRenderTarget, 1024, 1036, 1048, 1072, 1084), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetRenderTarget_0, D3DDevice_SetRenderTarget, 2048), - REGISTER_OOVPAS(D3DDevice_SetRenderTargetFast, 1024), - REGISTER_OOVPAS(D3DDevice_SetScissors, 1024, 1036, 1048, 1060, 1072), - REGISTER_OOVPAS(D3DDevice_SetScreenSpaceOffset, 1024), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetShaderConstantMode, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetShaderConstantMode_0__LTCG_eax1, D3DDevice_SetShaderConstantMode, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetSoftDisplayFilter_0, D3DDevice_SetSoftDisplayFilter, 2048), - REGISTER_OOVPAS_BIND_XREF(CDevice_SetStateUP_4, D3D_CDevice_SetStateUP, 3911), // stdcall - REGISTER_OOVPAS_BIND_XREF(CDevice_SetStateUP_0__LTCG_esi1, D3D_CDevice_SetStateUP, 4039, 4040), - REGISTER_OOVPAS_BIND_XREF(CDevice_SetStateVB_8, D3D_CDevice_SetStateVB, 3911, 4039), // stdcall - REGISTER_OOVPAS(D3DDevice_SetStreamSource, 1044), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride, D3DDevice_SetStreamSource, 2058), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber, D3DDevice_SetStreamSource, 1039), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetStreamSource_4, D3DDevice_SetStreamSource, 2058), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetStreamSource_8, D3DDevice_SetStreamSource, 2040), - REGISTER_OOVPAS(D3DDevice_SetTexture, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureStageStateNotInline_0__LTCG_ecx1_edx2_eax3, D3DDevice_SetTextureStageStateNotInline, 3911), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureStageStateNotInline_0__LTCG_eax1_edx2_ecx3, D3DDevice_SetTextureStageStateNotInline, 4039), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureStageStateNotInline2_0__LTCG_eax1_edx2_ecx3, D3DDevice_SetTextureStageStateNotInline2, 4039), // TODO: fix bug to include counter from previous sections? - REGISTER_OOVPAS_BIND_XREF(D3D_CDevice_SetTextureStageStateNotInline_0__LTCG_eax1_edx2_ecx3, D3D_CDevice_SetTextureStageStateNotInline, 4039), // NOTE: has return 0 (xor eax) - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureStageStateNotInline_0__LTCG_ecx1_eax2_edx3, D3DDevice_SetTextureStageStateNotInline, 4432), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureStageStateNotInline_0__LTCG_eax1_edx2_esi3, D3DDevice_SetTextureStageStateNotInline, 4531), - REGISTER_OOVPAS(D3DDevice_SetTextureState_BorderColor, 1024, 1048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureState_BorderColor_0, D3DDevice_SetTextureState_BorderColor, 2024, 2036, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureState_BorderColor_4, D3DDevice_SetTextureState_BorderColor, 2048, 2060), - REGISTER_OOVPAS(D3DDevice_SetTextureState_BumpEnv, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureState_BumpEnv_8, D3DDevice_SetTextureState_BumpEnv, 2024), - REGISTER_OOVPAS(D3DDevice_SetTextureState_ColorKeyColor, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureState_ColorKeyColor_0, D3DDevice_SetTextureState_ColorKeyColor, 2024, 2036, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTextureState_ColorKeyColor_4, D3DDevice_SetTextureState_ColorKeyColor, 2048, 2060), - REGISTER_OOVPAS_C(D3DDevice_SetTextureState_TexCoordIndex, 1944, 1958), - REGISTER_OOVPAS_C_BIND_XREF(D3DDevice_SetTextureState_TexCoordIndex_0, D3DDevice_SetTextureState_TexCoordIndex, 2039, 2058), - REGISTER_OOVPAS_C_BIND_XREF(D3DDevice_SetTextureState_TexCoordIndex_4, D3DDevice_SetTextureState_TexCoordIndex, 2040, 2045, 2052, 2058), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTexture_4__LTCG_eax_pTexture, D3DDevice_SetTexture, 2024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTexture_4__LTCG_eax_Stage, D3DDevice_SetTexture, 2036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTile_0__LTCG_eax1_ecx2, D3DDevice_SetTile, 3911), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTile_0__LTCG_ebx1_eax2, D3DDevice_SetTile, 4039), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTile_0__LTCG_ecx1_eax2, D3DDevice_SetTile, 4432), - REGISTER_OOVPAS_BIND_XREF(D3D_SetTileNoWait_0__LTCG_eax1_ecx2, D3D_SetTileNoWait, 2024, 2048, 5455, 5659), - REGISTER_OOVPAS_BIND_XREF(D3D_SetTileNoWait_0__LTCG_ecx1_eax2, D3D_SetTileNoWait, 4721, 5849), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetTransform_0__LTCG_eax1_edx2, D3DDevice_SetTransform, 3911, 4034, 5344, 5455, 5558), - REGISTER_OOVPAS(D3DDevice_SetVertexData2f, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_SetVertexData2s, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_SetVertexData4f, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetVertexData4f_16, D3DDevice_SetVertexData4f, 2024, 2036, 2048), - REGISTER_OOVPAS(D3DDevice_SetVertexData4s, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_SetVertexData4ub, 1024, 1036, 1048), - REGISTER_OOVPAS(D3DDevice_SetVertexDataColor, 4038), - REGISTER_OOVPAS(D3DDevice_SetVertexShader, 1024, 1036), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetVertexShaderConstantNotInline_0, D3DDevice_SetVertexShaderConstantNotInline, 2048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetVertexShaderConstant_8, D3DDevice_SetVertexShaderConstant, 2024), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderInput, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_SetVertexShader_0, D3DDevice_SetVertexShader, 2024, 2036), - REGISTER_OOVPAS(D3DDevice_SetViewport, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS(D3DDevice_Swap, 1024, 1036, 1048), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_Swap_0, D3DDevice_Swap, 2024, 2036), - REGISTER_OOVPAS(D3DDevice_UpdateOverlay, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_UpdateOverlay_16, D3DDevice_UpdateOverlay, 2048), - REGISTER_OOVPAS(D3DPalette_Lock2, 1024), - REGISTER_OOVPAS(D3DResource_GetType, 1024), - REGISTER_OOVPAS_BIND_XREF(D3DResource_GetType_0, D3DResource_GetType, 2024), - REGISTER_OOVPAS(D3DResource_Release, 1024, 1036), - REGISTER_OOVPAS(D3DSurface_GetDesc, 1024), - REGISTER_OOVPAS(D3DTexture_GetSurfaceLevel2, 1024), - REGISTER_OOVPAS(D3DTexture_LockRect, 1024), - REGISTER_OOVPAS(D3DVertexBuffer_Lock2, 1024), - REGISTER_OOVPAS_BIND_XREF(D3D_BlockOnResource_0, D3D_BlockOnResource, 2024, 2036, 2048, 2060), - REGISTER_OOVPAS_BIND_XREF(D3D_DestroyResource__LTCG, D3D_DestroyResource, 3911), - REGISTER_OOVPAS(D3D_CommonSetRenderTarget, 1024, 1036, 1048, 1060), - REGISTER_OOVPAS_BIND_XREF(D3D_CommonSetMultiSampleModeAndScale_4__LTCG_eax1, D3D_CommonSetMultiSampleModeAndScale, 5344), - REGISTER_OOVPAS(D3D_KickOffAndWaitForIdle2, 1024, 1036, 1048), - REGISTER_OOVPAS_D3D(CDevice_KickOff, 1048), // thiscall - REGISTER_OOVPAS_BIND_XREF(CDevice_KickOff_4, D3D_CDevice_KickOff, 4432, 4531, 5028), // stdcall (LTCG) - REGISTER_OOVPAS_BIND_XREF(CDevice_KickOff_0__LTCG_edx1, D3D_CDevice_KickOff, 3911, 4039, 5028), // Final generic OOVPA: 5028; Removed: 0 - REGISTER_OOVPAS_BIND_XREF(CDevice_KickOff_0__LTCG_eax1, D3D_CDevice_KickOff, 5455), - REGISTER_OOVPAS(D3DDevice_MakeSpace, 1036), // Almost identical to generic 4134 signature. - REGISTER_OOVPAS(Direct3D_CreateDevice, 1024, 1036), - REGISTER_OOVPAS_BIND_XREF(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ebx_ppReturnedDeviceInterface, Direct3D_CreateDevice, 2024), - REGISTER_OOVPAS_BIND_XREF(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface, Direct3D_CreateDevice, 2036, 2048), - REGISTER_OOVPAS_BIND_XREF(Direct3D_CreateDevice_4, Direct3D_CreateDevice, 2048, 2060), - REGISTER_OOVPAS_D3D8(Get2DSurfaceDesc, 1024), - REGISTER_OOVPAS_BIND_XREF(Get2DSurfaceDesc_0, D3D8_Get2DSurfaceDesc, 2024, 2036), - REGISTER_OOVPAS_BIND_XREF(Get2DSurfaceDesc_4, D3D8_Get2DSurfaceDesc, 2048), - REGISTER_OOVPAS_BIND_XREF(Lock3DSurface_16, D3D8_Lock3DSurface, 2048), - REGISTER_OOVPAS_BIND_XREF(Lock2DSurface_16, D3D8_Lock2DSurface, 2048), + REGISTER_OOVPAS_D3D(SYM_FUN(CMiniport_InitHardware, CALL(std), STACK(4), PARAMS(PARAM(psh, this))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DCubeTexture_GetCubeMapSurface2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, FaceType), PARAM(psh, Level))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DCubeTexture_GetCubeMapSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, FaceType), PARAM(psh, Level), PARAM(psh, ppCubeMapSurface))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Begin, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginPush, CALL(std), STACK(4), PARAMS(PARAM(psh, Count))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPushBuffer))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_BeginPushBuffer, CALL(unk), STACK(0), PARAMS(PARAM(edi, pPushBuffer))), + SYM_SIG(2048, 2060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginVisibilityTest, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BlockUntilVerticalBlank, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024)), // NOTE: NASCAR Heat 2002 reveal this function is inlined, need some sort of indicator which is inline or not. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Clear, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Count), PARAM(psh, pRects), PARAM(psh, Flags), PARAM(psh, Color), PARAM(psh, Z), PARAM(psh, Stencil))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CopyRects, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSourceSurface), PARAM(psh, pSourceRectsArray), PARAM(psh, cRects), PARAM(psh, pDestinationSurface), PARAM(psh, pDestPointsArray))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateCubeTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, EdgeLength), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, ppCubeTexture))), + SYM_SIG(4432)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_CreateCubeTexture, CALL(unk), STACK(4), PARAMS(PARAM(eax, EdgeLength), PARAM(psh, Levels), PARAM(edx, Usage), PARAM(ecx, Format), PARAM(psh, Pool), PARAM(edi, ppCubeTexture))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreatePixelShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPSDef), PARAM(psh, pHandle))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, ppTexture))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_CreateTexture, CALL(unk), STACK(8), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(edx, Levels), PARAM(ecx, Usage), PARAM(eax, Format), PARAM(psh, Pool), PARAM(edi, ppTexture))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateTexture2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, D3DResource))), + SYM_SIG(1024, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pDeclaration), PARAM(psh, pFunction), PARAM(psh, pHandle), PARAM(psh, Usage))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_CreateVolumeTexture, CALL(unk), STACK(12), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(edx, Levels), PARAM(ecx, Usage), PARAM(eax, Format), PARAM(psh, Pool), PARAM(edi, ppVolumeTexture))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_DeletePixelShader, CALL(unk), STACK(0), PARAMS(PARAM(eax, Handle))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DeleteStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Token))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_DeleteVertexShader, CALL(unk), STACK(0), PARAMS(PARAM(eax, Handle))), + SYM_SIG(3911, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawIndexedVertices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(eax, VertexCount), PARAM(psh, pIndexData))), + SYM_SIG(1024, 1036, 1037)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawIndexedVerticesUP, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(eax, VertexCount), PARAM(psh, pIndexData), PARAM(psh, pVertexStreamZeroData), PARAM(psh, VertexStreamZeroStride))), + SYM_SIG(1024, 1036, 1048)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawVertices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, StartVertex), PARAM(psh, VertexCount))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_DrawVertices, CALL(unk), STACK(4), PARAMS(PARAM(psh, PrimitiveType), PARAM(ecx, StartVertex), PARAM(eax, VertexCount))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_DrawVertices, CALL(unk), STACK(8), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, StartVertex), PARAM(eax, VertexCount))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawVerticesUP, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, VertexCount), PARAM(psh, pVertexStreamZeroData), PARAM(psh, VertextStreamZeroStride))), + SYM_SIG(1024, 1048)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_DrawVerticesUP, CALL(unk), STACK(12), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, VertexCount), PARAM(ebx, pVertexStreamZeroData), PARAM(psh, VertextStreamZeroStride))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_EnableOverlay, CALL(std), STACK(0), PARAMS(PARAM1(void /*, Enable*/))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_End, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EndPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024)), // Final generic OOVPA: 4432?; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EndVisibilityTest, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_EndVisibilityTest, CALL(unk), STACK(0), PARAMS(PARAM(eax, Index))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetBackBuffer2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, BackBuffer))), + SYM_SIG(4626)), // Due to non-LTCG signature conflict, lowered down by one number. + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_GetBackBuffer, CALL(unk), STACK(8), PARAMS(PARAM(eax, BackBuffer), PARAM(psh, Type), PARAM(psh, ppBackBuffer))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_GetBackBuffer2, CALL(unk), STACK(0), PARAMS(PARAM(eax, BackBuffer))), + SYM_SIG(4627, 5233)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDepthStencilSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, ppZStencilSurface))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDepthStencilSurface2, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDisplayMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pModes))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetRenderTarget2, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetTransform, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, pMatrix))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetViewportOffsetAndScale, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pOffset), PARAM(psh, pScale))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_GetViewportOffsetAndScale, CALL(unk), STACK(0), PARAMS(PARAM(edx, pOffset), PARAM(ecx, pScale))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_IsBusy, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_IsFencePending, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Fence))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_LightEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, bEnable))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_LightEnable, CALL(unk), STACK(4), PARAMS(PARAM(eax, Index), PARAM(psh, bEnable))), + SYM_SIG(2024, 2048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_LoadVertexShaderProgram, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pFunction), PARAM(psh, Address))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_LoadVertexShader, CALL(unk), STACK(0), PARAMS(PARAM(ecx, Handle), PARAM(eax, Address))), + SYM_SIG(2024, 2036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_LoadVertexShader, CALL(unk), STACK(0), PARAMS(PARAM(edx, Handle), PARAM(eax, Address))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_LoadVertexShader, CALL(unk), STACK(4), PARAMS(PARAM(eax, Handle), PARAM(psh, Address))), + SYM_SIG(2024, 2036, 2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_MultiplyTransform, CALL(unk), STACK(0), PARAMS(PARAM(ebx, State), PARAM(eax, pMatrix))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_PersistDisplay, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1024, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Present, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSourceRect), PARAM(psh, pDestRect), PARAM(psh, pDummy1), PARAM(psh, pDummy2))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Reset, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPresentationParameters))), + SYM_SIG(4432, 4627, 5120)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_Reset, CALL(unk), STACK(0), PARAMS(PARAM(edi, pPresentationParameters))), + SYM_SIG(3911, 4039, 4040, 4041)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_Reset, CALL(unk), STACK(0), PARAMS(PARAM(ebx, pPresentationParameters))), + SYM_SIG(5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_RunPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPushBuffer), PARAM(psh, pFixup))), + SYM_SIG(1024, 1048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_RunPushBuffer, CALL(unk), STACK(4), PARAMS(PARAM(psh, pPushBuffer), PARAM(eax, pFixup))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_RunVertexStateShader, CALL(unk), STACK(4), PARAMS(PARAM(psh, Address), PARAM(esi, pData))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SelectVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, Address))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SelectVertexShader, CALL(unk), STACK(0), PARAMS(PARAM(eax, Handle), PARAM(ebx, Address))), + SYM_SIG(2024, 2048, 2060, 2061, 2062, 2072, 2084)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SelectVertexShader, CALL(unk), STACK(4), PARAMS(PARAM(eax, Handle), PARAM(psh, Address))), + SYM_SIG(3911, 4039, 4531, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SelectVertexShaderDirect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVAF), PARAM(psh, Address))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SelectVertexShaderDirect, CALL(unk), STACK(0), PARAMS(PARAM(eax, pVAF), PARAM(ebx, Address))), + SYM_SIG(2024, 2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetFlickerFilter, CALL(unk), STACK(0), PARAMS(PARAM(esi, Filter))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetGammaRamp, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Flags), PARAM(psh, pRamp))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetIndices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pIndexData), PARAM(psh, BaseVertexIndex))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetIndices, CALL(unk), STACK(4), PARAMS(PARAM(ebx, pIndexData), PARAM(psh, BaseVertexIndex))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetLight, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pLight))), + SYM_SIG(1024, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPalette, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, pPalette))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetPalette, CALL(unk), STACK(4), PARAMS(PARAM(eax, Stage), PARAM(psh, pPalette))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPixelShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPixelShaderConstant, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetPixelShaderConstant, CALL(unk), STACK(4), PARAMS(PARAM(ecx, Register), PARAM(psh, pConstantData), PARAM(eax, ConstantCount))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPixelShaderProgram, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPSDef))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetPixelShader, CALL(unk), STACK(0), PARAMS(PARAM(eax, Handle))), + SYM_SIG(2024, 2036, 2048, 2060, 2072)), + REGISTER_OOVPAS_M(SYM_INT(D3DDevice_SetRenderStateInline__GenericFragment), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039?; Removed: 0 // NOTE: see notes from 4039 sig. + // REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetRenderStateNotInline, CALL(unk), STACK(0), PARAMS(PARAM(esi, Value), PARAM(edi, Value))), + // SYM_SIG(2048)), // NOTE: Signature is unlikely correct and need correction or removal (maybe) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_BackFillMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS_C(SYM_FUN(D3DDevice_SetRenderState_CullMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1045, 1049, 1052, 1053)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_EdgeAntiAlias, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS_M(SYM_FUN(D3DDevice_SetRenderState_FillMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_FogColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_FrontFace, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_LineWidth, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_LogicOp, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleAntiAlias, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1060)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleMask, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1060)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_NormalizeNormals, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_SampleAlpha, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_ShadowFunc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_StencilEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_StencilFail, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_TextureFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_TwoSidedLighting, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1060, 1061, 1084)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_VertexBlend, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_ZBias, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_ZEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderTarget, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRenderTarget), PARAM(psh, pNewZStencil))), + SYM_SIG(1024, 1036, 1048, 1072, 1084)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetRenderTarget, CALL(unk), STACK(0), PARAMS(PARAM(ecx, pRenderTarget), PARAM(eax, pNewZStencil))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderTargetFast, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRenderTarget), PARAM(psh, pNewZStencil), PARAM(psh, Flags))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetScissors, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Count), PARAM(psh, Exclusive), PARAM(psh, pRects))), + SYM_SIG(1024, 1036, 1048, 1060, 1072)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetScreenSpaceOffset, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, x), PARAM(psh, y))), + SYM_SIG(1024)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetShaderConstantMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Mode))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetShaderConstantMode, CALL(unk), STACK(0), PARAMS(PARAM(eax, Mode))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetSoftDisplayFilter, CALL(unk), STACK(0), PARAMS(PARAM(unk, Enable))), + SYM_SIG(2048)), + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_SetStateUP, CALL(std), STACK(4), PARAMS(PARAM(psh, this))), + SYM_SIG(3911)), + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_SetStateUP, CALL(unk), STACK(0), PARAMS(PARAM(esi, this))), + SYM_SIG(4039, 4040)), + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_SetStateVB, CALL(std), STACK(8), PARAMS(PARAM(psh, this), PARAM(psh, unknown2))), + SYM_SIG(3911, 4039)), // TODO: Update unknown parameter name(s) if able. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetStreamSource, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, StreamNumber), PARAM(psh, pStreamData), PARAM(psh, Stride))), + SYM_SIG(1044)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetStreamSource, CALL(unk), STACK(0), PARAMS(PARAM(eax, StreamNumber), PARAM(edi, pStreamData), PARAM(ebx, Stride))), + SYM_SIG(2058)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetStreamSource, CALL(unk), STACK(8), PARAMS(PARAM(edx, StreamNumber), PARAM(psh, pStreamData), PARAM(psh, Stride))), + SYM_SIG(2039)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetStreamSource, CALL(unk), STACK(4), PARAMS(PARAM(eax, StreamNumber), PARAM(ebx, pStreamData), PARAM(psh, Stride))), + SYM_SIG(2058)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetStreamSource, CALL(unk), STACK(8), PARAMS(PARAM(eax, StreamNumber), PARAM(psh, pStreamData), PARAM(psh, Stride))), + SYM_SIG(2040)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, pTexture))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureStageStateNotInline, CALL(unk), STACK(0), PARAMS(PARAM(ecx, Stage), PARAM(edx, Type), PARAM(eax, Value))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureStageStateNotInline, CALL(unk), STACK(0), PARAMS(PARAM(eax, Stage), PARAM(edx, Type), PARAM(ecx, Value))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureStageStateNotInline2, CALL(unk), STACK(0), PARAMS(PARAM(eax, Stage), PARAM(edx, Type), PARAM(ecx, Value))), + SYM_SIG(4039)), // TODO: fix bug to include counter from previous sections? + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_CDevice_SetTextureStageStateNotInline, CALL(unk), STACK(0), PARAMS(PARAM(eax, Stage), PARAM(edx, Type), PARAM(ecx, Value))), + SYM_SIG(4039)), // NOTE: has return 0 (xor eax) + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureStageStateNotInline, CALL(unk), STACK(0), PARAMS(PARAM(ecx, Stage), PARAM(eax, Type), PARAM(edx, Value))), + SYM_SIG(4432)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureStageStateNotInline, CALL(unk), STACK(0), PARAMS(PARAM(eax, Stage), PARAM(edx, Type), PARAM(esi, Value))), + SYM_SIG(4531)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_BorderColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))), + SYM_SIG(1024, 1048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_BorderColor, CALL(unk), STACK(0), PARAMS(PARAM(eax, Stage), PARAM(ebx, Value))), + SYM_SIG(2024, 2036, 2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_BorderColor, CALL(unk), STACK(4), PARAMS(PARAM(eax, Stage), PARAM(psh, Value))), + SYM_SIG(2048, 2060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_BumpEnv, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Type), PARAM(psh, Value))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_BumpEnv, CALL(unk), STACK(8), PARAMS(PARAM(eax, Stage), PARAM(psh, Type), PARAM(psh, Value))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_ColorKeyColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_ColorKeyColor, CALL(unk), STACK(0), PARAMS(PARAM(esi, Stage), PARAM(ebx, Value))), + SYM_SIG(2024, 2036, 2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_ColorKeyColor, CALL(unk), STACK(4), PARAMS(PARAM(eax, Stage), PARAM(psh, Value))), + SYM_SIG(2048, 2060)), + REGISTER_OOVPAS_C(SYM_FUN(D3DDevice_SetTextureState_TexCoordIndex, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))), + SYM_SIG(1944, 1958)), + REGISTER_OOVPAS_C(SYM_FUN_LTCG(D3DDevice_SetTextureState_TexCoordIndex, CALL(unk), STACK(0), PARAMS(PARAM(edi, Stage), PARAM(eax, Value))), + SYM_SIG(2039, 2058)), + REGISTER_OOVPAS_C(SYM_FUN_LTCG(D3DDevice_SetTextureState_TexCoordIndex, CALL(unk), STACK(4), PARAMS(PARAM(esi, Stage), PARAM(psh, Value))), + SYM_SIG(2040, 2045, 2052, 2058)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTexture, CALL(unk), STACK(4), PARAMS(PARAM(psh, Stage), PARAM(eax, pTexture))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTexture, CALL(unk), STACK(4), PARAMS(PARAM(eax, Stage), PARAM(psh, pTexture))), + SYM_SIG(2036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTile, CALL(unk), STACK(0), PARAMS(PARAM(eax, Index), PARAM(ecx, pTile))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTile, CALL(unk), STACK(0), PARAMS(PARAM(ebx, Index), PARAM(eax, pTile))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTile, CALL(unk), STACK(0), PARAMS(PARAM(ecx, Index), PARAM(eax, pTile))), + SYM_SIG(4432)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_SetTileNoWait, CALL(unk), STACK(0), PARAMS(PARAM(eax, Index), PARAM(ecx, pTile))), + SYM_SIG(2024, 2048, 5455, 5659)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_SetTileNoWait, CALL(unk), STACK(0), PARAMS(PARAM(ecx, Index), PARAM(eax, pTile))), + SYM_SIG(4721, 5849)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTransform, CALL(unk), STACK(0), PARAMS(PARAM(eax, State), PARAM(edx, pMatrix))), + SYM_SIG(3911, 4034, 5344, 5455, 5558)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData2f, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData2s, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData4f, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetVertexData4f, CALL(unk), STACK(16), PARAMS(PARAM(edi, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(2024, 2036, 2048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData4s, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData4ub, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexDataColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, Color))), + SYM_SIG(4038)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstant, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetVertexShaderConstantNotInline, CALL(unk), STACK(0), PARAMS(PARAM(ebx, Register), PARAM(eax, pConstantData), PARAM(edx, ConstantCount))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetVertexShaderConstant, CALL(unk), STACK(8), PARAMS(PARAM(psh, Register), PARAM(psh, pConstantData), PARAM(edx, ConstantCount))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderInput, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, StreamCount), PARAM(psh, pStreamInputs))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetVertexShader, CALL(unk), STACK(0), PARAMS(PARAM(ebx, Handle))), + SYM_SIG(2024, 2036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetViewport, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pViewport))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Swap, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Flags))), + SYM_SIG(1024, 1036, 1048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_Swap, CALL(unk), STACK(0), PARAMS(PARAM(eax, Flags))), + SYM_SIG(2024, 2036)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_UpdateOverlay, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSurface), PARAM(psh, SrcRect), PARAM(psh, DstRect), PARAM(psh, EnableColorKey), PARAM(psh, ColorKey))), + SYM_SIG(1024, 1036, 1048, 1060)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_UpdateOverlay, CALL(unk), STACK(16), PARAMS(PARAM(psh, pSurface), PARAM(eax, SrcRect), PARAM(psh, DstRect), PARAM(psh, EnableColorKey), PARAM(psh, ColorKey))), + SYM_SIG(2048)), + REGISTER_OOVPAS(SYM_FUN(D3DPalette_Lock2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Flags))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_GetType, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3DResource_GetType, CALL(fas), STACK(0), PARAMS(PARAM(ecx, pThis))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN(D3DSurface_GetDesc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pDesc))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DTexture_GetSurfaceLevel2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Level))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DTexture_LockRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Level), PARAM(psh, pLockedRect), PARAM(psh, pRect), PARAM(psh, Flags))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN(D3DVertexBuffer_Lock2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVertexBuffer), PARAM(psh, Flags))), + SYM_SIG(1024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_BlockOnResource, CALL(unk), STACK(0), PARAMS(PARAM(eax, pResource))), + SYM_SIG(2024, 2036, 2048, 2060)), + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_DestroyResource, CALL(unk), STACK(0), PARAMS(PARAM(edi, pResource))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_CommonSetRenderTarget, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRenderTarget), PARAM(psh, pNewZStencil), PARAM(psh, unknown3))), + SYM_SIG(1024, 1036, 1048, 1060)), // TODO: Update unknown parameter name(s) if able. + REGISTER_OOVPAS(SYM_FUN_LTCG(D3D_CommonSetMultiSampleModeAndScale, CALL(unk), STACK(4), PARAMS(PARAM(eax, this), PARAM(psh, pViewport))), + SYM_SIG(5344)), + REGISTER_OOVPAS(SYM_FUN(D3D_KickOffAndWaitForIdle2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2))), + SYM_SIG(1024, 1036, 1048)), // TODO: Update unknown parameter name(s) if able. + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_KickOff, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(1048)), + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_KickOff, CALL(std), STACK(4), PARAMS(PARAM(psh, this))), + SYM_SIG(4432, 4531, 5028)), + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_KickOff, CALL(unk), STACK(0), PARAMS(PARAM(edx, this))), + SYM_SIG(3911, 4039, 5028)), // Final generic OOVPA: 5028; Removed: 0 + REGISTER_OOVPAS_D3D(SYM_FUN_LTCG(CDevice_KickOff, CALL(unk), STACK(0), PARAMS(PARAM(eax, this))), + SYM_SIG(5455)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_MakeSpace, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(1036)), // Almost identical to generic 4134 signature. + REGISTER_OOVPAS(SYM_FUN(Direct3D_CreateDevice, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, hFocusWindow), PARAM(psh, BehaviorFlags), PARAM(psh, pPresentationParameters), PARAM(psh, ppReturnedDeviceInterface))), + SYM_SIG(1024, 1036)), + REGISTER_OOVPAS(SYM_FUN_LTCG(Direct3D_CreateDevice, CALL(unk), STACK(16), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, hFocusWindow), PARAM(eax, BehaviorFlags), PARAM(psh, pPresentationParameters), PARAM(ebx, ppReturnedDeviceInterface))), + SYM_SIG(2024)), + REGISTER_OOVPAS(SYM_FUN_LTCG(Direct3D_CreateDevice, CALL(unk), STACK(16), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, hFocusWindow), PARAM(eax, BehaviorFlags), PARAM(psh, pPresentationParameters), PARAM(ecx, ppReturnedDeviceInterface))), + SYM_SIG(2036, 2048)), + REGISTER_OOVPAS(SYM_FUN_LTCG(Direct3D_CreateDevice, CALL(unk), STACK(4), PARAMS(PARAM(eax, BehaviorFlags), PARAM(psh, pPresentationParameters), PARAM(ecx, ppReturnedDeviceInterface))), + SYM_SIG(2048, 2060)), + REGISTER_OOVPAS_D3D8(SYM_FUN(Get2DSurfaceDesc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPixelContainer), PARAM(psh, Level), PARAM(psh, pDesc))), + SYM_SIG(1024)), + REGISTER_OOVPAS_D3D8(SYM_FUN_LTCG(Get2DSurfaceDesc, CALL(unk), STACK(0), PARAMS(PARAM(edi, pPixelContainer), PARAM(ebx, Level), PARAM(esi, pDesc))), + SYM_SIG(2024, 2036)), + REGISTER_OOVPAS_D3D8(SYM_FUN_LTCG(Get2DSurfaceDesc, CALL(unk), STACK(4), PARAMS(PARAM(edi, pPixelContainer), PARAM(psh, Level), PARAM(esi, pDesc))), + SYM_SIG(2048)), + REGISTER_OOVPAS_D3D8(SYM_FUN_LTCG(Lock3DSurface, CALL(unk), STACK(16), PARAMS(PARAM(psh, pPixelContainer), PARAM(psh, Level), PARAM(psh, pLockedVolume), PARAM(eax, pBox), PARAM(psh, Flags))), + SYM_SIG(2048)), + REGISTER_OOVPAS_D3D8(SYM_FUN_LTCG(Lock2DSurface, CALL(unk), STACK(16), PARAMS(PARAM(psh, pPixelContainer), PARAM(psh, FaceType), PARAM(psh, Level), PARAM(esi, pLockedRect), PARAM(eax, pRect), PARAM(psh, Flags))), + SYM_SIG(2048)), }; // ****************************************************************** diff --git a/src/OOVPADatabase/D3D8_OOVPA.inl b/src/OOVPADatabase/D3D8_OOVPA.inl index cc77bd4a..b9c4f874 100644 --- a/src/OOVPADatabase/D3D8_OOVPA.inl +++ b/src/OOVPADatabase/D3D8_OOVPA.inl @@ -185,263 +185,541 @@ // * D3D8_OOVPA // ****************************************************************** OOVPATable D3D8_OOVPA[] = { - REGISTER_OOVPAS_M(D3DDevice__m_VerticalBlankEvent__GenericFragment, 3911), // This OOVPA signature is not a symbol. Read its note for more details. - REGISTER_OOVPAS_M(D3DRS_Stencils_and_Occlusion__GenericFragment, 3911), // This OOVPA signature is not a symbol. Read its note for more details. + // Custom manual search by reverse engineering team (which will not be public to the user) + REGISTER_OOVPAS_M(SYM_INT(D3DDevice__m_VerticalBlankEvent__GenericFragment), + SYM_SIG(3911)), // This OOVPA signature is not a symbol. Read its note for more details. + REGISTER_OOVPAS_M(SYM_INT(D3DRS_Stencils_and_Occlusion__GenericFragment), + SYM_SIG(3911)), // This OOVPA signature is not a symbol. Read its note for more details. - REGISTER_OOVPAS(D3D_UpdateProjectionViewportTransform, 3900, 3901), // Final generic OOVPA: 4034; Removed: 0 // NOTE: 3901 is 4034 signature, except LTCG title been detected in 3925. + // Variables + REGISTER_OOVPAS_M(SYM_VAR(D3D_g_pDevice), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_PixelShader_OFFSET), + SYM_SIG(0)), +#if 0 // Unused + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_Textures_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_Palettes_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_RenderTarget_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_DepthStencil_OFFSET), + SYM_SIG(0)), +#endif + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_VerticalBlankEvent_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_SwapCallback_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_VBlankCallback_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(D3DDevice__m_VertexShader_OFFSET), + SYM_SIG(0)), + + REGISTER_OOVPAS(SYM_FUN(D3D_UpdateProjectionViewportTransform, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3900, 3901)), // Final generic OOVPA: 4034; Removed: 0 // NOTE: 3901 is 4034 signature, except LTCG title been detected in 3925. - REGISTER_OOVPAS_D3D(CDevice_InitializeFrameBuffers, 3911), // Final generic OOVPA: 3911; Removed: 0 // thiscall - REGISTER_OOVPAS_D3D(CDevice_FreeFrameBuffers, 3911, 4034, 5455), // Final generic OOVPA: 5455; Removed: 0 // thiscall - REGISTER_OOVPAS_D3D(CDevice_SetStateUP, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 // thiscall - REGISTER_OOVPAS_D3D(CDevice_SetStateVB, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 // thiscall + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_InitializeFrameBuffers, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pPresentationParams))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_FreeFrameBuffers, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4034, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_SetStateUP, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_SetStateVB, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, unknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3D_CreateTexture, 3911, 4034), - REGISTER_OOVPAS_D3D(CDevice_MakeSpace, 3911), // NOTE: has multiple rets. - REGISTER_OOVPAS_D3D(CMiniport_CreateCtxDmaObject, 3911, 4034), - REGISTER_OOVPAS_D3D(CMiniport_InitHardware, 3911, 4034, 5455), - REGISTER_OOVPAS_D3D(CMiniport_IsFlipPending, 3911, 4242, 4627, 4928), - REGISTER_OOVPAS(D3DBaseTexture_GetLevelCount, 3911), - REGISTER_OOVPAS(D3DCubeTexture_GetCubeMapSurface2, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DCubeTexture_GetCubeMapSurface, 3911, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DCubeTexture_LockRect, 3911), // Just calls Lock2DSurface (from 4134, 4432's comment) - REGISTER_OOVPAS(D3DDevice_AddRef, 3911, 4039, 4134, 4242, 4627, 5028, 5344, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_ApplyStateBlock, 3911, 4627), - REGISTER_OOVPAS(D3DDevice_Begin, 3911, 4039), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_BeginPush_8, D3DDevice_BeginPush, 4039), - REGISTER_OOVPAS_BIND_XREF(D3DDevice_BeginPush_4, D3DDevice_BeginPush, 4531, 4627, 5028), - REGISTER_OOVPAS(D3DDevice_BeginPushBuffer, 3911, 4039), // Not implemented yet. (from 5788's comment) - REGISTER_OOVPAS(D3DDevice_BeginStateBig, 5028), - REGISTER_OOVPAS(D3DDevice_BeginStateBlock, 3911, 4134), - REGISTER_OOVPAS(D3DDevice_BeginVisibilityTest, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_BlockOnFence, 3911), - REGISTER_OOVPAS(D3DDevice_BlockUntilVerticalBlank, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_CaptureStateBlock, 3911, 4134), - REGISTER_OOVPAS(D3DDevice_Clear, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_CopyRects, 3911, 4034, 4627, 5120), - REGISTER_OOVPAS(D3DDevice_CreateCubeTexture, 3911, 4627), - REGISTER_OOVPAS(D3DDevice_CreateImageSurface, 3911, 4034, 4627), //TODO 4721,4928 (from 4627's comment) - REGISTER_OOVPAS(D3DDevice_CreateIndexBuffer, 3911, 4627), // TODO: This needs to be verified on 4361 - REGISTER_OOVPAS(D3DDevice_CreateIndexBuffer2, 4627, 5344), - REGISTER_OOVPAS(D3DDevice_CreatePalette, 3911, 4627), // Called D3DDevice_CreatePalette2 (from 4627's comment) NOTE: Use D3DDevice_CreatePalette2 for 4627 and above - REGISTER_OOVPAS(D3DDevice_CreatePalette2, 4627, 5344, 5455), - REGISTER_OOVPAS(D3DDevice_CreatePixelShader, 3911, 5344), - REGISTER_OOVPAS(D3DDevice_CreateStateBlock, 3911), - REGISTER_OOVPAS(D3DDevice_CreateTexture2, 4627, 4831), // Was 4627 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_CreateTexture, 3911, 4627), // Called D3DDevice_CreateTexture2 (from 4627's comment) NOTE: Use D3DDevice_CreateTexture2 for 4627 and above - REGISTER_OOVPAS(D3DDevice_CreateVertexBuffer, 3911, 4627), - REGISTER_OOVPAS(D3DDevice_CreateVertexBuffer2, 4627, 5344, 5455), - REGISTER_OOVPAS(D3DDevice_CreateVertexShader, 3911), - REGISTER_OOVPAS(D3DDevice_CreateVolumeTexture, 3911, 4627), - REGISTER_OOVPAS(D3DDevice_DeletePatch, 3911), // (TODO) (from 4034's comment) - REGISTER_OOVPAS(D3DDevice_DeletePixelShader, 3911, 5344), - REGISTER_OOVPAS(D3DDevice_DeleteStateBlock, 3911), - REGISTER_OOVPAS(D3DDevice_DeleteVertexShader, 3911, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(D3DDevice_DrawIndexedVertices, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_DrawIndexedVerticesUP, 3911, 5028, 5344), // Final generic OOVPA: 5344; Removed: 0 // TODO: Need verify title with 4034 version. - REGISTER_OOVPAS(D3DDevice_DrawRectPatch, 3911), // TODO: Unused? (from 4034's comment) - REGISTER_OOVPAS(D3DDevice_DrawTriPatch, 3911), - REGISTER_OOVPAS(D3DDevice_DrawVertices, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_DrawVerticesUP, 3911, 4039, 5344), // Final generic OOVPA: 5344; Removed: 0 // TODO: Need verify title with 4034 version. - REGISTER_OOVPAS(D3DDevice_EnableOverlay, 3911, 4134), - REGISTER_OOVPAS(D3DDevice_End, 3911, 4039, 5344), - REGISTER_OOVPAS(D3DDevice_EndPush, 4039), // Was 4627 (from 5233's comment) - REGISTER_OOVPAS(D3DDevice_EndPushBuffer, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_EndStateBlock, 3911, 4134), - REGISTER_OOVPAS(D3DDevice_EndVisibilityTest, 3911), - REGISTER_OOVPAS(D3DDevice_FlushVertexCache, 3911, 4134), - REGISTER_OOVPAS(D3DDevice_GetBackBuffer, 3911, 4034, 4134, 4627), // Called D3DDevice_GetBackBuffer2 (from 4627's comment) NOTE: Use D3DDevice_GetBackBuffer2 for 4627 and above - REGISTER_OOVPAS(D3DDevice_GetBackBuffer2, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_GetBackMaterial, 3911, 4039, 4134, 4627, 5344, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_GetCreationParameters, 3911), - REGISTER_OOVPAS(D3DDevice_GetDepthStencilSurface, 3911, 4627), // Called D3DDevice_GetDepthStencilSurface2 (from 4627's comment) NOTE: Use D3DDevice_GetDepthStencilSurface2 for 4627 and above - REGISTER_OOVPAS(D3DDevice_GetDepthStencilSurface2, 4627), - REGISTER_OOVPAS(D3DDevice_GetDeviceCaps, 3911), - REGISTER_OOVPAS(D3DDevice_GetDisplayFieldStatus, 3911), - REGISTER_OOVPAS(D3DDevice_GetDisplayMode, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_GetGammaRamp, 3911), - REGISTER_OOVPAS(D3DDevice_GetLight, 3911), - REGISTER_OOVPAS(D3DDevice_GetLightEnable, 3911, 5344), - REGISTER_OOVPAS(D3DDevice_GetMaterial, 3911, 4039, 4134, 4627, 5344, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_GetModelView, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_GetOverlayUpdateStatus, 3911), - REGISTER_OOVPAS(D3DDevice_GetPersistedSurface2, 4928), // For only on Unreal Championship (from 4627's comment) - REGISTER_OOVPAS(D3DDevice_GetPixelShader, 3911, 4039, 4134, 5028, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_GetProjectionViewportMatrix, 3911, 4134, 4627, 5344, 5558), // For 5455 (from 5558's comment) - REGISTER_OOVPAS(D3DDevice_GetPushBufferOffset, 3911, 4627), //TODO 4831 (from 4627's comment) - REGISTER_OOVPAS(D3DDevice_GetRenderTarget2, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_GetRenderTarget, 3911, 4627), // Final generic OOVPA: 4627; Removed: 0 // NOTE: Use D3DDevice_GetRenderTarget2 for 4627 and above - REGISTER_OOVPAS(D3DDevice_GetScissors, 3911), - REGISTER_OOVPAS(D3DDevice_GetShaderConstantMode, 3911, 4134, 4627, 5028, 5344, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_GetStreamSource2, 4627), - REGISTER_OOVPAS(D3DDevice_GetTexture2, 3911, 4134, 4627, 5344, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_GetTile, 3911, 5455), - REGISTER_OOVPAS(D3DDevice_GetTransform, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_GetVertexShader, 3911, 4039, 4134, 5028, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_GetVertexShaderConstant, 3911, 4039, 5028), - REGISTER_OOVPAS(D3DDevice_GetVertexShaderDeclaration, 3911), - REGISTER_OOVPAS(D3DDevice_GetVertexShaderFunction, 3911), - REGISTER_OOVPAS(D3DDevice_GetVertexShaderInput, 3911), - REGISTER_OOVPAS(D3DDevice_GetVertexShaderSize, 3911), - REGISTER_OOVPAS(D3DDevice_GetVertexShaderType, 3911), - REGISTER_OOVPAS(D3DDevice_GetViewport, 3911, 5455), // Was 4627 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_GetViewportOffsetAndScale, 4432), - REGISTER_OOVPAS(D3DDevice_GetVisibilityTestResult, 3911, 5233), - REGISTER_OOVPAS(D3DDevice_InsertCallback, 3911, 4134, 5028), - REGISTER_OOVPAS(D3DDevice_InsertFence, 3911), - REGISTER_OOVPAS(D3DDevice_IsBusy, 3911, 5028), - REGISTER_OOVPAS(D3DDevice_IsFencePending, 3911, 4039, 5028), - REGISTER_OOVPAS_D3D(CDevice_KickOff, 3911, 4034, 4531, 5028, 5455), // Final generic OOVPA: 5455; Removed: 0 // thiscall - REGISTER_OOVPAS(D3DDevice_KickPushBuffer, 3911), - REGISTER_OOVPAS(D3DDevice_LightEnable, 3911, 5344), // Was 5233 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_LoadVertexShader, 3911, 4034, 4627, 5028), - REGISTER_OOVPAS(D3DDevice_LoadVertexShaderProgram, 3911), - REGISTER_OOVPAS(D3DDevice_MakeSpace, 4034, 4134), // NOTE: LTCG has duplicate functions, need to find out how to resolve this issue with cross referencing. - REGISTER_OOVPAS(D3DDevice_PersistDisplay, 3911, 4039, 4627, 4831), - REGISTER_OOVPAS(D3DDevice_Present, 3911), - REGISTER_OOVPAS(D3DDevice_PrimeVertexCache, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_Release, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_Reset, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_RunPushBuffer, 3911, 4039, 4627, 5120, 5558), // for 5455 (from 5558's comment) - REGISTER_OOVPAS(D3DDevice_RunVertexStateShader, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SelectVertexShader, 3911, 4034, 5455), - REGISTER_OOVPAS(D3DDevice_SelectVertexShaderDirect, 4361), - REGISTER_OOVPAS(D3DDevice_SetBackBufferScale, 4039), - REGISTER_OOVPAS(D3DDevice_SetBackMaterial, 3911, 4039, 4134, 4627, 5344, 5558, 5788), - REGISTER_OOVPAS(D3DDevice_SetDepthClipPlanes, 4432), - REGISTER_OOVPAS(D3DDevice_SetFlickerFilter, 3911, 4034, 4134), - REGISTER_OOVPAS(D3DDevice_SetGammaRamp, 3911, 4627), - REGISTER_OOVPAS(D3DDevice_SetIndices, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetLight, 3911, 5344), - REGISTER_OOVPAS(D3DDevice_SetMaterial, 3911, 4034, 4134, 4627, 5344, 5558, 5788), // Was 4627 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_SetModelView, 3911, 4039, 4627), - REGISTER_OOVPAS(D3DDevice_SetPalette, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetPixelShader, 3911, 4034, 4627), - REGISTER_OOVPAS(D3DDevice_SetPixelShaderConstant, 3911, 4831), - REGISTER_OOVPAS(D3DDevice_SetPixelShaderProgram, 3911), - REGISTER_OOVPAS_M(D3DDevice_SetRenderState_Simple, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_M(D3DDevice_SetRenderStateNotInline, 3911), // Final generic OOVPA: 3911; Removed: 0 // NOTE: Must be after D3DDevice_SetRenderState_Simple. + REGISTER_OOVPAS(SYM_FUN(D3D_CreateTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, isCube), PARAM(psh, isVolume), PARAM(psh, ppTexture))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_MakeSpace, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911)), // NOTE: has multiple rets. + REGISTER_OOVPAS_D3D(SYM_FUN(CMiniport_CreateCtxDmaObject, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3), PARAM(psh, unknown4), PARAM(psh, unknown5))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS_D3D(SYM_FUN(CMiniport_InitHardware, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4034, 5455)), + REGISTER_OOVPAS_D3D(SYM_FUN(CMiniport_IsFlipPending, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4242, 4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(D3DBaseTexture_GetLevelCount, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DCubeTexture_GetCubeMapSurface2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, FaceType), PARAM(psh, Level))), + SYM_SIG(4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DCubeTexture_GetCubeMapSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, FaceType), PARAM(psh, Level), PARAM(psh, ppCubeMapSurface))), + SYM_SIG(3911, 4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DCubeTexture_LockRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, FaceType), PARAM(psh, Level), PARAM(psh, pLockedBox), PARAM(psh, pRect), PARAM(psh, Flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4039, 4134, 4242, 4627, 5028, 5344, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_ApplyStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Token))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Begin, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginPush, CALL(std), STACK(8), PARAMS(PARAM(psh, Count), PARAM(psh, ppPush))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginPush, CALL(std), STACK(4), PARAMS(PARAM(psh, Count))), + SYM_SIG(4531, 4627, 5028)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPushBuffer))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginStateBig, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5028)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BeginVisibilityTest, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BlockOnFence, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Fence))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_BlockUntilVerticalBlank, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CaptureStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Token))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Clear, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Count), PARAM(psh, pRects), PARAM(psh, Flags), PARAM(psh, Color), PARAM(psh, Z), PARAM(psh, Stencil))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CopyRects, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSourceSurface), PARAM(psh, pSourceRectsArray), PARAM(psh, cRects), PARAM(psh, pDestinationSurface), PARAM(psh, pDestPointsArray))), + SYM_SIG(3911, 4034, 4627, 5120)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateCubeTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, EdgeLength), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, ppCubeTexture))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateImageSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Format), PARAM(psh, ppBackBuffer))), + SYM_SIG(3911, 4034, 4627)), // TODO 4721,4928 (from 4627's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateIndexBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Length), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, ppIndexBuffer))), + SYM_SIG(3911, 4627)), // TODO: This needs to be verified on 4361 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateIndexBuffer2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Length))), + SYM_SIG(4627, 5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreatePalette, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Size), PARAM(psh, ppPalette))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreatePalette2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Size))), + SYM_SIG(4627, 5344, 5455)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreatePixelShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPSDef), PARAM(psh, pHandle))), + SYM_SIG(3911, 5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Type), PARAM(psh, pToken))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateTexture2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, D3DResource))), + SYM_SIG(4627, 4831)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, ppTexture))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateVertexBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Length), PARAM(psh, Usage), PARAM(psh, FVF), PARAM(psh, Pool), PARAM(psh, ppVertexBuffer))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateVertexBuffer2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Length))), + SYM_SIG(4627, 5344, 5455)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pDeclaration), PARAM(psh, pFunction), PARAM(psh, pHandle), PARAM(psh, Usage))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_CreateVolumeTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, ppVolumeTexture))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DeletePatch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DeletePixelShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(3911, 5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DeleteStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Token))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DeleteVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(3911, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawIndexedVertices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, VertexCount), PARAM(psh, pIndexData))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawIndexedVerticesUP, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, VertexCount), PARAM(psh, pIndexData), PARAM(psh, pVertexStreamZeroData), PARAM(psh, VertexStreamZeroStride))), + SYM_SIG(3911, 5028, 5344)), // Final generic OOVPA: 5344; Removed: 0 // TODO: Need verify title with 4034 version. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawRectPatch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, pNumSegs), PARAM(psh, pRectPatchInfo))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawTriPatch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, pNumSegs), PARAM(psh, pTriPatchInfo))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawVertices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, StartVertex), PARAM(psh, VertexCount))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_DrawVerticesUP, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PrimitiveType), PARAM(psh, VertexCount), PARAM(psh, pVertexStreamZeroData), PARAM(psh, VertexStreamZeroStride))), + SYM_SIG(3911, 4039, 5344)), // Final generic OOVPA: 5344; Removed: 0 // TODO: Need verify title with 4034 version. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EnableOverlay, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Enable))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_End, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4039, 5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EndPush, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPush))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EndPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EndStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pToken))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_EndVisibilityTest, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_FlushVertexCache, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetBackBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, BackBuffer), PARAM(psh, Type), PARAM(psh, ppBackBuffer))), + SYM_SIG(3911, 4034, 4134, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetBackBuffer2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, BackBuffer))), + SYM_SIG(4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetBackMaterial, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pMaterial))), + SYM_SIG(3911, 4039, 4134, 4627, 5344, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetCreationParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pParameters))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDepthStencilSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, ppZStencilSurface))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDepthStencilSurface2, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDeviceCaps, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pCaps))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDisplayFieldStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pFieldStatus))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetDisplayMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pModes))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetGammaRamp, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRamp))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetLight, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pLight))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetLightEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pEnable))), + SYM_SIG(3911, 5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetMaterial, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pMaterial))), + SYM_SIG(3911, 4039, 4134, 4627, 5344, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetModelView, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pModelView))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetOverlayUpdateStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetPersistedSurface2, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4928)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetPixelShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Name), PARAM(psh, pHandle))), + SYM_SIG(3911, 4039, 4134, 5028, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetProjectionViewportMatrix, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pProjectionViewport))), + SYM_SIG(3911, 4134, 4627, 5344, 5558)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetPushBufferOffset, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pOffset))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetRenderTarget2, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetRenderTarget, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, ppRenderTarget))), + SYM_SIG(3911, 4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetScissors, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pCount), PARAM(psh, pExclusive), PARAM(psh, pRects))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetShaderConstantMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pMode))), + SYM_SIG(3911, 4134, 4627, 5028, 5344, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetStreamSource2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, StreamNumber), PARAM(psh, pStride))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetTexture2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage))), + SYM_SIG(3911, 4134, 4627, 5344, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetTile, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pTile))), + SYM_SIG(3911, 5455)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetTransform, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, pMatrix))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pHandle))), + SYM_SIG(3911, 4039, 4134, 5028, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShaderConstant, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(3911, 4039, 5028)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShaderDeclaration, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, pData), PARAM(psh, pSizeOfData))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShaderFunction, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, pData), PARAM(psh, pSizeOfData))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShaderInput, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pHandle), PARAM(psh, pStreamCount), PARAM(psh, pStreamInputs))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShaderSize, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, pSize))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVertexShaderType, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, pType))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetViewport, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pViewport))), + SYM_SIG(3911, 5455)), // Was 4627 (from 5344's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetViewportOffsetAndScale, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pOffset), PARAM(psh, pScale))), + SYM_SIG(4432)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_GetVisibilityTestResult, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pResult), PARAM(psh, pTimeStamp))), + SYM_SIG(3911, 5233)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_InsertCallback, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Type), PARAM(psh, pCallback), PARAM(psh, Context))), + SYM_SIG(3911, 4134, 5028)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_InsertFence, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_IsBusy, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 5028)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_IsFencePending, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Fence))), + SYM_SIG(3911, 4039, 5028)), + REGISTER_OOVPAS_D3D(SYM_FUN(CDevice_KickOff, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4034, 4531, 5028, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_KickPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_LightEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, bEnable))), + SYM_SIG(3911, 5344)), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_LoadVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, Address))), + SYM_SIG(3911, 4034, 4627, 5028)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_LoadVertexShaderProgram, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pFunction), PARAM(psh, Address))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_MakeSpace, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4034, 4134)), // NOTE: LTCG has duplicate functions, need to find out how to resolve this issue with cross referencing. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_PersistDisplay, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4039, 4627, 4831)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Present, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSourceRect), PARAM(psh, pDestRect), PARAM(psh, pUnused3), PARAM(psh, pUnused4))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_PrimeVertexCache, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, VertexCount), PARAM(psh, pIndexData))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Reset, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPresentationParameters))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_RunPushBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPushBuffer), PARAM(psh, pFixup))), + SYM_SIG(3911, 4039, 4627, 5120, 5558)), // for 5455 (from 5558's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_RunVertexStateShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Address), PARAM(psh, pData))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SelectVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, Address))), + SYM_SIG(3911, 4034, 5455)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SelectVertexShaderDirect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVAF), PARAM(psh, Address))), + SYM_SIG(4361)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetBackBufferScale, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, x), PARAM(psh, y))), + SYM_SIG(4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetBackMaterial, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pMaterial))), + SYM_SIG(3911, 4039, 4134, 4627, 5344, 5558, 5788)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetDepthClipPlanes, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Near), PARAM(psh, Far), PARAM(psh, Flags))), + SYM_SIG(4432)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetFlickerFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Filter))), + SYM_SIG(3911, 4034, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetGammaRamp, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwFlags), PARAM(psh, pRamp))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetIndices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pIndexData), PARAM(psh, BaseVertexIndex))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetLight, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pLight))), + SYM_SIG(3911, 5344)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetMaterial, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pMaterial))), + SYM_SIG(3911, 4034, 4134, 4627, 5344, 5558, 5788)), // Was 4627 (from 5344's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetModelView, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pModelView), PARAM(psh, pInverseModelView), PARAM(psh, pComposite))), + SYM_SIG(3911, 4039, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPalette, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, pPalette))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPixelShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(3911, 4034, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPixelShaderConstant, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(3911, 4831)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetPixelShaderProgram, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPSDef))), + SYM_SIG(3911)), + REGISTER_OOVPAS_M(SYM_FUN(D3DDevice_SetRenderState_Simple, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, Method), PARAM(edx, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS_M(SYM_FUN(D3DDevice_SetRenderStateNotInline, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // NOTE: Must be after D3DDevice_SetRenderState_Simple. // NOTE: Some or most of render state signatures below must be after D3DDevice_SetRenderStateNotInline. - REGISTER_OOVPAS(D3DDevice_SetRenderState, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState2, 3911), // Final generic OOVPA: 3911; Removed: 0 // NOTE: There is a verified duplicate function. - REGISTER_OOVPAS(D3DDevice_SetRenderState_BackFillMode, 3911, 4034), - REGISTER_OOVPAS_C(D3DDevice_SetRenderState_CullMode, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_Deferred, 3911), - REGISTER_OOVPAS(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_Dxt1NoiseEnable, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_EdgeAntiAlias, 3911, 4034), - REGISTER_OOVPAS_M(D3DDevice_SetRenderState_FillMode, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_FogColor, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetRenderState_FrontFace, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_LineWidth, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetRenderState_LogicOp, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleAntiAlias, 3911, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMask, 3911, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMode, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleType, 3911, 3925), // Final generic OOVPA: 3925 Removed: 4034 - REGISTER_OOVPAS(D3DDevice_SetRenderState_NormalizeNormals, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetRenderState_OcclusionCullEnable, 3911, 1024), // Final generic OOVPA: 3911 (LTCG) / 4034 (non-LTCG); Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_PSTextureModes, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_RopZRead, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_SampleAlpha, 4627), // Final generic OOVPA: 4627; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_ShadowFunc, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilCullEnable, 3911, 1024), // Final generic OOVPA: 3911 (LTCG) / 4034 (non-LTCG); Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilEnable, 3911, 4034, 5849), - REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilFail, 3911, 4034, 5849), - REGISTER_OOVPAS(D3DDevice_SetRenderState_TextureFactor, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetRenderState_TwoSidedLighting, 3911, 4034, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_VertexBlend, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetRenderState_YuvEnable, 3911, 1024), // Final generic OOVPA: 3911 (LTCG) / 4034 (non-LTCG); Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_ZBias, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderState_ZEnable, 3911, 4034, 4134, 4432), - REGISTER_OOVPAS(D3DDevice_SetRenderTarget, 3911, 3947, 4034, 4039, 4627, 5344, 5455), // Final generic OOVPA: 5344/5455; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetRenderTargetFast, 5233), - REGISTER_OOVPAS(D3DDevice_SetScissors, 3911, 5344, 5558), // Was 5233 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_SetScreenSpaceOffset, 4034, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetShaderConstantMode, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetSoftDisplayFilter, 3911, 4034, 4134), - REGISTER_OOVPAS(D3DDevice_SetStipple, 4627), - REGISTER_OOVPAS(D3DDevice_SetStreamSource, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetSwapCallback, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetTexture, 3911, 4034, 4361, 4831), - REGISTER_OOVPAS(D3DDevice_SetTextureStageStateNotInline, 3911, 4034), // Final generic OOVPA: 4034; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetTextureState_BorderColor, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetTextureState_BumpEnv, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_SetTextureState_ColorKeyColor, 3911, 4034), - REGISTER_OOVPAS_C(D3DDevice_SetTextureState_TexCoordIndex, 3911, 4034, 4242, 4627), - REGISTER_OOVPAS(D3DDevice_SetTile, 3911, 4034, 4627), // Then it has changed calls ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z in XDK 4627 and higher. - REGISTER_OOVPAS(D3DDevice_SetTransform, 3911, 4034), - REGISTER_OOVPAS(D3DDevice_MultiplyTransform, 3911, 4034), // TODO: Verify 4034 is correct - REGISTER_OOVPAS(D3DDevice_SetVertexData2f, 3911, 4039), // Was 4627 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_SetVertexData2s, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SetVertexData4f, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SetVertexData4s, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SetVertexData4ub, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SetVertexDataColor, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SetVertexShader, 3911, 4034, 4134, 5028, 5455), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant, 3911, 4034, 4627), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant1, 4627), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant1Fast, 4627), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant4, 4627), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstantNotInline, 4627, 5028, 5558), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstantNotInlineFast, 4627), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderInput, 3911, 4039), - REGISTER_OOVPAS(D3DDevice_SetVertexShaderInputDirect, 4361), - REGISTER_OOVPAS(D3DDevice_SetVerticalBlankCallback, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_SetViewport, 3911, 4034, 5344, 5455), // Was 5233 (from 5344's comment) - REGISTER_OOVPAS(D3DDevice_Suspend, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3DDevice_Swap, 4034, 4531, 4627), - REGISTER_OOVPAS(D3DDevice_SwitchTexture, 3911), - REGISTER_OOVPAS(D3DDevice_UpdateOverlay, 3911, 4531, 5233), - REGISTER_OOVPAS(D3DPalette_Lock, 3911, 4531, 4627), // Called D3DPalette_Lock2 (from 4627's comment) NOTE: Use D3DPalette_Lock2 for 4627 and above - REGISTER_OOVPAS(D3DPalette_Lock2, 4627), - REGISTER_OOVPAS(D3DResource_AddRef, 3911), - REGISTER_OOVPAS(D3DResource_BlockUntilNotBusy, 3911), - REGISTER_OOVPAS(D3DResource_GetType, 3911, 4034), // Probably not even necessary... (from 3925's comment) // I forget why I had this in here... (from 5028's comment) - REGISTER_OOVPAS(D3DResource_IsBusy, 3911, 4039), - REGISTER_OOVPAS(D3DResource_Register, 3911), - REGISTER_OOVPAS(D3DResource_Release, 3911), - REGISTER_OOVPAS(D3DSurface_GetDesc, 3911), - REGISTER_OOVPAS(D3DSurface_LockRect, 3911), - REGISTER_OOVPAS(D3DTexture_GetSurfaceLevel, 3911, 4627), - REGISTER_OOVPAS(D3DTexture_GetSurfaceLevel2, 4627), - REGISTER_OOVPAS(D3DTexture_LockRect, 3911), - REGISTER_OOVPAS(D3DVertexBuffer_GetDesc, 3911), - REGISTER_OOVPAS(D3DVertexBuffer_Lock, 3911, 4034, 4627), - REGISTER_OOVPAS(D3DVertexBuffer_Lock2, 4627), - REGISTER_OOVPAS(D3DVolumeTexture_LockBox, 3911), // Just calls Lock3DSurface (from 4134, 4432's comment) - REGISTER_OOVPAS(D3D_AllocContiguousMemory, 3911, 5455), // Final generic OOVPA: 5455; Removed: 0 // Just calls MmAllocateContiguousMemory. - REGISTER_OOVPAS(D3D_BlockOnResource, 3911, 4034), - REGISTER_OOVPAS(D3D_BlockOnTime, 3911, 4034, 4627, 5028, 5558), - REGISTER_OOVPAS_D3D(CMiniport_GetDisplayCapabilities, 3911), - REGISTER_OOVPAS(D3D_CheckDeviceFormat, 3911), - REGISTER_OOVPAS(D3D_ClearStateBlockFlags, 3911), - REGISTER_OOVPAS_M(D3D_CommonSetDebugRegisters, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(D3D_CommonSetRenderTarget, 4627, 5028), // Final generic OOVPA: 4627; Removed: 5344 - REGISTER_OOVPAS(D3D_CommonSetMultiSampleModeAndScale, 5344), // Final generic OOVPA: 5344; Removed: 0 // fastcall (2 params) - REGISTER_OOVPAS(D3D_CreateStandAloneSurface, 4034), - REGISTER_OOVPAS(D3D_DestroyResource, 3911), - REGISTER_OOVPAS(D3D_EnumAdapterModes, 3911), - REGISTER_OOVPAS(D3D_GetAdapterDisplayMode, 3911, 4627), - REGISTER_OOVPAS(D3D_GetAdapterIdentifier, 3911), - REGISTER_OOVPAS(D3D_GetAdapterModeCount, 3911), - REGISTER_OOVPAS(D3D_GetDeviceCaps, 3911), - REGISTER_OOVPAS(D3D_KickOffAndWaitForIdle, 3911, 4034, 4627, 5028), - REGISTER_OOVPAS(D3D_LazySetPointParams, 3911, 4034), - REGISTER_OOVPAS(D3D_RecordStateBlock, 3911), - REGISTER_OOVPAS(D3D_SetFence, 3911, 4034, 4134, 5028, 5558), - REGISTER_OOVPAS(D3D_SetPushBufferSize, 3911), - REGISTER_OOVPAS(D3D_SetTileNoWait, 4627, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(Direct3D_CheckDeviceMultiSampleType, 3911), - REGISTER_OOVPAS(Direct3D_CreateDevice, 3911, 5028), - REGISTER_OOVPAS_D3D8(Get2DSurfaceDesc, 3911, 4034), // Was 5233 (from 5344's comment) - REGISTER_OOVPAS_D3D8(Lock2DSurface, 3911), - REGISTER_OOVPAS_D3D8(Lock3DSurface, 3911), - REGISTER_OOVPAS_BIND_XREF(D3D_MakeRequestedSpace_4, D3D_MakeRequestedSpace, 4034), // Final generic OOVPA: 4034??; Removed: 4134 // NOTE: has multiple rets. - REGISTER_OOVPAS_BIND_XREF(D3D_MakeRequestedSpace_8, D3D_MakeRequestedSpace, 4134, 5558), // Final generic OOVPA: 5558; Removed: 0 // NOTE: has multiple rets. - REGISTER_OOVPAS(XMETAL_StartPush, 3911), // Final generic OOVPA: 3911; Removed: 4034?? - REGISTER_OOVPAS(IDirect3DVertexBuffer8_Lock, 4627), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // NOTE: There is a verified duplicate function. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_BackFillMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS_C(SYM_FUN(D3DDevice_SetRenderState_CullMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_Deferred, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, State), PARAM(edx, Value))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_DoNotCullUncompressed, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_Dxt1NoiseEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_EdgeAntiAlias, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS_M(SYM_FUN(D3DDevice_SetRenderState_FillMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_FogColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_FrontFace, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_LineWidth, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_LogicOp, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleAntiAlias, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleMask, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_MultiSampleType, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 3925)), // Final generic OOVPA: 3925 Removed: 4034 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_NormalizeNormals, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_OcclusionCullEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 1024)), // Final generic OOVPA: 3911 (LTCG) / 4034 (non-LTCG); Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_PSTextureModes, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_RopZCmpAlwaysRead, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_RopZRead, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_SampleAlpha, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(4627)), // Final generic OOVPA: 4627; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_ShadowFunc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_StencilCullEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 1024)), // Final generic OOVPA: 3911 (LTCG) / 4034 (non-LTCG); Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_StencilEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034, 5849)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_StencilFail, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034, 5849)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_TextureFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_TwoSidedLighting, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_VertexBlend, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_YuvEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 1024)), // Final generic OOVPA: 3911 (LTCG) / 4034 (non-LTCG); Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_ZBias, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderState_ZEnable, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Value))), + SYM_SIG(3911, 4034, 4134, 4432)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderTarget, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRenderTarget), PARAM(psh, pNewZStencil))), + SYM_SIG(3911, 3947, 4034, 4039, 4627, 5344, 5455)), // Final generic OOVPA: 5344/5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetRenderTargetFast, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRenderTarget), PARAM(psh, pNewZStencil), PARAM(psh, Flags))), + SYM_SIG(5233)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetScissors, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Count), PARAM(psh, Exclusive), PARAM(psh, pRects))), + SYM_SIG(3911, 5344, 5558)), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetScreenSpaceOffset, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, x), PARAM(psh, y))), + SYM_SIG(4034, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetShaderConstantMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Mode))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetSoftDisplayFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Enable))), + SYM_SIG(3911, 4034, 4134)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetStipple, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPattern))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetStreamSource, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, StreamNumber), PARAM(psh, pStreamData), PARAM(psh, Stride))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetSwapCallback, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pCallback))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTexture, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, pTexture))), + SYM_SIG(3911, 4034, 4361, 4831)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureStageStateNotInline, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Type), PARAM(psh, Value))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: 4034; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_BorderColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_BumpEnv, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Type), PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_ColorKeyColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS_C(SYM_FUN(D3DDevice_SetTextureState_TexCoordIndex, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))), + SYM_SIG(3911, 4034, 4242, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTile, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pTile))), + SYM_SIG(3911, 4034, 4627)), // Then it has changed calls ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z in XDK 4627 and higher. + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTransform, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, pMatrix))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_MultiplyTransform, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, State), PARAM(psh, pMatrix))), + SYM_SIG(3911, 4034)), // TODO: Verify 4034 is correct + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData2f, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData2s, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData4f, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData4s, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexData4ub, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, a), PARAM(psh, b), PARAM(psh, c), PARAM(psh, d))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexDataColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, Color))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle))), + SYM_SIG(3911, 4034, 4134, 5028, 5455)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstant, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Register), PARAM(psh, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(3911, 4034, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstant1, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, Register), PARAM(edx, pConstantData))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstant1Fast, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, Register), PARAM(edx, pConstantData))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstant4, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, Register), PARAM(edx, pConstantData))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstantNotInline, CALL(std), STACK(/*default*/), PARAMS(PARAM(ecx, Register), PARAM(edi, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(4627, 5028, 5558)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderConstantNotInlineFast, CALL(std), STACK(/*default*/), PARAMS(PARAM(ecx, Register), PARAM(edi, pConstantData), PARAM(psh, ConstantCount))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderInput, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Handle), PARAM(psh, StreamCount), PARAM(psh, pStreamInputs))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVertexShaderInputDirect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVAF), PARAM(psh, StreamCount), PARAM(psh, pStreamInputs))), + SYM_SIG(4361)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetVerticalBlankCallback, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pCallback))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetViewport, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pViewport))), + SYM_SIG(3911, 4034, 5344, 5455)), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Suspend, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3DDevice_Swap, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Flags))), + SYM_SIG(4034, 4531, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_SwitchTexture, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, Method), PARAM(edx, Data), PARAM(psh, Format))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DDevice_UpdateOverlay, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSurface), PARAM(psh, SrcRect), PARAM(psh, DstRect), PARAM(psh, EnableColorKey), PARAM(psh, ColorKey))), + SYM_SIG(3911, 4531, 5233)), + REGISTER_OOVPAS(SYM_FUN(D3DPalette_Lock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, ppColors), PARAM(psh, Flags))), + SYM_SIG(3911, 4531, 4627)), // Called D3DPalette_Lock2 (from 4627's comment) NOTE: Use D3DPalette_Lock2 for 4627 and above + REGISTER_OOVPAS(SYM_FUN(D3DPalette_Lock2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Flags))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_BlockUntilNotBusy, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_GetType, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4034)), // Probably not even necessary... (from 3925's comment) // I forget why I had this in here... (from 5028's comment) + REGISTER_OOVPAS(SYM_FUN(D3DResource_IsBusy, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_Register, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pBase))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DResource_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DSurface_GetDesc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pDesc))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DSurface_LockRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pLockedRect), PARAM(psh, pRect), PARAM(psh, Flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DTexture_GetSurfaceLevel, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Level), PARAM(psh, ppSurfaceLevel))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DTexture_GetSurfaceLevel2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Level))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DTexture_LockRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Level), PARAM(psh, pLockedRect), PARAM(psh, pRect), PARAM(psh, Flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DVertexBuffer_GetDesc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pDesc))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3DVertexBuffer_Lock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVertexBuffer), PARAM(psh, OffsetToLock), PARAM(psh, SizeToLock), PARAM(psh, ppbData), PARAM(psh, Flags))), + SYM_SIG(3911, 4034, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3DVertexBuffer_Lock2, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVertexBuffer), PARAM(psh, Flags))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(D3DVolumeTexture_LockBox, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, Level), PARAM(psh, pLockedVolume), PARAM(psh, pBox), PARAM(psh, Flags))), + SYM_SIG(3911)), // Just calls Lock3DSurface (from 4134, 4432's comment) + REGISTER_OOVPAS(SYM_FUN(D3D_AllocContiguousMemory, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwSize), PARAM(psh, dwAllocAttributes))), + SYM_SIG(3911, 5455)), // Final generic OOVPA: 5455; Removed: 0 // Just calls MmAllocateContiguousMemory. + REGISTER_OOVPAS(SYM_FUN(D3D_BlockOnResource, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pResource))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3D_BlockOnTime, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2))), // TODO: Update unknown parameter name(s) if able. Both parameters do change over time. Likely may need a separate group... + SYM_SIG(3911, 4034, 4627, 5028, 5558)), // NOTE: unknown2 parameter can be different value from same caller function over time. + REGISTER_OOVPAS_D3D(SYM_FUN(CMiniport_GetDisplayCapabilities, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_CheckDeviceFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, AdapterFormat), PARAM(psh, Usage), PARAM(psh, RType), PARAM(psh, CheckFormat))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_ClearStateBlockFlags, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), + REGISTER_OOVPAS_M(SYM_FUN(D3D_CommonSetDebugRegisters, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3D_CommonSetRenderTarget, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pRenderTarget), PARAM(psh, pNewZStencil), PARAM(psh, pUnknown3))), + SYM_SIG(4627, 5028)), // Final generic OOVPA: 4627; Removed: 5344 + REGISTER_OOVPAS(SYM_FUN(D3D_CommonSetMultiSampleModeAndScale, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(edx, pViewport))), + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(D3D_CreateStandAloneSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3), PARAM(psh, unknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(4034)), + REGISTER_OOVPAS(SYM_FUN(D3D_DestroyResource, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pResource))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_EnumAdapterModes, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, Mode), PARAM(psh, pMode))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_GetAdapterDisplayMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, pMode))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(D3D_GetAdapterIdentifier, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, Flags), PARAM(psh, pIdentifier))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_GetAdapterModeCount, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, Format))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_GetDeviceCaps, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, pCaps))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_KickOffAndWaitForIdle, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4034, 4627, 5028)), + REGISTER_OOVPAS(SYM_FUN(D3D_LazySetPointParams, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Device))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS(SYM_FUN(D3D_RecordStateBlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pToken))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_SetFence, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Flags))), + SYM_SIG(3911, 4034, 4134, 5028, 5558)), + REGISTER_OOVPAS(SYM_FUN(D3D_SetPushBufferSize, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PushBufferSize), PARAM(psh, KickOffSize))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_SetTileNoWait, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Index), PARAM(psh, pTile))), + SYM_SIG(4627, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(Direct3D_CheckDeviceMultiSampleType, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, SurfaceFormat), PARAM(psh, Windowed), PARAM(psh, MultiSampleType))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(Direct3D_CreateDevice, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Adapter), PARAM(psh, DeviceType), PARAM(psh, hFocusWindow), PARAM(psh, BehaviorFlags), PARAM(psh, pPresentationParameters), PARAM(psh, ppReturnedDeviceInterface))), + SYM_SIG(3911, 5028)), + REGISTER_OOVPAS_D3D8(SYM_FUN(Get2DSurfaceDesc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPixelContainer), PARAM(psh, dwLevel), PARAM(psh, pDesc))), + SYM_SIG(3911, 4034)), + REGISTER_OOVPAS_D3D8(SYM_FUN(Lock2DSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPixelContainer), PARAM(psh, FaceType), PARAM(psh, Level), PARAM(psh, pLockedRect), PARAM(psh, pRect), PARAM(psh, Flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS_D3D8(SYM_FUN(Lock3DSurface, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pPixelContainer), PARAM(psh, Level), PARAM(psh, pLockedVolume), PARAM(psh, pBox), PARAM(psh, Flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(D3D_MakeRequestedSpace, CALL(std), STACK(4), PARAMS(PARAM(psh, RequestedSpace))), + SYM_SIG(4034)), // Final generic OOVPA: 4034??; Removed: 4134 // NOTE: has multiple rets. + REGISTER_OOVPAS(SYM_FUN(D3D_MakeRequestedSpace, CALL(std), STACK(8), PARAMS(PARAM(psh, MinimumSpace), PARAM(psh, RequestedSpace))), + SYM_SIG(4134, 5558)), // Final generic OOVPA: 5558; Removed: 0 // NOTE: has multiple rets. + REGISTER_OOVPAS(SYM_FUN(XMETAL_StartPush, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pDevice))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4034?? + REGISTER_OOVPAS(SYM_FUN(IDirect3DVertexBuffer8_Lock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pVertexBuffer), PARAM(psh, OffsetToLock), PARAM(psh, SizeToLock), PARAM(psh, ppbData), PARAM(psh, Flags))), + SYM_SIG(4627)), }; diff --git a/src/OOVPADatabase/DSound/3911.inl b/src/OOVPADatabase/DSound/3911.inl index 090faff1..c55bba15 100644 --- a/src/OOVPADatabase/DSound/3911.inl +++ b/src/OOVPADatabase/DSound/3911.inl @@ -1253,7 +1253,8 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CDirectSoundVoice::SetMixBinVolumes // ****************************************************************** -OOVPA_SIG_HEADER_XREF(CDirectSoundVoice_SetMixBinVolumes, +// Generic OOVPA as of 3911 and newer. +OOVPA_SIG_HEADER_XREF(CDirectSoundVoice_SetMixBinVolumes_12, 3911, XRefOne) OOVPA_SIG_MATCH( @@ -2113,6 +2114,14 @@ OOVPA_SIG_MATCH( // ); +// ****************************************************************** +// * CDirectSoundStream::Process (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_Process, + 0) +OOVPA_SIG_MATCH_DUMMY(); + // ****************************************************************** // * CDirectSoundStream_Process // ****************************************************************** @@ -2147,7 +2156,15 @@ OOVPA_SIG_MATCH( ); // ****************************************************************** -// * CDirectSoundStream_GetStatus +// * CDirectSoundStream::GetStatus (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_GetStatus, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * CDirectSoundStream::GetStatus // ****************************************************************** OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_GetStatus, 3911) @@ -2209,6 +2226,14 @@ OOVPA_SIG_MATCH( // ); +// ****************************************************************** +// * CDirectSoundStream::Flush (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_Flush, + 0) +OOVPA_SIG_MATCH_DUMMY(); + // ****************************************************************** // * CDirectSoundStream_Flush // ****************************************************************** @@ -2268,7 +2293,15 @@ OOVPA_SIG_MATCH( ); // ****************************************************************** -// * CDirectSoundStream_Discontinuity +// * CDirectSoundStream::Discontinuity (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_Discontinuity, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * CDirectSoundStream::Discontinuity // ****************************************************************** OOVPA_SIG_HEADER_XREF(CDirectSoundStream_Discontinuity, 3911, @@ -2296,7 +2329,15 @@ OOVPA_SIG_MATCH( ); // ****************************************************************** -// * CDirectSoundStream_GetInfo +// * CDirectSoundStream::GetInfo (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_GetInfo, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * CDirectSoundStream::GetInfo // ****************************************************************** OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_GetInfo, 3911) @@ -2795,7 +2836,8 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -OOVPA_SIG_HEADER_XREF(CMcpxVoiceClient_Commit3dSettings, +// Generic OOVPA as of 3911 and newer +OOVPA_SIG_HEADER_XREF(CMcpxVoiceClient_Commit3dSettings_4, 3911, XRefTwo) OOVPA_SIG_MATCH( @@ -3998,7 +4040,15 @@ OOVPA_SIG_MATCH( ); // ****************************************************************** -// * CDirectSoundStream_AddRef +// * CDirectSoundStream::AddRef (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_AddRef, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * CDirectSoundStream::AddRef // ****************************************************************** OOVPA_SIG_HEADER_XREF(CDirectSoundStream_AddRef, 3911, @@ -4054,6 +4104,14 @@ OOVPA_SIG_MATCH( // ); +// ****************************************************************** +// * CDirectSoundStream::Release (dummy) +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(CDirectSoundStream_Release, + 0) +OOVPA_SIG_MATCH_DUMMY(); + // ****************************************************************** // * CDirectSoundStream_Release // ****************************************************************** @@ -4535,7 +4593,8 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxAPU_SetMixBinHeadroom // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(CMcpxAPU_SetMixBinHeadroom, +// Generic OOVPA as of 3911 and newer +OOVPA_SIG_HEADER_NO_XREF(CMcpxAPU_SetMixBinHeadroom_8, 3911) OOVPA_SIG_MATCH( @@ -6155,7 +6214,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CDirectSoundBuffer::SetMixBinVolumes // ****************************************************************** -OOVPA_SIG_HEADER_XREF(CDirectSoundBuffer_SetMixBinVolumes, +OOVPA_SIG_HEADER_XREF(CDirectSoundBuffer_SetMixBinVolumes_12, 3911, XRefOne) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/4039.inl b/src/OOVPADatabase/DSound/4039.inl index 0883ac34..3b60fd51 100644 --- a/src/OOVPADatabase/DSound/4039.inl +++ b/src/OOVPADatabase/DSound/4039.inl @@ -1480,7 +1480,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // Generic OOVPA as of 4039 and newer. // TODO: Should be able to reduce pairs since there are two XREFs. -OOVPA_SIG_HEADER_XREF(CDirectSoundVoice_SetMixBinVolumes, +OOVPA_SIG_HEADER_XREF(CDirectSoundVoice_SetMixBinVolumes_8, 4039, XRefTwo) OOVPA_SIG_MATCH( @@ -1519,8 +1519,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CDirectSoundBuffer::SetMixBinVolumes // ****************************************************************** -//Generic OOVPA as of 4039 and newer -OOVPA_SIG_HEADER_XREF(CDirectSoundBuffer_SetMixBinVolumes, +OOVPA_SIG_HEADER_XREF(CDirectSoundBuffer_SetMixBinVolumes_8, 4039, XRefOne) OOVPA_SIG_MATCH( @@ -4381,7 +4380,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings_0, 4039) OOVPA_SIG_MATCH( @@ -4582,7 +4581,7 @@ OOVPA_SIG_MATCH( // * CMcpxAPU::SetMixBinHeadroom // ****************************************************************** // Generic OOVPA as of 4039 and newer -OOVPA_SIG_HEADER_NO_XREF(CMcpxAPU_SetMixBinHeadroom, +OOVPA_SIG_HEADER_NO_XREF(CMcpxAPU_SetMixBinHeadroom_4, 4039) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/4134.inl b/src/OOVPADatabase/DSound/4134.inl index b63ba256..4619a51c 100644 --- a/src/OOVPADatabase/DSound/4134.inl +++ b/src/OOVPADatabase/DSound/4134.inl @@ -2239,7 +2239,7 @@ OOVPA_SIG_MATCH( // * CDirectSoundBuffer::SetMixBinVolumes // ****************************************************************** //Generic OOVPA as of 4134 and newer -OOVPA_XREF(CDirectSoundBuffer_SetMixBinVolumes, 4134, 1 + 12, XRefOne) +OOVPA_XREF(CDirectSoundBuffer_SetMixBinVolumes_8, 4134, 1 + 12, XRefOne) { // CDirectSoundBuffer_SetMixBinVolumes+0x32 : call [CDirectSoundVoice::SetMixBinVolumes] @@ -4015,7 +4015,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings_0, 4134) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/4242.inl b/src/OOVPADatabase/DSound/4242.inl index 9a7cc747..4c271076 100644 --- a/src/OOVPADatabase/DSound/4242.inl +++ b/src/OOVPADatabase/DSound/4242.inl @@ -303,7 +303,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings_0, 4242) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/4627.inl b/src/OOVPADatabase/DSound/4627.inl index b0076598..3ab8b531 100644 --- a/src/OOVPADatabase/DSound/4627.inl +++ b/src/OOVPADatabase/DSound/4627.inl @@ -212,7 +212,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings_0, 4627) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/5028.inl b/src/OOVPADatabase/DSound/5028.inl index 600f3e34..15edcb3d 100644 --- a/src/OOVPADatabase/DSound/5028.inl +++ b/src/OOVPADatabase/DSound/5028.inl @@ -187,7 +187,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_NO_XREF(CMcpxVoiceClient_Commit3dSettings_0, 5028) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/5344.inl b/src/OOVPADatabase/DSound/5344.inl index f6e24f66..3b96e042 100644 --- a/src/OOVPADatabase/DSound/5344.inl +++ b/src/OOVPADatabase/DSound/5344.inl @@ -1264,8 +1264,7 @@ OOVPA_SIG_MATCH( // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** -// Generic OOVPA as of 5344 and newer -OOVPA_SIG_HEADER_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_XREF(CMcpxVoiceClient_Commit3dSettings_0, 5344, XRefTwo) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound/5455.inl b/src/OOVPADatabase/DSound/5455.inl index 46a17c39..4a320338 100644 --- a/src/OOVPADatabase/DSound/5455.inl +++ b/src/OOVPADatabase/DSound/5455.inl @@ -347,7 +347,7 @@ OOVPA_SIG_MATCH( // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** // Generic OOVPA as of 5455 and newer -OOVPA_SIG_HEADER_XREF(CMcpxVoiceClient_Commit3dSettings, +OOVPA_SIG_HEADER_XREF(CMcpxVoiceClient_Commit3dSettings_0, 5455, XRefTwo) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/DSound_OOVPA.inl b/src/OOVPADatabase/DSound_OOVPA.inl index e80de552..cc820248 100644 --- a/src/OOVPADatabase/DSound_OOVPA.inl +++ b/src/OOVPADatabase/DSound_OOVPA.inl @@ -166,7 +166,24 @@ // * DSOUND_OOVPA_manual // ****************************************************************** OOVPATable DSound_OOVPA_manual[] = { - REGISTER_OOVPAS_M(CDirectSoundStream_Constructor, 3911), // NOTE: Does not need to be register in db. Using manual work instead, like D3D8 did. + + // Without xrefs dependency + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(0)), // dummy signature // NOTE: The function and CAc97MediaObject::AddRef are the same asm code. + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_Discontinuity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(0)), // dummy signature + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_Flush, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(0)), // dummy signature + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_GetInfo, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pInfo))), + SYM_SIG(0)), // dummy signature + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_GetStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdwStatus))), + SYM_SIG(0)), // dummy signature + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_Process, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pInputBuffer), PARAM(psh, pOutputBuffer))), + SYM_SIG(0)), // dummy signature + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(0)), // dummy signature + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_Constructor, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pdssd))), + SYM_SIG(3911)), // NOTE: Does not need to be register in db. Using manual work instead, like D3D8 did. }; #define DSound_OOVPA_manual_COUNT XBSDB_ARRAY_SIZE(DSound_OOVPA_manual) @@ -175,375 +192,718 @@ OOVPATable DSound_OOVPA_manual[] = { // ****************************************************************** OOVPATable DSound_OOVPA[] = { - REGISTER_OOVPAS(XAudioCalculatePitch, 3911, 4039, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(DirectSoundEnterCriticalSection, 3911), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XAudioCalculatePitch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwFrequency))), + SYM_SIG(3911, 4039, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundEnterCriticalSection, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 //======================================================== - REGISTER_OOVPAS(DSound_CRefCount_AddRef, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(DSound_CRefCount_Release, 3911, 4039, 5455), // Final generic OOVPA: 5455; Removed: 0 - - REGISTER_OOVPAS(DSound_CMemoryManager_PoolAlloc, 4134, 4361), // For reference purpose only, does not have XREF value. - - REGISTER_OOVPAS(CMcpxAPU_Commit3dSettings, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxAPU_ServiceDeferredCommandsLow, 3911, 4134, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(CMcpxAPU_Set3dDistanceFactor, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_Set3dDopplerFactor, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_Set3dParameters, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_Set3dPosition, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_Set3dRolloffFactor, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_Set3dVelocity, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_SetI3DL2Listener, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CMcpxAPU_SetMixBinHeadroom, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CMcpxAPU_SynchPlayback, 4831), // Final generic OOVPA: 4831; Removed: 0 (introduced in 4831) + REGISTER_OOVPAS(SYM_FUN(DSound_CRefCount_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DSound_CRefCount_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039, 5455)), // Final generic OOVPA: 5455; Removed: 0 + + REGISTER_OOVPAS(SYM_FUN(DSound_CMemoryManager_PoolAlloc, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, PoolTag), PARAM(psh, Size), PARAM(psh, ZeroInitialize))), + SYM_SIG(4134, 4361)), // For reference purpose only, does not have XREF value. + + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Commit3dSettings, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, unknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_ServiceDeferredCommandsLow, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4134, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Set3dDistanceFactor, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, fDistanceFactor), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Set3dDopplerFactor, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, fDopplerFactor), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Set3dParameters, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pDS3DListenerParameters), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Set3dPosition, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pPosition), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Set3dRolloffFactor, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, fRolloffFactor), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_Set3dVelocity, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pVelocity), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_SetI3DL2Listener, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pds3dl), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_SetMixBinHeadroom, CALL(thi), STACK(8), PARAMS(PARAM(ecx, this), PARAM(psh, dwMixBinMask), PARAM(psh, dwHeadroom))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_SetMixBinHeadroom, CALL(thi), STACK(4), PARAMS(PARAM(ecx, this), PARAM(psh, dwMixBinMask))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxAPU_SynchPlayback, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(4831)), // Final generic OOVPA: 4831; Removed: 0 (introduced in 4831) //======================================================== - REGISTER_OOVPAS(CDirectSound3DCalculator_Calculate3D, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(CDirectSound3DCalculator_GetMixBinVolumes, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(CDirectSound3DCalculator_GetPanData, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(CDirectSound3DCalculator_GetVoiceData, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CDirectSound3DCalculator_Calculate3D, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pUnknown1), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CDirectSound3DCalculator_GetMixBinVolumes, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, pUnknown3))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CDirectSound3DCalculator_GetPanData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, flUnknown1), PARAM(psh, flUnknown2), PARAM(psh, unknown3), PARAM(psh, pflUnknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CDirectSound3DCalculator_GetVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pUnknown1), PARAM(psh, pUnknown2), PARAM(psh, pUnknown3), PARAM(psh, pUnknown4), PARAM(psh, pUnknown5))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) //======================================================== - REGISTER_OOVPAS(CMcpxVoiceClient_GetVoiceProperties, 5028), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dConeOrientation, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dConeOutsideVolume, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dMaxDistance, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dMinDistance, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dMode, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dPosition, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dVelocity, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_SetEG, 3911, 4039, 4134, 4242), // Final generic OOVPA: 4242; Removed: 0 - REGISTER_OOVPAS(CMcpxVoiceClient_SetFilter, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxVoiceClient_SetI3DL2Source, 3911), // Final generic OOVPA: 3911; Removed: 4039+ - REGISTER_OOVPAS(CMcpxVoiceClient_SetLFO, 3911, 4039, 4134, 4242), // Final generic OOVPA: 4242; Removed: 0 - REGISTER_OOVPAS(CMcpxVoiceClient_SetMixBins, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxVoiceClient_SetPitch, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxVoiceClient_SetVolume, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxVoiceClient_Commit3dSettings, 3911, 4039, 4134, 4242, 4627, 5028, 5344, 5455), // Final generic OOVPA: 5455; Removed: 0 // NOTE: Must be after CMcpxVoiceClient_SetVolume for one time scan. - REGISTER_OOVPAS(CMcpxVoiceClient_Set3dParameters, 3911), // Final generic OOVPA: 3911; Removed: 4039+ // NOTE: Must be after CMcpxVoiceClient_Commit3dSettings for one time scan. - - REGISTER_OOVPAS(CDirectSoundVoiceSettings_SetMixBinVolumes, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) - - REGISTER_OOVPAS(CDirectSoundVoice_CommitDeferredSettings, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(CDirectSoundVoice_GetVoiceProperties, 5028), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(CDirectSoundVoice_Set3DVoiceData, 5455), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) - REGISTER_OOVPAS(CDirectSoundVoice_SetAllParameters, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetConeAngles, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetConeOrientation, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetConeOutsideVolume, 3911, 4039, 4134, 4361, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetDistanceFactor, 4134, 4361, 4627, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundVoice_SetDopplerFactor, 4134, 4361, 4627, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundVoice_SetEG, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetFilter, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetFormat, 4039, 4721), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(CDirectSoundVoice_SetHeadroom, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetI3DL2Source, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetLFO, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetMaxDistance, 3911, 4039, 4134, 4361, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetMinDistance, 3911, 4039, 4134, 4361, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetMixBins, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetMixBinVolumes, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetMode, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetOutputBuffer, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetPitch, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetFrequency, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Must be after CDirectSoundVoice_SetPitch for one time scan. - REGISTER_OOVPAS(CDirectSoundVoice_SetPosition, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetRolloffCurve, 4361, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetRolloffFactor, 4134, 4361, 5344), // Final generic OOVPA: 5344; Removed: 0 // s+ (from 4134's comment) - REGISTER_OOVPAS(CDirectSoundVoice_SetVelocity, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_SetVolume, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundVoice_Use3DVoiceData, 5558), // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_GetVoiceProperties, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pVoiceProps))), + SYM_SIG(5028)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dConeOrientation, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pConeOrientation), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dConeOutsideVolume, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, lConeOutsideVolume), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dMaxDistance, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, flMaxDistance), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dMinDistance, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, flMinDistance), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dMode, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwMode), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dPosition, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pPosition), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dVelocity, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pVelocity), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetEG, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pEnvelopeDesc))), + SYM_SIG(3911, 4039, 4134, 4242)), // Final generic OOVPA: 4242; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetFilter, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pFilterDesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetI3DL2Source, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pds3db), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetLFO, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pLFODesc))), + SYM_SIG(3911, 4039, 4134, 4242)), // Final generic OOVPA: 4242; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetMixBins, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetPitch, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_SetVolume, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Commit3dSettings, CALL(thi), STACK(4), PARAMS(PARAM(ecx, this), PARAM(psh, dwParamMask))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+// NOTE: Must be after CMcpxVoiceClient_SetVolume for one time scan. + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Commit3dSettings, CALL(thi), STACK(0), PARAMS(PARAM(ecx, this))), + SYM_SIG(4039, 4134, 4242, 4627, 5028, 5344, 5455)), // Final generic OOVPA: 5455; Removed: 0// NOTE: Must be after CMcpxVoiceClient_SetVolume for one time scan. + REGISTER_OOVPAS(SYM_FUN(CMcpxVoiceClient_Set3dParameters, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pc3DBufferParameters), PARAM(psh, bApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+// NOTE: Must be after CMcpxVoiceClient_Commit3dSettings for one time scan. + + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoiceSettings_SetMixBinVolumes, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pMixBins))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) + + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_CommitDeferredSettings, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_GetVoiceProperties, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pVoiceProps))), + SYM_SIG(5028)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_Set3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, unknown2))), + SYM_SIG(5455)), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pc3DBufferParameters), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetConeAngles, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwInsideConeAngle), PARAM(psh, dwOutsideConeAngle), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetConeOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetConeOutsideVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lConeOutsideVolume), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 4361, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(4134, 4361, 4627, 5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(4134, 4361, 4627, 5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetEG, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pEnvelopeDesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pFilterDesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pwfxFormat))), + SYM_SIG(4039, 4721)), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwHeadroom))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetI3DL2Source, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pds3db), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetLFO, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pLFODesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetMaxDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fMaxDistance), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 4361, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetMinDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fMinDistance), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 4361, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetMixBins, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetMixBinVolumes, CALL(std), STACK(12), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMixBinMask), PARAM(psh, alVolumes))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetMixBinVolumes, CALL(std), STACK(8), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMode), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetOutputBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pOutputBuffer))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetPitch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lPitch))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetFrequency, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwFrequency))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Must be after CDirectSoundVoice_SetPitch for one time scan. + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetRolloffCurve, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pflPoints), PARAM(psh, dwPointCount), PARAM(psh, dwApply))), + SYM_SIG(4361, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(4134, 4361, 5344)), // Final generic OOVPA: 5344; Removed: 0 // s+ (from 4134's comment) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_SetVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lVolume))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundVoice_Use3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5558)), // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) //======================================================== - REGISTER_OOVPAS(CDirectSoundBufferSettings_SetBufferData, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - - REGISTER_OOVPAS(CMcpxBuffer_GetCurrentPosition, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxBuffer_GetStatus, 3911, 4039, 4134, 4721, 4831), // Final generic OOVPA: 4831; Removed: 0 - REGISTER_OOVPAS(CMcpxBuffer_Pause, 4721, 4831), // Final generic OOVPA: 4831; Removed: 0 (introduced in 4721) // NOTE: ?Pause@CMcpxBuffer@DirectSound@@QAEJK@Z - REGISTER_OOVPAS(CMcpxBuffer_Pause_Ex, 4721), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4721) // NOTE: ?Pause@CMcpxBuffer@DirectSound@@QAEJ_JK@Z - REGISTER_OOVPAS(CMcpxBuffer_Play, 3911, 4039, 4134, 4721, 4831), // Final generic OOVPA: 4831; Removed: 0 // NOTE: ?Play@CMcpxBuffer@DirectSound@@QAEJK@Z - REGISTER_OOVPAS(CMcpxBuffer_Play_Ex, 4039), // Final generic OOVPA: 4039; Removed: 0 (introduced in 4039) // NOTE: ?Play@CMcpxBuffer@DirectSound@@QAEJ_JK@Z - REGISTER_OOVPAS(CMcpxBuffer_SetBufferData, 3911, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxBuffer_SetCurrentPosition, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxBuffer_Stop, 3911, 4134, 4242), // Final generic OOVPA: 4242; Removed: 0 // NOTE: ?Stop@CMcpxBuffer@DirectSound@@QAEJK@Z - REGISTER_OOVPAS(CMcpxBuffer_Stop_Ex, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) // NOTE: ?Stop@CMcpxBuffer@DirectSound@@QAEJ_JK@Z - - REGISTER_OOVPAS(CMcpxStream_Stop, 4134, 5028), // Final generic OOVPA: 5233?; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CMcpxStream_Stop_Ex, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CMcpxStream_Flush, 3911, 3936, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CMcpxStream_Discontinuity, 3911, 4039, 4134, 4531, 5455), // NOTE: Must be after CMcpxStream_Flush for one time scan. - REGISTER_OOVPAS(CMcpxStream_GetStatus, 4134, 4721), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CMcpxStream_Pause, 3911, 4039, 4134, 4831), // Final generic OOVPA: 4831; Removed: 0 - REGISTER_OOVPAS(CMcpxStream_Pause_Ex, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBufferSettings_SetBufferData, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pvBufferData), PARAM(psh, dwBufferBytes))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_GetCurrentPosition, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pdwCurrentPlayCursor), PARAM(psh, pdwCurrentWriteCursor))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_GetStatus, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pdwStatus))), + SYM_SIG(3911, 4039, 4134, 4721, 4831)), // Final generic OOVPA: 4831; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_Pause, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwPause))), + SYM_SIG(4721, 4831)), // Final generic OOVPA: 4831; Removed: 0 (introduced in 4721) + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_Pause_Ex, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwPause))), + SYM_SIG(4721)), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4721) + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_Play, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwFlags))), + SYM_SIG(3911, 4039, 4134, 4721, 4831)), // Final generic OOVPA: 4831; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_Play_Ex, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_SetBufferData, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_SetCurrentPosition, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwNewPosition))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_Stop, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwFlags))), + SYM_SIG(3911, 4134, 4242)), // Final generic OOVPA: 4242; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxBuffer_Stop_Ex, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_Stop, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwFlags))), + SYM_SIG(4134, 5028)), // Final generic OOVPA: 5233?; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_Stop_Ex, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_Flush, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 3936, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_Discontinuity, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4039, 4134, 4531, 5455)), // NOTE: Must be after CMcpxStream_Flush for one time scan. + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_GetStatus, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pdwStatus))), + SYM_SIG(4134, 4721)), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_Pause, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwPause))), + SYM_SIG(3911, 4039, 4134, 4831)), // Final generic OOVPA: 4831; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CMcpxStream_Pause_Ex, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwPause))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) //======================================================== - REGISTER_OOVPAS(CDirectSoundBuffer_GetCurrentPosition, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_GetStatus, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_GetVoiceProperties, 5028), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(CDirectSoundBuffer_Lock, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_Pause, 4721), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4721) - REGISTER_OOVPAS(CDirectSoundBuffer_PauseEx, 4721), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4721) - REGISTER_OOVPAS(CDirectSoundBuffer_PlayEx, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_Play, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 // NOTE: Must be after CDirectSoundBuffer_PlayEx for one time scan. - REGISTER_OOVPAS(CDirectSoundBuffer_Set3DVoiceData, 5455), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) - REGISTER_OOVPAS(CDirectSoundBuffer_SetAllParameters, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetBufferData, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetConeAngles, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetConeOrientation, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetConeOutsideVolume, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetCurrentPosition, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetDistanceFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundBuffer_SetDopplerFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundBuffer_SetEG, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetFilter, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetFormat, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(CDirectSoundBuffer_SetFrequency, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetHeadroom, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetI3DL2Source, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetLFO, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetLoopRegion, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetMaxDistance, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetMinDistance, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetMixBins, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetMixBinVolumes, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetMode, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetNotificationPositions, 3911, 4039, 4242), // Uncommenting these fixes dashboard 4920 (from 4627 comment) - REGISTER_OOVPAS(CDirectSoundBuffer_SetOutputBuffer, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetPitch, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetPlayRegion, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetPosition, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetRolloffCurve, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(CDirectSoundBuffer_SetRolloffFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundBuffer_SetVelocity, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_SetVolume, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_StopEx, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundBuffer_Stop, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 // NOTE: Must be after CDirectSoundBuffer_StopEx for one time scan. - REGISTER_OOVPAS(CDirectSoundBuffer_Use3DVoiceData, 5558), // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_GetCurrentPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pdwCurrentPlayCursor), PARAM(psh, pdwCurrentWriteCursor))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_GetStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pdwStatus))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_GetVoiceProperties, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pVoiceProps))), + SYM_SIG(5028)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_Lock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwOffset), PARAM(psh, dwBytes), PARAM(psh, ppvAudioPtr1), PARAM(psh, pdwAudioBytes1), PARAM(psh, ppvAudioPtr2), PARAM(psh, pdwAudioBytes2), PARAM(psh, dwFlags))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_Pause, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwPause))), + SYM_SIG(4721)), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4721) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_PauseEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwPause))), + SYM_SIG(4721)), // Final generic OOVPA: 4721; Removed: 0 (introduced in 4721) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_PlayEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_Play, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwReserved1), PARAM(psh, dwReserved2), PARAM(psh, dwFlags))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 // NOTE: Must be after CDirectSoundBuffer_PlayEx for one time scan. + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_Set3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, unknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5455)), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pc3DBufferParameters), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetBufferData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pvBufferData), PARAM(psh, dwBufferBytes))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetConeAngles, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwInsideConeAngle), PARAM(psh, dwOutsideConeAngle), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetConeOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetConeOutsideVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, lConeOutsideVolume), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetCurrentPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwNewPosition))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, flDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, flDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetEG, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pEnvelopeDesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pFilterDesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pwfxFormat))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetFrequency, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwFrequency))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwHeadroom))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetI3DL2Source, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pds3db), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetLFO, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pLFODesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetLoopRegion, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwLoopStart), PARAM(psh, dwLoopLength))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetMaxDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, flMaxDistance), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetMinDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, flMinDistance), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetMixBins, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, mixBins))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetMixBinVolumes, CALL(std), STACK(12), PARAMS(PARAM(psh, this), PARAM(psh, dwMixBinMask), PARAM(psh, alVolumes))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetMixBinVolumes, CALL(std), STACK(8), PARAMS(PARAM(psh, this), PARAM(psh, pMixBins))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwMode), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetNotificationPositions, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwNotifyCount), PARAM(psh, paNotifies))), + SYM_SIG(3911, 4039, 4242)), // Uncommenting these fixes dashboard 4920 (from 4627 comment) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetOutputBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pOutputBuffer))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetPitch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, lPitch))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetPlayRegion, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwPlayStart), PARAM(psh, dwPlayLength))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetRolloffCurve, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pflPoints), PARAM(psh, dwPointCount), PARAM(psh, dwApply))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, fRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_SetVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, lVolume))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_StopEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_Stop, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 // NOTE: Must be after CDirectSoundBuffer_StopEx for one time scan. + REGISTER_OOVPAS(SYM_FUN(CDirectSoundBuffer_Use3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pUnknown2))), + SYM_SIG(5558)), // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) #if 0 - REGISTER_OOVPAS_M(CDirectSoundStream_Constructor, 3911), // NOTE: Does not need to be register in db. Using manual work instead, like D3D8 did. + REGISTER_OOVPAS_M(SYM_FUN(CDirectSoundStream_Constructor, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pdssd))), + SYM_SIG(3911)), // NOTE: Does not need to be register in db. Using manual work instead, like D3D8 did. #endif #if 0 // These signatures are no longer in use, yet preserved as documented signatures for future research usage. \ // Instead of these signatures below, using CDirectSoundStream_Constructor signature plus manual work allow us to reduce the scan process. - REGISTER_OOVPAS(CDirectSoundStream_AddRef, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 // NOTE: The function and CAc97MediaObject::AddRef are the same asm code. - REGISTER_OOVPAS(CDirectSoundStream_Discontinuity, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_Flush, 3911, 4039, 4134, 5028), // Final generic OOVPA: 5028; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_GetInfo, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_GetStatus, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_Process, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_Release, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 // NOTE: The function and CAc97MediaObject::AddRef are the same asm code. + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Discontinuity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Flush, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039, 4134, 5028)), // Final generic OOVPA: 5028; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_GetInfo, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pInfo))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_GetStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdwStatus))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Process, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pInputBuffer), PARAM(psh, pOutputBuffer))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 #endif - REGISTER_OOVPAS(CDirectSoundStream_FlushEx, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundStream_GetVoiceProperties, 5028), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(CDirectSoundStream_Pause, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_PauseEx, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(CDirectSoundStream_Set3DVoiceData, 5455), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) - REGISTER_OOVPAS(CDirectSoundStream_SetAllParameters, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetConeAngles, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetConeOrientation, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetConeOutsideVolume, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetDistanceFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundStream_SetDopplerFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundStream_SetEG, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetFilter, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetFormat, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(CDirectSoundStream_SetFrequency, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetHeadroom, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetI3DL2Source, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetLFO, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetMaxDistance, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetMinDistance, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetMixBins, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetMixBinVolumes_12, 3911), // Final generic OOVPA: 3911; Removed: 4039+ // This revision is only used in XDK 3911 to 3936. - REGISTER_OOVPAS(CDirectSoundStream_SetMixBinVolumes_8, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 // Then it has changed in XDK 4039 and higher. - REGISTER_OOVPAS(CDirectSoundStream_SetMode, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetOutputBuffer, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetPitch, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetPosition, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetRolloffCurve, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(CDirectSoundStream_SetRolloffFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(CDirectSoundStream_SetVelocity, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_SetVolume, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSoundStream_Use3DVoiceData, 5558), // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) - - REGISTER_OOVPAS(CDirectSound_CommitDeferredSettings, 3911, 4039, 4134, 5344, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(CDirectSound_CommitEffectData, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_CreateSoundBuffer, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_CreateSoundStream, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_DownloadEffectsImage, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_DoWork, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_EnableHeadphones, 3911, 4039, 4134, 5344, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(CDirectSound_GetCaps, 3911, 4039, 4134, 4361), // Final generic OOVPA: 4361; Removed: 0 - REGISTER_OOVPAS(CDirectSound_GetEffectData, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_GetOutputLevels, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(CDirectSound_GetSpeakerConfig, 3911, 4242, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS(CDirectSound_GetTime, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(CDirectSound_MapBufferData, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(CDirectSound_SetAllParameters, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetDistanceFactor, 3911, 4039, 4134, 4627, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetDopplerFactor, 3911, 4039, 4134, 4627, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetEffectData, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetI3DL2Listener, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetMixBinHeadroom, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetOrientation, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetPosition, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetRolloffFactor, 3911, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SetVelocity, 3911, 4039, 4134, 4627, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(CDirectSound_SynchPlayback, 4831, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4831) - REGISTER_OOVPAS(CDirectSound_UnmapBufferData, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_FlushEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_GetVoiceProperties, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pVoiceProps))), + SYM_SIG(5028)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Pause, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwPause))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_PauseEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwPause))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Set3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, unknown2))), + SYM_SIG(5455)), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pc3DBufferParameters), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetConeAngles, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwInsideConeAngle), PARAM(psh, dwOutsideConeAngle), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetConeOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetConeOutsideVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lConeOutsideVolume), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetEG, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pEnvelopeDesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pFilterDesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pwfxFormat))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetFrequency, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwFrequency))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwHeadroom))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetI3DL2Source, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pds3db), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetLFO, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pLFODesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetMaxDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fMaxDistance), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetMinDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fMinDistance), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetMixBins, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetMixBinVolumes_12, CALL(std), STACK(/*embed*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMixBinMask), PARAM(psh, alVolumes))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ // This revision is only used in XDK 3911 to 3936. + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetMixBinVolumes_8, CALL(std), STACK(/*embed*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 // Then it has changed in XDK 4039 and newer. + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMode), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetOutputBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pOutputBuffer))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetPitch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lPitch))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetRolloffCurve, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pflPoints), PARAM(psh, dwPointCount), PARAM(psh, dwApply))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_SetVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lVolume))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSoundStream_Use3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, unknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5558)), // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) + + REGISTER_OOVPAS(SYM_FUN(CDirectSound_CommitDeferredSettings, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this))), + SYM_SIG(3911, 4039, 4134, 5344, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_CommitEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_CreateSoundBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pdsbd), PARAM(psh, ppBuffer), PARAM(psh, pUnused4))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_CreateSoundStream, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pdssd), PARAM(psh, ppStream), PARAM(psh, pUnused4))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_DownloadEffectsImage, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pvImageBuffer), PARAM(psh, dwImageSize), PARAM(psh, pImageLoc), PARAM(psh, ppImageDesc))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_DoWork, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_EnableHeadphones, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, fEnabled))), + SYM_SIG(3911, 4039, 4134, 5344, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_GetCaps, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pDSCaps))), + SYM_SIG(3911, 4039, 4134, 4361)), // Final generic OOVPA: 4361; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_GetEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwEffectIndex), PARAM(psh, dwOffset), PARAM(psh, pvData), PARAM(psh, dwDataSize))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_GetOutputLevels, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pOutputLevels), PARAM(psh, bResetPeakValues))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(CDirectSound_GetSpeakerConfig, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pdwSpeakerConfig))), + SYM_SIG(3911, 4242, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_GetTime, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, prtCurrent))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_MapBufferData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pvBufferData), PARAM(psh, dwBufferBytes), PARAM(psh, ppUnknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pDS3DListenerParameters), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, fDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 4627, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, fDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 4627, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwEffectIndex), PARAM(psh, dwOffset), PARAM(psh, pvData), PARAM(psh, dwDataSize), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetI3DL2Listener, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pds3dl), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetMixBinHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwMixBinMask), PARAM(psh, dwHeadroom))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, xFront), PARAM(psh, yFront), PARAM(psh, zFront), PARAM(psh, xTop), PARAM(psh, yTop), PARAM(psh, zTop), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, fRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039, 4134, 4627, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CDirectSound_SynchPlayback, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this))), + SYM_SIG(4831, 5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 4831) + REGISTER_OOVPAS(SYM_FUN(CDirectSound_UnmapBufferData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) //======================================================== - REGISTER_OOVPAS(IDirectSound3DCalculator_Calculate3D, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) // jmp only - REGISTER_OOVPAS(IDirectSound3DCalculator_GetMixBinVolumes, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) // jmp only - REGISTER_OOVPAS(IDirectSound3DCalculator_GetPanData, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(IDirectSound3DCalculator_GetVoiceData, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - - REGISTER_OOVPAS(IDirectSoundBuffer_AddRef, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_GetCurrentPosition, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_GetStatus, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_GetVoiceProperties, 5028), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(IDirectSoundBuffer_Lock, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_Pause, 4721), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(IDirectSoundBuffer_PauseEx, 4721), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) - REGISTER_OOVPAS(IDirectSoundBuffer_Play, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_PlayEx, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_Release, 3911), // Final generic OOVPA: 3911; Removed: 0 - //REGISTER_OOVPAS(IDirectSoundBuffer_Restore, 3911), // Xbox does not use it plus can't create OOVPA for it. - REGISTER_OOVPAS(IDirectSoundBuffer_Set3DVoiceData, 5455), // undocument // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) - REGISTER_OOVPAS(IDirectSoundBuffer_SetAllParameters, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetBufferData, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetConeAngles, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetConeOrientation, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetConeOutsideVolume, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetCurrentPosition, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetDistanceFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundBuffer_SetDopplerFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundBuffer_SetEG, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetFilter, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetFormat, 4039), // Final generic OOVPA: 4039; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(IDirectSoundBuffer_SetFrequency, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetHeadroom, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetI3DL2Source, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetLFO, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetLoopRegion, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetMaxDistance, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetMinDistance, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetMixBins, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS_BIND_XREF(IDirectSoundBuffer_SetMixBinVolumes_12, IDirectSoundBuffer_SetMixBinVolumes, 3911), // Final generic OOVPA: 3911; Removed: 4039+ // This revision is only used in 3911 to 3936. - REGISTER_OOVPAS_BIND_XREF(IDirectSoundBuffer_SetMixBinVolumes_8, IDirectSoundBuffer_SetMixBinVolumes, 4039), // Final generic OOVPA: 4039; Removed: 0 // Then it has changed in 4039 and higher. - REGISTER_OOVPAS(IDirectSoundBuffer_SetMode, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetNotificationPositions, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetOutputBuffer, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetPitch, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetPlayRegion, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetPosition, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetRolloffCurve, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(IDirectSoundBuffer_SetRolloffFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundBuffer_SetVelocity, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_SetVolume, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_Stop, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_StopEx, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_Unlock, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundBuffer_Use3DVoiceData, 5558), // undocument // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) - - REGISTER_OOVPAS(IDirectSoundStream_GetVoiceProperties, 5028), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) // jmp only - REGISTER_OOVPAS(IDirectSoundStream_FlushEx, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundStream_Pause, 3911), // Final generic OOVPA: 3911; Removed: 0 // jmp only - REGISTER_OOVPAS(IDirectSoundStream_PauseEx, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(IDirectSoundStream_Set3DVoiceData, 5455), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) // jmp only - REGISTER_OOVPAS(IDirectSoundStream_SetAllParameters, 3911), // Final generic OOVPA: 3911; Removed: 0 // jmp only - REGISTER_OOVPAS(IDirectSoundStream_SetConeAngles, 3911), // Final generic OOVPA: 3911; Removed: 0 // jmp only - REGISTER_OOVPAS(IDirectSoundStream_SetConeOrientation, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetConeOutsideVolume, 3911), // Final generic OOVPA: 3911; Removed: 0 // jmp only - REGISTER_OOVPAS(IDirectSoundStream_SetDistanceFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundStream_SetDopplerFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundStream_SetEG, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_SetLFO, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_SetFilter, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_SetFormat, 4039), // Final generic OOVPA: 4039; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(IDirectSoundStream_SetFrequency, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_SetHeadroom, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_SetI3DL2Source, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetMaxDistance, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetMinDistance, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetMixBins, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS_BIND_XREF(IDirectSoundStream_SetMixBinVolumes_12, IDirectSoundStream_SetMixBinVolumes, 3911), // Final generic OOVPA: 3911; Removed: 4039+ // This revision is only used in 3911 to 3936. - REGISTER_OOVPAS_BIND_XREF(IDirectSoundStream_SetMixBinVolumes_8, IDirectSoundStream_SetMixBinVolumes, 4039), // Final generic OOVPA: 4039; Removed: 0 // Then it has changed in 4039 and higher. - REGISTER_OOVPAS(IDirectSoundStream_SetMode, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetOutputBuffer, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetPitch, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_SetPosition, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetRolloffCurve, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(IDirectSoundStream_SetRolloffFactor, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) - REGISTER_OOVPAS(IDirectSoundStream_SetVelocity, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSoundStream_SetVolume, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: Is require to be patch since its' calling to voice class. - REGISTER_OOVPAS(IDirectSoundStream_Use3DVoiceData, 5558), // jmp only // Final generic OOVPA: 5558 (introduced in 5558) - - REGISTER_OOVPAS(IDirectSound_AddRef, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_CommitDeferredSettings, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_CommitEffectData, 3911), // Final generic OOVPA: 3911; Removed: 0 - //REGISTER_OOVPAS(IDirectSound_Compact, 3911), // Xbox does not use it plus can't create OOVPA for it. - REGISTER_OOVPAS(IDirectSound_CreateSoundBuffer, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_CreateSoundStream, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_DownloadEffectsImage, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_EnableHeadphones, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_GetCaps, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_GetEffectData, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_GetOutputLevels, 4361), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) - REGISTER_OOVPAS(IDirectSound_GetSpeakerConfig, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_GetTime, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_MapBufferData, 5344), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(IDirectSound_Release, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetAllParameters, 3911), // Final generic OOVPA: 3911; Removed: 0 - //REGISTER_OOVPAS(IDirectSound_SetCooperativeLevel, 3911), // Xbox does not use it plus can't create OOVPA for it. - REGISTER_OOVPAS(IDirectSound_SetDistanceFactor, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetDopplerFactor, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetEffectData, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetI3DL2Listener, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetMixBinHeadroom, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetOrientation, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetPosition, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetRolloffFactor, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SetVelocity, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(IDirectSound_SynchPlayback, 4831), // Final generic OOVPA: 4831; Removed: 0 (introduced in 4831) - REGISTER_OOVPAS(IDirectSound_UnmapBufferData, 5344), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - - REGISTER_OOVPAS(CSensaura3d_GetFullHRTFFilterPair, 3911, 3936), // Final generic OOVPA: 3936; Removed: 4134+ // NOTE: 4039 revert back to 3911 - REGISTER_OOVPAS(CSensaura3d_GetLiteHRTFFilterPair, 3911), // Final generic OOVPA: 3911; Removed: 4134+ - REGISTER_OOVPAS(CFullHRTFSource_GetCenterVolume, 4039, 4134, 5344), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) - REGISTER_OOVPAS(CLightHRTFSource_GetCenterVolume, 4039, /*4134,*/ 5344), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) - REGISTER_OOVPAS(CHRTFSource_SetFullHRTF5Channel, 4039, 5344), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) - REGISTER_OOVPAS(CHRTFSource_SetLightHRTF5Channel, 4039, 5344), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) - REGISTER_OOVPAS(CHRTFSource_SetFullHRTF4Channel, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(CHRTFSource_SetLightHRTF4Channel, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(CFullHrtfSource_GetHrtfFilterPair, 4242), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) - REGISTER_OOVPAS(CLightHrtfSource_GetHrtfFilterPair, 4242), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) - REGISTER_OOVPAS(CHrtfSource_SetAlgorithm_FullHrtf, 4242), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) - REGISTER_OOVPAS(CHrtfSource_SetAlgorithm_LightHrtf, 4242), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) - - REGISTER_OOVPAS(DirectSoundCreate, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(DirectSoundCreateBuffer, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(DirectSoundCreateStream, 3911, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(DirectSoundDoWork, 3911, 4134), // Final generic OOVPA: 4134; Removed: 0 - REGISTER_OOVPAS(DirectSoundGetSampleTime, 3911, 4361), // Final generic OOVPA: 4361; Removed: 0 - REGISTER_OOVPAS(DirectSoundOverrideSpeakerConfig, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(DirectSoundUseFullHRTF, 3911, 4039, 4134, 4242 /*, 5344=revert to 4134*/), // Final generic OOVPA: 5344 (revert to 4134); Removed: 0 - REGISTER_OOVPAS(DirectSoundUseLightHRTF, 3911, 4039, /*4134?,*/ 4242, 5344), // Final generic OOVPA: 5344; Removed: 0 - REGISTER_OOVPAS(DirectSoundUseFullHRTF4Channel, 5344), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - REGISTER_OOVPAS(DirectSoundUseLightHRTF4Channel, 5344), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) - - REGISTER_OOVPAS(IsValidFormat, 3911, 4039), // Final generic OOVPA: 4039; Removed: 4361+ // NOTE: 4361+ is replace into a class function - - REGISTER_OOVPAS(XAudioDownloadEffectsImage, 4039, 4134), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) - REGISTER_OOVPAS(XAudioSetEffectData, 5028, 5344), // Final generic OOVPA: 5344; Removed: 0 (introduced in ??5028 or 5120??) - REGISTER_OOVPAS(XAudioCreatePcmFormat, 3911), // Final generic OOVPA: 3911; Removed: 0 // NOTE: later revision changed to a jmp, and convert into class function - REGISTER_OOVPAS(XAudioCreateAdpcmFormat, 3911, 4039), // Final generic OOVPA: 4039; Removed: 0 // NOTE: later revision changed to a jmp, and convert into class function - - REGISTER_OOVPAS(XFileCreateMediaObject, 3911, 4242, 4361), // TODO: Need investigation on 3936-4039 - REGISTER_OOVPAS(XFileCreateMediaObjectAsync, 4432), // TODO: Need investigation (confirmed does not exist in 4242) - REGISTER_OOVPAS(XFileCreateMediaObjectEx, 4242, 4361), // TODO: Need investigation on 3936-4039 - - REGISTER_OOVPAS(XWaveFileCreateMediaObject, 3911, 4242, 4361), // TODO: Need investigation on 3936-4039 - REGISTER_OOVPAS(XWaveFileCreateMediaObjectEx, 4242, 4361), // TODO: Need investigation on 3936?-4039 + REGISTER_OOVPAS(SYM_FUN(IDirectSound3DCalculator_Calculate3D, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pUnknown1), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSound3DCalculator_GetMixBinVolumes, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, pUnknown3))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSound3DCalculator_GetPanData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, flUnknown1), PARAM(psh, flUnknown2), PARAM(psh, unknown3), PARAM(psh, pflUnknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(IDirectSound3DCalculator_GetVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pUnknown1), PARAM(psh, pUnknown2), PARAM(psh, pUnknown3), PARAM(psh, pUnknown4), PARAM(psh, pUnknown5))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_GetCurrentPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdwCurrentPlayCursor), PARAM(psh, pdwCurrentWriteCursor))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_GetStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdwStatus))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_GetVoiceProperties, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pVoiceProps))), + SYM_SIG(5028)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Lock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwOffset), PARAM(psh, dwBytes), PARAM(psh, ppvAudioPtr1), PARAM(psh, pdwAudioBytes1), PARAM(psh, ppvAudioPtr2), PARAM(psh, pdwAudioBytes2), PARAM(psh, dwFlags))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Pause, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwPause))), + SYM_SIG(4721)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_PauseEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwPause))), + SYM_SIG(4721)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Play, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwReserved1), PARAM(psh, dwReserved2), PARAM(psh, dwFlags))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_PlayEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + // REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Restore, CALL(std), STACK(/*default*/), PARAMS(/*unknown*/)), + // SYM_SIG(3911)), // Xbox does not use it plus can't create OOVPA for it. + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Set3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, unknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5455)), // undocument // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pc3DBufferParameters), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetBufferData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pvBufferData), PARAM(psh, dwBufferBytes))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetConeAngles, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwInsideConeAngle), PARAM(psh, dwOutsideConeAngle), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetConeOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetConeOutsideVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lConeOutsideVolume), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetCurrentPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwNewPosition))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetEG, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pEnvelopeDesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pFilterDesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pwfxFormat))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetFrequency, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwFrequency))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwHeadroom))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetI3DL2Source, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pds3db), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetLFO, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pLFODesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetLoopRegion, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwLoopStart), PARAM(psh, dwLoopLength))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetMaxDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flMaxDistance), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetMinDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flMinDistance), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetMixBins, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, mixBins))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetMixBinVolumes, CALL(std), STACK(12), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMixBinMask), PARAM(psh, alVolumes))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ // This revision is only used in 3911 to 3936. + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetMixBinVolumes, CALL(std), STACK(8), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 // Then it has changed in 4039 and higher. + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMode), PARAM(psh, dwApply))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetNotificationPositions, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwNotifyCount), PARAM(psh, paNotifies))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetOutputBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pOutputBuffer))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetPitch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lPitch))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetPlayRegion, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwPlayStart), PARAM(psh, dwPlayLength))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetRolloffCurve, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pflPoints), PARAM(psh, dwPointCount), PARAM(psh, dwApply))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_SetVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lVolume))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Stop, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_StopEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Unlock, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, ppvAudioPtr1), PARAM(psh, pdwAudioBytes1), PARAM(psh, ppvAudioPtr2), PARAM(psh, pdwAudioBytes2))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundBuffer_Use3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5558)), // undocument // Final generic OOVPA: 5558; Removed: 0 (introduced in 5558) + + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_GetVoiceProperties, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pVoiceProps))), + SYM_SIG(5028)), // Final generic OOVPA: 5028; Removed: 0 (introduced in 5028) // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_FlushEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwFlags))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_Pause, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwPause))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_PauseEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh2, rtTimeStamp), PARAM(psh, dwPause))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_Set3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, unknown2))), + SYM_SIG(5455)), // Final generic OOVPA: 5455; Removed: 0 (introduced in 5455) // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pc3DBufferParameters), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetConeAngles, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwInsideConeAngle), PARAM(psh, dwOutsideConeAngle), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetConeOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetConeOutsideVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lConeOutsideVolume), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // jmp only + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, flDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetEG, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pEnvelopeDesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetLFO, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pLFODesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pFilterDesc))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pwfxFormat))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetFrequency, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwFrequency))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwHeadroom))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetI3DL2Source, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pds3db), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetMaxDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fMaxDistance), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetMinDistance, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fMinDistance), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetMixBins, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetMixBinVolumes, CALL(std), STACK(12), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMixBinMask), PARAM(psh, alVolumes))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4039+ // This revision is only used in 3911 to 3936. + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetMixBinVolumes, CALL(std), STACK(8), PARAMS(PARAM(psh, pThis), PARAM(psh, pMixBins))), + SYM_SIG(4039)), // Final generic OOVPA: 4039; Removed: 0 // Then it has changed in 4039 and higher. + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetMode, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMode), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetOutputBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pOutputBuffer))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetPitch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lPitch))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetRolloffCurve, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pflPoints), PARAM(psh, dwPointCount), PARAM(psh, dwApply))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4134) + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_SetVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, lVolume))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSoundStream_Use3DVoiceData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5558)), // jmp only // Final generic OOVPA: 5558 (introduced in 5558) + + REGISTER_OOVPAS(SYM_FUN(IDirectSound_AddRef, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_CommitDeferredSettings, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_CommitEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + // REGISTER_OOVPAS(SYM_FUN(IDirectSound_Compact, CALL(std), STACK(/*default*/), PARAMS(/*unknown*/)), + // SYM_SIG(3911)), // Xbox does not use it plus can't create OOVPA for it. + REGISTER_OOVPAS(SYM_FUN(IDirectSound_CreateSoundBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdsbd), PARAM(psh, ppBuffer), PARAM(psh, pUnused4))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_CreateSoundStream, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdssd), PARAM(psh, ppStream), PARAM(psh, pUnused4))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_DownloadEffectsImage, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pvImageBuffer), PARAM(psh, dwImageSize), PARAM(psh, pImageLoc), PARAM(psh, ppImageDesc))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_EnableHeadphones, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fEnabled))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_GetCaps, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pDSCaps))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_GetEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwEffectIndex), PARAM(psh, dwOffset), PARAM(psh, pvData), PARAM(psh, dwDataSize))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_GetOutputLevels, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pOutputLevels), PARAM(psh, bResetPeakValues))), + SYM_SIG(4361)), // Final generic OOVPA: 4361; Removed: 0 (introduced in 4361) + REGISTER_OOVPAS(SYM_FUN(IDirectSound_GetSpeakerConfig, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdwSpeakerConfig))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_GetTime, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, prtCurrent))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_MapBufferData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pvBufferData), PARAM(psh, dwBufferBytes), PARAM(psh, ppUnknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(IDirectSound_Release, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetAllParameters, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pDS3DListenerParameters), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + // REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetCooperativeLevel, CALL(std), STACK(/*default*/), PARAMS(/*unknown*/)), + // SYM_SIG(3911)), // Xbox does not use it plus can't create OOVPA for it. + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetDistanceFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fDistanceFactor), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetDopplerFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fDopplerFactor), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwEffectIndex), PARAM(psh, dwOffset), PARAM(psh, pvData), PARAM(psh, dwDataSize), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetI3DL2Listener, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pds3dl), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetMixBinHeadroom, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwMixBinMask), PARAM(psh, dwHeadroom))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetOrientation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, xFront), PARAM(psh, yFront), PARAM(psh, zFront), PARAM(psh, xTop), PARAM(psh, yTop), PARAM(psh, zTop), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetPosition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetRolloffFactor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, fRolloffFactor), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SetVelocity, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, x), PARAM(psh, y), PARAM(psh, z), PARAM(psh, dwApply))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(IDirectSound_SynchPlayback, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(4831)), // Final generic OOVPA: 4831; Removed: 0 (introduced in 4831) + REGISTER_OOVPAS(SYM_FUN(IDirectSound_UnmapBufferData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pUnknown2))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5344)), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + + REGISTER_OOVPAS(SYM_FUN(CSensaura3d_GetFullHRTFFilterPair, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3), PARAM(psh, pUnknown4), PARAM(psh, pUnknown5))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(3911, 3936)), // Final generic OOVPA: 3936; Removed: 4134+ // NOTE: 4039 revert back to 3911 + REGISTER_OOVPAS(SYM_FUN(CSensaura3d_GetLiteHRTFFilterPair, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3), PARAM(psh, pUnknown4), PARAM(psh, pUnknown5))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 4134+ + REGISTER_OOVPAS(SYM_FUN(CFullHRTFSource_GetCenterVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3), PARAM(psh, unknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(4039, 4134, 5344)), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CLightHRTFSource_GetCenterVolume, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3), PARAM(psh, unknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(4039, /*4134,*/ 5344)), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CHRTFSource_SetFullHRTF5Channel, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4039, 5344)), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CHRTFSource_SetLightHRTF5Channel, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4039, 5344)), // Final generic OOVPA: 5344; Removed: 4242-5233 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(CHRTFSource_SetFullHRTF4Channel, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CHRTFSource_SetLightHRTF4Channel, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(CFullHrtfSource_GetHrtfFilterPair, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(4242)), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) + REGISTER_OOVPAS(SYM_FUN(CLightHrtfSource_GetHrtfFilterPair, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(4242)), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) + REGISTER_OOVPAS(SYM_FUN(CHrtfSource_SetAlgorithm_FullHrtf, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4242)), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) + REGISTER_OOVPAS(SYM_FUN(CHrtfSource_SetAlgorithm_LightHrtf, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4242)), // Final generic OOVPA: 4242; Removed: 5344+ (introduced in 4242) + + REGISTER_OOVPAS(SYM_FUN(DirectSoundCreate, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pguidDeviceId), PARAM(psh, ppDirectSound), PARAM(psh, pUnused3))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundCreateBuffer, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pdsbd), PARAM(psh, ppBuffer))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundCreateStream, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pdssd), PARAM(psh, ppStream))), + SYM_SIG(3911, 4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundDoWork, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4134)), // Final generic OOVPA: 4134; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundGetSampleTime, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4361)), // Final generic OOVPA: 4361; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundOverrideSpeakerConfig, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwSpeakerConfig))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(DirectSoundUseFullHRTF, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4039, 4134, 4242 /*, 5344=revert to 4134*/)), // Final generic OOVPA: 5344 (revert to 4134); Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundUseLightHRTF, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4039, /*4134?,*/ 4242, 5344)), // Final generic OOVPA: 5344; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(DirectSoundUseFullHRTF4Channel, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(5344)), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + REGISTER_OOVPAS(SYM_FUN(DirectSoundUseLightHRTF4Channel, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(5344)), // undocument // Final generic OOVPA: 5344; Removed: 0 (introduced in 5344) + + REGISTER_OOVPAS(SYM_FUN(IsValidFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pwfx))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 4361+ // NOTE: 4361+ is replace into a class function + + REGISTER_OOVPAS(SYM_FUN(XAudioDownloadEffectsImage, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pszImageName), PARAM(psh, pImageLoc), PARAM(psh, dwFlags), PARAM(psh, ppImageDesc))), + SYM_SIG(4039, 4134)), // Final generic OOVPA: 4134; Removed: 0 (introduced in 4039) + REGISTER_OOVPAS(SYM_FUN(XAudioSetEffectData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwEffectIndex), PARAM(psh, pDesc), PARAM(psh, pRawDesc))), + SYM_SIG(5028, 5344)), // Final generic OOVPA: 5344; Removed: 0 (introduced in ??5028 or 5120??) + REGISTER_OOVPAS(SYM_FUN(XAudioCreatePcmFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, nChannels), PARAM(psh, nSamplesPerSec), PARAM(psh, wBitsPerSample), PARAM(psh, pwfx))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // NOTE: later revision changed to a jmp, and convert into class function + REGISTER_OOVPAS(SYM_FUN(XAudioCreateAdpcmFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, nChannels), PARAM(psh, nSamplesPerSec), PARAM(psh, pwfx))), + SYM_SIG(3911, 4039)), // Final generic OOVPA: 4039; Removed: 0 // NOTE: later revision changed to a jmp, and convert into class function + + REGISTER_OOVPAS(SYM_FUN(XFileCreateMediaObject, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pszFileName), PARAM(psh, dwDesiredAccess), PARAM(psh, dwShareMode), PARAM(psh, dwCreationDisposition), PARAM(psh, dwFlagsAndAttributes), PARAM(psh, ppMediaObject))), + SYM_SIG(3911, 4242, 4361)), // TODO: Need investigation on 3936-4039 + REGISTER_OOVPAS(SYM_FUN(XFileCreateMediaObjectAsync, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hFile), PARAM(psh, dwMaxPackets), PARAM(psh, ppMediaObject))), + SYM_SIG(4432)), // TODO: Need investigation (confirmed does not exist in 4242) + REGISTER_OOVPAS(SYM_FUN(XFileCreateMediaObjectEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hFile), PARAM(psh, ppMediaObject))), + SYM_SIG(4242, 4361)), // TODO: Need investigation on 3936-4039 + + REGISTER_OOVPAS(SYM_FUN(XWaveFileCreateMediaObject, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pszFileName), PARAM(psh, ppwfxFormat), PARAM(psh, ppMediaObject))), + SYM_SIG(3911, 4242, 4361)), // TODO: Need investigation on 3936-4039 + REGISTER_OOVPAS(SYM_FUN(XWaveFileCreateMediaObjectEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pszFileName), PARAM(psh, hFile), PARAM(psh, ppMediaObject))), + SYM_SIG(4242, 4361)), // TODO: Need investigation on 3936?-4039 }; // ****************************************************************** diff --git a/src/OOVPADatabase/JVS/4831.inl b/src/OOVPADatabase/JVS/4831.inl index f101c4c8..f7157d25 100644 --- a/src/OOVPADatabase/JVS/4831.inl +++ b/src/OOVPADatabase/JVS/4831.inl @@ -23,6 +23,22 @@ // * // ****************************************************************** +// ****************************************************************** +// * JVS_g_pPINSA +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(JVS_g_pPINSA, + 4831) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * JVS_g_pPINSB +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(JVS_g_pPINSB, + 4831) +OOVPA_SIG_MATCH_DUMMY(); + OOVPA_SIG_HEADER_NO_XREF(JVS_SendCommand_String, 4831) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/JVS_OOVPA.inl b/src/OOVPADatabase/JVS_OOVPA.inl index 0e0b8854..ea5e8f40 100644 --- a/src/OOVPADatabase/JVS_OOVPA.inl +++ b/src/OOVPADatabase/JVS_OOVPA.inl @@ -54,72 +54,140 @@ // ****************************************************************** OOVPATable JVSLIB_OOVPA[] = { + // Variables + REGISTER_OOVPAS_M(SYM_VAR(JVS_g_pPINSA), + SYM_SIG(4831)), + REGISTER_OOVPAS_M(SYM_VAR(JVS_g_pPINSB), + SYM_SIG(4831)), // Chihiro/JVS (XRef strings) - REGISTER_OOVPAS(JVS_SendCommand_String, 4831), - REGISTER_OOVPAS(JvsBACKUP_Read_String, 4831), - REGISTER_OOVPAS(JvsBACKUP_Write_String, 4831), - REGISTER_OOVPAS(JvsEEPROM_Read_String, 4831), - REGISTER_OOVPAS(JvsEEPROM_Write_String, 4831), - REGISTER_OOVPAS(JvsFirmwareDownload_String, 4831), - REGISTER_OOVPAS(JvsFirmwareUpload_String, 4831), - REGISTER_OOVPAS(JvsNodeReceivePacket_String, 4831), - REGISTER_OOVPAS(JvsNodeSendPacket_String, 4831), - REGISTER_OOVPAS(JvsRTC_Read_String, 4831), - REGISTER_OOVPAS(JvsRTC_Write_String, 4831), - REGISTER_OOVPAS(JvsScFirmwareDownload_String, 4831), - REGISTER_OOVPAS(JvsScFirmwareUpload_String, 4831), - REGISTER_OOVPAS(JvsScReceiveMidi_String, 4831), - REGISTER_OOVPAS(JvsScReceiveRs323c_String, 4831), - REGISTER_OOVPAS(JvsScSendMidi_String, 4831), - REGISTER_OOVPAS(JvsScSendRs323c_String, 4831), + REGISTER_OOVPAS(SYM_VAR(JVS_SendCommand_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsBACKUP_Read_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsBACKUP_Write_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsEEPROM_Read_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsEEPROM_Write_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsFirmwareDownload_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsFirmwareUpload_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsNodeReceivePacket_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsNodeSendPacket_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsRTC_Read_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsRTC_Write_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsScFirmwareDownload_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsScFirmwareUpload_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsScReceiveMidi_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsScReceiveRs323c_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsScSendMidi_String), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_VAR(JvsScSendRs323c_String), + SYM_SIG(4831)), // Chihiro/JVS (Functions) - REGISTER_OOVPAS(JVS_SendCommand, 4831), - REGISTER_OOVPAS_BIND_XREF(JVS_SendCommand2, JVS_SendCommand, 4831), - REGISTER_OOVPAS_BIND_XREF(JVS_SendCommand3, JVS_SendCommand, 4831, 4832), - REGISTER_OOVPAS(JvsBACKUP_Read, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsBACKUP_Read2, JvsBACKUP_Read, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsBACKUP_Read3, JvsBACKUP_Read, 4831), - REGISTER_OOVPAS(JvsBACKUP_Write, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsBACKUP_Write2, JvsBACKUP_Write, 4831), - REGISTER_OOVPAS(JvsEEPROM_Read, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsEEPROM_Read2, JvsEEPROM_Read, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsEEPROM_Read3, JvsEEPROM_Read, 4831), - REGISTER_OOVPAS(JvsEEPROM_Write, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsEEPROM_Write2, JvsEEPROM_Write, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsEEPROM_Write3, JvsEEPROM_Write, 4831), - REGISTER_OOVPAS(JvsFirmwareDownload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsFirmwareDownload2, JvsFirmwareDownload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsFirmwareDownload3, JvsFirmwareDownload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsFirmwareDownload4, JvsFirmwareDownload, 4831), - REGISTER_OOVPAS(JvsFirmwareUpload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsFirmwareUpload2, JvsFirmwareUpload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsFirmwareUpload3, JvsFirmwareUpload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsFirmwareUpload4, JvsFirmwareUpload, 4831), - REGISTER_OOVPAS(JvsNodeReceivePacket, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsNodeReceivePacket2, JvsNodeReceivePacket, 4831), - REGISTER_OOVPAS(JvsNodeSendPacket, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsNodeSendPacket2, JvsNodeSendPacket, 4831), - REGISTER_OOVPAS(JvsRTC_Read, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsRTC_Read2, JvsRTC_Read, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsRTC_Read3, JvsRTC_Read, 4831), - REGISTER_OOVPAS(JvsRTC_Write, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsRTC_Write2, JvsRTC_Write, 4831), - REGISTER_OOVPAS(JvsScFirmwareDownload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScFirmwareDownload2, JvsScFirmwareDownload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScFirmwareDownload3, JvsScFirmwareDownload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScFirmwareDownload4, JvsScFirmwareDownload, 4831), - REGISTER_OOVPAS(JvsScFirmwareUpload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScFirmwareUpload2, JvsScFirmwareUpload, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScFirmwareUpload3, JvsScFirmwareUpload, 4831), - REGISTER_OOVPAS(JvsScReceiveMidi, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScReceiveMidi2, JvsScReceiveMidi, 4831), - REGISTER_OOVPAS(JvsScReceiveRs323c, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScReceiveRs323c2, JvsScReceiveRs323c, 4831), - REGISTER_OOVPAS(JvsScSendMidi, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScSendMidi2, JvsScSendMidi, 4831), - REGISTER_OOVPAS(JvsScSendRs323c, 4831), - REGISTER_OOVPAS_BIND_XREF(JvsScSendRs323c2, JvsScSendRs323c, 4831), + REGISTER_OOVPAS(SYM_FUN(JVS_SendCommand, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, Command), PARAM(psh, unknown3), PARAM(psh, Length), PARAM(psh, unknown5), PARAM(psh, unknown6), PARAM(psh, unknown7), PARAM(psh, unknown8))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JVS_SendCommand, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, Command), PARAM(psh, unknown3), PARAM(psh, Length), PARAM(psh, unknown5), PARAM(psh, unknown6), PARAM(psh, unknown7), PARAM(psh, unknown8))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JVS_SendCommand, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, Command), PARAM(psh, unknown3), PARAM(psh, Length), PARAM(psh, unknown5), PARAM(psh, unknown6), PARAM(psh, unknown7), PARAM(psh, unknown8))), + SYM_SIG(4831, 4832)), + REGISTER_OOVPAS(SYM_FUN(JvsBACKUP_Read, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsBACKUP_Read, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsBACKUP_Read, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsBACKUP_Write, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsBACKUP_Write, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsEEPROM_Read, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsEEPROM_Read, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsEEPROM_Read, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsEEPROM_Write, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsEEPROM_Write, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsEEPROM_Write, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsFirmwareDownload, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsFirmwareDownload, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsFirmwareDownload, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsFirmwareDownload, SUFFIX(4), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsFirmwareUpload, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsFirmwareUpload, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsFirmwareUpload, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsFirmwareUpload, SUFFIX(4), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsNodeReceivePacket, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsNodeReceivePacket, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsNodeSendPacket, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsNodeSendPacket, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsRTC_Read, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, time), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsRTC_Read, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, time), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsRTC_Read, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, time), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsRTC_Write, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, time), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsRTC_Write, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, time), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsScFirmwareDownload, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScFirmwareDownload, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScFirmwareDownload, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScFirmwareDownload, SUFFIX(4), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsScFirmwareUpload, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScFirmwareUpload, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScFirmwareUpload, SUFFIX(3), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Offset), PARAM(psh, Length), PARAM(psh, Buffer), PARAM(psh, unknown4))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsScReceiveMidi, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScReceiveMidi, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsScReceiveRs323c, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScReceiveRs323c, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsScSendMidi, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScSendMidi, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, unknown1), PARAM(psh, unknown2), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(JvsScSendRs323c, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN_ALT(JvsScSendRs323c, SUFFIX(2), CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Buffer), PARAM(psh, Length), PARAM(psh, unknown3))), + SYM_SIG(4831)), }; // ****************************************************************** diff --git a/src/OOVPADatabase/OOVPA.h b/src/OOVPADatabase/OOVPA.h index b34e0837..8655cf49 100644 --- a/src/OOVPADatabase/OOVPA.h +++ b/src/OOVPADatabase/OOVPA.h @@ -31,9 +31,44 @@ // MSVC_EXPAND works around a Visual C++ problem, expanding __VA_ARGS__ incorrectly: #define MSVC_EXPAND(x) x +// Wrap C++ style macro function so that clang-format follows our code style. +// NOTE: Not relative to MSVC_EXPAND macro's bugfix. +#define MACRO_FUNC(x) x + #define STRINGIZEX(x) #x #define STRINGIZE(x) STRINGIZEX(x) +// Concatenate two strings into one string for preprocessor to process. +#define CONCAT(a, b) a##b + +// parentheses +#define VA_ARGS_EXPAND(...) __VA_ARGS__ +#define UNPARENTHESES_INVOKE(args) VA_ARGS_EXPAND(args) +#define UNPARENTHESES(args) UNPARENTHESES_INVOKE(VA_ARGS_EXPAND args) + +// get the number of elements of an array +#define COUNT_ARRAYSIZE(type_, array_) (sizeof((type_[])UNPARENTHESES(array_)) / sizeof(type_)) + +// Increment counter used by the PARAMS macro. +#define INC_1 2 +#define INC_2 3 +#define INC_3 4 +#define INC_4 5 +#define INC_5 6 +#define INC_6 7 +#define INC_7 8 +#define INC_8 9 +#define INC_9 10 +#define INC_10 11 +#define INC_11 12 +#define INC_12 13 +#define INC_13 14 +#define INC_14 15 +#define INC_15 16 +#define INC_16 17 +#define INC_17 18 +#define INC_18 19 + #pragma pack(1) // ****************************************************************** @@ -141,9 +176,9 @@ typedef struct _LOOVPA { } LOOVPA; #pragma warning(pop) -#define COUNTARGS_LOVP(...) (sizeof((LOVP[]){ __VA_ARGS__ }) / sizeof(LOVP)) // clang-format off -#define OOVPA_SIG_MATCH(...) MSVC_EXPAND(COUNTARGS_LOVP(__VA_ARGS__)), { __VA_ARGS__ } } +#define OOVPA_SIG_MATCH(...) COUNT_ARRAYSIZE(LOVP, ({ __VA_ARGS__ })), { __VA_ARGS__ } } +#define OOVPA_SIG_MATCH_DUMMY() 0, { { 0, 0 } } } // clang-format on #define OOVPA_SIG_HEADER_XREF_EXTEND(Name, Version, XRefCount, DetectSelect) \ @@ -174,19 +209,15 @@ typedef struct _LOOVPA { #define OOVPA_NO_XREF(Name, Version, Count) \ OOVPA_XREF_EXTEND(Name, Version, Count, XRefZero, DetectDefault) -// clang-format off #define OOVPA_END } -// clang-format on -#pragma pack() // require restore pack for AppleClang to build +#pragma pack() // restore packing so that AppleClang can build typedef struct _OOVPARevision { OOVPA* Oovpa; unsigned short Version; // : 13; // 2^13 = 8192, enough to store lowest and highest possible Library Version number in } OOVPARevision; #pragma pack(1) -#define COUNTARGS_USHORT(...) (sizeof((unsigned short[]){ __VA_ARGS__ }) / sizeof(unsigned short)) - typedef enum _eDBScanType { DB_ST_NONE = 0, DB_ST_MANUAL = (1 << 0), @@ -198,19 +229,25 @@ typedef enum _eDBScanType { // ****************************************************************** // * OOVPATable // ****************************************************************** -#pragma pack() // require restore pack for AppleClang to build +#pragma pack() // restore packing so that AppleClang can build typedef struct _OOVPATable { - uint16_t xref; - char* szFuncName; - unsigned scan_type; - unsigned count; - OOVPARevision* revisions; + const uint16_t xref; + const unsigned scan_type; + const XbSDBSymbolType symbol_type; + const char* szSymbolName; + const XbSDBCallType call_type; + const unsigned param_count; + const XbSDBSymbolParam* param_list; + const unsigned count; + OOVPARevision* const revisions; } OOVPATable; #pragma pack(1) // http://en.cppreference.com/w/cpp/iterator/size +// clang-format off //#include //#define XBSDB_ARRAY_SIZE(x) std::size(x) +// clang-format on #define XBSDB_ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) // clang-format off @@ -218,100 +255,210 @@ typedef struct _OOVPATable { { &Oovpa##_##Version.Header, Version } // clang-format on -// Regiser each version into one symbol table database. +// Register each version into one symbol table database. #define REGISTER_OOVPA(Symbol, Version) \ OOVPA_TABLE_ENTRY_FULL(Symbol, Version) // Based on https://codecraft.co/2014/11/25/variadic-macros-tricks/ // and https://groups.google.com/d/msg/comp.std.c/d-6Mj5Lko_s/jqonQLK20HcJ -// clang-format off #define REGISTER_OOVPA_0(...) - #define REGISTER_OOVPA_1(Symbol, Version) REGISTER_OOVPA(Symbol, Version) - #define REGISTER_OOVPA_2(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_1(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_3(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_2(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_4(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_3(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_5(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_4(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_6(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_5(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_7(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_6(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_8(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_7(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_9(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_8(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_10(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_9(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_11(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_10(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_12(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_11(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_13(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_12(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_14(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_13(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_15(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_14(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_16(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_15(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_17(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_16(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_18(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_17(Symbol, __VA_ARGS__)) - #define REGISTER_OOVPA_19(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_18(Symbol, __VA_ARGS__)) -// clang-format on +#define REGISTER_OOVPA_1(Symbol, Version) REGISTER_OOVPA(Symbol, Version) +#define REGISTER_OOVPA_2(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_1(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_3(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_2(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_4(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_3(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_5(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_4(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_6(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_5(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_7(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_6(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_8(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_7(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_9(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_8(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_10(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_9(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_11(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_10(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_12(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_11(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_13(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_12(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_14(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_13(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_15(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_14(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_16(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_15(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_17(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_16(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_18(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_17(Symbol, __VA_ARGS__)) +#define REGISTER_OOVPA_19(Symbol, Version, ...) REGISTER_OOVPA(Symbol, Version), MSVC_EXPAND(REGISTER_OOVPA_18(Symbol, __VA_ARGS__)) -// clang-format off #define OV_BYTES_0(...) - #define OV_BYTES_1(Offset, Value) OV_BYTE(Offset, Value) - #define OV_BYTES_2(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_1(Offset+1, __VA_ARGS__)) - #define OV_BYTES_3(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_2(Offset+1, __VA_ARGS__)) - #define OV_BYTES_4(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_3(Offset+1, __VA_ARGS__)) - #define OV_BYTES_5(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_4(Offset+1, __VA_ARGS__)) - #define OV_BYTES_6(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_5(Offset+1, __VA_ARGS__)) - #define OV_BYTES_7(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_6(Offset+1, __VA_ARGS__)) - #define OV_BYTES_8(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_7(Offset+1, __VA_ARGS__)) -// clang-format on +#define OV_BYTES_1(Offset, Value) OV_BYTE(Offset, Value) +#define OV_BYTES_2(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_1(Offset + 1, __VA_ARGS__)) +#define OV_BYTES_3(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_2(Offset + 1, __VA_ARGS__)) +#define OV_BYTES_4(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_3(Offset + 1, __VA_ARGS__)) +#define OV_BYTES_5(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_4(Offset + 1, __VA_ARGS__)) +#define OV_BYTES_6(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_5(Offset + 1, __VA_ARGS__)) +#define OV_BYTES_7(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_6(Offset + 1, __VA_ARGS__)) +#define OV_BYTES_8(Offset, Value, ...) OV_BYTE(Offset, Value), MSVC_EXPAND(OV_BYTES_7(Offset + 1, __VA_ARGS__)) + +#define CALL_unk call_unknown +#define CALL_cde call_cdecl +#define CALL_std call_stdcall +#define CALL_thi call_thiscall +#define CALL_fas call_fastcall +#define CALL(Name) CALL_##Name + +// For generate symbol's suffix name, mainly for registers, and extended API usage. +#define PARAM(Param, Name) Param, Name +#define PARAM1(Param) Param, "" +#define PARAM_TOKEN_unk(Index, Name) _unk##Index +#define PARAM_TOKEN_void(Index, Name) // No argument, do not append to symbol reference. +#define PARAM_TOKEN_psh2(Index, Name) // (Custom) argument is stored in call stack with two pushes, do not append to symbol reference. +#define PARAM_TOKEN_psh(Index, Name) // Argument is stored in call stack with one push, do not append to symbol reference. +#define PARAM_TOKEN_eax(Index, Name) _eax##Index +#define PARAM_TOKEN__ax(Index, Name) _ax##Index +#define PARAM_TOKEN__ah(Index, Name) _ah##Index +#define PARAM_TOKEN__al(Index, Name) _al##Index +#define PARAM_TOKEN_ebx(Index, Name) _ebx##Index +#define PARAM_TOKEN__bx(Index, Name) _bx##Index +#define PARAM_TOKEN__bh(Index, Name) _bh##Index +#define PARAM_TOKEN__bl(Index, Name) _bl##Index +#define PARAM_TOKEN_ecx(Index, Name) _ecx##Index +#define PARAM_TOKEN__cx(Index, Name) _cx##Index +#define PARAM_TOKEN__ch(Index, Name) _ch##Index +#define PARAM_TOKEN__cl(Index, Name) _cl##Index +#define PARAM_TOKEN_edx(Index, Name) _edx##Index +#define PARAM_TOKEN__dx(Index, Name) _dx##Index +#define PARAM_TOKEN__dh(Index, Name) _dh##Index +#define PARAM_TOKEN__dl(Index, Name) _dl##Index +#define PARAM_TOKEN_ebp(Index, Name) _ebp##Index +#define PARAM_TOKEN_edi(Index, Name) _edi##Index +#define PARAM_TOKEN_esi(Index, Name) _esi##Index + +#define PARAMS_TOKEN_EXPAND(param_a, param_b) CONCAT(param_a, param_b) +#define PARAMS_TOKEN_0(...) +#define PARAMS_TOKEN_X(Index, Param, Name) PARAM_TOKEN_##Param(Index, Name) +#define PARAMS_TOKEN_1(Index, Param, Name) PARAMS_TOKEN_X(Index, Param, Name) +#define PARAMS_TOKEN_2(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_1(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_3(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_2(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_4(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_3(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_5(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_4(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_6(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_5(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_7(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_6(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_8(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_7(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_9(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_8(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_10(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_9(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_11(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_10(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_12(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_11(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_13(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_12(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_14(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_13(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_15(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_14(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_16(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_15(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_17(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_16(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_18(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_17(CONCAT(INC_, Index), __VA_ARGS__)) +#define PARAMS_TOKEN_19(Index, Param, Name, ...) PARAMS_TOKEN_EXPAND(PARAMS_TOKEN_X(Index, Param, Name), PARAMS_TOKEN_18(CONCAT(INC_, Index), __VA_ARGS__)) + +#define PARAMS_LIST_EXPAND(param_a, param_b) CONCAT(param_a, param_b) +#define PARAMS_LIST_0(...) { param_unk, "" }, +#define PARAMS_LIST_1(Param, Name) { param_##Param, #Name }, +#define PARAMS_LIST_2(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_1(__VA_ARGS__) +#define PARAMS_LIST_3(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_2(__VA_ARGS__) +#define PARAMS_LIST_4(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_3(__VA_ARGS__) +#define PARAMS_LIST_5(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_4(__VA_ARGS__) +#define PARAMS_LIST_6(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_5(__VA_ARGS__) +#define PARAMS_LIST_7(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_6(__VA_ARGS__) +#define PARAMS_LIST_8(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_7(__VA_ARGS__) +#define PARAMS_LIST_9(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_8(__VA_ARGS__) +#define PARAMS_LIST_10(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_9(__VA_ARGS__) +#define PARAMS_LIST_11(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_10(__VA_ARGS__) +#define PARAMS_LIST_12(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_11(__VA_ARGS__) +#define PARAMS_LIST_13(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_12(__VA_ARGS__) +#define PARAMS_LIST_14(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_13(__VA_ARGS__) +#define PARAMS_LIST_15(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_14(__VA_ARGS__) +#define PARAMS_LIST_16(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_15(__VA_ARGS__) +#define PARAMS_LIST_17(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_16(__VA_ARGS__) +#define PARAMS_LIST_18(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_17(__VA_ARGS__) +#define PARAMS_LIST_19(Param, Name, ...) { param_##Param, #Name }, PARAMS_LIST_18(__VA_ARGS__) // Accept any number of args >= N, but expand to just the Nth one. In this case, // we have settled on 20 as N. We could pick a different number by adjusting // the count of throwaway args before N. Note that this macro is preceded by // an underscore--it's an implementation detail, not something we expect people // to call directly. -#define _GET_NTH_ARG( \ +#define _GET_NTH_ARG_MAX_19( \ _19, _18, _17, _16, _15, _14, _13, _12, _11, _10, \ _9, _8, _7, _6, _5, _4, _3, _2, _1, _0, \ N, ...) N - - -#define REGISTER_OOVPAS_TYPE(Symbol, xref, ScanType, ...) \ - XREF_##xref, \ - #Symbol, \ - ScanType, \ - MSVC_EXPAND(COUNTARGS_USHORT(__VA_ARGS__)), \ - (OOVPARevision[]) \ - { \ - MSVC_EXPAND(_GET_NTH_ARG("ignored", __VA_ARGS__, \ - REGISTER_OOVPA_19, REGISTER_OOVPA_18, REGISTER_OOVPA_17, REGISTER_OOVPA_16, REGISTER_OOVPA_15, \ - REGISTER_OOVPA_14, REGISTER_OOVPA_13, REGISTER_OOVPA_12, REGISTER_OOVPA_11, REGISTER_OOVPA_10, \ - REGISTER_OOVPA_9, REGISTER_OOVPA_8, REGISTER_OOVPA_7, REGISTER_OOVPA_6, REGISTER_OOVPA_5, \ - REGISTER_OOVPA_4, REGISTER_OOVPA_3, REGISTER_OOVPA_2, REGISTER_OOVPA_1, REGISTER_OOVPA_0)(Symbol, __VA_ARGS__)) \ +// For OV_MATCH macro +// Even though x86 instructions can be anywhere from 1 to 15 bytes long, +// we don't need to fill in whole instruction. +#define _GET_NTH_ARG_MAX_8( \ + _8, _7, _6, _5, _4, _3, _2, _1, _0, \ + N, ...) N +// For STACK macro +// We want to accept empty argument to exclude _# suffix from symbol name. +#define _GET_NTH_ARG_MAX_1(_1, _0, N, ...) N + +// Works, even with empty argument. +#define COUNT_VARARGS_MAX_19(...) _GET_NTH_ARG_MAX_19("ignored", ##__VA_ARGS__, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + +#define SUFFIX(x) x + +#define STACK_0(...) +#define STACK_1(Size) _##Size + +#define STACK(...) \ + MACRO_FUNC(_GET_NTH_ARG_MAX_1("ignored", ##__VA_ARGS__, \ + STACK_1, STACK_0)(__VA_ARGS__)) + +#define PARAMS(...) \ + MACRO_FUNC(_GET_NTH_ARG_MAX_19("ignored", ##__VA_ARGS__, \ + PARAMS_TOKEN_19, PARAMS_TOKEN_18, PARAMS_TOKEN_17, PARAMS_TOKEN_16, PARAMS_TOKEN_15, \ + PARAMS_TOKEN_14, PARAMS_TOKEN_13, PARAMS_TOKEN_12, PARAMS_TOKEN_11, PARAMS_TOKEN_10, \ + PARAMS_TOKEN_9, PARAMS_TOKEN_8, PARAMS_TOKEN_7, PARAMS_TOKEN_6, PARAMS_TOKEN_5, \ + PARAMS_TOKEN_4, PARAMS_TOKEN_3, PARAMS_TOKEN_2, PARAMS_TOKEN_1, PARAMS_TOKEN_0)(1, __VA_ARGS__)), \ + ({ MACRO_FUNC(_GET_NTH_ARG_MAX_19("ignored", ##__VA_ARGS__, \ + PARAMS_LIST_19, PARAMS_LIST_18, PARAMS_LIST_17, PARAMS_LIST_16, PARAMS_LIST_15, \ + PARAMS_LIST_14, PARAMS_LIST_13, PARAMS_LIST_12, PARAMS_LIST_11, PARAMS_LIST_10, \ + PARAMS_LIST_9, PARAMS_LIST_8, PARAMS_LIST_7, PARAMS_LIST_6, PARAMS_LIST_5, \ + PARAMS_LIST_4, PARAMS_LIST_3, PARAMS_LIST_2, PARAMS_LIST_1, PARAMS_LIST_0)(__VA_ARGS__)) }) + +#define SYMBOL_EXPAND(symbol_name, stack_size, suffix, params, ...) (symbol_name, symbol_name##stack_size##suffix, __VA_ARGS__) +#define SYMBOL_EXPAND_LTCG(symbol_name, stack_size, suffix, params, ...) (symbol_name, symbol_name##stack_size##suffix##params, __VA_ARGS__) +#define SYM_INT(symbol_name) SYMBOL_EXPAND(symbol_name, /*NONE*/, /*NONE*/, /*NONE*/, ({ param_unk, "" }), symbol_internal, call_none) +#define SYM_VAR(symbol_name) SYMBOL_EXPAND(symbol_name, /*NONE*/, /*NONE*/, /*NONE*/, ({ param_unk, "" }), symbol_variable, call_none) +#define SYM_FUN(symbol_name, call_type, stack_size, params) SYMBOL_EXPAND(symbol_name, stack_size, /*NONE*/, params, symbol_function, call_type) +#define SYM_FUN_ALT(symbol_name, suffix, call_type, stack_size, params) SYMBOL_EXPAND(symbol_name, stack_size, suffix, params, symbol_function, call_type) +#define SYM_FUN_LTCG(symbol_name, call_type, stack_size, params) SYMBOL_EXPAND_LTCG(symbol_name, stack_size, __LTCG, params, symbol_function, call_type) +#define SYM_SIG VA_ARGS_EXPAND + +#define REGISTER_OOVPAS_TYPE(xref, symbol_name, param_list, symbol_type, call_type, scan_type, ...) \ + XREF_##xref, \ + scan_type, \ + symbol_type, \ + #symbol_name, \ + call_type, \ + COUNT_ARRAYSIZE(const XbSDBSymbolParam, param_list), \ + (const XbSDBSymbolParam[])UNPARENTHESES(param_list), \ + COUNT_ARRAYSIZE(unsigned short, ({ __VA_ARGS__ })), \ + (OOVPARevision[]) \ + { \ + MACRO_FUNC(_GET_NTH_ARG_MAX_19("ignored", ##__VA_ARGS__, \ + REGISTER_OOVPA_19, REGISTER_OOVPA_18, REGISTER_OOVPA_17, REGISTER_OOVPA_16, REGISTER_OOVPA_15, \ + REGISTER_OOVPA_14, REGISTER_OOVPA_13, REGISTER_OOVPA_12, REGISTER_OOVPA_11, REGISTER_OOVPA_10, \ + REGISTER_OOVPA_9, REGISTER_OOVPA_8, REGISTER_OOVPA_7, REGISTER_OOVPA_6, REGISTER_OOVPA_5, \ + REGISTER_OOVPA_4, REGISTER_OOVPA_3, REGISTER_OOVPA_2, REGISTER_OOVPA_1, REGISTER_OOVPA_0)(symbol_name, __VA_ARGS__)) \ } -// TODO: Need to work on support prefix inside macro. -#define REGISTER_OOVPAS_TYPE_BIND_XREF(Symbol, XRef, ScanType, ...) REGISTER_OOVPAS_TYPE(Symbol, XRef, ScanType, __VA_ARGS__) -#define REGISTER_OOVPAS_TYPE_PREFIX(Symbol, prefix, ScanType, ...) REGISTER_OOVPAS_TYPE_BIND_XREF(Symbol, prefix##_##Symbol, ScanType, __VA_ARGS__) +#define REGISTER_OOVPAS_TYPE_PREFIX(xref_prefix, xref, ...) REGISTER_OOVPAS_TYPE(xref_prefix##_##xref, __VA_ARGS__) // Use REGISTER_OOVPAS for automate scan only process -#define REGISTER_OOVPAS(Symbol, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE(Symbol, Symbol, DB_ST_AUTO, __VA_ARGS__)) -#define REGISTER_OOVPAS_PREFIX(Prefix, Symbol, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE_PREFIX(Symbol, Prefix, DB_ST_AUTO, __VA_ARGS__)) -#define REGISTER_OOVPAS_BIND_XREF(Symbol, XRef, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE_BIND_XREF(Symbol, XRef, DB_ST_AUTO, __VA_ARGS__)) +#define REGISTER_OOVPAS_EXPAND(...) REGISTER_OOVPAS_TYPE(__VA_ARGS__) +#define REGISTER_OOVPAS_EXPAND_PREFIX(...) REGISTER_OOVPAS_TYPE_PREFIX(__VA_ARGS__) +#define REGISTER_OOVPAS(Symbol_Info, ...) REGISTER_OOVPAS_EXPAND(UNPARENTHESES(Symbol_Info), DB_ST_AUTO, __VA_ARGS__) +#define REGISTER_OOVPAS_PREFIX(Prefix, Symbol_Info, ...) REGISTER_OOVPAS_EXPAND_PREFIX(Prefix, UNPARENTHESES(Symbol_Info), DB_ST_AUTO, __VA_ARGS__) // Use REGISTER_OOVPAS_M for manual scan only process -#define REGISTER_OOVPAS_M(Symbol, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE(Symbol, Symbol, DB_ST_MANUAL, __VA_ARGS__)) -#define REGISTER_OOVPAS_M_PREFIX(Symbol, Prefix, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE_PREFIX(Symbol, Prefix, DB_ST_MANUAL, __VA_ARGS__)) -#define REGISTER_OOVPAS_M_BIND_XREF(Symbol, XRef, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE_BIND_XREF(Symbol, XRef, DB_ST_MANUAL, __VA_ARGS__)) +#define REGISTER_OOVPAS_M(Symbol_Info, ...) REGISTER_OOVPAS_EXPAND(UNPARENTHESES(Symbol_Info), DB_ST_MANUAL, __VA_ARGS__) +#define REGISTER_OOVPAS_M_PREFIX(Prefix, Symbol_Info, ...) REGISTER_OOVPAS_EXPAND_PREFIX(Prefix, UNPARENTHESES(Symbol_Info), DB_ST_MANUAL, __VA_ARGS__) // Use REGISTER_OOVPAS_C for combine manual and automate scan process -#define REGISTER_OOVPAS_C(Symbol, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE(Symbol, Symbol, DB_ST_ALL, __VA_ARGS__)) -#define REGISTER_OOVPAS_C_PREFIX(Symbol, Prefix, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE_PREFIX(Symbol, Prefix, DB_ST_ALL, __VA_ARGS__)) -#define REGISTER_OOVPAS_C_BIND_XREF(Symbol, XRef, ...) MSVC_EXPAND(REGISTER_OOVPAS_TYPE_BIND_XREF(Symbol, XRef, DB_ST_ALL, __VA_ARGS__)) - -// See _GET_NTH_ARG comment for details. -// Even though x86 instructions can be anywhere from 1 to 15 bytes long, -// we don't need to fill in whole instruction. -#define _GET_NTH_ARG_OVP( \ - _8, _7, _6, _5, _4, _3, _2, _1, _0, \ - N, ...) N +#define REGISTER_OOVPAS_C(Symbol_Info, ...) REGISTER_OOVPAS_EXPAND(UNPARENTHESES(Symbol_Info), DB_ST_ALL, __VA_ARGS__) +#define REGISTER_OOVPAS_C_PREFIX(Prefix, Symbol_Info, ...) REGISTER_OOVPAS_EXPAND_PREFIX(Prefix, UNPARENTHESES(Symbol_Info), DB_ST_ALL, __VA_ARGS__) -#define OV_MATCH(Offset, ...) \ - MSVC_EXPAND(_GET_NTH_ARG_OVP("ignored", __VA_ARGS__, \ - OV_BYTES_8, OV_BYTES_7, OV_BYTES_6, OV_BYTES_5, OV_BYTES_4, \ - OV_BYTES_3, OV_BYTES_2, OV_BYTES_1, OV_BYTES_0)(Offset, __VA_ARGS__)) +#define OV_MATCH(Offset, ...) \ + MACRO_FUNC(_GET_NTH_ARG_MAX_8("ignored", ##__VA_ARGS__, \ + OV_BYTES_8, OV_BYTES_7, OV_BYTES_6, OV_BYTES_5, OV_BYTES_4, \ + OV_BYTES_3, OV_BYTES_2, OV_BYTES_1, OV_BYTES_0)(Offset, __VA_ARGS__)) #pragma pack() diff --git a/src/OOVPADatabase/XActEng_OOVPA.inl b/src/OOVPADatabase/XActEng_OOVPA.inl index f536858e..941b8b9a 100644 --- a/src/OOVPADatabase/XActEng_OOVPA.inl +++ b/src/OOVPADatabase/XActEng_OOVPA.inl @@ -70,29 +70,52 @@ // ****************************************************************** OOVPATable XACTENG_OOVPA[] = { - REGISTER_OOVPAS(XACTEngineCreate, 4627, 4928, 5120), - REGISTER_OOVPAS(XACTEngineDoWork, 4627), - REGISTER_OOVPAS(XACT_CEngine_CreateSoundBank, 4627, 4928), - REGISTER_OOVPAS(XACT_CEngine_CreateSoundSource, 4627, 4928), - REGISTER_OOVPAS(XACT_CEngine_DownloadEffectsImage, 4627, 5344), - REGISTER_OOVPAS(XACT_CEngine_GetNotification, 4627), - REGISTER_OOVPAS(XACT_CEngine_RegisterNotification, 4627), - REGISTER_OOVPAS(XACT_CEngine_RegisterStreamedWaveBank, 4627, 4928, 5233), - REGISTER_OOVPAS(XACT_CEngine_RegisterWaveBank, 4627, 5120, 5233), - REGISTER_OOVPAS(XACT_CEngine_UnRegisterWaveBank, 4627, 4928, 5120), - REGISTER_OOVPAS(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4627, 4928), - REGISTER_OOVPAS(XACT_CSoundBank_Play, 5344, 5558), - REGISTER_OOVPAS(IXACTEngine_CreateSoundBank, 4627, 4928), - REGISTER_OOVPAS(IXACTEngine_CreateSoundSource, 4627, 4928), - REGISTER_OOVPAS(IXACTEngine_DownloadEffectsImage, 4627, 5344), - REGISTER_OOVPAS(IXACTEngine_GetNotification, 4627, 4928), - REGISTER_OOVPAS(IXACTEngine_RegisterNotification, 4627, 4928), - REGISTER_OOVPAS(IXACTEngine_RegisterStreamedWaveBank, 4627, 4928), - REGISTER_OOVPAS(IXACTEngine_RegisterWaveBank, 4627, 5120), - REGISTER_OOVPAS(IXACTEngine_UnRegisterWaveBank, 4627, 4928), - REGISTER_OOVPAS(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4627, 4928), - REGISTER_OOVPAS(IXACTSoundBank_Play, 4627), - REGISTER_OOVPAS(IXACTSoundBank_PlayEx, 5344), // Not Implemented yet. + REGISTER_OOVPAS(SYM_FUN(XACTEngineCreate, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pParams), PARAM(psh, ppEngine))), + SYM_SIG(4627, 4928, 5120)), + REGISTER_OOVPAS(SYM_FUN(XACTEngineDoWork, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_CreateSoundBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pvData), PARAM(psh, dwSize), PARAM(psh, ppSoundBank))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_CreateSoundSource, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, dwSize), PARAM(psh, ppSoundSource))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_DownloadEffectsImage, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pvData), PARAM(psh, dwSize), PARAM(psh, pEffectLoc), PARAM(psh, ppImageDesc))), + SYM_SIG(4627, 5344)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_GetNotification, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pNotificationDesc), PARAM(psh, pNotification))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_RegisterNotification, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pNotificationDesc))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_RegisterStreamedWaveBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pParams), PARAM(psh, ppWaveBank))), + SYM_SIG(4627, 4928, 5233)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_RegisterWaveBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pvData), PARAM(psh, dwSize), PARAM(psh, ppWaveBank))), + SYM_SIG(4627, 5120, 5233)), + REGISTER_OOVPAS(SYM_FUN(XACT_CEngine_UnRegisterWaveBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pWaveBank))), + SYM_SIG(4627, 4928, 5120)), + REGISTER_OOVPAS(SYM_FUN(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pFriendlyName), PARAM(psh, pdwSoundCueIndex))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(XACT_CSoundBank_Play, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, this), PARAM(psh, pPrepareData), PARAM(psh, ppSoundCue))), + SYM_SIG(5344, 5558)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_CreateSoundBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pvData), PARAM(psh, dwSize), PARAM(psh, ppSoundBank))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_CreateSoundSource, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, dwFlags), PARAM(psh, ppSoundSource))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_DownloadEffectsImage, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pvData), PARAM(psh, dwSize), PARAM(psh, pEffectLoc), PARAM(psh, ppImageDesc))), + SYM_SIG(4627, 5344)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_GetNotification, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pNotificationDesc), PARAM(psh, pNotification))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_RegisterNotification, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pNotificationDesc))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_RegisterStreamedWaveBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pParams), PARAM(psh, ppWaveBank))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_RegisterWaveBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pvData), PARAM(psh, dwSize), PARAM(psh, ppWaveBank))), + SYM_SIG(4627, 5120)), + REGISTER_OOVPAS(SYM_FUN(IXACTEngine_UnRegisterWaveBank, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pWaveBank))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pFriendlyName), PARAM(psh, pdwSoundCueIndex))), + SYM_SIG(4627, 4928)), + REGISTER_OOVPAS(SYM_FUN(IXACTSoundBank_Play, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pdwSoundCueIndex), PARAM(psh, pSoundSource), PARAM(psh, dwFlags), PARAM(psh, ppSoundCue))), + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(IXACTSoundBank_PlayEx, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis), PARAM(psh, pPrepareData), PARAM(psh, ppSoundCue))), + SYM_SIG(5344)), }; // ****************************************************************** diff --git a/src/OOVPADatabase/XGraphic_OOVPA.inl b/src/OOVPADatabase/XGraphic_OOVPA.inl index 90e9ff7d..c8b2439e 100644 --- a/src/OOVPADatabase/XGraphic_OOVPA.inl +++ b/src/OOVPADatabase/XGraphic_OOVPA.inl @@ -77,18 +77,30 @@ // ****************************************************************** OOVPATable XGRAPHC_OOVPA[] = { - REGISTER_OOVPAS(XFONT_OpenBitmapFontFromMemory, 4361), - REGISTER_OOVPAS(XGCompressRect, 3911), // TODO: Do we need to patch this? - REGISTER_OOVPAS(XGIsSwizzledFormat, 3911), - REGISTER_OOVPAS(XGSetIndexBufferHeader, 3911, 4134), - REGISTER_OOVPAS(XGSetSurfaceHeader, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XGSetTextureHeader, 3911), - REGISTER_OOVPAS(XGSetVertexBufferHeader, 3911, 4134), - REGISTER_OOVPAS(XGSwizzleBox, 3911), - REGISTER_OOVPAS(XGSwizzleRect, 3911), - REGISTER_OOVPAS(XGUnswizzleBox, 3911), - REGISTER_OOVPAS(XGUnswizzleRect, 3911), - REGISTER_OOVPAS(XGWriteSurfaceOrTextureToXPR, 3911), + REGISTER_OOVPAS(SYM_FUN(XFONT_OpenBitmapFontFromMemory, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pFontData), PARAM(psh, uFontDataSize), PARAM(psh, ppFont))), + SYM_SIG(4361)), + REGISTER_OOVPAS(SYM_FUN(XGCompressRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pDestBuf), PARAM(psh, DestFormat), PARAM(psh, DestPitch), PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, pSrcData), PARAM(psh, SrcFormat), PARAM(psh, SrcPitch), PARAM(psh, fAlphaRef), PARAM(psh, Flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGIsSwizzledFormat, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Format))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGSetIndexBufferHeader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Length), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, pBuffer), PARAM(psh, Data))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(XGSetSurfaceHeader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Format), PARAM(psh, pSurface), PARAM(psh, Data), PARAM(psh, Pitch))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XGSetTextureHeader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Levels), PARAM(psh, Usage), PARAM(psh, Format), PARAM(psh, Pool), PARAM(psh, pTexture), PARAM(psh, Data), PARAM(psh, Pitch))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGSetVertexBufferHeader, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Length), PARAM(psh, Usage), PARAM(psh, FVF), PARAM(psh, Pool), PARAM(psh, pBuffer), PARAM(psh, Data))), + SYM_SIG(3911, 4134)), + REGISTER_OOVPAS(SYM_FUN(XGSwizzleBox, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSource), PARAM(psh, RowPitch), PARAM(psh, SlicePitch), PARAM(psh, pBox), PARAM(psh, pDest), PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(psh, pPoint), PARAM(psh, BytesPerPixel))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGSwizzleRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSource), PARAM(psh, Pitch), PARAM(psh, pRect), PARAM(psh, pDest), PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, pPoint), PARAM(psh, BytesPerPixel))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGUnswizzleBox, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSource), PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, Depth), PARAM(psh, pBox), PARAM(psh, pDest), PARAM(psh, RowPitch), PARAM(psh, SlicePitch), PARAM(psh, pPoint), PARAM(psh, BytesPerPixel))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGUnswizzleRect, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pSource), PARAM(psh, Width), PARAM(psh, Height), PARAM(psh, pRect), PARAM(psh, pDest), PARAM(psh, Pitch), PARAM(psh, pPoint), PARAM(psh, BytesPerPixel))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGWriteSurfaceOrTextureToXPR, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pResource), PARAM(psh, cPath), PARAM(psh, bWriteSurfaceAsTexture))), + SYM_SIG(3911)), }; // ****************************************************************** diff --git a/src/OOVPADatabase/XNet/3911.inl b/src/OOVPADatabase/XNet/3911.inl index 2dce9904..88b83f72 100644 --- a/src/OOVPADatabase/XNet/3911.inl +++ b/src/OOVPADatabase/XNet/3911.inl @@ -81,7 +81,7 @@ OOVPA_SIG_MATCH( // * XnInit // ****************************************************************** // For only XNETS library, XNET library is different OOVPA. -OOVPA_SIG_HEADER_NO_XREF(XnInit, +OOVPA_SIG_HEADER_NO_XREF(XnInit_8, 3911) OOVPA_SIG_MATCH( diff --git a/src/OOVPADatabase/XNet/4361.inl b/src/OOVPADatabase/XNet/4361.inl index 40b539c0..61f648f6 100644 --- a/src/OOVPADatabase/XNet/4361.inl +++ b/src/OOVPADatabase/XNet/4361.inl @@ -27,7 +27,7 @@ // * XnInit // ****************************************************************** //Generic OOVPA as of 4361 and newer. -OOVPA_SIG_HEADER_NO_XREF(XnInit, +OOVPA_SIG_HEADER_NO_XREF(XnInit_24, 4361) OOVPA_SIG_MATCH( @@ -39,9 +39,11 @@ OOVPA_SIG_MATCH( { 0x16, 0x00 }, { 0x17, 0x00 }, { 0x18, 0x00 }, + { 0x19, 0x0F }, { 0x1A, 0xB1 }, { 0x1B, 0x11 }, + { 0x1C, 0x33 }, //{ 0x1D, 0xF6 }, { 0x1E, 0x3B }, diff --git a/src/OOVPADatabase/XNet_OOVPA.inl b/src/OOVPADatabase/XNet_OOVPA.inl index fa20d90a..aba981aa 100644 --- a/src/OOVPADatabase/XNet_OOVPA.inl +++ b/src/OOVPADatabase/XNet_OOVPA.inl @@ -56,17 +56,32 @@ // ****************************************************************** OOVPATable XNET_OOVPA[] = { - REGISTER_OOVPAS(XnInit, 3911, 4361), // 3911 is only XNETS library, XNET library is different OOVPA. - REGISTER_OOVPAS(WSAStartup, 3911, 4361), - REGISTER_OOVPAS(XNetStartup, 3911, 4361), - REGISTER_OOVPAS(XNetGetEthernetLinkStatus, 3911, 4627), //NOTE: Found in .text section, confirmed it is correct. - REGISTER_OOVPAS(bind, 3911, 4627), - REGISTER_OOVPAS(connect, 3911, 5120), - REGISTER_OOVPAS(ioctlsocket, 3911, 4627), - REGISTER_OOVPAS(listen, 3911, 4627), - REGISTER_OOVPAS(recv, 3911), - REGISTER_OOVPAS(send, 3911), - REGISTER_OOVPAS(socket, 3911, 4627, 5455), + REGISTER_OOVPAS(SYM_FUN(XnInit, CALL(std), STACK(8), PARAMS(PARAM(psh, pxnsp), PARAM(psh, bWSA))), + SYM_SIG(3911)), // 3911 is only XNETS library, XNET library is different OOVPA. + REGISTER_OOVPAS(SYM_FUN(XnInit, CALL(std), STACK(24), PARAMS(PARAM(psh, pUnknown1), PARAM(psh, unknown2), PARAM(psh, pxnsp), PARAM(psh, bWSA), PARAM(psh, wVersionRequested), PARAM(psh, lpWSAData))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(4361)), + REGISTER_OOVPAS(SYM_FUN(WSAStartup, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, wVersionRequested), PARAM(psh, lpWSAData))), + SYM_SIG(3911, 4361)), + REGISTER_OOVPAS(SYM_FUN(XNetStartup, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pxnsp))), + SYM_SIG(3911, 4361)), + REGISTER_OOVPAS(SYM_FUN(XNetGetEthernetLinkStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4627)), // NOTE: Found in .text section, confirmed it is correct. + + // TODO: Fix below signatures to contain class (aka CXnSock_ prefix) then add actual non-class functions. + REGISTER_OOVPAS(SYM_FUN(bind, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, s), PARAM(psh, name), PARAM(psh, namelen))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(connect, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, s), PARAM(psh, name), PARAM(psh, namelen))), + SYM_SIG(3911, 5120)), + REGISTER_OOVPAS(SYM_FUN(ioctlsocket, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, s), PARAM(psh, cmd), PARAM(psh, argp))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(listen, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, s), PARAM(psh, backlog))), + SYM_SIG(3911, 4627)), + REGISTER_OOVPAS(SYM_FUN(recv, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, s), PARAM(psh, buf), PARAM(psh, len), PARAM(psh, flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(send, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, s), PARAM(psh, buf), PARAM(psh, len), PARAM(psh, flags))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(socket, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, af), PARAM(psh, type), PARAM(psh, protocol))), + SYM_SIG(3911, 4627, 5455)), }; // ****************************************************************** diff --git a/src/OOVPADatabase/XOnline/4627.inl b/src/OOVPADatabase/XOnline/4627.inl index ae8749c5..aff10c78 100644 --- a/src/OOVPADatabase/XOnline/4627.inl +++ b/src/OOVPADatabase/XOnline/4627.inl @@ -26,23 +26,23 @@ // ****************************************************************** // * XoUpdateLaunchNewImageInternal // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(XoUpdateLaunchNewImageInternal, +OOVPA_SIG_HEADER_NO_XREF(XoUpdateLaunchNewImageInternal_12, 4627) OOVPA_SIG_MATCH( - { 0x00, 0x55 }, - { 0x03, 0x81 }, + // push ebp + // mov ebp, esp + OV_MATCH(0x00, 0x55, 0x8B, 0xEC), - { 0x58, 0xEB }, - { 0x59, 0x04 }, - { 0x5A, 0x83 }, - { 0x5B, 0x63 }, - { 0x5C, 0x10 }, - { 0x5D, 0x00 }, - { 0x5E, 0xF6 }, - { 0x5F, 0x45 }, + // mov esi, [ebp + param_1] + OV_MATCH(0x0B, 0x8B, 0x75, 0x08), - { 0x65, 0xE8 }, + // mov ebx, [ebp + param_2] + // cmp ebx, eax + OV_MATCH(0x19, 0x8B, 0x5D, 0x0C, 0x3B, 0xD8), + + // cmp [ebx], 0x05 + OV_MATCH(0x27, 0x83, 0x3B, 0x05), // ); diff --git a/src/OOVPADatabase/XOnline/5028.inl b/src/OOVPADatabase/XOnline/5028.inl index 9916c493..fed85950 100644 --- a/src/OOVPADatabase/XOnline/5028.inl +++ b/src/OOVPADatabase/XOnline/5028.inl @@ -49,3 +49,26 @@ OOVPA_SIG_MATCH( { 0x2C, 0xE9 }, // ); + +// ****************************************************************** +// * XoUpdateLaunchNewImageInternal +// ****************************************************************** +OOVPA_SIG_HEADER_NO_XREF(XoUpdateLaunchNewImageInternal_16, + 5028) +OOVPA_SIG_MATCH( + + // push ebp + // mov ebp, esp + OV_MATCH(0x00, 0x55, 0x8B, 0xEC), + + // mov esi, [ebp + param_1] + OV_MATCH(0x0B, 0x8B, 0x75, 0x08), + + // mov ebx, [ebp + param_2] + OV_MATCH(0x17, 0x8B, 0x5D, 0x0C), + // NOTE: offset 0x1A instruction is local variable usage instead of param_4. + // test ebx, ebx + OV_MATCH(0x1D, 0x85, 0xDB), + + // NOTE: Do not include instruction of compare to 0x05 byte due to offset change over time. +); diff --git a/src/OOVPADatabase/XOnline/5659.inl b/src/OOVPADatabase/XOnline/5659.inl deleted file mode 100644 index 043bf87a..00000000 --- a/src/OOVPADatabase/XOnline/5659.inl +++ /dev/null @@ -1,47 +0,0 @@ -// ****************************************************************** -// * -// * OOVPADatabase->XOnline->5659.inl -// * -// * XbSymbolDatabase is free software; you can redistribute them -// * and/or modify them under the terms of the GNU General Public -// * License as published by the Free Software Foundation; either -// * version 2 of the license, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have recieved a copy of the GNU General Public License -// * along with this program; see the file COPYING. -// * If not, write to the Free Software Foundation, Inc., -// * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * (c) 2017 jarupxx -// * -// * All rights reserved -// * -// ****************************************************************** - -// ****************************************************************** -// * XoUpdateLaunchNewImageInternal -// ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(XoUpdateLaunchNewImageInternal, - 5659) -OOVPA_SIG_MATCH( - - { 0x00, 0x55 }, - { 0x03, 0x81 }, - - { 0x6C, 0xEB }, - { 0x6D, 0x04 }, - { 0x6E, 0x83 }, - { 0x6F, 0x63 }, - { 0x70, 0x10 }, - { 0x71, 0x00 }, - { 0x72, 0xF6 }, - { 0x73, 0x45 }, - - { 0x79, 0xE8 }, - // -); diff --git a/src/OOVPADatabase/XOnline/5788.inl b/src/OOVPADatabase/XOnline/5788.inl index 7ddb2ea8..1bde7505 100644 --- a/src/OOVPADatabase/XOnline/5788.inl +++ b/src/OOVPADatabase/XOnline/5788.inl @@ -26,26 +26,23 @@ // ****************************************************************** // * XoUpdateLaunchNewImageInternal // ****************************************************************** -OOVPA_SIG_HEADER_NO_XREF(XoUpdateLaunchNewImageInternal, +OOVPA_SIG_HEADER_NO_XREF(XoUpdateLaunchNewImageInternal_16, 5788) OOVPA_SIG_MATCH( - { 0x00, 0x55 }, - { 0x01, 0x8B }, - { 0x02, 0xEC }, - { 0x03, 0x81 }, - { 0x04, 0xEC }, - { 0x05, 0xF0 }, - { 0x06, 0x02 }, - { 0x07, 0x00 }, - { 0x08, 0x00 }, - { 0x09, 0x53 }, - { 0x0A, 0x56 }, - { 0x0B, 0x8B }, - { 0x0C, 0x75 }, - { 0x0D, 0x08 }, + // push ebp + // mov ebp, esp + OV_MATCH(0x00, 0x55, 0x8B, 0xEC), - { 0x6E, 0xEB }, - { 0x88, 0x3D }, + // mov esi, [ebp + param_1] + OV_MATCH(0x0B, 0x8B, 0x75, 0x08), + + // mov ebx, [ebp + param_2] + // cmp ebx, ecx + OV_MATCH(0x19, 0x8B, 0x5D, 0x0C, 0x3B, 0xD9), + + // mov eax, [ebx] + // cmp eax, 0x05 + OV_MATCH(0x27, 0x8B, 0x03, 0x83, 0xF8, 0x05), // ); diff --git a/src/OOVPADatabase/XOnline_OOVPA.inl b/src/OOVPADatabase/XOnline_OOVPA.inl index 94efdf14..94934c8e 100644 --- a/src/OOVPADatabase/XOnline_OOVPA.inl +++ b/src/OOVPADatabase/XOnline_OOVPA.inl @@ -62,7 +62,6 @@ #include "XOnline/5233.inl" #include "XOnline/5455.inl" #include "XOnline/5558.inl" -#include "XOnline/5659.inl" #include "XOnline/5788.inl" #include "XOnline/5849.inl" @@ -72,19 +71,34 @@ OOVPATable XONLINE_OOVPA[] = { // XOnline section - REGISTER_OOVPAS(CXo_XOnlineLogon, 4361, 4627, 4721, 5455, 5558, 5849), - REGISTER_OOVPAS(XOnlineLogon, 4361), - REGISTER_OOVPAS(CXo_XOnlineMatchSearch, 4721), - REGISTER_OOVPAS(XOnlineMatchSearch, 4721), - REGISTER_OOVPAS(CXo_XOnlineMatchSearchResultsLen, 4721), - REGISTER_OOVPAS(XOnlineMatchSearchResultsLen, 4721), - REGISTER_OOVPAS(CXo_XOnlineMatchSearchGetResults, 4721), - REGISTER_OOVPAS(XOnlineMatchSearchGetResults, 4721), - REGISTER_OOVPAS(CXo_XOnlineMatchSessionUpdate, 4721, 5233), - REGISTER_OOVPAS(XOnlineMatchSessionUpdate, 4721), - REGISTER_OOVPAS(CXo_XOnlineMatchSessionCreate, 4721, 5849), - REGISTER_OOVPAS(XOnlineMatchSessionCreate, 4721), - REGISTER_OOVPAS(XoUpdateLaunchNewImageInternal, 4627, 5659, 5788), + REGISTER_OOVPAS(SYM_FUN(CXo_XOnlineLogon, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, pUsers), PARAM(psh, pdwServiceIDs), PARAM(psh, dwServices), PARAM(psh, hEvent), PARAM(psh, pHandle))), + SYM_SIG(4361, 4627, 4721, 5455, 5558, 5849)), + REGISTER_OOVPAS(SYM_FUN(XOnlineLogon, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pUsers), PARAM(psh, pdwServiceIDs), PARAM(psh, dwServices), PARAM(psh, hEvent), PARAM(psh, pHandle))), + SYM_SIG(4361)), + REGISTER_OOVPAS(SYM_FUN(CXo_XOnlineMatchSearch, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwProcedureIndex), PARAM(psh, dwNumResults), PARAM(psh, dwNumAttributes), PARAM(psh, pAttributes), PARAM(psh, dwResultsLen), PARAM(psh, hWorkEvent), PARAM(psh, phTask))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(XOnlineMatchSearch, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwProcedureIndex), PARAM(psh, dwNumResults), PARAM(psh, dwNumAttributes), PARAM(psh, pAttributes), PARAM(psh, dwResultsLen), PARAM(psh, hWorkEvent), PARAM(psh, phTask))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(CXo_XOnlineMatchSearchResultsLen, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwNumResults), PARAM(psh, dwNumSessionAttributes), PARAM(psh, pSessionAttributeSpec))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(XOnlineMatchSearchResultsLen, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwNumResults), PARAM(psh, dwNumSessionAttributes), PARAM(psh, pSessionAttributeSpec))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(CXo_XOnlineMatchSearchGetResults, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, hTask), PARAM(psh, prgpSearchResults), PARAM(psh, pdwReturnedResults))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(XOnlineMatchSearchGetResults, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hTask), PARAM(psh, prgpSearchResults), PARAM(psh, pdwReturnedResults))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(CXo_XOnlineMatchSessionUpdate, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, SessionID), PARAM(psh, dwPublicCurrent), PARAM(psh, dwPublicAvailable), PARAM(psh, dwPrivateCurrent), PARAM(psh, dwPrivateAvailable), PARAM(psh, dwNumAttributes), PARAM(psh, pAttributes), PARAM(psh, hWorkEvent), PARAM(psh, phTask))), + SYM_SIG(4721, 5233)), + REGISTER_OOVPAS(SYM_FUN(XOnlineMatchSessionUpdate, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, SessionID), PARAM(psh, dwPublicCurrent), PARAM(psh, dwPublicAvailable), PARAM(psh, dwPrivateCurrent), PARAM(psh, dwPrivateAvailable), PARAM(psh, dwNumAttributes), PARAM(psh, pAttributes), PARAM(psh, hWorkEvent), PARAM(psh, phTask))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(CXo_XOnlineMatchSessionCreate, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, dwPublicCurrent), PARAM(psh, dwPublicAvailable), PARAM(psh, dwPrivateCurrent), PARAM(psh, dwPrivateAvailable), PARAM(psh, dwNumAttributes), PARAM(psh, pAttributes), PARAM(psh, hWorkEvent), PARAM(psh, phTask))), + SYM_SIG(4721, 5849)), + REGISTER_OOVPAS(SYM_FUN(XOnlineMatchSessionCreate, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwPublicCurrent), PARAM(psh, dwPublicAvailable), PARAM(psh, dwPrivateCurrent), PARAM(psh, dwPrivateAvailable), PARAM(psh, dwNumAttributes), PARAM(psh, pAttributes), PARAM(psh, hWorkEvent), PARAM(psh, phTask))), + SYM_SIG(4721)), + REGISTER_OOVPAS(SYM_FUN(XoUpdateLaunchNewImageInternal, CALL(std), STACK(12), PARAMS(PARAM(psh, lpTitlePath), PARAM(psh, pLaunchData), PARAM(psh, unkFlags))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(4627)), + REGISTER_OOVPAS(SYM_FUN(XoUpdateLaunchNewImageInternal, CALL(std), STACK(16), PARAMS(PARAM(psh, lpTitlePath), PARAM(psh, pLaunchData), PARAM(psh, unkFlags), PARAM(psh, pUnknown4))), // TODO: Update unknown parameter name(s) if able. + SYM_SIG(5028, 5788)), }; // ****************************************************************** diff --git a/src/OOVPADatabase/Xapi/3911.inl b/src/OOVPADatabase/Xapi/3911.inl index 46582321..75e5162d 100644 --- a/src/OOVPADatabase/Xapi/3911.inl +++ b/src/OOVPADatabase/Xapi/3911.inl @@ -23,6 +23,126 @@ // * // ****************************************************************** +// ****************************************************************** +// * _tls_array +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(_tls_array, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * _tls_index +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(_tls_index, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceType_Gamepad +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceType_Gamepad, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceType_IRDongle +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceType_IRDongle, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceType_Keyboard +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceType_Keyboard, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceType_Mouse +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceType_Mouse, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceType_MU +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceType_MU, + 3911) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_XapiAltLett_MU +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_XapiAltLett_MU, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_XapiCurrentTopLevelFilter +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_XapiCurrentTopLevelFilter, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_XapiMountedMUs +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_XapiMountedMUs, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * XapiCurrentFiber OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(XapiCurrentFiber_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * XapiLastErrorCode OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(XapiLastErrorCode_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * XapiThreadFiberData OFFSET +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(XapiThreadFiberData_OFFSET, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * XapiThreadNotifyRoutineList +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(XapiThreadNotifyRoutineList, + 0) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * XGetSectionSize +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(XGetSectionSize, + 0) +OOVPA_SIG_MATCH_DUMMY(); + // ****************************************************************** // * GetExitCodeThread // ****************************************************************** @@ -181,7 +301,7 @@ OOVPA_SIG_HEADER_XREF(OutputDebugStringW, OOVPA_SIG_MATCH( // call [OutputDebugStringA] - XREF_ENTRY(0x35, XREF_XAPI_OutputDebugStringA), + XREF_ENTRY(0x35, XREF_OutputDebugStringA), // push ebp OV_MATCH(0x00, 0x55), @@ -711,16 +831,16 @@ OOVPA_SIG_HEADER_XREF(ConvertThreadToFiber, OOVPA_SIG_MATCH( // mov eax,[_tls_index] - XREF_ENTRY(0x01, XREF_XAPI__tls_index), // derived + XREF_ENTRY(0x01, XREF__tls_index), // derived // mov ecx,fs:[_tls_array] - XREF_ENTRY(0x08, XREF_XAPI__tls_array), // derived + XREF_ENTRY(0x08, XREF__tls_array), // derived // lea ecx,[edx+XapiThreadFiberData_OFFSET] - XREF_ENTRY(0x15, XREF_OFFSET_XapiThreadFiberData), // derived + XREF_ENTRY(0x15, XREF_XapiThreadFiberData_OFFSET), // derived // mov [edx+XapiCurrentFiber_OFFSET],ecx - XREF_ENTRY(0x2D, XREF_OFFSET_XapiCurrentFiber), // derived + XREF_ENTRY(0x2D, XREF_XapiCurrentFiber_OFFSET), // derived // mov eax,[_tls_index] OV_MATCH(0x00, 0xA1), @@ -1329,7 +1449,7 @@ OOVPA_SIG_MATCH( XREF_ENTRY(0x68, XREF_XapiCallThreadNotifyRoutines), // call UnhandledExceptionFilter - XREF_ENTRY(0x82, XREF_XAPI_UnhandledExceptionFilter), + XREF_ENTRY(0x82, XREF_UnhandledExceptionFilter), // push 0x18 OV_MATCH(0x00, 0x6A, 0x18), @@ -1566,13 +1686,13 @@ OOVPA_SIG_HEADER_XREF(GetLastError, OOVPA_SIG_MATCH( // mov eax,[_tls_index] - XREF_ENTRY(0x13, XREF_XAPI__tls_index), // derived + XREF_ENTRY(0x13, XREF__tls_index), // derived // mov ecx,fs:[_tls_array] - XREF_ENTRY(0x1A, XREF_XAPI__tls_array), // derived + XREF_ENTRY(0x1A, XREF__tls_array), // derived // mov eax,[eax+XapiLastErrorCode_OFFSET] - XREF_ENTRY(0x23, XREF_OFFSET_XapiLastErrorCode), // derived + XREF_ENTRY(0x23, XREF_XapiLastErrorCode_OFFSET), // derived // movzx eax,fs:[0x00000024] OV_MATCH(0x00, 0x64, 0x0F, 0xB6), @@ -1598,13 +1718,13 @@ OOVPA_SIG_HEADER_XREF(SetLastError, OOVPA_SIG_MATCH( // mov ecx,fs:[_tls_array] - XREF_ENTRY(0x15, XREF_XAPI__tls_array), // derived + XREF_ENTRY(0x15, XREF__tls_array), // derived // mov eax,[_tls_index] - XREF_ENTRY(0x1A, XREF_XAPI__tls_index), // derived + XREF_ENTRY(0x1A, XREF__tls_index), // derived // mov [eax+XapiLastErrorCode_OFFSET],ecx - XREF_ENTRY(0x27, XREF_OFFSET_XapiLastErrorCode), // derived + XREF_ENTRY(0x27, XREF_XapiLastErrorCode_OFFSET), // derived // movzx eax,fs:[0x00000024] OV_MATCH(0x00, 0x64, 0x0F, 0xB6), @@ -1630,7 +1750,7 @@ OOVPA_SIG_HEADER_XREF(XapiSetLastNTError, OOVPA_SIG_MATCH( // call SetLastError - XREF_ENTRY(0x0E, XREF_XAPI_SetLastError), + XREF_ENTRY(0x0E, XREF_SetLastError), // push [esp+0x04] OV_MATCH(0x00, 0xFF, 0x74, 0x24, 0x04), @@ -1785,14 +1905,14 @@ OOVPA_SIG_HEADER_XREF(mainXapiStartup, OOVPA_SIG_MATCH( // call XapiInitProcess - //XREF_ENTRY(0x01, XREF_XAPI_XapiInitProcess), + //XREF_ENTRY(0x01, XREF_XapiInitProcess), // call _rtinit - XREF_ENTRY(0x48, XREF_XAPI__rtinit), + XREF_ENTRY(0x48, XREF__rtinit), // call _cinit - XREF_ENTRY(0x4D, XREF_XAPI__cinit), + XREF_ENTRY(0x4D, XREF__cinit), // call XapiInitProcess OV_MATCH(0x00, 0xE8), @@ -1815,10 +1935,10 @@ OOVPA_SIG_HEADER_XREF(mainCRTStartup, OOVPA_SIG_MATCH( // push mainXapiStartup - XREF_ENTRY(0x34, XREF_XAPI_mainXapiStartup), + XREF_ENTRY(0x34, XREF_mainXapiStartup), // call CreateThread - XREF_ENTRY(0x3D, XREF_XAPI_CreateThread), + XREF_ENTRY(0x3D, XREF_CreateThread), // call XapiBootToDash XREF_ENTRY(0x4D, XREF_XapiBootToDash), diff --git a/src/OOVPADatabase/Xapi/4242.inl b/src/OOVPADatabase/Xapi/4242.inl index 5596850b..e8b1004e 100644 --- a/src/OOVPADatabase/Xapi/4242.inl +++ b/src/OOVPADatabase/Xapi/4242.inl @@ -23,6 +23,30 @@ // * // ****************************************************************** +// ****************************************************************** +// * g_DeviceType_SBC +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceType_SBC, + 4242) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceTypeInfoTableBegin +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceTypeInfoTableBegin, + 4242) +OOVPA_SIG_MATCH_DUMMY(); + +// ****************************************************************** +// * g_DeviceTypeInfoTableEnd +// ****************************************************************** +// dummy signature +OOVPA_SIG_HEADER_NO_XREF(g_DeviceTypeInfoTableEnd, + 4242) +OOVPA_SIG_MATCH_DUMMY(); + // ****************************************************************** // * XInputOpen // ****************************************************************** @@ -33,10 +57,10 @@ OOVPA_SIG_HEADER_XREF(XInputOpen, OOVPA_SIG_MATCH( // call GetTypeInformation_4 - XREF_ENTRY(0x0C, XREF_XAPI_GetTypeInformation_4), + XREF_ENTRY(0x0C, XREF_GetTypeInformation_4), // call SetLastError - XREF_ENTRY(0x17, XREF_XAPI_SetLastError), + XREF_ENTRY(0x17, XREF_SetLastError), // push 0x57 OV_MATCH(0x14, 0x6A, 0x57), diff --git a/src/OOVPADatabase/Xapi/4361.inl b/src/OOVPADatabase/Xapi/4361.inl index 26c99e1f..9b5295c1 100644 --- a/src/OOVPADatabase/Xapi/4361.inl +++ b/src/OOVPADatabase/Xapi/4361.inl @@ -109,10 +109,10 @@ OOVPA_SIG_HEADER_XREF(mainCRTStartup, OOVPA_SIG_MATCH( // push mainXapiStartup - XREF_ENTRY(0x4C, XREF_XAPI_mainXapiStartup), + XREF_ENTRY(0x4C, XREF_mainXapiStartup), // call CreateThread - XREF_ENTRY(0x55, XREF_XAPI_CreateThread), + XREF_ENTRY(0x55, XREF_CreateThread), // call XapiBootToDash XREF_ENTRY(0x65, XREF_XapiBootToDash), diff --git a/src/OOVPADatabase/Xapi/4831.inl b/src/OOVPADatabase/Xapi/4831.inl index 47bb4e32..194922c3 100644 --- a/src/OOVPADatabase/Xapi/4831.inl +++ b/src/OOVPADatabase/Xapi/4831.inl @@ -280,13 +280,13 @@ OOVPA_SIG_HEADER_XREF(mainXapiStartup, OOVPA_SIG_MATCH( // call XapiInitProcess - //XREF_ENTRY(0x01, XREF_XAPI_XapiInitProcess), + //XREF_ENTRY(0x01, XREF_XapiInitProcess), // call _rtinit - XREF_ENTRY(0x4D, XREF_XAPI__rtinit), + XREF_ENTRY(0x4D, XREF__rtinit), // call _cinit - XREF_ENTRY(0x52, XREF_XAPI__cinit), + XREF_ENTRY(0x52, XREF__cinit), // call XapiApplyKernelPatches OV_MATCH(0x00, 0xE8), diff --git a/src/OOVPADatabase/Xapi_OOVPA.inl b/src/OOVPADatabase/Xapi_OOVPA.inl index db915056..f731ddbe 100644 --- a/src/OOVPADatabase/Xapi_OOVPA.inl +++ b/src/OOVPADatabase/Xapi_OOVPA.inl @@ -401,98 +401,212 @@ #include "Xapi/5344.inl" #include "Xapi/5455.inl" -#define REGISTER_OOVPAS_XAPI(Symbol, ...) REGISTER_OOVPAS_PREFIX(XAPI, Symbol, __VA_ARGS__) - // ****************************************************************** // * XAPILIB_OOVPA // ****************************************************************** OOVPATable XAPILIB_OOVPA[] = { + // Variables + REGISTER_OOVPAS_M(SYM_VAR(_tls_array), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(_tls_index), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceType_Gamepad), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceType_IRDongle), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceType_Keyboard), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceType_Mouse), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceType_MU), + SYM_SIG(3911)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceType_SBC), + SYM_SIG(4242)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceTypeInfoTableBegin), + SYM_SIG(4242)), + REGISTER_OOVPAS_M(SYM_VAR(g_DeviceTypeInfoTableEnd), + SYM_SIG(4242)), + REGISTER_OOVPAS_M(SYM_VAR(g_XapiAltLett_MU), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_XapiCurrentTopLevelFilter), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(g_XapiMountedMUs), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(XapiCurrentFiber_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(XapiLastErrorCode_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(XapiThreadFiberData_OFFSET), + SYM_SIG(0)), + REGISTER_OOVPAS_M(SYM_VAR(XapiThreadNotifyRoutineList), + SYM_SIG(0)), + // Without xrefs dependency - REGISTER_OOVPAS_XAPI(_cinit, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(_rtinit, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_C(IUsbInit_GetMaxDeviceTypeCount, 3911), - REGISTER_OOVPAS(XapiFormatObjectAttributes, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XapiCallThreadNotifyRoutines, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_M(XapiMapLetterToDirectory, 3911), - REGISTER_OOVPAS(XLaunchNewImageA, 3911, 4721, 5344), - REGISTER_OOVPAS(XUnmountAlternateTitleA, 3911), + REGISTER_OOVPAS(SYM_FUN(_cinit, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(_rtinit, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS_C(SYM_FUN(IUsbInit_GetMaxDeviceTypeCount, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this), PARAM(psh, DeviceType))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XapiFormatObjectAttributes, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pObjectAttributes), PARAM(psh, pObjectName), PARAM(psh, pName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XapiCallThreadNotifyRoutines, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Create))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS_M(SYM_FUN(XapiMapLetterToDirectory, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pDriveString), PARAM(psh, pDeviceString), PARAM(psh, pszTitleId), PARAM(psh, bCreateDirectory), PARAM(psh, pwszTitleName), PARAM(psh, bUpdateTimestamp))), + SYM_SIG(3911)), + REGISTER_OOVPAS_M(SYM_FUN(XGetSectionSize, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hSection))), + SYM_SIG(0)), + REGISTER_OOVPAS(SYM_FUN(XLaunchNewImageA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpTitlePath), PARAM(psh, pLaunchData))), + SYM_SIG(3911, 4721, 5344)), + REGISTER_OOVPAS(SYM_FUN(XUnmountAlternateTitleA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, chDrive))), + SYM_SIG(3911)), // With xrefs dependency (unorder, need to scan next before order list) - REGISTER_OOVPAS_XAPI(mainXapiStartup, 3911, 4831), // Final generic OOVPA: 4831; Removed: 0 - REGISTER_OOVPAS_XAPI(GetLastError, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(SetLastError, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(UnhandledExceptionFilter, 3911, 4831), // Final generic OOVPA: 4831 Removed: 0 - REGISTER_OOVPAS(XapiBootToDash, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XapiSelectCachePartition, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XapiSetLastNTError, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XapiThreadStartup, 3911), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(mainXapiStartup, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpParameter))), + SYM_SIG(3911, 4831)), // Final generic OOVPA: 4831; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(GetLastError, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(SetLastError, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, ErrorCode))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(UnhandledExceptionFilter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, ExceptionPointers))), + SYM_SIG(3911, 4831)), // Final generic OOVPA: 4831 Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XapiBootToDash, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwReason), PARAM(psh, dwParameter1), PARAM(psh, dwParameter2))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XapiSelectCachePartition, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, bAlwaysFormat), PARAM(psh, pnCachePartition), PARAM(psh, pbForceFormat))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XapiSetLastNTError, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Status))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XapiThreadStartup, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, StartRoutine), PARAM(psh, StartContext))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 // With xrefs dependency (order) - REGISTER_OOVPAS_XAPI(CreateEventA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(CreateMutexA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(CreateThread, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(ExitThread, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(MoveFileA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(SwitchToThread, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XapiInitProcess, 3911, 3950, 4242, 4831, 5028), // obsolete, Too High Level (from 4721's comment) - REGISTER_OOVPAS_XAPI(ConvertThreadToFiber, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XCalculateSignatureBegin, 3911, 4034), // Final generic OOVPA: ????; Removed: 0 // TODO: need verification for 4034 against 3950 and lower. - REGISTER_OOVPAS_XAPI(CreateFiber, 3911), - REGISTER_OOVPAS_XAPI(DeleteFiber, 3911), - REGISTER_OOVPAS_XAPI(GetExitCodeThread, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(GetOverlappedResult, 3911), - REGISTER_OOVPAS_XAPI(GetThreadPriority, 3911), - REGISTER_OOVPAS_XAPI(GetTimeZoneInformation, 3911), - REGISTER_OOVPAS_M_PREFIX(GetTypeInformation_4, XAPI, 4242), // Final generic OOVPA: 4242; Removed: 0 - REGISTER_OOVPAS_C_PREFIX(GetTypeInformation_8, XAPI, 4242, 5455), // Final generic OOVPA: 5455; Removed: 0 - REGISTER_OOVPAS_M(MU_Init, 3911, 4242, 5233), - REGISTER_OOVPAS_XAPI(OpenEventA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(OutputDebugStringA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(OutputDebugStringW, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(mainCRTStartup, 3911, 4361), // Final generic OOVPA: 4361; Removed: 0 - REGISTER_OOVPAS_XAPI(PulseEvent, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(QueueUserAPC, 3911), - REGISTER_OOVPAS_XAPI(QueryPerformanceCounter, 3911), - REGISTER_OOVPAS_XAPI(RaiseException, 3911), - REGISTER_OOVPAS_XAPI(ResetEvent, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(SetEvent, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS_XAPI(SetThreadPriority, 3911), - REGISTER_OOVPAS_XAPI(SetThreadPriorityBoost, 3911), - REGISTER_OOVPAS_XAPI(SignalObjectAndWait, 3911), - REGISTER_OOVPAS_XAPI(SwitchToFiber, 3911), - REGISTER_OOVPAS(XAutoPowerDownResetTimer, 3911), // Just calls KeSetTimer (from 3911's comment) - REGISTER_OOVPAS(XFormatUtilityDrive, 4242), - REGISTER_OOVPAS(XGetDeviceChanges, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XGetDeviceEnumerationStatus, 4831), - REGISTER_OOVPAS(XGetDevices, 3911), - REGISTER_OOVPAS(XGetLaunchInfo, 3911), - REGISTER_OOVPAS(XID_fCloseDevice, 3911, 4831), - REGISTER_OOVPAS(XInitDevices, 3911, 5120), - REGISTER_OOVPAS(XInputClose, 3911), - REGISTER_OOVPAS(XInputGetCapabilities, 3911, 4831), // Final generic OOVPA: 4831; Removed: 0 - REGISTER_OOVPAS(XInputGetDeviceDescription, 4831), - REGISTER_OOVPAS(XInputGetState, 3911, 4242, 5455), - REGISTER_OOVPAS_C(XInputOpen, 3911, 4242), // Final generic OOVPA: 4242; Removed: 0 - REGISTER_OOVPAS(XInputPoll, 3911), - REGISTER_OOVPAS(XInputSetLightgunCalibration, 4831), - REGISTER_OOVPAS(XInputSetState, 3911, 4242, 4831), - REGISTER_OOVPAS(XMountAlternateTitleA, 3911, 5028, 5455), - REGISTER_OOVPAS(XMountMUA, 3911, 4242), - REGISTER_OOVPAS(XMountMURootA, 3911, 4242), - REGISTER_OOVPAS(XMountUtilityDrive, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XMUNameFromDriveLetter, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XMUPortFromDriveLetterA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XMUSlotFromDriveLetterA, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XMUWriteNameToDriveLetter, 3911), // Final generic OOVPA: 3911; Removed: 0 - REGISTER_OOVPAS(XReadMUMetaData, 4242), - REGISTER_OOVPAS(XRegisterThreadNotifyRoutine, 3911), - REGISTER_OOVPAS(XSetProcessQuantumLength, 4134), - REGISTER_OOVPAS(XUnmountMU, 3911, 4242), - REGISTER_OOVPAS(XapiFiberStartup, 3911), - REGISTER_OOVPAS_XAPI(timeKillEvent, 3911), - REGISTER_OOVPAS_XAPI(timeSetEvent, 3911), - + REGISTER_OOVPAS(SYM_FUN(CreateEventA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpEventAttributes), PARAM(psh, bManualReset), PARAM(psh, bInitialState), PARAM(psh, lpName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CreateMutexA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpMutexAttributes), PARAM(psh, bInitialOwner), PARAM(psh, lpName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(CreateThread, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpThreadAttributes), PARAM(psh, dwStackSize), PARAM(psh, lpStartAddress), PARAM(psh, lpParameter), PARAM(psh, dwCreationFlags), PARAM(psh, lpThreadId))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(ExitThread, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwExitCode))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(MoveFileA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpExistingFileName), PARAM(psh, lpNewFileName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(SwitchToThread, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XapiInitProcess, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 3950, 4242, 4831, 5028)), // obsolete, Too High Level (from 4721's comment) + REGISTER_OOVPAS(SYM_FUN(ConvertThreadToFiber, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpParameter))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XCalculateSignatureBegin, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwFlags), PARAM(psh, dwAltTitleId))), + SYM_SIG(3911, 4034)), // Final generic OOVPA: ????; Removed: 0 // TODO: need verification for 4034 against 3950 and lower. + REGISTER_OOVPAS(SYM_FUN(CreateFiber, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwStackSize), PARAM(psh, lpStartAddress), PARAM(psh, lpParameter))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(DeleteFiber, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpFiber))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(GetExitCodeThread, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hThread), PARAM(psh, lpExitCode))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(GetOverlappedResult, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hFile), PARAM(psh, lpOverlapped), PARAM(psh, lpNumberOfBytesTransferred), PARAM(psh, bWait))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(GetThreadPriority, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hThread))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(GetTimeZoneInformation, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpTimeZoneInformation))), + SYM_SIG(3911)), + REGISTER_OOVPAS_M(SYM_FUN(GetTypeInformation_4, CALL(fas), STACK(/*default*/), PARAMS(PARAM(ecx, XppType))), + SYM_SIG(4242)), // Final generic OOVPA: 4242; Removed: 0 + REGISTER_OOVPAS_C(SYM_FUN(GetTypeInformation_8, CALL(fas), STACK(/*default*/), PARAMS(PARAM(_cl, XidType), PARAM(edx, pTypeIndex))), + SYM_SIG(4242, 5455)), // Final generic OOVPA: 5455; Removed: 0 + REGISTER_OOVPAS_M(SYM_FUN(MU_Init, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThis))), + SYM_SIG(3911, 4242, 5233)), + REGISTER_OOVPAS(SYM_FUN(OpenEventA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwDesiredAccess), PARAM(psh, bInheritHandle), PARAM(psh, lpName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(OutputDebugStringA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpOutputString))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(OutputDebugStringW, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpOutputString))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(mainCRTStartup, CALL(cde), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911, 4361)), // Final generic OOVPA: 4361; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(PulseEvent, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hEvent))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(QueueUserAPC, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pfnAPC), PARAM(psh, hThread), PARAM(psh, dwData))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(QueryPerformanceCounter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpPerformanceCount))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(RaiseException, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwExceptionCode), PARAM(psh, dwExceptionFlags), PARAM(psh, nNumberOfArguments), PARAM(psh, lpArguments))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(ResetEvent, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hEvent))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(SetEvent, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hEvent))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(SetThreadPriority, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hThread), PARAM(psh, nPriority))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(SetThreadPriorityBoost, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hThread), PARAM(psh, DisablePriorityBoost))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(SignalObjectAndWait, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hObjectToSignal), PARAM(psh, hObjectToWaitOn), PARAM(psh, dwMilliseconds), PARAM(psh, bAlertable))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(SwitchToFiber, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpFiber))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XAutoPowerDownResetTimer, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(3911)), // Just calls KeSetTimer (from 3911's comment) + REGISTER_OOVPAS(SYM_FUN(XFormatUtilityDrive, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4242)), + REGISTER_OOVPAS(SYM_FUN(XGetDeviceChanges, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, DeviceType), PARAM(psh, pdwInsertions), PARAM(psh, pdwRemovals))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XGetDeviceEnumerationStatus, CALL(std), STACK(/*default*/), PARAMS(PARAM1(void))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(XGetDevices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, DeviceType))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XGetLaunchInfo, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pdwLaunchDataType), PARAM(psh, pLaunchData))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XID_fCloseDevice, CALL(thi), STACK(/*default*/), PARAMS(PARAM(ecx, this))), + SYM_SIG(3911, 4831)), + REGISTER_OOVPAS(SYM_FUN(XInitDevices, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwPreallocTypeCount), PARAM(psh, PreallocTypes))), + SYM_SIG(3911, 5120)), + REGISTER_OOVPAS(SYM_FUN(XInputClose, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XInputGetCapabilities, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice), PARAM(psh, pCapabilities))), + SYM_SIG(3911, 4831)), // Final generic OOVPA: 4831; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XInputGetDeviceDescription, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice), PARAM(psh, pDescription))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(XInputGetState, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice), PARAM(psh, pState))), + SYM_SIG(3911, 4242, 5455)), + REGISTER_OOVPAS_C(SYM_FUN(XInputOpen, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, DeviceType), PARAM(psh, dwPort), PARAM(psh, dwSlot), PARAM(psh, pPollingParameters))), + SYM_SIG(3911, 4242)), // Final generic OOVPA: 4242; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XInputPoll, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XInputSetLightgunCalibration, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice), PARAM(psh, pCalibrationOffsets))), + SYM_SIG(4831)), + REGISTER_OOVPAS(SYM_FUN(XInputSetState, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, hDevice), PARAM(psh, pFeedback))), + SYM_SIG(3911, 4242, 4831)), + REGISTER_OOVPAS(SYM_FUN(XMountAlternateTitleA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, lpRootPath), PARAM(psh, dwAltTitleId), PARAM(psh, pchDrive))), + SYM_SIG(3911, 5028, 5455)), + REGISTER_OOVPAS(SYM_FUN(XMountMUA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwPort), PARAM(psh, dwSlot), PARAM(psh, pchDrive))), + SYM_SIG(3911, 4242)), + REGISTER_OOVPAS(SYM_FUN(XMountMURootA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwPort), PARAM(psh, dwSlot), PARAM(psh, pchDrive))), + SYM_SIG(3911, 4242)), + REGISTER_OOVPAS(SYM_FUN(XMountUtilityDrive, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, bFormatClean))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XMUNameFromDriveLetter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, chDrive), PARAM(psh, pwszName), PARAM(psh, chName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XMUPortFromDriveLetterA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, chDrive))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XMUSlotFromDriveLetterA, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, chDrive))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XMUWriteNameToDriveLetter, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, chDrive), PARAM(psh, pwszName))), + SYM_SIG(3911)), // Final generic OOVPA: 3911; Removed: 0 + REGISTER_OOVPAS(SYM_FUN(XReadMUMetaData, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwPort), PARAM(psh, dwSlot), PARAM(psh, lpBuffer), PARAM(psh, dwByteOffset), PARAM(psh, dwNumberOfBytesToRead))), + SYM_SIG(4242)), + REGISTER_OOVPAS(SYM_FUN(XRegisterThreadNotifyRoutine, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, pThreadNotification), PARAM(psh, bRegister))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(XSetProcessQuantumLength, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwMilliseconds))), + SYM_SIG(4134)), + REGISTER_OOVPAS(SYM_FUN(XUnmountMU, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, dwPort), PARAM(psh, dwSlot))), + SYM_SIG(3911, 4242)), + REGISTER_OOVPAS(SYM_FUN(XapiFiberStartup, CALL(cde), STACK(/*default*/), PARAMS(PARAM(psh, lpStartAddress))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(timeKillEvent, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, uTimerID))), + SYM_SIG(3911)), + REGISTER_OOVPAS(SYM_FUN(timeSetEvent, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, uDelay), PARAM(psh, uResolution), PARAM(psh, lpTimeProc), PARAM(psh, dwUser), PARAM(psh, uEvent))), + SYM_SIG(3911)), }; // ****************************************************************** diff --git a/src/cli/main.c b/src/cli/main.c index ec37b040..f9cc24d5 100644 --- a/src/cli/main.c +++ b/src/cli/main.c @@ -3,37 +3,100 @@ #include #include +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +static bool bReverseMangle = true; +static bool bExtendInfo = false; + static void msg_cb(xb_output_message message_flag, const char* msg) { fprintf(stderr, "XbSymbolDatabase: %s\n", msg); } -static void reg_cb(const char* library_str, uint32_t library_flag, uint32_t xref_index, const char* symbol_str, xbaddr address, uint32_t build_verison) +static void reg_cb(const char* library_str, + uint32_t library_flag, + uint32_t xref_index, + const char* symbol_str, + xbaddr address, + uint32_t build_version, + uint32_t symbol_type, + uint32_t call_type, + uint32_t param_count, + const XbSDBSymbolParam* param_list) { - printf("%.8s__%s = 0x%08x\n", library_str, symbol_str, address); + const char* symbol_name = bReverseMangle ? symbol_str : XbSymbolDatabase_SymbolReferenceToString(xref_index); + char buffer[64] = { 0 }; + char param_output[256] = { 0 }; + size_t param_size = 0; + if (bExtendInfo) { + switch (symbol_type) { + case symbol_variable: { + printf("%.8s__VAR__%s = 0x%08x\n", library_str, symbol_name, address); + return; + } + case symbol_function: { + for (unsigned i = 0; i < param_count; i++) { + if (param_list[i].type == param_void) { + break; + } + snprintf(buffer, ARRAY_SIZE(buffer), (i == 0 ? "%s %s" : ", %s %s"), XbSymbolDatabase_ParamToString(param_list[i].type), param_list[i].name); + size_t buffer_count = strnlen(buffer, ARRAY_SIZE(buffer)); + if (param_size + buffer_count >= ARRAY_SIZE(param_output)) { + printf("ERROR: param_size(%zu) + buffer_count(%zu) is too long to be stored in param_output(%zu)\n", param_size, buffer_count, ARRAY_SIZE(param_output)); + break; + } + strncat(param_output, buffer, buffer_count); + param_size += buffer_count; + } + printf("%.8s__FUN__%s__%s(%s) = 0x%08x\n", library_str, XbSymbolDatabase_CallingConventionToString(call_type), symbol_name, param_output, address); + return; + } + default: { + printf("%.8s__UNK__%s = 0x%08x\n", library_str, symbol_name, address); + return; + } + } + } + printf("%.8s__%s = 0x%08x\n", library_str, symbol_name, address); } int main(int argc, char const* argv[]) { - int verbose = 0; + bool bVerbose = false; const char* xbe_path = NULL; - int arg_off = 1; - - if (argc > 1 && strcmp(argv[1], "-verbose") == 0) { - verbose = 1; - arg_off++; + char const* arg_ = NULL; + + for (int i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + arg_ = argv[i] + 1; + if (strcmp(arg_, "v") == 0 || strcmp(arg_, "verbose") == 0) { + bVerbose = true; + } + else if (strcmp(arg_, "d") == 0 || strcmp(arg_, "demangle") == 0) { + bReverseMangle = false; + } + else if (strcmp(arg_, "e") == 0 || strcmp(arg_, "extendinfo") == 0) { + bExtendInfo = true; + } + } + else { + if (xbe_path == NULL) { + xbe_path = argv[i]; + } + else { + fprintf(stderr, "usage: %s xbefile [-v -verbose] [-d -demangle] [-e -extendinfo]\n", argv[0]); + return 1; + } + } } - if (arg_off >= argc) { - fprintf(stderr, "usage: %s [-verbose] xbefile\n", argv[0]); + if (xbe_path == NULL) { + fprintf(stderr, "usage: %s xbefile [-v -verbose] [-d -demangle] [-e -extendinfo]\n", argv[0]); return 1; } - else { - xbe_path = argv[arg_off]; - } unsigned int version = XbSymbolDatabase_LibraryVersion(); - if (verbose) { + if (bVerbose) { fprintf(stderr, "Database Version = %x\n", version); } @@ -47,62 +110,76 @@ int main(int argc, char const* argv[]) size_t size = ftell(fd); rewind(fd); - unsigned char* xbe = malloc(size); - assert(xbe != NULL); - size_t num_read = fread(xbe, 1, size, fd); - assert(num_read == size); - if (memcmp(xbe, "XBEH", 4) != 0) { + unsigned char* xbe_buffer = malloc(size); + if (xbe_buffer == NULL) { + fprintf(stderr, "unable to allocate memory for xbe buffer\n"); + return 1; + } + size_t xbe_size = fread(xbe_buffer, 1, size, fd); + assert(xbe_size == size); + if (memcmp(xbe_buffer, "XBEH", 4) != 0) { fprintf(stderr, "invalid xbe header\n"); - free(xbe); + free(xbe_buffer); return 1; } XbSymbolDatabase_SetOutputMessage(&msg_cb); - if (verbose) { + if (bVerbose) { XbSymbolDatabase_SetOutputVerbosity(XB_OUTPUT_MESSAGE_DEBUG); } - XbSDBLibraryHeader lib_hdr; - lib_hdr.count = XbSymbolDatabase_GenerateLibraryFilter(xbe, NULL); - lib_hdr.filters = malloc(lib_hdr.count * sizeof(XbSDBLibrary)); - assert(lib_hdr.filters != NULL); - XbSymbolDatabase_GenerateLibraryFilter(xbe, &lib_hdr); + XbSDBLibraryHeader lib_header = { + .count = XbSymbolDatabase_GenerateLibraryFilter(xbe_buffer, NULL), + .filters = malloc(lib_header.count * sizeof(XbSDBLibrary)) + }; + if (!lib_header.filters) { + fprintf(stderr, "unable to allocate memory for lib_header.filters \n"); + free(xbe_buffer); + return 1; + } + XbSymbolDatabase_GenerateLibraryFilter(xbe_buffer, &lib_header); - if (verbose) { - fprintf(stderr, "%u libraries\n", lib_hdr.count); - for (unsigned int i = 0; i < lib_hdr.count; i++) { - fprintf(stderr, " %.8s\n", lib_hdr.filters[i].name); + if (bVerbose) { + fprintf(stderr, "%u libraries\n", lib_header.count); + for (unsigned int i = 0; i < lib_header.count; i++) { + fprintf(stderr, " %.8s\n", lib_header.filters[i].name); } } - XbSDBSectionHeader sec_hdr; - sec_hdr.count = XbSymbolDatabase_GenerateSectionFilter(xbe, NULL, 1); - sec_hdr.filters = malloc(sec_hdr.count * sizeof(XbSDBSection)); - assert(sec_hdr.filters != NULL); - XbSymbolDatabase_GenerateSectionFilter(xbe, &sec_hdr, 1); + XbSDBSectionHeader sect_header = { + .count = XbSymbolDatabase_GenerateSectionFilter(xbe_buffer, NULL, 1), + .filters = malloc(sect_header.count * sizeof(XbSDBSection)) + }; + if (!sect_header.filters) { + fprintf(stderr, "unable to allocate memory for sect_header.filters \n"); + free(lib_header.filters); + free(xbe_buffer); + return 1; + } + XbSymbolDatabase_GenerateSectionFilter(xbe_buffer, §_header, 1); - if (verbose) { - fprintf(stderr, "%u sections\n", sec_hdr.count); - for (unsigned int i = 0; i < sec_hdr.count; i++) { - fprintf(stderr, " %.8s\n", sec_hdr.filters[i].name); + if (bVerbose) { + fprintf(stderr, "%u sections\n", sect_header.count); + for (unsigned int i = 0; i < sect_header.count; i++) { + fprintf(stderr, " %.8s\n", sect_header.filters[i].name); } } XbSymbolContextHandle ctx; bool status = XbSymbolDatabase_CreateXbSymbolContext(&ctx, reg_cb, - lib_hdr, - sec_hdr, - XbSymbolDatabase_GetKernelThunkAddress(xbe)); + lib_header, + sect_header, + XbSymbolDatabase_GetKernelThunkAddress(xbe_buffer)); assert(status == 1); XbSymbolContext_ScanManual(ctx); XbSymbolContext_ScanAllLibraryFilter(ctx); XbSymbolContext_RegisterXRefs(ctx); XbSymbolContext_Release(ctx); - free(lib_hdr.filters); - free(sec_hdr.filters); - free(xbe); + free(lib_header.filters); + free(sect_header.filters); + free(xbe_buffer); return 0; } diff --git a/src/lib/internal_db_version.h b/src/lib/internal_db_version.h index 9753b0bb..0f75cb60 100644 --- a/src/lib/internal_db_version.h +++ b/src/lib/internal_db_version.h @@ -53,8 +53,8 @@ void HashAssumedLOOVPA(unsigned int* Hash, const OOVPA* pAssumedLOOVPA) void HashOOVPATable(unsigned int* Hash, const OOVPATable* pTable) { // Part 1: function name string - if (pTable->szFuncName != NULL) { - hash_fnv1a(Hash, pTable->szFuncName, strlen(pTable->szFuncName)); + if (pTable->szSymbolName != NULL) { + hash_fnv1a(Hash, pTable->szSymbolName, strlen(pTable->szSymbolName)); } for (unsigned i = 0; i < pTable->count; i++) { diff --git a/src/lib/internal_functions.h b/src/lib/internal_functions.h index 7395b6e2..e7877bb7 100644 --- a/src/lib/internal_functions.h +++ b/src/lib/internal_functions.h @@ -133,7 +133,7 @@ static xbaddr internal_OOVPARevision_ConvertXRefRelativeAddrtToVirtAddr(iXbSymbo { if (pRevision->Oovpa->XRefCount == 0) { // Should not be triggered when there is no xref listed. - output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_ERROR, "%s (%hu) signature cannot have zero XRefCount when calling %s!", pSymbol->szFuncName, pRevision->Version, __func__); + output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_ERROR, "%s (%hu) signature cannot have zero XRefCount when calling %s!", pSymbol->szSymbolName, pRevision->Version, __func__); return 0; } @@ -150,7 +150,7 @@ static xbaddr internal_OOVPARevision_ConvertXRefRelativeAddrtToVirtAddr(iXbSymbo if (offset == -1) { // If no match is found, then contributor need to verify both OOVPA revision and xref index are correct. - output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_ERROR, "%s (%hu) signature does not have %s's xref entry!", pSymbol->szFuncName, pRevision->Version, xref_str); + output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_ERROR, "%s (%hu) signature does not have %s's xref entry!", pSymbol->szSymbolName, pRevision->Version, xref_str); return 0; } @@ -170,14 +170,14 @@ static inline void internal_SetXRefDatabase(iXbSymbolContext* pContext, eLibrary pContext->xref_database[XRef] = XRefAddr; // Besides initialization, this is the only code that writes values to XRefDataBase } -// locate the given function, searching within lower and upper bounds -static void* internal_LocateFunction(iXbSymbolContext* pContext, - eLibraryType iLibraryType, - const char* szFuncName, - uint16_t version, - OOVPA* Oovpa, - const XbSDBSection* pSection, - bool xref_first_pass) +// locate the given symbol, searching within lower and upper bounds +static void* internal_LocateSymbol(iXbSymbolContext* pContext, + eLibraryType iLibraryType, + const char* szSymbolName, + uint16_t version, + OOVPA* Oovpa, + const XbSDBSection* pSection, + bool xref_first_pass) { memptr_t buffer_upper = (memptr_t)pSection->buffer_lower + pSection->buffer_size; uintptr_t virt_start_relative = (uintptr_t)pSection->buffer_lower - pSection->xb_virt_addr; @@ -281,7 +281,7 @@ static void* internal_LocateFunction(iXbSymbolContext* pContext, if (symbol_address != NULL) { output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_WARN, "Duplicate symbol detection found for %s (%hu), 0x%08x vs 0x%08x", - szFuncName, version, symbol_address, cur - virt_start_relative); + szSymbolName, version, symbol_address, cur - virt_start_relative); } if (!pContext->scan_first_detect || (pContext->scan_first_detect && symbol_address == NULL)) { @@ -307,7 +307,7 @@ static void* internal_LocateFunction(iXbSymbolContext* pContext, else { output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_DEBUG, "Skipped symbol detection found for %s (%hu), 0x%08x", - szFuncName, version, cur - virt_start_relative); + szSymbolName, version, cur - virt_start_relative); } } } @@ -316,21 +316,26 @@ static void* internal_LocateFunction(iXbSymbolContext* pContext, return symbol_address; } -#define LocateFunctionCast(pContext, iLibraryType, szFuncName, version, Oovpa, pSection) \ - internal_LocateFunction(pContext, iLibraryType, szFuncName, version, (OOVPA*)Oovpa, pSection, false) +#define LocateSymbolCast(pContext, iLibraryType, szSymbolName, version, Oovpa, pSection) \ + internal_LocateSymbol(pContext, iLibraryType, szSymbolName, version, (OOVPA*)Oovpa, pSection, false) +// Old Method - However, the library's scan method doesn't have self-register support implemented yet. // NOTE: Do not use direct call to this function. Use internal_RegisterValidXRefAddr_M macro instead. static void internal_RegisterValidXRefAddr(iXbSymbolContext* pContext, const char* library_name, uint32_t library_flag, uint32_t XRefIndex, uint16_t version, - const char* symbol_name) + const char* symbol_name, + XbSDBSymbolType symbol_type, + XbSDBCallType call_type, + unsigned param_count, + const XbSDBSymbolParam* param_list) { xbaddr xSymbolAddr = pContext->xref_database[XRefIndex]; if (internal_IsXRefAddrValid(xSymbolAddr)) { - pContext->register_func(library_name, library_flag, XRefIndex, symbol_name, xSymbolAddr, version); + pContext->register_func(library_name, library_flag, XRefIndex, symbol_name, xSymbolAddr, version, symbol_type, call_type, param_count, param_list); } } @@ -339,12 +344,32 @@ static void internal_RegisterValidXRefAddr(iXbSymbolContext* pContext, SYMBOL_COUNTER_VALUE; \ internal_RegisterValidXRefAddr(__VA_ARGS__); +// New Method +static void internal_RegisterSelfValidXRefAddr(iXbSymbolContext* pContext, + const iXbSymbolLibrarySession* pLibrarySession, + const OOVPATable* pSymbol, + uint16_t version) +{ + const XbSDBLibrary* pLibrary = pLibrarySession->pLibrary; + + xbaddr xSymbolAddr = pContext->xref_database[pSymbol->xref]; + + if (internal_IsXRefAddrValid(xSymbolAddr)) { + pContext->register_func(pLibrary->name, pLibrary->flag, pSymbol->xref, pSymbol->szSymbolName, xSymbolAddr, version, pSymbol->symbol_type, pSymbol->call_type, pSymbol->param_count, pSymbol->param_list); + } +} + +// Old Method static void internal_RegisterXRef(iXbSymbolContext* pContext, const iXbSymbolLibrarySession* pLibrarySession, uint32_t XRefIndex, uint16_t version, const char* symbol_name, uint32_t symbol_addr, + XbSDBSymbolType symbol_type, + XbSDBCallType call_type, + unsigned param_count, + const XbSDBSymbolParam* param_list, bool do_register) { const XbSDBLibrary* pLibrary = pLibrarySession->pLibrary; @@ -365,25 +390,40 @@ static void internal_RegisterXRef(iXbSymbolContext* pContext, internal_SetXRefDatabase(pContext, pLibrarySession->iLibraryType, XRefIndex, symbol_addr); if (do_register && pContext->register_func != NULL) { - pContext->register_func(pLibrary->name, pLibrary->flag, XRefIndex, symbol_name, symbol_addr, version); + pContext->register_func(pLibrary->name, pLibrary->flag, XRefIndex, symbol_name, symbol_addr, version, symbol_type, call_type, param_count, param_list); } } +// New method +static void internal_RegisterXRefHelper(iXbSymbolContext* pContext, + const iXbSymbolLibrarySession* pLibrarySection, + const OOVPATable* pSymbol, + uint16_t version, + uint32_t symbol_addr, + bool do_register) +{ + internal_RegisterXRef(pContext, pLibrarySection, pSymbol->xref, version, pSymbol->szSymbolName, symbol_addr, pSymbol->symbol_type, pSymbol->call_type, pSymbol->param_count, pSymbol->param_list, do_register); +} + // (Old / Manual) method static void internal_RegisterSymbolManual(iXbSymbolContext* pContext, const iXbSymbolLibrarySession* pLibrarySession, - const XRefDatabase xref, + const XRefDatabase xref_index, uint16_t version, const char* symbol_name, - uint32_t symbol_addr) + uint32_t symbol_addr, + const XbSDBSymbolType symbol_type, + const XbSDBCallType call_type, + const unsigned param_count, + const XbSDBSymbolParam* param_list) { const XbSDBLibrary* pLibrary = pLibrarySession->pLibrary; // If XRef is not found, save it then register once. - if (pContext->xref_database[xref] == XREF_ADDR_UNDETERMINED) { - internal_SetXRefDatabase(pContext, pLibrarySession->iLibraryType, xref, symbol_addr); + if (internal_IsXRefAddrUnset(pContext->xref_database[xref_index])) { + internal_SetXRefDatabase(pContext, pLibrarySession->iLibraryType, xref_index, symbol_addr); if (pContext->register_func != NULL) { - pContext->register_func(pLibrary->name, pLibrary->flag, xref, symbol_name, symbol_addr, version); + pContext->register_func(pLibrary->name, pLibrary->flag, xref_index, symbol_name, symbol_addr, version, symbol_type, call_type, param_count, param_list); } } } @@ -401,11 +441,27 @@ static void internal_RegisterSymbol(iXbSymbolContext* pContext, uint32_t symbol_addr) { // forward to internal_RegisterSymbolManual to avoid need to copy paste between two identical functions. - internal_RegisterSymbolManual(pContext, pLibrarySession, pSymbol->xref, version, pSymbol->szFuncName, symbol_addr); + internal_RegisterSymbolManual(pContext, pLibrarySession, pSymbol->xref, version, pSymbol->szSymbolName, symbol_addr, pSymbol->symbol_type, pSymbol->call_type, pSymbol->param_count, pSymbol->param_list); } -static OOVPATable* internal_OOVPATable_FindSymbolFunction(SymbolDatabaseList* LibraryDB, const char* szFuncName, unsigned scan_type) +static OOVPATable* internal_OOVPATable_FindBySymbolName(SymbolDatabaseList* LibraryDB, const char* szSymbolName, unsigned scan_type) +{ + for (unsigned i = 0; i < LibraryDB->SymbolsTableCount; i++) { + + // Intended for optimization purpose without need to search every single symbol's string. + if ((scan_type & LibraryDB->SymbolsTable[i].scan_type) == 0) { + continue; + } + + if (strcmp(szSymbolName, LibraryDB->SymbolsTable[i].szSymbolName) == 0) { + return &LibraryDB->SymbolsTable[i]; + } + } + return NULL; +} + +static OOVPATable* internal_OOVPATable_FindByReference(SymbolDatabaseList* LibraryDB, uint16_t xref_index, unsigned scan_type) { for (unsigned i = 0; i < LibraryDB->SymbolsTableCount; i++) { @@ -414,26 +470,36 @@ static OOVPATable* internal_OOVPATable_FindSymbolFunction(SymbolDatabaseList* Li continue; } - if (strcmp(szFuncName, LibraryDB->SymbolsTable[i].szFuncName) == 0) { + if (LibraryDB->SymbolsTable[i].xref == xref_index) { return &LibraryDB->SymbolsTable[i]; } } return NULL; } +#define internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, xref) \ + pSymbol = internal_OOVPATable_FindByReference(pLibraryDB, XREF_##xref, DB_ST_MANUAL); \ + if (!pSymbol) { \ + output_message(&pContext->output, XB_OUTPUT_MESSAGE_ERROR, "Unable to find " #xref " entry in database..."); \ + return false; \ + } + +#define internal_RegisterSymbolHelper(pContext, pLibrarySession, pSymbol, szSymbolName, version, symbol_addr) \ + internal_RegisterSymbolManual(pContext, pLibrarySession, pSymbol->xref, version, szSymbolName, symbol_addr, pSymbol->symbol_type, pSymbol->call_type, pSymbol->param_count, pSymbol->param_list) + static void internal_OOVPATable_scan(iXbSymbolContext* pContext, const iXbSymbolLibrarySession* pLibrarySession, const XbSDBSection* pSection, bool xref_first_pass, const OOVPATable* pSymbol, OOVPARevision** pRevisionReturn, - void** pFuncReturn) + void** pAddressReturn) { const XbSDBLibrary* pLibrary = pLibrarySession->pLibrary; const eLibraryType iLibraryType = pLibrarySession->iLibraryType; OOVPARevision* pLastKnownRevision = NULL; - void* pLastKnownFunc = 0; + void* pLastKnownSymbolAddr = 0; for (unsigned i = 0; i < pSymbol->count; i++) { OOVPARevision* pRevision = &pSymbol->revisions[i]; @@ -442,29 +508,29 @@ static void internal_OOVPATable_scan(iXbSymbolContext* pContext, if (pContext->strict_build_version_limit && pLibrary->build_version < pRevision->Version) continue; - // Search for each function's location using the OOVPA - void* pFunc = internal_LocateFunction(pContext, iLibraryType, pSymbol->szFuncName, pRevision->Version, pRevision->Oovpa, pSection, xref_first_pass); - if (pFunc == 0) { + // Search for each symbol's location using the OOVPA + void* symbol_addr = internal_LocateSymbol(pContext, iLibraryType, pSymbol->szSymbolName, pRevision->Version, pRevision->Oovpa, pSection, xref_first_pass); + if (symbol_addr == 0) { continue; } - if (pFunc == pLastKnownFunc && pLastKnownRevision == pRevision - 1) { + if (symbol_addr == pLastKnownSymbolAddr && pLastKnownRevision == pRevision - 1) { output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_WARN, "Duplicate OOVPA signature found for %s, %hu vs %hu!", - pSymbol->szFuncName, pLastKnownRevision->Version, pRevision->Version); + pSymbol->szSymbolName, pLastKnownRevision->Version, pRevision->Version); } if (pLibrary->build_version < pRevision->Version) { output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_WARN, "OOVPA signature is too high for [%hu] %s!", - pRevision->Version, pSymbol->szFuncName); + pRevision->Version, pSymbol->szSymbolName); } - pLastKnownFunc = pFunc; + pLastKnownSymbolAddr = symbol_addr; pLastKnownRevision = pRevision; } - *pFuncReturn = pLastKnownFunc; + *pAddressReturn = pLastKnownSymbolAddr; *pRevisionReturn = pLastKnownRevision; } @@ -504,7 +570,7 @@ static void internal_OOVPA_scan(iXbSymbolContext* pContext, } OOVPARevision* pLastKnownRevision = NULL; - void* pLastKnownFunc = 0; + void* lastKnownSymbolAddr = 0; internal_OOVPATable_scan(pContext, pLibrarySession, @@ -512,27 +578,27 @@ static void internal_OOVPA_scan(iXbSymbolContext* pContext, xref_first_pass, pSymbol, &pLastKnownRevision, - &pLastKnownFunc); + &lastKnownSymbolAddr); if (pLastKnownRevision != NULL) { - internal_OOVPA_register(pContext, pSymbol, pLastKnownRevision, pLibrarySession, (xbaddr)(uintptr_t)pLastKnownFunc); + internal_OOVPA_register(pContext, pSymbol, pLastKnownRevision, pLibrarySession, (xbaddr)(uintptr_t)lastKnownSymbolAddr); } } } // Intended design for manual scan without register. Could be expand -static void* internal_LocateSymbolFunction(iXbSymbolContext* pContext, - const iXbSymbolLibrarySession* pLibrarySession, - SymbolDatabaseList* pLibraryDB, - const char* szFuncName, - const XbSDBSection* pSection, - bool xref_first_pass, - OOVPATable** pSymbol, - OOVPARevision** pOOVPARevision) +static void* internal_LocateSymbolScan(iXbSymbolContext* pContext, + const iXbSymbolLibrarySession* pLibrarySession, + SymbolDatabaseList* pLibraryDB, + const char* szSymbolName, + const XbSDBSection* pSection, + bool xref_first_pass, + OOVPATable** pSymbol, + OOVPARevision** pOOVPARevision) { - void* pFunc = 0; + void* symbol_addr = 0; OOVPARevision* pRevisionLocal = NULL; - OOVPATable* pSymbolLocal = internal_OOVPATable_FindSymbolFunction(pLibraryDB, szFuncName, DB_ST_MANUAL); + OOVPATable* pSymbolLocal = internal_OOVPATable_FindBySymbolName(pLibraryDB, szSymbolName, DB_ST_MANUAL); if (pSymbolLocal) { internal_OOVPATable_scan(pContext, @@ -541,7 +607,7 @@ static void* internal_LocateSymbolFunction(iXbSymbolContext* pContext, xref_first_pass, pSymbolLocal, &pRevisionLocal, - &pFunc); + &symbol_addr); } if (pSymbol) { @@ -551,7 +617,7 @@ static void* internal_LocateSymbolFunction(iXbSymbolContext* pContext, if (pOOVPARevision) { *pOOVPARevision = pRevisionLocal; } - return pFunc; + return symbol_addr; } static eLibraryType internal_GetLibraryType(uint32_t library) diff --git a/src/lib/internal_tests.h b/src/lib/internal_tests.h index 1bb22365..4b03ed77 100644 --- a/src/lib/internal_tests.h +++ b/src/lib/internal_tests.h @@ -46,7 +46,7 @@ static int OOVPAErrorString(char* bufferTemp, SymbolDatabaseList* data, OOVPATab // Convert active symbol pointer to an index base on starting point of SymbolsTable. unsigned int sym_index = (unsigned int)(symbol - data->SymbolsTable); - return sprintf(bufferTemp, "OOVPATable db=%2u, i=[%4u], b=%4hu s=%s[%4u]", db_index, sym_index, symbol->revisions[index].Version, symbol->szFuncName, index); + return sprintf(bufferTemp, "OOVPATable db=%2u, i=[%4u], b=%4hu s=%s[%4u]", db_index, sym_index, symbol->revisions[index].Version, symbol->szSymbolName, index); } static void SymbolDatabaseVerifyContext_OOVPAError(SymbolDatabaseVerifyContext* context, char* format, ...) @@ -273,7 +273,7 @@ static unsigned int SymbolDatabaseVerifyContext_VerifyDatabase(SymbolDatabaseVer if (context->against.data == NULL) { // For safety check purpose if (internal_IsXRefUnset(data->SymbolsTable[s].xref)) { - output_message_format(&context->output, XB_OUTPUT_MESSAGE_ERROR, "%s cannot have unset xref.", data->SymbolsTable[s].szFuncName); + output_message_format(&context->output, XB_OUTPUT_MESSAGE_ERROR, "%s cannot have unset xref.", data->SymbolsTable[s].szSymbolName); error_count++; } } diff --git a/src/lib/libXbSymbolDatabase.c b/src/lib/libXbSymbolDatabase.c index 71820f2b..f0dc4fd8 100644 --- a/src/lib/libXbSymbolDatabase.c +++ b/src/lib/libXbSymbolDatabase.c @@ -387,6 +387,66 @@ const char* XbSymbolDatabase_LibraryToString(uint32_t library_flag) } } +static const char* const param_type_str[] = { +#define PARAM_TYPE__0(type) #type, +#define PARAM_TYPE_64(type) #type, +#define PARAM_TYPE_32(type) #type, +#define PARAM_TYPE_16_(type) #type, +#define PARAM_TYPE__8_(type) #type, +#include +#undef PARAM_TYPE__0 +#undef PARAM_TYPE_64 +#undef PARAM_TYPE_32 +#undef PARAM_TYPE_16_ +#undef PARAM_TYPE__8_ +}; + +const char* XbSymbolDatabase_ParamToString(uint32_t param_type) +{ + if (param_type >= param_max) { + return param_type_str[param_unk]; + } + + return param_type_str[param_type]; +} + +static const char* const call_type_str[] = { +#define CALL_(type) #type, +#include +#undef CALL_ +}; + +const char* XbSymbolDatabase_CallingConventionToString(uint32_t call_type) +{ + if (call_type >= call_max) { + return call_type_str[call_unknown]; + } + + return call_type_str[call_type]; +} + +const char* xref_str[] = { +#define XREF_SYMBOL(e) #e, +#include "xref/d3d8.def" +#include "xref/d3d8ltcg.def" +#include "xref/dsound.def" +#include "xref/jvs.def" +#include "xref/xacteng.def" +#include "xref/xapilib.def" +#include "xref/xgraphic.def" +#include "xref/xnet.def" +#include "xref/xonline.def" +#undef XREF_SYMBOL +}; + +const char* XbSymbolDatabase_SymbolReferenceToString(uint32_t xref_index) +{ + if (xref_index <= XREF_KT_COUNT || XREF_COUNT <= xref_index) { + return NULL; + } + return xref_str[XREF_API_TO_PUBLIC_INDEX(xref_index)]; +} + // NOTE: Library string must return only one specific flag, cannot make a mix combo flags. // Otherwise, internal scan and XbSymbolDatabase_LibraryToString will not function correctly. uint32_t XbSymbolDatabase_LibraryToFlag(const char* library_name) @@ -833,17 +893,17 @@ bool XbSymbolDatabase_CreateXbSymbolContext(XbSymbolContextHandle* ppHandle, // D3D pContext->xref_database[XREF_D3DTSS_TEXCOORDINDEX] = XREF_ADDR_DERIVE; //In use pContext->xref_database[XREF_D3D_g_Stream] = XREF_ADDR_DERIVE; //In use - pContext->xref_database[XREF_OFFSET_D3DDevice__m_PixelShader] = XREF_ADDR_DERIVE; // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_Textures] = XREF_ADDR_DERIVE; // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_Palettes] = XREF_ADDR_DERIVE; // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_RenderTarget] = XREF_ADDR_DERIVE; // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_DepthStencil] = XREF_ADDR_DERIVE; // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_VerticalBlankEvent] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF_D3DDevice__m_PixelShader_OFFSET] = XREF_ADDR_DERIVE; // + pContext->xref_database[XREF_D3DDevice__m_Textures_OFFSET] = XREF_ADDR_DERIVE; // + pContext->xref_database[XREF_D3DDevice__m_Palettes_OFFSET] = XREF_ADDR_DERIVE; // + pContext->xref_database[XREF_D3DDevice__m_RenderTarget_OFFSET] = XREF_ADDR_DERIVE; // + pContext->xref_database[XREF_D3DDevice__m_DepthStencil_OFFSET] = XREF_ADDR_DERIVE; // + pContext->xref_database[XREF_D3DDevice__m_VerticalBlankEvent_OFFSET] = XREF_ADDR_DERIVE; //In use #if 0 // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_SwapCallback] = XREF_ADDR_UNDETERMINED; //In use // Manual check only. - pContext->xref_database[XREF_OFFSET_D3DDevice__m_VBlankCallback] = XREF_ADDR_UNDETERMINED; //In use // Manual check only. + pContext->xref_database[XREF_D3DDevice__m_SwapCallback_OFFSET] = XREF_ADDR_UNDETERMINED; //In use // Manual check only. + pContext->xref_database[XREF_D3DDevice__m_VBlankCallback_OFFSET] = XREF_ADDR_UNDETERMINED; //In use // Manual check only. #endif // - pContext->xref_database[XREF_OFFSET_D3DDevice__m_VertexShader] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF_D3DDevice__m_VertexShader_OFFSET] = XREF_ADDR_DERIVE; //In use // JVS // pContext->xref_database[XREF_JVS_g_pPINSA] = XREF_ADDR_DERIVE; //In use pContext->xref_database[XREF_JVS_g_pPINSB] = XREF_ADDR_DERIVE; //In use @@ -856,11 +916,11 @@ bool XbSymbolDatabase_CreateXbSymbolContext(XbSymbolContextHandle* ppHandle, pContext->xref_database[XREF_g_DeviceTypeInfoTableEnd] = XREF_ADDR_DERIVE; //In use pContext->xref_database[XREF_g_XapiAltLett_MU] = XREF_ADDR_DERIVE; //In use pContext->xref_database[XREF_g_XapiMountedMUs] = XREF_ADDR_DERIVE; //In use - pContext->xref_database[XREF_OFFSET_XapiCurrentFiber] = XREF_ADDR_DERIVE; //In use - pContext->xref_database[XREF_OFFSET_XapiLastErrorCode] = XREF_ADDR_DERIVE; //In use - pContext->xref_database[XREF_OFFSET_XapiThreadFiberData] = XREF_ADDR_DERIVE; //In use - pContext->xref_database[XREF_XAPI__tls_array] = XREF_ADDR_DERIVE; //In use - pContext->xref_database[XREF_XAPI__tls_index] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF_XapiCurrentFiber_OFFSET] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF_XapiLastErrorCode_OFFSET] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF_XapiThreadFiberData_OFFSET] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF__tls_array] = XREF_ADDR_DERIVE; //In use + pContext->xref_database[XREF__tls_index] = XREF_ADDR_DERIVE; //In use pContext->xref_database[XREF_XapiThreadNotifyRoutineList] = XREF_ADDR_DERIVE; //In use pContext->xref_database[XREF_XGetSectionSize] = XREF_ADDR_DERIVE; //In use // clang-format on diff --git a/src/lib/manual_d3d8__ltcg.h b/src/lib/manual_d3d8__ltcg.h index f9df056c..f199b141 100644 --- a/src/lib/manual_d3d8__ltcg.h +++ b/src/lib/manual_d3d8__ltcg.h @@ -359,16 +359,16 @@ static bool manual_scan_section_dx8_register_D3DRS_vars(iXbSymbolContext* pConte output_message(&pContext->output, XB_OUTPUT_MESSAGE_DEBUG, buffer_str); } } - internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, render_state_i.xref, render_state_i.version, render_state_i.name); + internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, render_state_i.xref, render_state_i.version, render_state_i.name, symbol_variable, call_none, 0, NULL); } RenderState_iLib++; } } // Manual register RenderState sections. - internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_RenderState, 0, "D3D_g_RenderState"); - internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_ComplexRenderState, 0, "D3D_g_ComplexRenderState"); - internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_DeferredRenderState, 0, "D3D_g_DeferredRenderState"); + internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_RenderState, 0, "D3D_g_RenderState", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_ComplexRenderState, 0, "D3D_g_ComplexRenderState", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_DeferredRenderState, 0, "D3D_g_DeferredRenderState", symbol_variable, call_none, 0, NULL); return true; } @@ -384,14 +384,14 @@ static bool manual_scan_section_dx8_register_D3DRS(iXbSymbolContext* pContext, // First, we need to find D3DDevice_SetRenderState_Simple symbol. xbaddr D3DDevice_SetRenderState_Simple = pContext->xref_database[XREF_D3DDevice_SetRenderState_Simple]; if (internal_IsXRefAddrUnset(D3DDevice_SetRenderState_Simple)) { - xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DDevice_SetRenderState_Simple", - pSection, - true, - &pSymbol, - &pRevision); + xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DDevice_SetRenderState_Simple", + pSection, + true, + &pSymbol, + &pRevision); // If not found, skip the rest of the scan. if (xFuncAddr == 0) { return false; @@ -407,14 +407,14 @@ static bool manual_scan_section_dx8_register_D3DRS(iXbSymbolContext* pContext, if (internal_IsXRefAddrUnset(D3D_g_RenderState)) { // Below xref is used to obtain from D3DDevice_SetRenderState(Not)Inline signatures. pContext->xref_database[XREF_D3D_g_RenderState] = XREF_ADDR_DERIVE; - xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DDevice_SetRenderStateNotInline", - pSection, - true, - &pSymbol, - &pRevision); + xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DDevice_SetRenderStateNotInline", + pSection, + true, + &pSymbol, + &pRevision); if (xFuncAddr == 0) { // If not found, then check if library is not LTCG. if (pLibrarySession->pLibrary->flag == XbSymbolLib_D3D8) { @@ -422,14 +422,14 @@ static bool manual_scan_section_dx8_register_D3DRS(iXbSymbolContext* pContext, return false; } // Otherwise, let's look up for D3DDevice_SetRenderStateInline__GenericFragment which is NOT a symbol. - xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DDevice_SetRenderStateInline__GenericFragment", - pSection, - true, - &pSymbol, - &pRevision); + xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DDevice_SetRenderStateInline__GenericFragment", + pSection, + true, + &pSymbol, + &pRevision); // If not found, skip the rest of the scan. if (xFuncAddr == 0) { @@ -485,14 +485,14 @@ static bool manual_scan_section_dx8_register_D3DCRS(iXbSymbolContext* pContext, pContext->xref_database[XREF_D3DRS_FillMode] = XREF_ADDR_DERIVE; pContext->xref_database[XREF_D3DRS_BackFillMode] = XREF_ADDR_DERIVE; pContext->xref_database[XREF_D3DRS_TwoSidedLighting] = XREF_ADDR_DERIVE; - xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DDevice_SetRenderState_FillMode", - pSection, - false, - &pSymbol, - &pRevision); + xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DDevice_SetRenderState_FillMode", + pSection, + false, + &pSymbol, + &pRevision); // If not found, skip the rest of the scan. if (xFuncAddr == 0) { pContext->xref_database[XREF_D3DRS_FillMode] = XREF_ADDR_UNDETERMINED; @@ -532,14 +532,14 @@ static bool manual_scan_section_dx8_register_D3DRS_end_of_list(iXbSymbolContext* pContext->xref_database[XREF_D3DRS_RopZCmpAlwaysRead] = XREF_ADDR_DERIVE; pContext->xref_database[XREF_D3DRS_RopZRead] = XREF_ADDR_DERIVE; pContext->xref_database[XREF_D3DRS_DoNotCullUncompressed] = XREF_ADDR_DERIVE; - xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3D_CommonSetDebugRegisters", - pSection, - false, - &pSymbol, - &pRevision); + xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3D_CommonSetDebugRegisters", + pSection, + false, + &pSymbol, + &pRevision); // If not found, skip the rest of the scan. if (xFuncAddr == 0) { pContext->xref_database[XREF_D3D_g_pDevice] = XREF_ADDR_UNDETERMINED; @@ -550,6 +550,17 @@ static bool manual_scan_section_dx8_register_D3DRS_end_of_list(iXbSymbolContext* } internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, pRevision->Version, xFuncAddr); + + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3D_g_pDevice); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 0); +#if 0 // TODO: Fix this after #208 pull request is merged. + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3DRS_RopZCmpAlwaysRead); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 0); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3DRS_RopZRead); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 0); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3DRS_DoNotCullUncompressed); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 0); +#endif } return true; } @@ -570,14 +581,14 @@ static bool manual_scan_section_dx8_register_D3DRS_Stencils_and_Occlusion(iXbSym pContext->xref_database[XREF_D3DRS_StencilFail] = XREF_ADDR_DERIVE; pContext->xref_database[XREF_D3DRS_OcclusionCullEnable] = XREF_ADDR_DERIVE; pContext->xref_database[XREF_D3DRS_StencilCullEnable] = XREF_ADDR_DERIVE; - xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DRS_Stencils_and_Occlusion__GenericFragment", - pSection, - false, - &pSymbol, - &pRevision); + xbaddr xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DRS_Stencils_and_Occlusion__GenericFragment", + pSection, + false, + &pSymbol, + &pRevision); // If not found, skip the rest of the scan. if (xFuncAddr == 0) { pContext->xref_database[XREF_D3DRS_StencilEnable] = XREF_ADDR_UNDETERMINED; @@ -626,7 +637,7 @@ static void manual_scan_section_dx8_register_D3DTSS(iXbSymbolContext* pContext, uint32_t EmuD3DDeferredTextureState = DerivedAddr_D3DTSS_TEXCOORDINDEX - Decrement; - internal_RegisterXRef(pContext, pLibrarySession, XREF_D3D_g_DeferredTextureState, 0, "D3D_g_DeferredTextureState", EmuD3DDeferredTextureState, true); + internal_RegisterXRef(pContext, pLibrarySession, XREF_D3D_g_DeferredTextureState, 0, "D3D_g_DeferredTextureState", EmuD3DDeferredTextureState, symbol_variable, call_none, 0, NULL, true); } static void manual_scan_section_dx8_register_stream(iXbSymbolContext* pContext, @@ -651,7 +662,7 @@ static void manual_scan_section_dx8_register_stream(iXbSymbolContext* pContext, // Now that both Derived XREF and OOVPA-based function-contents match, // correct base-address (because "g_Stream" is actually "g_Stream"+8") : Derived_g_Stream -= 8; - pContext->register_func(pLibrary->name, pLibrary->flag, XREF_D3D_g_Stream, "D3D_g_Stream", Derived_g_Stream, 0); + pContext->register_func(pLibrary->name, pLibrary->flag, XREF_D3D_g_Stream, "D3D_g_Stream", Derived_g_Stream, 0, symbol_variable, call_none, 0, NULL); } // Has dependency on D3D_g_pDevice xref. @@ -663,6 +674,7 @@ static bool manual_scan_section_dx8_register_callbacks(iXbSymbolContext* pContex // Generic usage memptr_t pFunc = 0; xbaddr xSymbolAddr = 0; + OOVPATable* pSymbol = NULL; const eLibraryType iLibraryType = pLibrarySession->iLibraryType; // Manual check require for able to self-register these symbols: // * D3DDevice_SetSwapCallback @@ -671,32 +683,36 @@ static bool manual_scan_section_dx8_register_callbacks(iXbSymbolContext* pContex // First, check if D3D_g_pDevice is found. if (pContext->xref_database[XREF_D3D_g_pDevice] != XREF_ADDR_DERIVE && // Then, check at least one of symbol's member variable is not found. - pContext->xref_database[XREF_OFFSET_D3DDevice__m_SwapCallback] == XREF_ADDR_UNDETERMINED) { + pContext->xref_database[XREF_D3DDevice__m_SwapCallback_OFFSET] == XREF_ADDR_UNDETERMINED) { // Scan if event handle variable is not yet derived. - if (pContext->xref_database[XREF_OFFSET_D3DDevice__m_VerticalBlankEvent] == XREF_ADDR_DERIVE) { - xSymbolAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DDevice__m_VerticalBlankEvent__GenericFragment", - pSection, - true, - NULL, - NULL); + if (pContext->xref_database[XREF_D3DDevice__m_VerticalBlankEvent_OFFSET] == XREF_ADDR_DERIVE) { + xSymbolAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DDevice__m_VerticalBlankEvent__GenericFragment", + pSection, + true, + NULL, + NULL); } // We are not registering D3DDevice__m_VerticalBlankEvent__GenericFragment itself, as it is NOT a symbol. // If not found, skip manual register. - if (pContext->xref_database[XREF_OFFSET_D3DDevice__m_VerticalBlankEvent] == XREF_ADDR_DERIVE) { + if (pContext->xref_database[XREF_D3DDevice__m_VerticalBlankEvent_OFFSET] == XREF_ADDR_DERIVE) { return false; } // Finally, manual register the symbol variables. - xSymbolAddr = pContext->xref_database[XREF_OFFSET_D3DDevice__m_VerticalBlankEvent]; - internal_SetXRefDatabase(pContext, iLibraryType, XREF_OFFSET_D3DDevice__m_SwapCallback, xSymbolAddr - 8); - internal_SetXRefDatabase(pContext, iLibraryType, XREF_OFFSET_D3DDevice__m_VBlankCallback, xSymbolAddr - 4); + xSymbolAddr = pContext->xref_database[XREF_D3DDevice__m_VerticalBlankEvent_OFFSET]; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3DDevice__m_VerticalBlankEvent_OFFSET); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 0); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3DDevice__m_SwapCallback_OFFSET); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 0, xSymbolAddr - 8); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, D3DDevice__m_VBlankCallback_OFFSET); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 0, xSymbolAddr - 4); } // If D3D_g_pDevice is not found, the scan is not complete // and will continue scan to next given section. @@ -762,14 +778,14 @@ static bool manual_scan_section_dx8(iXbSymbolContext* pContext, pFunc = 0; } else { - pFunc = internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "D3DDevice_SetTextureState_TexCoordIndex", - pSection, - true, - NULL, - NULL); + pFunc = internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "D3DDevice_SetTextureState_TexCoordIndex", + pSection, + true, + NULL, + NULL); // TODO: Can we integrate below into XRef? if (pLibrary->build_version < 4034) { @@ -791,59 +807,59 @@ static bool manual_scan_section_dx8(iXbSymbolContext* pContext, // - D3DDevice_SetTextureState_TexCoordIndex (1944, 1958) // - D3DDevice_SetTextureState_TexCoordIndex_0 (2039, 2058) // - D3DDevice_SetTextureState_TexCoordIndex_4 (2040, 2045, 2058, 2052) - pFunc = internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "", - pSection, - false, - pOOVPARevision); + pFunc = internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "", + pSection, + false, + pOOVPARevision); //*/ // verified for 3925 - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_0", 2039, - &D3DDevice_SetTextureState_TexCoordIndex_0_2039, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2", 2039, + &D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2_2039, pSection); pXRefOffset = 0x08; if (pFunc == 0) { // verified for 4039 - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4", 2040, - &D3DDevice_SetTextureState_TexCoordIndex_4_2040, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1", 2040, + &D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1_2040, pSection); pXRefOffset = 0x14; } if (pFunc == 0) { // verified for 4432 - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex", 1944, - &D3DDevice_SetTextureState_TexCoordIndex_1944, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex", 1944, + &D3DDevice_SetTextureState_TexCoordIndex_1944, pSection); pXRefOffset = 0x19; } if (pFunc == 0) { // verified for 4531 - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4", 2045, - &D3DDevice_SetTextureState_TexCoordIndex_4_2045, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1", 2045, + &D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1_2045, pSection); pXRefOffset = 0x14; } if (pFunc == 0) { // verified for 4627 and higher - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4", 2058, - &D3DDevice_SetTextureState_TexCoordIndex_4_2058, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1", 2058, + &D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1_2058, pSection); pXRefOffset = 0x14; } if (pFunc == 0) { // verified for 4627 and higher - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex", 1958, - &D3DDevice_SetTextureState_TexCoordIndex_1958, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex", 1958, + &D3DDevice_SetTextureState_TexCoordIndex_1958, pSection); pXRefOffset = 0x19; } if (pFunc == 0) { // verified for World Series Baseball 2K3 - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4", 2052, - &D3DDevice_SetTextureState_TexCoordIndex_4_2052, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1", 2052, + &D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1_2052, pSection); pXRefOffset = 0x15; } if (pFunc == 0) { // verified for Ski Racing 2006 - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_0", 2058, - &D3DDevice_SetTextureState_TexCoordIndex_0_2058, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2", 2058, + &D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2_2058, pSection); pXRefOffset = 0x15; } } @@ -864,42 +880,42 @@ static bool manual_scan_section_dx8(iXbSymbolContext* pContext, if (pLibrary->flag == XbSymbolLib_D3D8) { if (pLibrary->build_version >= 4034) { OOVPA_version = 4034; - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetStreamSource", 4034, - &D3DDevice_SetStreamSource_4034, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetStreamSource", 4034, + &D3DDevice_SetStreamSource_4034, pSection); } else { OOVPA_version = 3911; - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetStreamSource", 3911, - &D3DDevice_SetStreamSource_3911, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetStreamSource", 3911, + &D3DDevice_SetStreamSource_3911, pSection); iCodeOffsetFor_g_Stream = 0x23; // verified for 3911 } } else { // D3D8LTCG if (pLibrary->build_version > 4039) { OOVPA_version = 4034; // TODO Verify - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetStreamSource", 1044, - &D3DDevice_SetStreamSource_1044, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetStreamSource", 1044, + &D3DDevice_SetStreamSource_1044, pSection); } if (pFunc == 0) { // LTCG specific OOVPA_version = 4034; // TODO Verify - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetStreamSource_4", 2058, - &D3DDevice_SetStreamSource_4_2058, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetStreamSource_4__LTCG_eax1_ebx2", 2058, + &D3DDevice_SetStreamSource_4__LTCG_eax1_ebx2_2058, pSection); iCodeOffsetFor_g_Stream = 0x1E; } if (pFunc == 0) { // verified for 4039 OOVPA_version = 4034; - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetStreamSource_8", 2040, - &D3DDevice_SetStreamSource_8_2040, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetStreamSource_8__LTCG_eax1", 2040, + &D3DDevice_SetStreamSource_8__LTCG_eax1_2040, pSection); iCodeOffsetFor_g_Stream = 0x23; } if (pFunc == 0) { // verified for 3925 OOVPA_version = 3911; - pFunc = LocateFunctionCast(pContext, iLibraryType, "D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber", 1039, - &D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber_1039, pSection); + pFunc = LocateSymbolCast(pContext, iLibraryType, "D3DDevice_SetStreamSource_8__LTCG_edx1", 2039, + &D3DDevice_SetStreamSource_8__LTCG_edx1_2039, pSection); iCodeOffsetFor_g_Stream = 0x47; } } @@ -918,13 +934,7 @@ static bool manual_scan_section_dx8(iXbSymbolContext* pContext, static inline void manual_register_d3d8__ltcg(iXbSymbolContext* pContext) { - xbaddr xD3D_pDeviceAddr = pContext->xref_database[XREF_D3D_g_pDevice]; - if (internal_IsXRefAddrValid(xD3D_pDeviceAddr)) { - internal_RegisterValidXRefAddr_M(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3D_g_pDevice, 0, "D3D_g_pDevice"); - // Register offsets of D3DDevice's members - internal_RegisterValidXRefAddr_M(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_OFFSET_D3DDevice__m_SwapCallback, 0, "D3DDevice__m_SwapCallback_OFFSET"); - internal_RegisterValidXRefAddr_M(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_OFFSET_D3DDevice__m_VBlankCallback, 0, "D3DDevice__m_VBlankCallback_OFFSET"); - internal_RegisterValidXRefAddr_M(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_OFFSET_D3DDevice__m_VertexShader, 0, "D3DDevice__m_VertexShader_OFFSET"); - internal_RegisterValidXRefAddr_M(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_OFFSET_D3DDevice__m_VerticalBlankEvent, 0, "D3DDevice__m_VerticalBlankEvent_OFFSET"); - } + // TODO: Require to be here until self register functionality is implement. + internal_RegisterValidXRefAddr(pContext, Lib_D3D8, XbSymbolLib_D3D8, XREF_D3DDevice__m_VertexShader_OFFSET, 0, "D3DDevice__m_VertexShader_OFFSET", symbol_variable, call_none, 0, NULL); + // NOTE: D3DDevice__m_PixelShader_OFFSET is not accessible to the user. } diff --git a/src/lib/manual_dsound.h b/src/lib/manual_dsound.h index efbe420c..c4b0d244 100644 --- a/src/lib/manual_dsound.h +++ b/src/lib/manual_dsound.h @@ -44,14 +44,15 @@ static bool manual_scan_section_dsound(iXbSymbolContext* pContext, // Scan for DirectSoundStream's constructor function. if (pContext->xref_database[XREF_CDirectSoundStream_Constructor] == XREF_ADDR_UNDETERMINED) { - xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "CDirectSoundStream_Constructor", - pSection, - true, - &pSymbol, - NULL); + // TODO: Lookup xref index instead of symbol name. + xFuncAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "CDirectSoundStream_Constructor", + pSection, + true, + &pSymbol, + NULL); // If not found, skip the rest of the scan. if (xFuncAddr == 0) { @@ -62,9 +63,9 @@ static bool manual_scan_section_dsound(iXbSymbolContext* pContext, // TODO: If possible, integrate into the OOVPA structure. internal_RegisterXRef(pContext, pLibrarySession, XREF_DSS_VOICE_VTABLE, 3911, - NULL, *(xbaddr*)(virt_start_relative + xFuncAddr + 0x14), false); + NULL, *(xbaddr*)(virt_start_relative + xFuncAddr + 0x14), symbol_variable, call_none, 0, NULL, false); internal_RegisterXRef(pContext, pLibrarySession, XREF_DSS_STREAM_VTABLE, 3911, - NULL, *(xbaddr*)(virt_start_relative + xFuncAddr + 0x1B), false); + NULL, *(xbaddr*)(virt_start_relative + xFuncAddr + 0x1B), symbol_variable, call_none, 0, NULL, false); } // Verify both variables are already set from the scan function above. @@ -81,33 +82,34 @@ static bool manual_scan_section_dsound(iXbSymbolContext* pContext, if (xblower <= vtable && vtable < xbupper) { pFuncAddr = (memptr_t)virt_start_relative + vtable; + OOVPATable* pSymbol = NULL; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_AddRef); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, *(uint32_t*)(pFuncAddr + 0 * 4)); - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_AddRef, 3911, - "CDirectSoundStream_AddRef", *(uint32_t*)(pFuncAddr + 0 * 4)); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_Release); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, *(uint32_t*)(pFuncAddr + 1 * 4)); - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_Release, 3911, - "CDirectSoundStream_Release", *(uint32_t*)(pFuncAddr + 1 * 4)); - - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_GetInfo, 3911, - "CDirectSoundStream_GetInfo", *(uint32_t*)(pFuncAddr + 2 * 4)); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_GetInfo); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, *(uint32_t*)(pFuncAddr + 2 * 4)); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_GetStatus); + // TODO: May need further investigation with Cxbx-Reloaded's source code for possible reasoning why this method is used. + SYMBOL_COUNTER_VALUE; // Force increase by one symbol counter since we do not have both revisions difference in the OOVPA database. if (pLibrary->build_version < 4134) { - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_GetStatus, 3911, - "CDirectSoundStream_GetStatus__r1", *(uint32_t*)(pFuncAddr + 3 * 4)); + internal_RegisterSymbolHelper(pContext, pLibrarySession, pSymbol, "CDirectSoundStream_GetStatus__r1", 3911, *(uint32_t*)(pFuncAddr + 3 * 4)); } else { - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_GetStatus, 4134, - "CDirectSoundStream_GetStatus__r2", *(uint32_t*)(pFuncAddr + 3 * 4)); + internal_RegisterSymbolHelper(pContext, pLibrarySession, pSymbol, "CDirectSoundStream_GetStatus__r2", 4134, *(uint32_t*)(pFuncAddr + 3 * 4)); } - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_Process, 3911, - "CDirectSoundStream_Process", *(uint32_t*)(pFuncAddr + 4 * 4)); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_Process); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, *(uint32_t*)(pFuncAddr + 4 * 4)); - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_Discontinuity, 3911, - "CDirectSoundStream_Discontinuity", *(uint32_t*)(pFuncAddr + 5 * 4)); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_Discontinuity); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, *(uint32_t*)(pFuncAddr + 5 * 4)); - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_CDirectSoundStream_Flush, 3911, - "CDirectSoundStream_Flush", *(uint32_t*)(pFuncAddr + 6 * 4)); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, CDirectSoundStream_Flush); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, *(uint32_t*)(pFuncAddr + 6 * 4)); // NOTE: it is possible to manual add GetInfo, GetStatus, Process, Discontinuity, // and Flush functions. diff --git a/src/lib/manual_jvs.h b/src/lib/manual_jvs.h index 0c8c3653..422ea9b3 100644 --- a/src/lib/manual_jvs.h +++ b/src/lib/manual_jvs.h @@ -24,6 +24,6 @@ static inline void manual_register_jvs(iXbSymbolContext* pContext) { - internal_RegisterValidXRefAddr_M(pContext, Lib_JVS, XbSymbolLib_JVS, XREF_JVS_g_pPINSA, 4831, "JVS_g_pPINSA"); - internal_RegisterValidXRefAddr_M(pContext, Lib_JVS, XbSymbolLib_JVS, XREF_JVS_g_pPINSB, 4831, "JVS_g_pPINSB"); + internal_RegisterValidXRefAddr(pContext, Lib_JVS, XbSymbolLib_JVS, XREF_JVS_g_pPINSA, 4831, "JVS_g_pPINSA", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_JVS, XbSymbolLib_JVS, XREF_JVS_g_pPINSB, 4831, "JVS_g_pPINSB", symbol_variable, call_none, 0, NULL); } diff --git a/src/lib/manual_xapilib.h b/src/lib/manual_xapilib.h index 21da07b8..6efb12bb 100644 --- a/src/lib/manual_xapilib.h +++ b/src/lib/manual_xapilib.h @@ -37,14 +37,14 @@ static bool internal_xapi_find_XGetSectionSize(iXbSymbolContext* pContext, const char* sig_func_str = "XapiMapLetterToDirectory"; const char* xref_str = "XGetSectionSize"; - xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - sig_func_str, - pSection, - true, - &pSymbol, - &pOOVPARevision); + xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + sig_func_str, + pSection, + true, + &pSymbol, + &pOOVPARevision); if (xXbAddr) { internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, pOOVPARevision->Version, xXbAddr); @@ -67,7 +67,8 @@ static bool internal_xapi_find_XGetSectionSize(iXbSymbolContext* pContext, // Update to use virtual address instead of relative address. pContext->xref_database[XREF_XGetSectionSize] = xXbAddr; - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XGetSectionSize, pOOVPARevision->Version, xref_str); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, XGetSectionSize); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, pOOVPARevision->Version); } } @@ -88,14 +89,14 @@ static bool internal_xapi_find_DeviceType_MU(iXbSymbolContext* pContext, // Find MU_Init function if (!internal_IsXRefAddrValid(pContext->xref_database[XREF_MU_Init])) { - xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "MU_Init", - pSection, - true, - &pSymbol, - &pOOVPARevision); + xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "MU_Init", + pSection, + true, + &pSymbol, + &pOOVPARevision); if (xXbAddr) { internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, pOOVPARevision->Version, xXbAddr); @@ -110,14 +111,14 @@ static bool internal_xapi_find_DeviceType_MU(iXbSymbolContext* pContext, // Scan for IUsbInit::GetMaxDeviceTypeCount function. if (!internal_IsXRefAddrValid(pContext->xref_database[XREF_IUsbInit_GetMaxDeviceTypeCount])) { - xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "IUsbInit_GetMaxDeviceTypeCount", - pSection, - true, - &pSymbol, - NULL); + xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "IUsbInit_GetMaxDeviceTypeCount", + pSection, + true, + &pSymbol, + NULL); // If not found, skip the rest of the scan. if (xXbAddr == 0) { @@ -154,8 +155,8 @@ static bool internal_xapi_find_DeviceType_MU(iXbSymbolContext* pContext, if (!internal_IsXRefAddrValid(pContext->xref_database[XREF_g_DeviceType_MU])) { // Register g_DeviceType_MU - internal_RegisterSymbol_M(pContext, pLibrarySession, XREF_g_DeviceType_MU, 3911, - "g_DeviceType_MU", xXbAddr); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceType_MU); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 3911, xXbAddr); } return true; @@ -172,32 +173,38 @@ static bool internal_xapi_find_device_types(iXbSymbolContext* pContext, OOVPATable* pSymbol = NULL; // Find GetTypeInformation_4 function - if (!internal_IsXRefAddrValid(pContext->xref_database[XREF_XAPI_GetTypeInformation_4])) { - xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, + if (!internal_IsXRefAddrValid(pContext->xref_database[XREF_GetTypeInformation_4])) { + xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "GetTypeInformation_4", + pSection, + true, + &pSymbol, + &pOOVPARevision); + + // If GetTypeInformation_4 is not found, then try find GetTypeInformation_8 + if (!xXbAddr) { + xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, pLibrarySession, pLibraryDB, - "GetTypeInformation_4", + "GetTypeInformation_8", pSection, true, &pSymbol, &pOOVPARevision); - - // If GetTypeInformation_4 is not found, then try find GetTypeInformation_8 - if (!xXbAddr) { - xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "GetTypeInformation_8", - pSection, - true, - &pSymbol, - &pOOVPARevision); } // If either GetTypeInformation overload is found, start look up in DeviceTypeInfo table's entries. if (xXbAddr) { internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, pOOVPARevision->Version, xXbAddr); + // TODO: Make below as self-register + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceTypeInfoTableBegin); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 4242); + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceTypeInfoTableEnd); + internal_RegisterSelfValidXRefAddr(pContext, pLibrarySession, pSymbol, 4242); + uint32_t* table_i = (uint32_t*)internal_section_VirtToHostAddress(pContext, pContext->xref_database[XREF_g_DeviceTypeInfoTableBegin]); uint32_t* table_end = (uint32_t*)internal_section_VirtToHostAddress(pContext, pContext->xref_database[XREF_g_DeviceTypeInfoTableEnd]); size_t type_description_table_count = ((memptr_t)table_end - (memptr_t)table_i) / sizeof(uint32_t); @@ -222,20 +229,25 @@ static bool internal_xapi_find_device_types(iXbSymbolContext* pContext, } switch (DeviceTypeInfo->ucType) { case 1: // Gamepad (Generic) - pContext->xref_database[XREF_g_DeviceType_Gamepad] = DeviceTypeInfo->XppType; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceType_Gamepad); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 0, DeviceTypeInfo->XppType); break; case 2: // Keyboard - pContext->xref_database[XREF_g_DeviceType_Keyboard] = DeviceTypeInfo->XppType; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceType_Keyboard); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 0, DeviceTypeInfo->XppType); break; case 3: // IR Dongle - pContext->xref_database[XREF_g_DeviceType_IRDongle] = DeviceTypeInfo->XppType; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceType_IRDongle); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 0, DeviceTypeInfo->XppType); break; case 4: // Mouse // NOTE: Possibly introduced when Phantasy Star Online (b4831) added keyboard support. - pContext->xref_database[XREF_g_DeviceType_Mouse] = DeviceTypeInfo->XppType; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceType_Mouse); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 0, DeviceTypeInfo->XppType); break; case 128: // Steel Battalion - pContext->xref_database[XREF_g_DeviceType_SBC] = DeviceTypeInfo->XppType; + internal_FindByReferenceHelper(pContext, pLibraryDB, pSymbol, g_DeviceType_SBC); + internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, 4242, DeviceTypeInfo->XppType); break; default: // Unknown output_message_format(&pContext->output, XB_OUTPUT_MESSAGE_WARN, "Unknown device type, DeviceTypeInfoTable[%hhu]: ucType = %hhu, XppType = %08X", i, DeviceTypeInfo->ucType, DeviceTypeInfo->XppType); @@ -246,14 +258,14 @@ static bool internal_xapi_find_device_types(iXbSymbolContext* pContext, else { // Find XInputOpen function if (!internal_IsXRefAddrValid(pContext->xref_database[XREF_XInputOpen])) { - xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolFunction(pContext, - pLibrarySession, - pLibraryDB, - "XInputOpen", - pSection, - true, - &pSymbol, - &pOOVPARevision); + xXbAddr = (xbaddr)(uintptr_t)internal_LocateSymbolScan(pContext, + pLibrarySession, + pLibraryDB, + "XInputOpen", + pSection, + true, + &pSymbol, + &pOOVPARevision); if (xXbAddr) { internal_RegisterSymbol(pContext, pLibrarySession, pSymbol, pOOVPARevision->Version, xXbAddr); // No further manual action require. @@ -288,20 +300,24 @@ static bool manual_scan_section_xapilib(iXbSymbolContext* pContext, static inline void manual_register_xapilib(iXbSymbolContext* pContext) { - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_Gamepad, 0, "g_DeviceType_Gamepad"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_IRDongle, 0, "g_DeviceType_IRDongle"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_Keyboard, 0, "g_DeviceType_Keyboard"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_Mouse, 0, "g_DeviceType_Mouse"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_SBC, 4242, "g_DeviceType_SBC"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceTypeInfoTableBegin, 4242, "g_DeviceTypeInfoTableBegin"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceTypeInfoTableEnd, 4242, "g_DeviceTypeInfoTableEnd"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_XapiAltLett_MU, 0, "g_XapiAltLett_MU"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_XapiMountedMUs, 0, "g_XapiMountedMUs"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_XapiCurrentTopLevelFilter, 0, "g_XapiCurrentTopLevelFilter"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XAPI__tls_array, 0, "_tls_array"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XAPI__tls_index, 0, "_tls_index"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_OFFSET_XapiCurrentFiber, 0, "XapiCurrentFiber_OFFSET"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_OFFSET_XapiLastErrorCode, 0, "XapiLastErrorCode_OFFSET"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_OFFSET_XapiThreadFiberData, 0, "XapiThreadFiberData_OFFSET"); - internal_RegisterValidXRefAddr_M(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XapiThreadNotifyRoutineList, 0, "XapiThreadNotifyRoutineList"); + // TODO: Make everything below have ability to perform self-register. (but we need difference between virtual and relative address.... can it be built-in support?) + // Actually, let's make a separate pull request for this... + // NOTE: These device types can be self-register according to XInputOpen signature. But newer implementation require manual search. + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_Gamepad, 0, "g_DeviceType_Gamepad", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_IRDongle, 0, "g_DeviceType_IRDongle", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_Keyboard, 0, "g_DeviceType_Keyboard", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_Mouse, 0, "g_DeviceType_Mouse", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceType_SBC, 4242, "g_DeviceType_SBC", symbol_variable, call_none, 0, NULL); + //internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceTypeInfoTableBegin, 4242, "g_DeviceTypeInfoTableBegin", symbol_variable, call_none, 0, NULL); + //internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_DeviceTypeInfoTableEnd, 4242, "g_DeviceTypeInfoTableEnd", symbol_variable, call_none, 0, NULL); + // TODO: The above could actually do self-register but... do we need to? + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_XapiAltLett_MU, 0, "g_XapiAltLett_MU", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_XapiMountedMUs, 0, "g_XapiMountedMUs", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_g_XapiCurrentTopLevelFilter, 0, "g_XapiCurrentTopLevelFilter", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF__tls_array, 0, "_tls_array", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF__tls_index, 0, "_tls_index", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XapiCurrentFiber_OFFSET, 0, "XapiCurrentFiber_OFFSET", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XapiLastErrorCode_OFFSET, 0, "XapiLastErrorCode_OFFSET", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XapiThreadFiberData_OFFSET, 0, "XapiThreadFiberData_OFFSET", symbol_variable, call_none, 0, NULL); + internal_RegisterValidXRefAddr(pContext, Lib_XAPILIB, XbSymbolLib_XAPILIB, XREF_XapiThreadNotifyRoutineList, 0, "XapiThreadNotifyRoutineList", symbol_variable, call_none, 0, NULL); } diff --git a/src/test/libverify.cpp b/src/test/libverify.cpp index e2afa51e..705e6e78 100644 --- a/src/test/libverify.cpp +++ b/src/test/libverify.cpp @@ -128,17 +128,10 @@ bool match_library_db(std::map& list, } // Since xref is within range, check if symbol is found. - // If a match is not found, then we basically need to push them into - // missing list. + // If a match is not found, then we need to push the generic symbol + // name into missing list. if (found_xref == list.end()) { - std::string symbols; - for (auto& symbol : xref->second) { - if (!symbols.empty()) { - symbols += ", "; - } - symbols += symbol.first; - } - missing.push_back(symbols); + missing.push_back(XbSymbolDatabase_SymbolReferenceToString(xref->first)); continue; } diff --git a/src/test/libverify/D3D8.cpp b/src/test/libverify/D3D8.cpp index b470a446..aeba3f86 100644 --- a/src/test/libverify/D3D8.cpp +++ b/src/test/libverify/D3D8.cpp @@ -43,17 +43,20 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DRS_ZBias, VER_RANGE(0)), // derived xrefs (offsets) - REGISTER_SYMBOL_INLINE_VAR_OFFSET(D3DDevice__m_SwapCallback, VER_RANGE(0)), - REGISTER_SYMBOL_INLINE_VAR_OFFSET(D3DDevice__m_VBlankCallback, VER_RANGE(0)), - REGISTER_SYMBOL_INLINE_VAR_OFFSET(D3DDevice__m_VertexShader, VER_RANGE(0)), - REGISTER_SYMBOL_INLINE_VAR_OFFSET(D3DDevice__m_VerticalBlankEvent, VER_RANGE(0)), + // REGISTER_SYMBOL_INLINE(D3DDevice__m_PixelShader_OFFSET, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(D3DDevice__m_SwapCallback_OFFSET, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(D3DDevice__m_VBlankCallback_OFFSET, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(D3DDevice__m_VertexShader_OFFSET, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(D3DDevice__m_VerticalBlankEvent_OFFSET, VER_RANGE(0)), REGISTER_SYMBOLS(D3D_CreateTexture, REGISTER_SYMBOL(D3D_CreateTexture, VER_RANGE(3911, 4627)), - REGISTER_SYMBOL(D3D_CreateTexture_28__LTCG_edx8_edi9, VER_RANGE(3911, 4627))), + REGISTER_SYMBOL(D3D_CreateTexture_28__LTCG_dl8_edi9, VER_RANGE(4039, 4627))), REGISTER_SYMBOL_INLINE_D3D(CDevice_MakeSpace, VER_RANGE(3911, 4034)), REGISTER_SYMBOL_INLINE_D3D(CMiniport_CreateCtxDmaObject, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_D3D(CMiniport_InitHardware, VER_RANGE(3911)), + REGISTER_SYMBOLS(D3D_CMiniport_InitHardware, + REGISTER_SYMBOL(CMiniport_InitHardware, VER_RANGE(3911)), + REGISTER_SYMBOL(CMiniport_InitHardware_4, VER_RANGE(4531))), REGISTER_SYMBOL_INLINE_D3D(CMiniport_IsFlipPending, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DBaseTexture_GetLevelCount, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DCubeTexture_GetCubeMapSurface, VER_RANGE(3911)), @@ -67,7 +70,7 @@ static const library_list database_full = { REGISTER_SYMBOL(D3DDevice_BeginPush_4, VER_RANGE(4531))), REGISTER_SYMBOLS(D3DDevice_BeginPushBuffer, REGISTER_SYMBOL(D3DDevice_BeginPushBuffer, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_BeginPushBuffer_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_BeginPushBuffer_0__LTCG_edi1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_BeginStateBig, VER_RANGE(5028)), REGISTER_SYMBOL_INLINE(D3DDevice_BeginStateBlock, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_BeginVisibilityTest, VER_RANGE(3911)), @@ -99,11 +102,11 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DDevice_DeletePatch, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_DeletePixelShader, REGISTER_SYMBOL(D3DDevice_DeletePixelShader, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_DeletePixelShader_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_DeletePixelShader_0__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_DeleteStateBlock, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_DeleteVertexShader, REGISTER_SYMBOL(D3DDevice_DeleteVertexShader, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_DeleteVertexShader_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_DeleteVertexShader_0__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_DrawIndexedVertices, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_DrawIndexedVerticesUP, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_DrawRectPatch, VER_RANGE(3911)), @@ -117,18 +120,18 @@ static const library_list database_full = { REGISTER_SYMBOL(D3DDevice_DrawVerticesUP_12__LTCG_ebx3, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_EnableOverlay, REGISTER_SYMBOL(D3DDevice_EnableOverlay, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_EnableOverlay_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_EnableOverlay_0__LTCG, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_End, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_EndPush, VER_RANGE(4039)), REGISTER_SYMBOL_INLINE(D3DDevice_EndPushBuffer, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_EndStateBlock, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_EndVisibilityTest, REGISTER_SYMBOL(D3DDevice_EndVisibilityTest, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_EndVisibilityTest_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_EndVisibilityTest_0__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_FlushVertexCache, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_GetBackBuffer, REGISTER_SYMBOL(D3DDevice_GetBackBuffer, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_GetBackBuffer_8, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_GetBackBuffer_8__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_GetBackBuffer2, REGISTER_SYMBOL(D3DDevice_GetBackBuffer2, VER_RANGE(4627)), REGISTER_SYMBOL(D3DDevice_GetBackBuffer2_0__LTCG_eax1, VER_RANGE(4627))), @@ -167,7 +170,7 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DDevice_GetViewport, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_GetViewportOffsetAndScale, REGISTER_SYMBOL(D3DDevice_GetViewportOffsetAndScale, VER_RANGE(4432)), - REGISTER_SYMBOL(D3DDevice_GetViewportOffsetAndScale_0, VER_RANGE(4432))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_GetViewportOffsetAndScale_0__LTCG_edx1_ecx2, VER_RANGE(4432))), REGISTER_SYMBOL_INLINE(D3DDevice_GetVisibilityTestResult, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_InsertCallback, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_InsertFence, VER_RANGE(3911)), @@ -181,12 +184,12 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DDevice_KickPushBuffer, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_LightEnable, REGISTER_SYMBOL(D3DDevice_LightEnable, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_LightEnable_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_LightEnable_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_LoadVertexShader, REGISTER_SYMBOL(D3DDevice_LoadVertexShader, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_LoadVertexShader_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_LoadVertexShader_0__LTCG_ecx1_eax2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_LoadVertexShader_0__LTCG_edx1_eax2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_LoadVertexShader_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_LoadVertexShaderProgram, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_MakeSpace, VER_RANGE(4034)), REGISTER_SYMBOL_INLINE(D3DDevice_PersistDisplay, VER_RANGE(3911)), @@ -199,46 +202,46 @@ static const library_list database_full = { REGISTER_SYMBOL(D3DDevice_Reset_0__LTCG_ebx1, VER_RANGE(5344))), REGISTER_SYMBOLS(D3DDevice_RunPushBuffer, REGISTER_SYMBOL(D3DDevice_RunPushBuffer, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_RunPushBuffer_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_RunPushBuffer_4__LTCG_eax2, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_RunVertexStateShader, REGISTER_SYMBOL(D3DDevice_RunVertexStateShader, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_RunVertexStateShader_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_RunVertexStateShader_4__LTCG_esi2, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SelectVertexShader, REGISTER_SYMBOL(D3DDevice_SelectVertexShader, VER_RANGE(3911)), REGISTER_SYMBOL(D3DDevice_SelectVertexShader_0__LTCG_eax1_ebx2, VER_RANGE(3911)), REGISTER_SYMBOL(D3DDevice_SelectVertexShader_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SelectVertexShaderDirect, REGISTER_SYMBOL(D3DDevice_SelectVertexShaderDirect, VER_RANGE(4361)), - REGISTER_SYMBOL(D3DDevice_SelectVertexShaderDirect_0, VER_RANGE(4361))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SelectVertexShaderDirect_0__LTCG_eax1_ebx2, VER_RANGE(4361))), REGISTER_SYMBOL_INLINE(D3DDevice_SetBackBufferScale, VER_RANGE(4039)), REGISTER_SYMBOL_INLINE(D3DDevice_SetBackMaterial, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetDepthClipPlanes, VER_RANGE(4432)), REGISTER_SYMBOLS(D3DDevice_SetFlickerFilter, REGISTER_SYMBOL(D3DDevice_SetFlickerFilter, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetFlickerFilter_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetFlickerFilter_0__LTCG_esi1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetGammaRamp, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_SetIndices, REGISTER_SYMBOL(D3DDevice_SetIndices, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetIndices_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetIndices_4__LTCG_ebx1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetLight, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetMaterial, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetModelView, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_SetPalette, REGISTER_SYMBOL(D3DDevice_SetPalette, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetPalette_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetPalette_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetPixelShader, REGISTER_SYMBOL(D3DDevice_SetPixelShader, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetPixelShader_0__LTCG_eax_handle, VER_RANGE(3911))), + REGISTER_SYMBOL(D3DDevice_SetPixelShader_0__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetPixelShaderConstant, REGISTER_SYMBOL(D3DDevice_SetPixelShaderConstant, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetPixelShaderConstant_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetPixelShaderConstant_4__LTCG_ecx1_eax3, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetPixelShaderProgram, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderState, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderState2, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_SetRenderStateNotInline, REGISTER_SYMBOL(D3DDevice_SetRenderStateNotInline, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetRenderStateNotInline_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetRenderStateNotInline_0__LTCG_esi1_edi2, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderState_BackFillMode, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderState_CullMode, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderState_Deferred, VER_RANGE(3911)), @@ -276,7 +279,7 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderState_ZEnable, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_SetRenderTarget, REGISTER_SYMBOL(D3DDevice_SetRenderTarget, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetRenderTarget_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetRenderTarget_0__LTCG_ecx1_eax2, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetRenderTargetFast, VER_RANGE(5233)), REGISTER_SYMBOL_INLINE(D3DDevice_SetScissors, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetScreenSpaceOffset, VER_RANGE(4034)), @@ -285,7 +288,7 @@ static const library_list database_full = { REGISTER_SYMBOL(D3DDevice_SetShaderConstantMode_0__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetSoftDisplayFilter, REGISTER_SYMBOL(D3DDevice_SetSoftDisplayFilter, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetSoftDisplayFilter_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetSoftDisplayFilter_0__LTCG_unk1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3D_CDevice_InitializeFrameBuffers, REGISTER_SYMBOL(CDevice_InitializeFrameBuffers, VER_RANGE(3911)), // thiscall REGISTER_SYMBOL(CDevice_InitializeFrameBuffers_8, VER_RANGE(3911)), // stdcall // NOTE: LTCG usage @@ -306,30 +309,30 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DDevice_SetStipple, VER_RANGE(4627)), REGISTER_SYMBOLS(D3DDevice_SetStreamSource, REGISTER_SYMBOL(D3DDevice_SetStreamSource, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetStreamSource_4, VER_RANGE(3911)), // NOTE: LTCG usage - REGISTER_SYMBOL(D3DDevice_SetStreamSource_8, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetStreamSource_0__LTCG_eax1_edi2_ebx3, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetStreamSource_8__LTCG_edx1, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetStreamSource_4__LTCG_eax1_ebx2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetStreamSource_8__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetSwapCallback, VER_RANGE(4039)), REGISTER_SYMBOLS(D3DDevice_SetTexture, REGISTER_SYMBOL(D3DDevice_SetTexture, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetTexture_4__LTCG_eax_pTexture, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetTexture_4__LTCG_eax_Stage, VER_RANGE(4721))), + REGISTER_SYMBOL(D3DDevice_SetTexture_4__LTCG_eax2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetTexture_4__LTCG_eax1, VER_RANGE(4721))), REGISTER_SYMBOLS(D3DDevice_SetTextureState_BorderColor, REGISTER_SYMBOL(D3DDevice_SetTextureState_BorderColor, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetTextureState_BorderColor_0, VER_RANGE(3911)), // NOTE: LTCG usage - REGISTER_SYMBOL(D3DDevice_SetTextureState_BorderColor_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetTextureState_BorderColor_0__LTCG_eax1_ebx2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetTextureState_BorderColor_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetTextureState_BumpEnv, REGISTER_SYMBOL(D3DDevice_SetTextureState_BumpEnv, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetTextureState_BumpEnv_8, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetTextureState_BumpEnv_8__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetTextureState_ColorKeyColor, REGISTER_SYMBOL(D3DDevice_SetTextureState_ColorKeyColor, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetTextureState_ColorKeyColor_0, VER_RANGE(3911)), // NOTE: LTCG usage - REGISTER_SYMBOL(D3DDevice_SetTextureState_ColorKeyColor_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetTextureState_ColorKeyColor_0__LTCG_esi1_ebx2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetTextureState_ColorKeyColor_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetTextureState_TexCoordIndex, REGISTER_SYMBOL(D3DDevice_SetTextureState_TexCoordIndex, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetTextureState_TexCoordIndex_0, VER_RANGE(3911)), // NOTE: LTCG usage - REGISTER_SYMBOL(D3DDevice_SetTextureState_TexCoordIndex_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetTextureState_TexCoordIndex_0__LTCG_edi1_eax2, VER_RANGE(3911)), + REGISTER_SYMBOL(D3DDevice_SetTextureState_TexCoordIndex_4__LTCG_esi1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetTile, REGISTER_SYMBOL(D3DDevice_SetTile, VER_RANGE(3911)), REGISTER_SYMBOL(D3DDevice_SetTile_0__LTCG_eax1_ecx2, VER_RANGE(3911)), @@ -340,27 +343,27 @@ static const library_list database_full = { REGISTER_SYMBOL(D3DDevice_SetTransform_0__LTCG_eax1_edx2, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_MultiplyTransform, REGISTER_SYMBOL(D3DDevice_MultiplyTransform, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_MultiplyTransform_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_MultiplyTransform_0__LTCG_ebx1_eax2, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexData2f, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexData2s, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_SetVertexData4f, REGISTER_SYMBOL(D3DDevice_SetVertexData4f, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetVertexData4f_16, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetVertexData4f_16__LTCG_edi1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexData4s, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexData4ub, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexDataColor, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_SetVertexShader, REGISTER_SYMBOL(D3DDevice_SetVertexShader, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetVertexShader_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetVertexShader_0__LTCG_ebx1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3DDevice_SetVertexShaderConstant, REGISTER_SYMBOL(D3DDevice_SetVertexShaderConstant, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_SetVertexShaderConstant_8, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetVertexShaderConstant_8__LTCG_edx3, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexShaderConstant1, VER_RANGE(4627)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexShaderConstant1Fast, VER_RANGE(4627)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexShaderConstant4, VER_RANGE(4627)), REGISTER_SYMBOLS(D3DDevice_SetVertexShaderConstantNotInline, REGISTER_SYMBOL(D3DDevice_SetVertexShaderConstantNotInline, VER_RANGE(4627)), - REGISTER_SYMBOL(D3DDevice_SetVertexShaderConstantNotInline_0, VER_RANGE(4627))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_SetVertexShaderConstantNotInline_0__LTCG_ebx1_eax2_edx3, VER_RANGE(4627))), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexShaderConstantNotInlineFast, VER_RANGE(4627)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexShaderInput, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DDevice_SetVertexShaderInputDirect, VER_RANGE(4361)), @@ -369,18 +372,18 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3DDevice_Suspend, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_Swap, REGISTER_SYMBOL(D3DDevice_Swap, VER_RANGE(4034)), - REGISTER_SYMBOL(D3DDevice_Swap_0, VER_RANGE(4034))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_Swap_0__LTCG_eax1, VER_RANGE(4034))), REGISTER_SYMBOL_INLINE(D3DDevice_SwitchTexture, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DDevice_UpdateOverlay, REGISTER_SYMBOL(D3DDevice_UpdateOverlay, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DDevice_UpdateOverlay_16, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DDevice_UpdateOverlay_16__LTCG_eax2, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DPalette_Lock, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DPalette_Lock2, VER_RANGE(4627)), REGISTER_SYMBOL_INLINE(D3DResource_AddRef, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DResource_BlockUntilNotBusy, VER_RANGE(3911)), REGISTER_SYMBOLS(D3DResource_GetType, REGISTER_SYMBOL(D3DResource_GetType, VER_RANGE(3911)), - REGISTER_SYMBOL(D3DResource_GetType_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3DResource_GetType_0__LTCG_ecx1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3DResource_IsBusy, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DResource_Register, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3DResource_Release, VER_RANGE(3911)), @@ -396,10 +399,10 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3D_AllocContiguousMemory, VER_RANGE(3911)), REGISTER_SYMBOLS(D3D_BlockOnResource, REGISTER_SYMBOL(D3D_BlockOnResource, VER_RANGE(3911)), - REGISTER_SYMBOL(D3D_BlockOnResource_0, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3D_BlockOnResource_0__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOLS(D3D_BlockOnTime, REGISTER_SYMBOL(D3D_BlockOnTime, VER_RANGE(3911)), - REGISTER_SYMBOL(D3D_BlockOnTime_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(D3D_BlockOnTime_4__LTCG_eax1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE_D3D(CMiniport_GetDisplayCapabilities, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3D_CheckDeviceFormat, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3D_ClearStateBlockFlags, VER_RANGE(3911)), @@ -411,7 +414,7 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(D3D_CreateStandAloneSurface, VER_RANGE(4034)), REGISTER_SYMBOLS(D3D_DestroyResource, REGISTER_SYMBOL(D3D_DestroyResource, VER_RANGE(3911)), - REGISTER_SYMBOL(D3D_DestroyResource__LTCG, VER_RANGE(3911))), // NOTE: missing param usage + REGISTER_SYMBOL(D3D_DestroyResource_0__LTCG_edi1, VER_RANGE(3911))), REGISTER_SYMBOL_INLINE(D3D_EnumAdapterModes, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3D_GetAdapterDisplayMode, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(D3D_GetAdapterIdentifier, VER_RANGE(3911)), @@ -430,23 +433,23 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(Direct3D_CheckDeviceMultiSampleType, VER_RANGE(3911)), REGISTER_SYMBOLS(Direct3D_CreateDevice, REGISTER_SYMBOL(Direct3D_CreateDevice, VER_RANGE(3911)), - REGISTER_SYMBOL(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ebx_ppReturnedDeviceInterface, VER_RANGE(3911)), - REGISTER_SYMBOL(Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface, VER_RANGE(3911)), - REGISTER_SYMBOL(Direct3D_CreateDevice_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(Direct3D_CreateDevice_16__LTCG_eax4_ebx6, VER_RANGE(3911)), + REGISTER_SYMBOL(Direct3D_CreateDevice_16__LTCG_eax4_ecx6, VER_RANGE(3911)), + REGISTER_SYMBOL(Direct3D_CreateDevice_4__LTCG_eax1_ecx3, VER_RANGE(3911))), REGISTER_SYMBOLS(D3D8_Get2DSurfaceDesc, REGISTER_SYMBOL(Get2DSurfaceDesc, VER_RANGE(3911)), - REGISTER_SYMBOL(Get2DSurfaceDesc_0, VER_RANGE(3911)), // NOTE: LTCG usage - REGISTER_SYMBOL(Get2DSurfaceDesc_4, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(Get2DSurfaceDesc_0__LTCG_edi1_ebx2_esi3, VER_RANGE(3911)), + REGISTER_SYMBOL(Get2DSurfaceDesc_4__LTCG_edi1_esi3, VER_RANGE(3911))), REGISTER_SYMBOLS(D3D8_Lock2DSurface, REGISTER_SYMBOL(Lock2DSurface, VER_RANGE(3911)), - REGISTER_SYMBOL(Lock2DSurface_16, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(Lock2DSurface_16__LTCG_esi4_eax5, VER_RANGE(3911))), REGISTER_SYMBOLS(D3D8_Lock3DSurface, REGISTER_SYMBOL(Lock3DSurface, VER_RANGE(3911)), - REGISTER_SYMBOL(Lock3DSurface_16, VER_RANGE(3911))), // NOTE: LTCG usage + REGISTER_SYMBOL(Lock3DSurface_16__LTCG_eax4, VER_RANGE(3911))), REGISTER_SYMBOLS(D3D_MakeRequestedSpace, REGISTER_SYMBOL(D3D_MakeRequestedSpace_4, VER_RANGE(4034, 4134)), REGISTER_SYMBOL(D3D_MakeRequestedSpace_8, VER_RANGE(4134)), - REGISTER_SYMBOL(D3D_MakeRequestedSpace_4__LTCG_eax_RequestedSpace, VER_RANGE(5788))), + REGISTER_SYMBOL(D3D_MakeRequestedSpace_4__LTCG_eax2, VER_RANGE(5788))), REGISTER_SYMBOL_INLINE(XMETAL_StartPush, VER_RANGE(3911, 4034)), REGISTER_SYMBOL_INLINE(IDirect3DVertexBuffer8_Lock, VER_RANGE(4627)), diff --git a/src/test/libverify/DSOUND.cpp b/src/test/libverify/DSOUND.cpp index c7783166..b46f7055 100644 --- a/src/test/libverify/DSOUND.cpp +++ b/src/test/libverify/DSOUND.cpp @@ -36,7 +36,9 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(CMcpxAPU_Set3dRolloffFactor, VER_RANGE(3911, 4039)), REGISTER_SYMBOL_INLINE(CMcpxAPU_Set3dVelocity, VER_RANGE(3911, 4039)), REGISTER_SYMBOL_INLINE(CMcpxAPU_SetI3DL2Listener, VER_RANGE(3911, 4039)), - REGISTER_SYMBOL_INLINE(CMcpxAPU_SetMixBinHeadroom, VER_RANGE(3911)), + REGISTER_SYMBOLS(CMcpxAPU_SetMixBinHeadroom, + REGISTER_SYMBOL(CMcpxAPU_SetMixBinHeadroom_8, VER_RANGE(3911, 4039)), + REGISTER_SYMBOL(CMcpxAPU_SetMixBinHeadroom_4, VER_RANGE(4039))), REGISTER_SYMBOL_INLINE(CMcpxAPU_SynchPlayback, VER_RANGE(4831)), // ======================================================== REGISTER_SYMBOL_INLINE(CMcpxVoiceClient_GetVoiceProperties, VER_RANGE(5028)), @@ -54,7 +56,9 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(CMcpxVoiceClient_SetMixBins, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CMcpxVoiceClient_SetPitch, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CMcpxVoiceClient_SetVolume, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE(CMcpxVoiceClient_Commit3dSettings, VER_RANGE(3911)), + REGISTER_SYMBOLS(CMcpxVoiceClient_Commit3dSettings, + REGISTER_SYMBOL(CMcpxVoiceClient_Commit3dSettings_4, VER_RANGE(3911, 4039)), + REGISTER_SYMBOL(CMcpxVoiceClient_Commit3dSettings_0, VER_RANGE(4039))), REGISTER_SYMBOL_INLINE(CMcpxVoiceClient_Set3dParameters, VER_RANGE(3911, 4039)), // ======================================================== //REGISTER_SYMBOL_INLINE(CDirectSoundVoiceSettings_SetMixBins, VER_RANGE(4039)), // Unused, should be useable @@ -78,7 +82,9 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetMaxDistance, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetMinDistance, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetMixBins, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetMixBinVolumes, VER_RANGE(3911)), + REGISTER_SYMBOLS(CDirectSoundVoice_SetMixBinVolumes, + REGISTER_SYMBOL(CDirectSoundVoice_SetMixBinVolumes_12, VER_RANGE(3911, 4039)), + REGISTER_SYMBOL(CDirectSoundVoice_SetMixBinVolumes_8, VER_RANGE(4039))), REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetMode, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetOutputBuffer, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundVoice_SetPitch, VER_RANGE(3911)), @@ -242,7 +248,9 @@ static const library_list dsbuffer_full = { REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetMaxDistance, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetMinDistance, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetMixBins, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetMixBinVolumes, VER_RANGE(3911)), + REGISTER_SYMBOLS(CDirectSoundBuffer_SetMixBinVolumes, + REGISTER_SYMBOL(CDirectSoundBuffer_SetMixBinVolumes_12, VER_RANGE(3911, 4039)), + REGISTER_SYMBOL(CDirectSoundBuffer_SetMixBinVolumes_8, VER_RANGE(4039))), REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetMode, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetNotificationPositions, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(CDirectSoundBuffer_SetOutputBuffer, VER_RANGE(3911)), diff --git a/src/test/libverify/XAPILIB.cpp b/src/test/libverify/XAPILIB.cpp index ecfcb009..57a15971 100644 --- a/src/test/libverify/XAPILIB.cpp +++ b/src/test/libverify/XAPILIB.cpp @@ -8,41 +8,41 @@ static const library_list database_full = { // derived xrefs - REGISTER_SYMBOL_INLINE_VAR_OFFSET(XapiLastErrorCode, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(XapiLastErrorCode_OFFSET, VER_RANGE(0)), // OOVPA sigs // Without xrefs dependency - REGISTER_SYMBOL_INLINE_XAPI(_cinit, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(_rtinit, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(_cinit, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(_rtinit, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiFormatObjectAttributes, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiMapLetterToDirectory, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XLaunchNewImageA, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XUnmountAlternateTitleA, VER_RANGE(3911)), // With xrefs dependency (unorder, need to scan next before order list) - REGISTER_SYMBOL_INLINE_XAPI(mainXapiStartup, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(GetLastError, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SetLastError, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(mainXapiStartup, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(GetLastError, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SetLastError, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiBootToDash, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiSelectCachePartition, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiSetLastNTError, VER_RANGE(3911)), // With xrefs dependency (order) - REGISTER_SYMBOL_INLINE_XAPI(CreateMutexA, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(MoveFileA, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(CreateMutexA, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(MoveFileA, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiInitProcess, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XCalculateSignatureBegin, VER_RANGE(3911)), // REGISTER_SYMBOL_INLINE(XCalculateSignatureBeginEx, VER_RANGE(3911)), // no signature and currently unknown. - REGISTER_SYMBOL_INLINE_XAPI(GetOverlappedResult, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(GetTimeZoneInformation, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(GetTypeInformation_4, VER_RANGE(4242)), - REGISTER_SYMBOL_INLINE_XAPI(GetTypeInformation_8, VER_RANGE(4242)), - REGISTER_SYMBOL_INLINE_XAPI(OutputDebugStringA, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(OutputDebugStringW, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(mainCRTStartup, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(QueueUserAPC, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(QueryPerformanceCounter, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SignalObjectAndWait, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(GetOverlappedResult, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(GetTimeZoneInformation, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(GetTypeInformation_4, VER_RANGE(4242)), + REGISTER_SYMBOL_INLINE(GetTypeInformation_8, VER_RANGE(4242)), + REGISTER_SYMBOL_INLINE(OutputDebugStringA, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(OutputDebugStringW, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(mainCRTStartup, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(QueueUserAPC, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(QueryPerformanceCounter, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SignalObjectAndWait, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XAutoPowerDownResetTimer, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XFormatUtilityDrive, VER_RANGE(4242)), REGISTER_SYMBOL_INLINE(XGetLaunchInfo, VER_RANGE(3911)), @@ -50,31 +50,31 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(XMountAlternateTitleA, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XMountUtilityDrive, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XSetProcessQuantumLength, VER_RANGE(4134)), - REGISTER_SYMBOL_INLINE_XAPI(timeKillEvent, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(timeSetEvent, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(timeKillEvent, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(timeSetEvent, VER_RANGE(3911)), }; static const library_list fiber_full = { // derived xrefs - REGISTER_SYMBOL_INLINE_VAR_OFFSET(XapiCurrentFiber, VER_RANGE(0)), - REGISTER_SYMBOL_INLINE_VAR_OFFSET(XapiThreadFiberData, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(XapiCurrentFiber_OFFSET, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(XapiThreadFiberData_OFFSET, VER_RANGE(0)), // OOVPA sigs // With xrefs dependency (order) - REGISTER_SYMBOL_INLINE_XAPI(ConvertThreadToFiber, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(CreateFiber, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(DeleteFiber, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SwitchToFiber, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(ConvertThreadToFiber, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(CreateFiber, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(DeleteFiber, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SwitchToFiber, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiFiberStartup, VER_RANGE(3911)), }; static const library_list thread_full = { // derived xrefs - REGISTER_SYMBOL_INLINE_XAPI(_tls_array, VER_RANGE(0)), - REGISTER_SYMBOL_INLINE_XAPI(_tls_index, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(_tls_array, VER_RANGE(0)), + REGISTER_SYMBOL_INLINE(_tls_index, VER_RANGE(0)), REGISTER_SYMBOL_INLINE(XapiThreadNotifyRoutineList, VER_RANGE(0)), REGISTER_SYMBOL_INLINE(g_XapiCurrentTopLevelFilter, VER_RANGE(0)), @@ -83,27 +83,27 @@ static const library_list thread_full = { REGISTER_SYMBOL_INLINE(XapiCallThreadNotifyRoutines, VER_RANGE(3911)), // With xrefs dependency (unorder, need to scan next before order list) - REGISTER_SYMBOL_INLINE_XAPI(UnhandledExceptionFilter, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(UnhandledExceptionFilter, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XapiThreadStartup, VER_RANGE(3911)), // With xrefs dependency (order) - REGISTER_SYMBOL_INLINE_XAPI(CreateThread, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(ExitThread, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SwitchToThread, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(GetExitCodeThread, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(GetThreadPriority, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(RaiseException, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SetThreadPriority, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SetThreadPriorityBoost, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(CreateThread, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(ExitThread, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SwitchToThread, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(GetExitCodeThread, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(GetThreadPriority, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(RaiseException, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SetThreadPriority, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SetThreadPriorityBoost, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XRegisterThreadNotifyRoutine, VER_RANGE(3911)), }; static const library_list event_full = { - REGISTER_SYMBOL_INLINE_XAPI(CreateEventA, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(OpenEventA, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(PulseEvent, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(ResetEvent, VER_RANGE(3911)), - REGISTER_SYMBOL_INLINE_XAPI(SetEvent, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(CreateEventA, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(OpenEventA, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(PulseEvent, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(ResetEvent, VER_RANGE(3911)), + REGISTER_SYMBOL_INLINE(SetEvent, VER_RANGE(3911)), }; static const library_list mu_optional = { @@ -184,7 +184,7 @@ enum LOCAL_XREFS { // Verify if symbol name is at start of offset. #define XREF_SYMBOL_GET(e) e -#define XREF_OFFSET XREF_SYMBOL_GET(XAPI__tls_array) +#define XREF_OFFSET XREF_SYMBOL_GET(_tls_array) static_assert(XREF_OFFSET == 0); // Then get symbol's actual offset. #undef XREF_SYMBOL_GET diff --git a/src/test/libverify/XNET.cpp b/src/test/libverify/XNET.cpp index 1f893c1a..504c45ac 100644 --- a/src/test/libverify/XNET.cpp +++ b/src/test/libverify/XNET.cpp @@ -5,7 +5,9 @@ static const library_list database_min = {}; static const library_list database_full = { - REGISTER_SYMBOL_INLINE(XnInit, VER_RANGE(3911)), + REGISTER_SYMBOLS(XnInit, + REGISTER_SYMBOL(XnInit_8, VER_RANGE(3911, 4361)), + REGISTER_SYMBOL(XnInit_24, VER_RANGE(4361))), REGISTER_SYMBOL_INLINE(WSAStartup, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XNetStartup, VER_RANGE(3911)), REGISTER_SYMBOL_INLINE(XNetGetEthernetLinkStatus, VER_RANGE(3911)), diff --git a/src/test/libverify/XONLINE.cpp b/src/test/libverify/XONLINE.cpp index ba387e95..3142baf7 100644 --- a/src/test/libverify/XONLINE.cpp +++ b/src/test/libverify/XONLINE.cpp @@ -15,7 +15,9 @@ static const library_list database_full = { REGISTER_SYMBOL_INLINE(XOnlineMatchSessionUpdate, VER_RANGE(4831)), REGISTER_SYMBOL_INLINE(CXo_XOnlineMatchSessionCreate, VER_RANGE(4831)), REGISTER_SYMBOL_INLINE(XOnlineMatchSessionCreate, VER_RANGE(4831)), - REGISTER_SYMBOL_INLINE(XoUpdateLaunchNewImageInternal, VER_RANGE(4627)), + REGISTER_SYMBOLS(XoUpdateLaunchNewImageInternal, + REGISTER_SYMBOL(XoUpdateLaunchNewImageInternal_12, VER_RANGE(4627, 5028)), + REGISTER_SYMBOL(XoUpdateLaunchNewImageInternal_16, VER_RANGE(5028))), }; enum LOCAL_XREFS { diff --git a/src/test/libverify/unittest.hpp b/src/test/libverify/unittest.hpp index 2ee3f649..f3c6555f 100644 --- a/src/test/libverify/unittest.hpp +++ b/src/test/libverify/unittest.hpp @@ -46,7 +46,6 @@ static constexpr version_ranges VER_RANGE(uint16_t intro_start, #define REGISTER_SYMBOL_INLINE_D3D(e, v) { XREF_SYMBOL(D3D_##e), {{ #e, v}}} #define REGISTER_SYMBOL_INLINE_D3D8(e, v) { XREF_SYMBOL(D3D8_##e), {{ #e, v}}} #define REGISTER_SYMBOL_INLINE_VAR_OFFSET(e, v) { XREF_SYMBOL(OFFSET_##e), {{ STRINGIZE(e##_OFFSET), v}}} -#define REGISTER_SYMBOL_INLINE_XAPI(e, v) { XREF_SYMBOL(XAPI_##e), {{ #e, v}}} // Below macros are intended to use multiple symbol names combine with single XREF. #define REGISTER_SYMBOL(e, v) { #e, v} #define REGISTER_SYMBOLS(Symbol, ...) { XREF_##Symbol, { __VA_ARGS__ }} diff --git a/src/test/main.cpp b/src/test/main.cpp index cb65cc91..b8f0a447 100644 --- a/src/test/main.cpp +++ b/src/test/main.cpp @@ -300,8 +300,12 @@ static void EmuRegisterSymbol(const char* library_str, uint32_t library_flag, uint32_t xref_index, const char* symbol_str, - uint32_t func_addr, - uint32_t build) + uint32_t symbol_addr, + uint32_t build, + uint32_t symbol_type, + uint32_t call_type, + uint32_t param_count, + const XbSDBSymbolParam* param_list) { // Report invalid index if (xref_index == -1) { @@ -309,7 +313,7 @@ static void EmuRegisterSymbol(const char* library_str, gen_str << "Symbol could not be register due to xref index is -1: " << XbSymbolDatabase_LibraryToString(library_flag) << " (b" << std::dec << std::setfill('0') << std::setw(4) << build << ") 0x" - << std::setfill('0') << std::setw(8) << std::hex << func_addr + << std::setfill('0') << std::setw(8) << std::hex << symbol_addr << " -> " << symbol_str; XbSUT_OutputMessage(XB_OUTPUT_MESSAGE_ERROR, gen_str.str()); XbUnitTest_error++; @@ -343,7 +347,7 @@ static void EmuRegisterSymbol(const char* library_str, << XbSymbolDatabase_LibraryToString(library_flag) << " (b" << std::dec << std::setfill('0') << std::setw(4) << build << ") 0x" << std::setfill('0') << std::setw(8) << std::hex - << func_addr << " -> " << symbol_str; + << symbol_addr << " -> " << symbol_str; XbSUT_OutputMessage(XB_OUTPUT_MESSAGE_ERROR, gen_str.str()); XbUnitTest_error++; } @@ -357,10 +361,10 @@ static void EmuRegisterSymbol(const char* library_str, << std::setw(8) << XbSymbolDatabase_LibraryToString(library_flag) << " (b" << std::dec << std::setw(4) << std::setfill('0') << build << ") 0x" << std::setw(8) << std::hex - << func_addr << " -> " << symbol_str; + << symbol_addr << " -> " << symbol_str; XbSUT_OutputMessage(XB_OUTPUT_MESSAGE_DEBUG, gen_str.str()); - hasSymbol.addr = func_addr; + hasSymbol.addr = symbol_addr; hasSymbol.build = build; hasSymbol.library_flag = library_flag; hasSymbol.symbol = symbol_str;