diff --git a/build/win32/Cxbx.vcxproj b/build/win32/Cxbx.vcxproj index bdcc0e412..0a4ab05c6 100644 --- a/build/win32/Cxbx.vcxproj +++ b/build/win32/Cxbx.vcxproj @@ -231,9 +231,11 @@ $(SOLUTIONDIR)Export.bat + + @@ -255,6 +257,12 @@ $(SOLUTIONDIR)Export.bat + + + + + + @@ -319,20 +327,33 @@ $(SOLUTIONDIR)Export.bat + + + + + + + + + + + + + @@ -340,22 +361,42 @@ $(SOLUTIONDIR)Export.bat + + + + + + + + + + + + + + + + + + + + @@ -363,16 +404,27 @@ $(SOLUTIONDIR)Export.bat + + + + + + + + + + + diff --git a/build/win32/Cxbx.vcxproj.filters b/build/win32/Cxbx.vcxproj.filters index 82aa831c0..2973c5f61 100644 --- a/build/win32/Cxbx.vcxproj.filters +++ b/build/win32/Cxbx.vcxproj.filters @@ -244,13 +244,10 @@ EmuD3D8 - HLEDatabase - - - HLEDatabase + HLEDatabase\XNet - HLEDatabase + HLEDatabase\XNet Kernel @@ -408,6 +405,9 @@ Shared + + HLEDatabase\D3D8 + HLEDatabase\D3D8 @@ -417,6 +417,9 @@ HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 @@ -477,6 +480,27 @@ HLEDatabase\DSound + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + HLEDatabase\Xapi @@ -578,14 +602,23 @@ GUI - - HLEDatabase + + HLEDatabase\XNet - HLEDatabase + HLEDatabase\XNet + + + HLEDatabase\XNet - HLEDatabase + HLEDatabase\XNet + + + HLEDatabase\XNet + + + HLEDatabase\XNet Shared @@ -596,51 +629,90 @@ + + HLEDatabase\D3D8 + + + HLEDatabase\D3D8 + HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 + + HLEDatabase\D3D8 + + + HLEDatabase\D3D8 + HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 + + HLEDatabase\D3D8 + HLEDatabase\D3D8 HLEDatabase\D3D8 - + + HLEDatabase\DSound + + HLEDatabase\DSound HLEDatabase\DSound + + HLEDatabase\DSound + HLEDatabase\DSound + + HLEDatabase\DSound + HLEDatabase\DSound @@ -665,15 +737,54 @@ HLEDatabase\DSound + + HLEDatabase\DSound + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + + + HLEDatabase\XactEng + HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\Xapi @@ -686,27 +797,48 @@ HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\Xapi HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\Xapi + + HLEDatabase\Xapi + + + HLEDatabase\Xapi + HLEDatabase\Xapi + + HLEDatabase\Xapi + HLEDatabase\XG HLEDatabase\XG + + HLEDatabase\XG + HLEDatabase\XG @@ -728,11 +860,14 @@ HLEDatabase\XG + + HLEDatabase\XG + HLEDatabase\XG - - HLEDatabase\XOnline + + HLEDatabase\XG HLEDatabase\XOnline @@ -740,6 +875,9 @@ HLEDatabase\XOnline + + HLEDatabase\XOnline + HLEDatabase\XOnline @@ -749,9 +887,24 @@ HLEDatabase\XOnline + + HLEDatabase\XOnline + HLEDatabase\XOnline + + HLEDatabase\XOnline + + + HLEDatabase\XOnline + + + HLEDatabase\XOnline + + + HLEDatabase\XOnline + @@ -772,12 +925,18 @@ {d8ef7ef5-cbb9-4dba-9cab-585519a9756b} + + {b36ac8b9-077a-4ffc-bff9-3f2c0be74924} + {e78a3cc3-abce-4577-90aa-b7535bb09768} {a942f43a-b405-4c5d-85cd-ffc84b66ad3f} + + {d63c05a9-f8e1-4ad1-88fb-3f5b97a21063} + {736110f8-9b79-47db-86f5-250d1d4d8b9a} diff --git a/src/CxbxKrnl/EmuDSound.cpp b/src/CxbxKrnl/EmuDSound.cpp old mode 100644 new mode 100755 index c7ecf080a..55e6e6f57 --- a/src/CxbxKrnl/EmuDSound.cpp +++ b/src/CxbxKrnl/EmuDSound.cpp @@ -338,30 +338,6 @@ HRESULT WINAPI XTL::EMUPATCH(CDirectSound_GetSpeakerConfig) return S_OK; } -// ****************************************************************** -// * patch: IDirectSound8_EnableHeadphones -// ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(IDirectSound8_EnableHeadphones) -( - LPDIRECTSOUND8 pThis, - BOOL fEnabled) -{ - FUNC_EXPORTS; - - enterCriticalSection; - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(pThis) - LOG_FUNC_ARG(fEnabled) - LOG_FUNC_END; - - EmuWarning("EmuIDirectSound8_EnableHeadphones ignored"); - - leaveCriticalSection; - - return S_OK; -} - // ****************************************************************** // * patch: IDirectSound_SynchPlayback // ****************************************************************** @@ -639,9 +615,10 @@ HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetMixBins) } // ****************************************************************** -// * patch: IDirectSoundBuffer_SetMixBinVolumes +// * patch: IDirectSoundBuffer_SetMixBinVolumes_12 // ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes) +// This revision API was used in XDK 3911 until API had changed in XDK 4039. +HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes_12) ( LPDIRECTSOUND8 pThis, DWORD dwMixBinMask, @@ -668,9 +645,10 @@ HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes) } // ****************************************************************** -// * patch: IDirectSoundBuffer_SetMixBinVolumes +// * patch: IDirectSoundBuffer_SetMixBinVolumes_8 // ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes2) +// This revision is only used in XDK 4039 and higher. +HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes_8) ( LPDIRECTSOUND8 pThis, PVOID pMixBins) @@ -894,30 +872,6 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateBuffer) return S_OK; } -// ****************************************************************** -// * patch: IDirectSound_CreateBuffer -// ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(IDirectSound_CreateBuffer) -( - LPDIRECTSOUND8 pThis, - X_DSBUFFERDESC* pdssd, - OUT X_CDirectSoundBuffer** ppBuffer, - PVOID pUnknown) -{ - FUNC_EXPORTS; - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(pThis) - LOG_FUNC_ARG(pdssd) - LOG_FUNC_ARG_OUT(ppBuffer) - LOG_FUNC_ARG(pUnknown) - LOG_FUNC_END; - - EMUPATCH(DirectSoundCreateBuffer)(pdssd, ppBuffer); - - return DS_OK; -} - // ****************************************************************** // * patch: IDirectSound_CreateSoundBuffer // ****************************************************************** @@ -1082,6 +1036,45 @@ HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_Lock) RETURN_RESULT_CHECK(hRet); } +// ****************************************************************** +// * patch: IDirectSoundBuffer_Unlock +// ****************************************************************** +HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_Unlock) +( + X_CDirectSoundBuffer* pThis, + LPVOID ppvAudioPtr1, + DWORD pdwAudioBytes1, + LPVOID ppvAudioPtr2, + DWORD pdwAudioBytes2 + ) +{ + FUNC_EXPORTS; + + enterCriticalSection; + + LOG_FUNC_BEGIN + LOG_FUNC_ARG(pThis) + LOG_FUNC_ARG(ppvAudioPtr1) + LOG_FUNC_ARG(pdwAudioBytes1) + LOG_FUNC_ARG(ppvAudioPtr2) + LOG_FUNC_ARG(pdwAudioBytes2) + LOG_FUNC_END; + + DSoundGenericUnlock(pThis->EmuFlags, + pThis->EmuDirectSoundBuffer8, + pThis->EmuBufferDesc, + pThis->EmuLockOffset, + pThis->EmuLockPtr1, + pThis->EmuLockBytes1, + pThis->EmuLockPtr2, + pThis->EmuLockBytes2, + pThis->EmuLockFlags); + + leaveCriticalSection; + + return DS_OK; +} + // ****************************************************************** // * patch: IDirectSoundBuffer_SetHeadroom // ****************************************************************** @@ -2511,6 +2504,24 @@ STDAPI_(void) XTL::EMUPATCH(DirectSoundUseFullHRTF) leaveCriticalSection; } +// ****************************************************************** +// * patch: DirectSoundUseLightHRTF +// ****************************************************************** +STDAPI_(void) XTL::EMUPATCH(DirectSoundUseLightHRTF) +( + void) +{ + FUNC_EXPORTS; + + enterCriticalSection; + + LOG_FUNC(); + + LOG_UNIMPLEMENTED_DSOUND(); + + leaveCriticalSection; +} + // ****************************************************************** // * patch: IDirectSoundBuffer_SetLFO // ****************************************************************** @@ -2656,7 +2667,8 @@ HRESULT WINAPI XTL::EMUPATCH(IDirectSound_EnableHeadphones) LOG_FUNC_ARG(fEnabled) LOG_FUNC_END; - LOG_UNIMPLEMENTED_DSOUND(); + //Windows Vista and later does not set speaker configuration from SetSpeakerConfig function. + EmuWarning("EmuIDirectSound_EnableHeadphones ignored"); leaveCriticalSection; @@ -3078,9 +3090,10 @@ DWORD WINAPI XTL::EMUPATCH(DirectSoundGetSampleTime)() } // ****************************************************************** -// * patch: CDirectSoundStream_SetMixBinVolumes +// * patch: CDirectSoundStream_SetMixBinVolumes_12 // ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_SetMixBinVolumes) +// This revision API is only used in XDK 4039 and higher. +HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_SetMixBinVolumes_12) ( X_CDirectSoundStream* pThis, DWORD dwMixBinMask, @@ -3107,9 +3120,10 @@ HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_SetMixBinVolumes) } // ****************************************************************** -// * patch: CDirectSoundStream_SetMixBinVolumes2 +// * patch: CDirectSoundStream_SetMixBinVolumes_8 // ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_SetMixBinVolumes2) +// This revision API was used in XDK 3911 until API had changed in XDK 4039. +HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_SetMixBinVolumes_8) ( X_CDirectSoundStream* pThis, LPVOID pMixBins) @@ -3703,3 +3717,72 @@ HRESULT WINAPI XTL::EMUPATCH(XFileMediaObject_Discontinuity) return DS_OK; } + +// ****************************************************************** +// * patch: IDirectSound_GetSpeakerConfig +// ****************************************************************** +HRESULT WINAPI XTL::EMUPATCH(IDirectSound_GetSpeakerConfig) +( + X_CDirectSound* pThis, + OUT LPDWORD* pdwSpeakerConfig) +{ + FUNC_EXPORTS; + + enterCriticalSection; + + LOG_FUNC_BEGIN + LOG_FUNC_ARG(pThis) + LOG_FUNC_ARG_OUT(pdwSpeakerConfig) + LOG_FUNC_END; + + //For now, let's set it to stereo. + *pdwSpeakerConfig = X_DSSPEAKER_STEREO; + + leaveCriticalSection; + + return S_OK; +} + +// ****************************************************************** +// * patch: IDirectSound_CommitDeferredSettings +// ****************************************************************** +HRESULT WINAPI XTL::EMUPATCH(IDirectSound_CommitDeferredSettings) +( + X_CDirectSound* pThis) +{ + FUNC_EXPORTS; + + enterCriticalSection; + + LOG_FUNC_ONE_ARG(pThis); + + HRESULT hRet = DS_OK; + if (g_pDSoundPrimary3DListener8 != nullptr) { + hRet = g_pDSoundPrimary3DListener8->CommitDeferredSettings(); + } + + leaveCriticalSection; + + return hRet; +} + +// ****************************************************************** +// * patch: IDirectSound_CommitEffectData +// ****************************************************************** +// This API is used relative with DSP effect. +HRESULT WINAPI XTL::EMUPATCH(IDirectSound_CommitEffectData) +( + X_CDirectSound* pThis) +{ + FUNC_EXPORTS; + + enterCriticalSection; + + LOG_FUNC_ONE_ARG(pThis); + + LOG_UNIMPLEMENTED_DSOUND(); + + leaveCriticalSection; + + return DS_OK; +} diff --git a/src/CxbxKrnl/EmuDSound.h b/src/CxbxKrnl/EmuDSound.h old mode 100644 new mode 100755 index 67a8a0280..87a098b56 --- a/src/CxbxKrnl/EmuDSound.h +++ b/src/CxbxKrnl/EmuDSound.h @@ -211,6 +211,12 @@ struct X_DSCAPS DWORD dwMemoryAllocated; }; +#define X_DSSPEAKER_STEREO 0x00000000 +#define X_DSSPEAKER_MONO 0x00000001 +#define X_DSSPEAKER_SURROUND 0x00000002 +#define X_DSSPEAKER_ENABLE_AC3 0x00010000 +#define X_DSSPEAKER_ENABLE_DTS 0x00020000 + typedef struct IDirectSoundStream IDirectSoundStream; @@ -489,15 +495,6 @@ HRESULT WINAPI EMUPATCH(CDirectSound_GetSpeakerConfig) PDWORD pdwSpeakerConfig ); -// ****************************************************************** -// * patch: IDirectSound8_EnableHeadphones -// ****************************************************************** -HRESULT WINAPI EMUPATCH(IDirectSound8_EnableHeadphones) -( - LPDIRECTSOUND8 pThis, - BOOL fEnabled -); - // ****************************************************************** // * patch: IDirectSound_SynchPlayback // ****************************************************************** @@ -593,9 +590,9 @@ HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_SetMixBins) ); // ****************************************************************** -// * patch: IDirectSoundBuffer_SetMixBinVolumes +// * patch: IDirectSoundBuffer_SetMixBinVolumes_12 // ****************************************************************** -HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes) +HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes_12) ( LPDIRECTSOUND8 pThis, DWORD dwMixBinMask, @@ -603,9 +600,9 @@ HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes) ); // ****************************************************************** -// * patch: IDirectSoundBuffer_SetMixBinVolumes +// * patch: IDirectSoundBuffer_SetMixBinVolumes_12 // ****************************************************************** -HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes2) +HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_SetMixBinVolumes_8) ( LPDIRECTSOUND8 pThis, PVOID pMixBins // TODO: fill this out @@ -673,17 +670,6 @@ HRESULT WINAPI EMUPATCH(DirectSoundCreateBuffer) X_CDirectSoundBuffer** ppBuffer ); -// ****************************************************************** -// * patch: IDirectSound_CreateBuffer -// ****************************************************************** -HRESULT WINAPI EMUPATCH(IDirectSound_CreateBuffer) -( - LPDIRECTSOUND8 pThis, - X_DSBUFFERDESC* pdssd, - X_CDirectSoundBuffer** ppBuffer, - PVOID pUnknown -); - // ****************************************************************** // * patch: IDirectSoundBuffer_SetBufferData // ****************************************************************** @@ -718,6 +704,17 @@ HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_Lock) LPDWORD pdwAudioBytes2, DWORD dwFlags ); +// ****************************************************************** +// * patch: IDirectSoundBuffer_Unlock +// ****************************************************************** +HRESULT WINAPI EMUPATCH(IDirectSoundBuffer_Unlock) +( + X_CDirectSoundBuffer* pThis, + LPVOID ppvAudioPtr1, + DWORD pdwAudioBytes1, + LPVOID ppvAudioPtr2, + DWORD pdwAudioBytes2 + ); // ****************************************************************** // * patch: IDirectSoundBuffer_SetHeadroom @@ -1235,6 +1232,14 @@ STDAPI_(void) EMUPATCH(DirectSoundUseFullHRTF) void ); +// ****************************************************************** +// * patch: DirectSoundUseLightHRTF +// ****************************************************************** +STDAPI_(void) EMUPATCH(DirectSoundUseLightHRTF) +( + void +); + // ****************************************************************** // * patch: IDirectSoundBuffer_SetLFO // ****************************************************************** @@ -1416,9 +1421,9 @@ HRESULT WINAPI EMUPATCH(CDirectSoundStream_SetPitch) DWORD WINAPI EMUPATCH(DirectSoundGetSampleTime)(); // ****************************************************************** -// * patch: CDirectSoundStream_SetMixBinVolumes +// * patch: CDirectSoundStream_SetMixBinVolumes_12 // ****************************************************************** -HRESULT WINAPI EMUPATCH(CDirectSoundStream_SetMixBinVolumes) +HRESULT WINAPI EMUPATCH(CDirectSoundStream_SetMixBinVolumes_12) ( X_CDirectSoundStream* pThis, DWORD dwMixBinMask, @@ -1426,9 +1431,9 @@ HRESULT WINAPI EMUPATCH(CDirectSoundStream_SetMixBinVolumes) ); // ****************************************************************** -// * patch: CDirectSoundStream_SetMixBinVolumes2 +// * patch: CDirectSoundStream_SetMixBinVolumes_8 // ****************************************************************** -HRESULT WINAPI EMUPATCH(CDirectSoundStream_SetMixBinVolumes2) +HRESULT WINAPI EMUPATCH(CDirectSoundStream_SetMixBinVolumes_8) ( X_CDirectSoundStream* pThis, LPVOID pMixBins @@ -1633,4 +1638,22 @@ ULONG WINAPI EMUPATCH(XFileMediaObject_Release)(X_XFileMediaObject *pThis); // ****************************************************************** HRESULT WINAPI EMUPATCH(XFileMediaObject_Discontinuity)(X_XFileMediaObject *pThis); +// ****************************************************************** +// * patch: IDirectSound_GetSpeakerConfig +// ****************************************************************** +HRESULT WINAPI EMUPATCH(IDirectSound_GetSpeakerConfig) + (X_CDirectSound* pThis, OUT LPDWORD* pdwSpeakerConfig); + +// ****************************************************************** +// * patch: IDirectSound_CommitDeferredSettings +// ****************************************************************** +HRESULT WINAPI EMUPATCH(IDirectSound_CommitDeferredSettings) + (X_CDirectSound* pThis); + +// ****************************************************************** +// * patch: IDirectSound_CommitEffectData +// ****************************************************************** +HRESULT WINAPI EMUPATCH(IDirectSound_CommitEffectData) + (X_CDirectSound* pThis); + #endif diff --git a/src/CxbxKrnl/EmuDSoundInline.hpp b/src/CxbxKrnl/EmuDSoundInline.hpp index 5f795abc4..52ab82c14 100644 --- a/src/CxbxKrnl/EmuDSoundInline.hpp +++ b/src/CxbxKrnl/EmuDSoundInline.hpp @@ -378,10 +378,17 @@ inline void ResizeIDirectSoundBuffer( } DbgPrintf("EmuResizeIDirectSoundBuffer8 : Resizing! (0x%.08X->0x%.08X)\n", pDSBufferDesc->dwBufferBytes, dwBytes); - DWORD dwPlayCursor, dwWriteCursor, dwStatus, refCount; - LONG lVolume; + DWORD dwPlayCursor, dwWriteCursor, dwStatus, refCount, dwFrequency; + LONG lVolume, lPan; + DS3DBUFFER ds3dBuffer; pDSBuffer->GetVolume(&lVolume); + pDSBuffer->GetFrequency(&dwFrequency); + pDSBuffer->GetPan(&lPan); + + if (pDSBufferDesc->dwFlags & DSBCAPS_CTRL3D) { + pDS3DBuffer->GetAllParameters(&ds3dBuffer); + } HRESULT hRet = pDSBuffer->GetCurrentPosition(&dwPlayCursor, &dwWriteCursor); @@ -427,11 +434,14 @@ inline void ResizeIDirectSoundBuffer( if (FAILED(hRet3D)) { EmuWarning("CreateSound3DBuffer Failed!"); pDS3DBuffer = NULL; + } else { + pDS3DBuffer->SetAllParameters(&ds3dBuffer, DS3D_IMMEDIATE); } } + pDSBuffer->SetPan(lPan); + pDSBuffer->SetFrequency(dwFrequency); pDSBuffer->SetVolume(lVolume); - pDSBuffer->SetCurrentPosition(dwPlayCursor); if (dwStatus & DSBSTATUS_PLAYING) { diff --git a/src/CxbxKrnl/HLEDataBase.cpp b/src/CxbxKrnl/HLEDataBase.cpp index 32ffcac7f..0422b219b 100644 --- a/src/CxbxKrnl/HLEDataBase.cpp +++ b/src/CxbxKrnl/HLEDataBase.cpp @@ -40,82 +40,41 @@ #include #include "CxbxKrnl.h" // For xbaddr +#include "HLEDataBase.h" // For PairScanLibSec extern "C" const char *szHLELastCompileTime = __TIMESTAMP__; const char *Lib_D3D8 = "D3D8"; +const char *Sec_D3D = "D3D"; const char *Lib_D3D8LTCG = "D3D8LTCG"; const char *Lib_D3DX8 = "D3DX8"; +const char *Sec_D3DX = "D3DX"; const char *Lib_DSOUND = "DSOUND"; +const char *Sec_DSOUND = Lib_DSOUND; const char *Lib_XACTENG = "XACTENG"; +const char *Sec_XACTENG = Lib_XACTENG; const char *Lib_XAPILIB = "XAPILIB"; +const char *Sec_XPP = "XPP"; +const char *Sec_text = ".text"; const char *Lib_XGRAPHC = "XGRAPHC"; +const char *Sec_XGRPH = "XGRPH"; +const char *Lib_XNETN = "XNETN"; const char *Lib_XNETS = "XNETS"; const char *Lib_XONLINE = "XONLINE"; // TODO : Typo for XONLINES? +const char *Sec_XONLINE = Lib_XONLINE; const char *Lib_XONLINES = "XONLINES"; +const char *Sec_XNET = "XNET"; #include "Emu.h" #include "EmuXTL.h" #include "HLEDataBase.h" -#include "HLEDataBase/Xapi.1.0.3911.inl" -#include "HLEDataBase/Xapi.1.0.4034.inl" -#include "HLEDataBase/Xapi.1.0.4134.inl" -#include "HLEDataBase/Xapi.1.0.4361.inl" -#include "HLEDataBase/Xapi.1.0.4432.inl" -#include "HLEDataBase/Xapi.1.0.4627.inl" -#include "HLEDataBase/Xapi.1.0.4721.inl" -#include "HLEDataBase/Xapi.1.0.5028.inl" -#include "HLEDataBase/Xapi.1.0.5233.inl" -#include "HLEDataBase/Xapi.1.0.5344.inl" -#include "HLEDataBase/Xapi.1.0.5558.inl" -#include "HLEDataBase/Xapi.1.0.5788.inl" -#include "HLEDataBase/Xapi.1.0.5849.inl" -#include "HLEDataBase/D3D8.1.0.3925.inl" -#include "HLEDataBase/D3D8.1.0.4034.inl" -#include "HLEDataBase/D3D8.1.0.4134.inl" -#include "HLEDataBase/D3D8.1.0.4361.inl" -#include "HLEDataBase/D3D8.1.0.4432.inl" -#include "HLEDataBase/D3D8.1.0.4627.inl" -#include "HLEDataBase/D3D8.1.0.5028.inl" -#include "HLEDataBase/D3D8.1.0.5233.inl" -#include "HLEDataBase/D3D8.1.0.5344.inl" -#include "HLEDataBase/D3D8.1.0.5558.inl" -#include "HLEDataBase/D3D8.1.0.5788.inl" -#include "HLEDataBase/D3D8.1.0.5849.inl" -#include "HLEDataBase/DSound.1.0.3936.inl" -#include "HLEDataBase/DSound.1.0.4134.inl" -#include "HLEDataBase/DSound.1.0.4361.inl" -#include "HLEDataBase/DSound.1.0.4432.inl" -#include "HLEDataBase/DSound.1.0.4627.inl" -#include "HLEDataBase/DSound.1.0.5028.inl" -#include "HLEDataBase/DSound.1.0.5233.inl" -#include "HLEDataBase/DSound.1.0.5344.inl" -#include "HLEDataBase/DSound.1.0.5558.inl" -#include "HLEDataBase/DSound.1.0.5788.inl" -#include "HLEDataBase/DSound.1.0.5849.inl" -#include "HLEDataBase/XG.1.0.3911.inl" -#include "HLEDataBase/XG.1.0.4034.inl" -#include "HLEDataBase/XG.1.0.4361.inl" -#include "HLEDataBase/XG.1.0.4432.inl" -#include "HLEDataBase/XG.1.0.4627.inl" -#include "HLEDataBase/XG.1.0.5028.inl" -#include "HLEDataBase/XG.1.0.5233.inl" -#include "HLEDataBase/XG.1.0.5344.inl" -#include "HLEDataBase/XG.1.0.5558.inl" -#include "HLEDataBase/XG.1.0.5788.inl" -#include "HLEDataBase/XG.1.0.5849.inl" -#include "HLEDataBase/XNet.1.0.3911.inl" -#include "HLEDataBase/XNet.1.0.4627.inl" -#include "HLEDataBase/XOnline.1.0.4361.inl" -#include "HLEDataBase/XOnline.1.0.4627.inl" -#include "HLEDataBase/XOnline.1.0.5028.inl" -#include "HLEDataBase/XOnline.1.0.5233.inl" -#include "HLEDataBase/XOnline.1.0.5344.inl" -#include "HLEDataBase/XOnline.1.0.5558.inl" -#include "HLEDataBase/XOnline.1.0.5788.inl" -#include "HLEDataBase/XOnline.1.0.5849.inl" -#include "HLEDataBase/XactEng.1.0.4627.inl" -#include "HLEDataBase/XactEng.1.0.5849.inl" +#include "HLEDataBase/Xapi.OOVPA.inl" +#include "HLEDataBase/D3D8.OOVPA.inl" +#include "HLEDataBase/DSound.OOVPA.inl" +#include "HLEDataBase/XG.OOVPA.inl" +#include "HLEDataBase/XNET.OOVPA.inl" +#include "HLEDataBase/XOnline.OOVPA.inl" +#include "HLEDataBase/XactEng.OOVPA.inl" // ****************************************************************** @@ -128,6 +87,7 @@ const char *Lib_XONLINES = "XONLINES"; const HLEData HLEDataBase[] = { +#if ENABLE_LEGACY_XAPI_DB HLE_ENTRY(Lib_XAPILIB, XAPI, 3911), HLE_ENTRY(Lib_XAPILIB, XAPI, 4034), HLE_ENTRY(Lib_XAPILIB, XAPI, 4134), @@ -141,7 +101,8 @@ const HLEData HLEDataBase[] = HLE_ENTRY(Lib_XAPILIB, XAPI, 5558), HLE_ENTRY(Lib_XAPILIB, XAPI, 5788), HLE_ENTRY(Lib_XAPILIB, XAPI, 5849), - +#endif +#if ENABLE_LEGACY_D3D8_DB HLE_ENTRY(Lib_D3D8, D3D8, 3925), HLE_ENTRY(Lib_D3D8, D3D8, 4034), HLE_ENTRY(Lib_D3D8, D3D8, 4134), @@ -154,7 +115,8 @@ const HLEData HLEDataBase[] = HLE_ENTRY(Lib_D3D8, D3D8, 5558), HLE_ENTRY(Lib_D3D8, D3D8, 5788), HLE_ENTRY(Lib_D3D8, D3D8, 5849), - +#endif +#if ENABLE_LEGACY_DSOUND_DB HLE_ENTRY(Lib_DSOUND, DSound, 3936), HLE_ENTRY(Lib_DSOUND, DSound, 4134), HLE_ENTRY(Lib_DSOUND, DSound, 4361), @@ -166,7 +128,17 @@ const HLEData HLEDataBase[] = HLE_ENTRY(Lib_DSOUND, DSound, 5558), HLE_ENTRY(Lib_DSOUND, DSound, 5788), HLE_ENTRY(Lib_DSOUND, DSound, 5849), - +#endif +#if ENABLE_LEGACY_XACTENG_DB + HLE_ENTRY(Lib_XACTENG, XactEng, 4627), + HLE_ENTRY(Lib_XACTENG, XactEng, 4928), + HLE_ENTRY(Lib_XACTENG, XactEng, 5233), + HLE_ENTRY(Lib_XACTENG, XactEng, 5344), + HLE_ENTRY(Lib_XACTENG, XactEng, 5558), + HLE_ENTRY(Lib_XACTENG, XactEng, 5788), + HLE_ENTRY(Lib_XACTENG, XactEng, 5849), +#endif +#if ENABLE_LEGACY_XGRAPHC_DB HLE_ENTRY(Lib_XGRAPHC, XG, 3911), HLE_ENTRY(Lib_XGRAPHC, XG, 4034), HLE_ENTRY(Lib_XGRAPHC, XG, 4361), @@ -178,12 +150,15 @@ const HLEData HLEDataBase[] = HLE_ENTRY(Lib_XGRAPHC, XG, 5558), HLE_ENTRY(Lib_XGRAPHC, XG, 5788), HLE_ENTRY(Lib_XGRAPHC, XG, 5849), - +#endif +#if ENABLE_LEGACY_XNETS_DB HLE_ENTRY(Lib_XNETS, XNet, 3911), HLE_ENTRY(Lib_XNETS, XNet, 4627), +#endif HLE_ENTRY(Lib_XONLINE, XOnline, 4361), // TODO : Typo for XONLINES? +#if ENABLE_LEGACY_XONLINES_DB // TODO: Verify differences between XONLINE and XONLINES (if any) HLE_ENTRY(Lib_XONLINES, XOnline, 4627), HLE_ENTRY(Lib_XONLINES, XOnline, 5028), @@ -192,17 +167,61 @@ const HLEData HLEDataBase[] = HLE_ENTRY(Lib_XONLINES, XOnline, 5558), HLE_ENTRY(Lib_XONLINES, XOnline, 5788), HLE_ENTRY(Lib_XONLINES, XOnline, 5849), +#endif +}; - HLE_ENTRY(Lib_XACTENG, XactEng, 4627), - HLE_ENTRY(Lib_XACTENG, XactEng, 5849), +const HLEDataV2 HLEDataBaseV2[] = { + // Support inline functions in .text section + { Lib_D3D8,{ Sec_text, Sec_D3D }, D3D8_OOVPAV2, D3D8_OOVPA_SIZEV2 }, + + // Cannot support LTCG in HLE + //{ Lib_D3D8LTCG,{ Sec_D3D }, _OOVPAV2, _OOVPA_SIZEV2 }, + + // Jarupxx mention this is not a requirement? + //{ Lib_D3DX8,{ Sec_D3DX }, _OOVPAV2, _OOVPA_SIZEV2 }, + + // + { Lib_DSOUND,{ Sec_DSOUND }, DSound_OOVPAV2, DSound_OOVPA_SIZEV2 }, + + // DSOUNDH is just meant to define hot fix, there is no seperate section + //{ Lib_DSOUNDH,{ Sec_DSOUND }, DSound_OOVPAV2, DSound_OOVPA_SIZEV2 }, + + // + { Lib_XACTENG, { Sec_XACTENG }, XACTENG_OOVPAV2, XACTENG_OOVPA_SIZEV2 }, + + // test case: Power Drome (Unluckily, it use LTCG version of the library.) + //{ Lib_XACTENLT,{ Sec_XACTENG }, XACTENG_OOVPAV2, XACTENG_OOVPA_SIZEV2 }, + + // + { Lib_XAPILIB,{ Sec_text, Sec_XPP }, XAPILIB_OOVPAV2, XAPILIB_OOVPA_SIZEV2 }, + + // Support inline functions in .text section + { Lib_XGRAPHC,{ Sec_text, Sec_XGRPH }, XGRAPHC_OOVPAV2, XGRAPHC_OOVPA_SIZEV2 }, + + // Cannot support LTCG in HLE + //{ Lib_XGRAPHCL,{ Sec_XGRPH }, XGRAPHC_OOVPAV2, XGRAPHC_OOVPA_SIZEV2 }, + + // + //{ Lib_XONLINE,{ Sec_XONLINE }, XONLINES_OOVPAV2, XONLINES_OOVPA_SIZEV2 }, + + // Fun fact, XONLINES are split into 2 header sections. + { Lib_XONLINES,{ Sec_text, Sec_XONLINE, Sec_XNET }, XONLINES_OOVPAV2, XONLINES_OOVPA_SIZEV2 }, + + // XNETS only has XNET, might be true. + { Lib_XNETS,{ Sec_text, Sec_XNET }, XNET_OOVPAV2, XNET_OOVPA_SIZEV2 }, + + // test case: Stake + { Lib_XNETN,{ Sec_text, Sec_XNET }, XNET_OOVPAV2, XNET_OOVPA_SIZEV2 }, }; // ****************************************************************** // * HLEDataBaseCount // ****************************************************************** -extern const uint32 HLEDataBaseCount = sizeof(HLEDataBase) / sizeof(HLEData); +const uint32 HLEDataBaseCount = sizeof(HLEDataBase) / sizeof(HLEData); + +const uint32 HLEDataBaseCountV2 = sizeof(HLEDataBaseV2) / sizeof(HLEDataV2); // ****************************************************************** // * XRefDataBase // ****************************************************************** -extern xbaddr XRefDataBase[XREF_COUNT] = { 0 }; // Reset and populated by EmuHLEIntercept +xbaddr XRefDataBase[XREF_COUNT] = { 0 }; // Reset and populated by EmuHLEIntercept diff --git a/src/CxbxKrnl/HLEDataBase.h b/src/CxbxKrnl/HLEDataBase.h index eed79666d..b4af21dc2 100644 --- a/src/CxbxKrnl/HLEDataBase.h +++ b/src/CxbxKrnl/HLEDataBase.h @@ -46,9 +46,11 @@ #include "HLEDataBase/Xapi.1.0.5558.h" #include "HLEDataBase/Xapi.1.0.5788.h" #include "HLEDataBase/Xapi.1.0.5849.h" +#include "HLEDataBase/D3D8.1.0.3911.h" #include "HLEDataBase/D3D8.1.0.3925.h" #include "HLEDataBase/D3D8.1.0.4034.h" #include "HLEDataBase/D3D8.1.0.4134.h" +#include "HLEDataBase/D3D8.1.0.4242.h" #include "HLEDataBase/D3D8.1.0.4361.h" #include "HLEDataBase/D3D8.1.0.4432.h" #include "HLEDataBase/D3D8.1.0.4627.h" @@ -90,6 +92,11 @@ #include "HLEDataBase/XOnline.1.0.5788.h" #include "HLEDataBase/XOnline.1.0.5849.h" #include "HLEDataBase/XactEng.1.0.4627.h" +#include "HLEDataBase/XactEng.1.0.4928.h" +#include "HLEDataBase/XactEng.1.0.5233.h" +#include "HLEDataBase/XactEng.1.0.5344.h" +#include "HLEDataBase/XactEng.1.0.5558.h" +#include "HLEDataBase/XactEng.1.0.5788.h" #include "HLEDataBase/XactEng.1.0.5849.h" // ****************************************************************** @@ -97,6 +104,7 @@ // ****************************************************************** extern "C" const char *szHLELastCompileTime; +//TODO: Need to remove these externs as v2 is no longer require it. extern const char *Lib_D3D8; extern const char *Lib_D3D8LTCG; extern const char *Lib_D3DX8; @@ -105,7 +113,7 @@ extern const char *Lib_XACTENG; extern const char *Lib_XAPILIB; extern const char *Lib_XGRAPHC; extern const char *Lib_XNETS; -extern const char *Lib_XONLINE; // TODO : Typo for XONLINES? +extern const char *Lib_XONLINE; //Is not a typo issue extern const char *Lib_XONLINES; // ****************************************************************** @@ -121,18 +129,36 @@ extern const struct HLEData } HLEDataBase[]; +#define PAIRSCANSEC_MAX 3 + +const struct PairScanLibSec { + const char *library; + const char *section[PAIRSCANSEC_MAX]; +}; + +extern const struct HLEDataV2 +{ + const PairScanLibSec LibSec; + + OOVPATable *OovpaTable; + uint32 OovpaTableSize; +} +HLEDataBaseV2[]; + // ****************************************************************** // * HLEDataBaseCount // ****************************************************************** extern const uint32 HLEDataBaseCount; +extern const uint32 HLEDataBaseCountV2; + // ****************************************************************** // * XRefDataBaseOffset // ****************************************************************** enum XRefDataBaseOffset { XREF_D3DDEVICE=0, - XREF_SETRENDERSTATE_CULLMODE, + XREF_D3DDevice_SetRenderState_CullMode, XREF_D3DRS_CULLMODE, XREF_D3DTSS_TEXCOORDINDEX, XREF_D3DRS_MULTISAMPLEMODE, @@ -141,24 +167,36 @@ enum XRefDataBaseOffset XREF_D3DRS_ROPZREAD, XREF_D3DRS_DONOTCULLUNCOMPRESSED, XREF_D3DRS_STENCILCULLENABLE, - XREF_D3DCD_LAZYSETSTATEVB, + XREF_D3DDevice_LazySetStateVB, XREF_D3D_BlockOnResource, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XREF_D3D_CreateStandAloneSurface, - XREF_D3D_SETFENCE, + XREF_D3D_SetFence, + XREF_D3D_SetTileNoWait, XREF_D3D_KickOffAndWaitForIdle, XREF_D3D_MakeRequestedSpace, - XREF_D3D_KickOff, + XREF_D3D_CDevice_KickOff, XREF_D3DPalette_Lock2, - XREF_XNINIT, - XREF_FCLOSEDEVICE, - XREF_CLEARSTATEBLOCKFLAGS, - XREF_RECORDSTATEBLOCK, - XREF_SETDISTANCEFACTORA, - XREF_SETDISTANCEFACTORB, - XREF_SETROLLOFFFACTORA, - XREF_SETROLLOFFFACTORB, - XREF_SETDOPPLERFACTOR, + XREF_D3DTexture_GetSurfaceLevel2, + XREF_D3DDevice_CreatePalette2, + XREF_D3DDevice_CreateIndexBuffer2, + XREF_D3DDevice_CreateVertexBuffer2, + XREF_D3DDevice_GetBackBuffer2, + XREF_D3DDevice_GetDepthStencilSurface2, + XREF_D3DDevice_GetRenderTarget2, + XREF_D3DResource_AddRef, + XREF_D3DVertexBuffer_Lock2, + XREF_XnInit, + XREF_XID_fCloseDevice, + XREF_D3D_ClearStateBlockFlags, + XREF_D3D_RecordStateBlock, + XREF_Lock2DSurface, + XREF_Lock3DSurface, + XREF_CDirectSound_SetDistanceFactor, + XREF_CMcpxAPU_Set3dDistanceFactor, + XREF_CDirectSound_SetRolloffFactor, + XREF_CMcpxAPU_Set3dRolloffFactor, + XREF_CDirectSound_SetDopplerFactor, XREF_SETBUFFERDATA, XREF_CMcpxBuffer_SetCurrentPosition, XREF_CDirectSoundBuffer_SetCurrentPosition, @@ -171,103 +209,103 @@ enum XRefDataBaseOffset XREF_DSSETBUFFERDATA, XREF_CMcpxBuffer_SetBufferData, XREF_CDirectSoundBuffer_SetBufferData, - XREF_DSCREATESOUNDBUFFER, - XREF_DSCREATESOUNDSTREAM, - XREF_DSSTREAMPAUSE, - XREF_DSSTREAMSETVOLUME, - XREF_DSSETI3DL2LISTENER, - XREF_DSSETMIXBINHEADROOMA, - XREF_DSSETMIXBINHEADROOMB, - XREF_DSSETMIXBINSA, - XREF_DSSETMIXBINSB, - XREF_DSSETMIXBINSC, - XREF_DSSETMIXBINVOLUMESA, - XREF_DSSETMIXBINVOLUMESB, - XREF_DSSETMIXBINVOLUMESC, - XREF_DSSETPOSITIONA, - XREF_DSSETPOSITIONB, - XREF_DSSETVELOCITYA, - XREF_DSSETVELOCITYB, - XREF_DSDOWORKA, - XREF_DSDOWORKB, - XREF_DSSETALLPARAMETERSA, - XREF_DSSETALLPARAMETERSB, + XREF_CDirectSound_CreateSoundBuffer, + XREF_CDirectSound_CreateSoundStream, + XREF_CMcpxStream_Pause, + XREF_CDirectSound_SetI3DL2Listener, + XREF_CDirectSound_SetMixBinHeadroom, + XREF_CMcpxAPU_SetMixBinHeadroom, + XREF_CDirectSoundVoiceSettings_SetMixBins, + XREF_CMcpxVoiceClient_SetMixBins, + XREF_CDirectSoundVoice_SetMixBins, + XREF_CDirectSoundBuffer_SetMixBins, + XREF_CDirectSoundBuffer_SetMixBinVolumes, + XREF_CDirectSoundVoice_SetMixBinVolumes, + XREF_CDirectSoundVoiceSettings_SetMixBinVolumes, + XREF_CDirectSound_SetPosition, + XREF_CMcpxAPU_Set3dPosition, + XREF_CDirectSound_SetVelocity, + XREF_CMcpxAPU_Set3dVelocity, + XREF_CDirectSound_DoWork, + XREF_CMcpxAPU_ServiceDeferredCommandsLow, + XREF_CDirectSound_SetAllParameters, + XREF_CMcpxAPU_Set3dParameters, XREF_DSSETHEADROOMA, - XREF_DSENABLEHEADPHONES, + XREF_CDirectSound_EnableHeadphones, XREF_DSSYNCHPLAYBACKA, XREF_DSSYNCHPLAYBACKB, XREF_DSSETI3DL2SOURCE1A, XREF_DSSETI3DL2SOURCE2A, - XREF_DSBUFFERSETPITCHA, - XREF_DSBUFFERSETPITCHB, - XREF_DSBUFFERSETVOLUMEA, - XREF_DSBUFFERSETVOLUMEB, - XREF_DSBUFFERSETCURRENTPOSITIONA, - XREF_DSBUFFERSETCURRENTPOSITIONB, + XREF_CMcpxVoiceClient_SetPitch, + XREF_CDirectSoundVoice_SetPitch, + XREF_CDirectSoundBuffer_SetPitch, + XREF_CDirectSoundStream_SetPitch, + XREF_CMcpxVoiceClient_SetVolume, XREF_DSBUFFERSETLOOPREGIONA, - XREF_DSBUFFERSETPLAYREGIONA, - XREF_DSBUFFERLOCKA, - XREF_DSBUFFERSETHEADROOMA, - XREF_DSBUFFERSETFREQUENCYA, - XREF_DSBUFFERSETFREQUENCYB, - XREF_DSSTREAMSETMAXDISTANCE1A, - XREF_DSSTREAMSETMAXDISTANCE1B, - XREF_DSSTREAMSETMAXDISTANCE1C, - XREF_DSSTREAMSETMINDISTANCE1A, - XREF_DSSTREAMSETMINDISTANCE1B, - XREF_DSSTREAMSETMINDISTANCE1C, - XREF_DSSTREAMSETCONEANGLES1A, - XREF_DSSTREAMSETCONEANGLES1B, - XREF_DSSTREAMSETCONEOUTSIDEVOLUME1A, - XREF_DSSTREAMSETCONEOUTSIDEVOLUME1B, - XREF_DSSTREAMSETALLPARAMETERS1A, - XREF_DSSTREAMSETALLPARAMETERS1B, + XREF_CDirectSoundBuffer_SetPlayRegion, + XREF_CDirectSoundBuffer_Lock, + XREF_CDirectSoundVoice_SetHeadroom, + XREF_CDirectSoundBuffer_SetHeadroom, + XREF_CDirectSoundStream_SetFrequency, + XREF_CDirectSoundBuffer_SetFrequency, + XREF_CDirectSoundVoice_SetFrequency, + XREF_CMcpxVoiceClient_Set3dMaxDistance, + XREF_CDirectSoundVoice_SetMaxDistance, + XREF_CDirectSoundStream_SetMaxDistance, + XREF_CDirectSoundStream_SetMinDistance, + XREF_CDirectSoundVoice_SetMinDistance, + XREF_CMcpxVoiceClient_Set3dMinDistance, + XREF_CDirectSoundVoice_SetConeOutsideVolume, + XREF_CMcpxVoiceClient_Set3dConeOutsideVolume, + XREF_CDirectSoundVoice_SetAllParameters, + XREF_CMcpxVoiceClient_Set3dParameters, XREF_DSSTREAMSETALLPARAMETERS1C, - XREF_DSSTREAMSETVELOCITY1A, - XREF_DSSTREAMSETVELOCITY1B, - XREF_DSSTREAMSETVELOCITY1C, - XREF_DSSTREAMSETCONEORIENTATION1A, - XREF_DSSTREAMSETCONEORIENTATION1B, - XREF_DSSTREAMSETCONEORIENTATION1C, - XREF_DSSTREAMSETPOSITION1A, - XREF_DSSTREAMSETPOSITION1B, - XREF_DSSTREAMSETPOSITION1C, - XREF_DSSTREAMSETFREQUENCY1A, - XREF_DSSTREAMSETFREQUENCY1B, + XREF_CDirectSoundStream_SetVelocity, + XREF_CDirectSoundVoice_SetVelocity, + XREF_CMcpxVoiceClient_Set3dVelocity, + XREF_CDirectSoundStream_SetConeOrientation, + XREF_CDirectSoundVoice_SetConeOrientation, + XREF_CMcpxVoiceClient_Set3dConeOrientation, + XREF_CDirectSoundStream_SetPosition, + XREF_CDirectSoundVoice_SetPosition, + XREF_CMcpxVoiceClient_Set3dPosition, + XREF_CMcpxStream_Flush, + XREF_CMcpxStream_Discontinuity, + XREF_XAudioCalculatePitch, XREF_DSSTREAMSETROLLOFFFACTOR1A, XREF_DSSTREAMSETROLLOFFFACTOR1B, XREF_GET2DSURFACEDESCB, - XREF_COMMONSETRENDERTARGET, - XREF_COMMITDEFERREDSETTINGSA, - XREF_COMMITDEFERREDSETTINGSB, + XREF_D3D_CommonSetRenderTarget, + XREF_CDirectSound_CommitDeferredSettings, + XREF_CMcpxAPU_Commit3dSettings, + XREF_CDirectSound_SetOrientation, + XREF_IDirectSound_CreateSoundBuffer, + XREF_IDirectSound_CreateSoundStream, // s+ // DSOUND + XREF_DS_CRefCount_AddRef, + XREF_DS_CRefCount_Release, XREF_DSVOICESETMAXDISTANCE, - XREF_DSVOICESETMINDISTANCE, XREF_DSVOICESETROLLOFFCURVE, XREF_DSVOICESETROLLOFFFACTOR, XREF_DSVOICESETDISTANCEFACTOR, - XREF_DSVOICESETCONEANGLES, - XREF_DSVOICESETCONEORIENTATION, - XREF_DSVOICESETCONEOUTSIDEVOLUME, - XREF_DSVOICESETPOSITION, - XREF_DSVOICESETVELOCITY, + XREF_CDirectSoundVoice_SetConeAngles, XREF_CDirectSoundVoice_SetDopplerFactor, - XREF_DSVOICESETI3DL2SOURCE, - XREF_DSBUFFERSETMODEA, - XREF_DSBUFFERSETMODEB, - XREF_DSBUFFERSETMAXDISTANCE, - XREF_DSBUFFERSETMINDISTANCE, + XREF_CMcpxVoiceClient_Set3dMode, + XREF_CDirectSoundVoice_SetMode, + XREF_CDirectSoundBuffer_SetMode, + XREF_CDirectSoundBuffer_SetMaxDistance, + XREF_CDirectSoundBuffer_SetMinDistance, XREF_DSBUFFERSETROLLOFFCURVE, XREF_DSBUFFERSETROLLOFFFACTOR, XREF_DSBUFFERSETDISTANCEFACTOR, - XREF_DSBUFFERSETCONEANGLES, - XREF_DSBUFFERSETCONEORIENTATION, - XREF_DSBUFFERSETCONEOUTSIDEVOLUME, - XREF_DSBUFFERSETPOSITION, - XREF_DSBUFFERSETVELOCITY, + XREF_CDirectSoundBuffer_SetConeAngles, + XREF_CDirectSoundBuffer_SetConeOrientation, + XREF_CDirectSoundBuffer_SetConeOutsideVolume, + XREF_CDirectSoundBuffer_SetPosition, + XREF_CDirectSoundBuffer_SetVelocity, XREF_DSBUFFERSETDOPPLERFACTOR, - XREF_DSBUFFERSETI3DL2SOURCE, + XREF_CDirectSoundBuffer_SetI3DL2Source, XREF_CDirectSoundVoice_SetFormat, XREF_CDirectSoundBuffer_SetFormat, XREF_CFullHRTFSource_GetCenterVolume, @@ -275,25 +313,23 @@ enum XRefDataBaseOffset XREF_CMcpxVoiceClient_SetLFO, XREF_CDirectSoundVoice_SetLFO, XREF_CDirectSoundBuffer_SetLFO, + XREF_CDirectSoundStream_SetLFO, XREF_CDirectSoundVoice_SetVolume, XREF_CDirectSoundBuffer_SetVolume, + XREF_CDirectSoundStream_SetVolume, XREF_CDirectSoundBuffer_SetLoopRegion, XREF_CMcpxBuffer_Play, XREF_CDirectSoundBuffer_PlayEx, XREF_WaveFormat_CreateXboxAdpcmFormat, - XREF_CDirectSoundVoice_SetConeAngles, - XREF_CDirectSoundBuffer_SetConeAngles, XREF_CDirectSoundVoice_CommitDeferredSettings, - XREF_CDirectSoundVoice_SetAllParameters, XREF_CDirectSoundBuffer_SetAllParameters, - XREF_CDirectSound_EnableHeadphones, - XREF_CDirectSoundVoice_SetHeadroom, - XREF_CDirectSoundBuffer_SetHeadroom, XREF_CDirectSound_GetOutputLevels, XREF_CMcpxBuffer_Pause, XREF_CDirectSoundBuffer_Pause, XREF_CMcpxBuffer_GetStatus, XREF_CDirectSoundBuffer_GetStatus, + XREF_CMcpxStream_GetStatus, + XREF_CDirectSoundStream_SetEG, XREF_CDirectSoundVoice_SetEG, XREF_CMcpxVoiceClient_SetEG, XREF_CMcpxVoiceClient_SetFilter, @@ -304,16 +340,15 @@ enum XRefDataBaseOffset XREF_CMcpxBuffer_Stop2, XREF_CMcpxAPU_Set3dDopplerFactor, XREF_CSensaura3d_GetFullHRTFFilterPair, + XREF_CSensaura3d_GetLiteHRTFFilterPair, XREF_CDirectSound_GetCaps, - XREF_CDirectSoundVoice_SetPitch, XREF_DirectSoundEnterCriticalSection, - XREF_CDirectSoundBuffer_SetMinDistance, - XREF_CDirectSoundBuffer_SetMaxDistance, XREF_CMcpxVoiceClient_Commit3dSettings, XREF_CMcpxVoiceClient_SetI3DL2Source, XREF_CDirectSoundVoice_SetI3DL2Source, - XREF_CDirectSoundVoice_SetMixBinVolumes, - XREF_CDirectSoundStream_SetMixBinVolumes, + XREF_CDirectSoundStream_SetMixBinVolumes_12, + XREF_CDirectSoundStream_SetMixBinVolumes_8, + XREF_CDirectSoundStream_SetMixBins, XREF_CDirectSoundStream_SetHeadroom, XREF_CDirectSoundVoice_SetOutputBuffer, XREF_CDirectSoundBuffer_SetOutputBuffer, @@ -323,6 +358,19 @@ enum XRefDataBaseOffset XREF_CMcpxBuffer_Play2, XREF_CDirectSoundVoice_Use3DVoiceData, XREF_CDirectSoundBuffer_Use3DVoiceData, + XREF_CDirectSound_SetEffectData, + XREF_CDirectSound_GetSpeakerConfig, + XREF_CDirectSound_DownloadEffectsImage, + XREF_CDirectSound_CommitEffectData, + XREF_CDirectSound_GetTime, + XREF_CMcpxAPU_SetI3DL2Listener, + XREF_CDirectSoundStream_SetOutputBuffer, + XREF_CDirectSoundStream_SetAllParameters, + XREF_CDirectSoundStream_SetConeAngles, + XREF_CDirectSoundStream_SetConeOutsideVolume, + XREF_CDirectSoundStream_SetMode, + XREF_CDirectSoundStream_SetI3DL2Source, + XREF_CDirectSoundStream_Pause, // XACT // +s XREF_XACT_CEngine_RegisterWaveBank, @@ -331,6 +379,7 @@ enum XRefDataBaseOffset XREF_XACT_CEngine_DownloadEffectsImage, XREF_XACT_CEngine_CreateSoundSource, XREF_XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, + XREF_XACT_CSoundBank_Play, XREF_XACT_CEngine_RegisterNotification, XREF_XACT_CEngine_GetNotification, XREF_XACT_CEngine_UnRegisterWaveBank, diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.h new file mode 100644 index 000000000..9abaf81a7 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.h @@ -0,0 +1,45 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.3911.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef D3D8_3911_H +#define D3D8_3911_H + +#include "OOVPA.h" + +extern LOOVPA<1+11> D3DDevice_SetTextureState_TexCoordIndex_3911; +extern LOOVPA<2+15> D3DDevice_SetRenderState_CullMode_3911; + +extern OOVPATable D3D8_3911[]; +extern uint32 D3D8_3911_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl new file mode 100644 index 000000000..21caad432 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl @@ -0,0 +1,5010 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.3911.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * Direct3D_CreateDevice +// ****************************************************************** +OOVPA_NO_XREF(Direct3D_CreateDevice, 3911, 18) // Also for 4361, 4627, 5558, 5659, 5788, 5849, 5933 (NOT 5344!) + + { 0x00, 0xA1 }, + + { 0x05, 0x85 }, + { 0x06, 0xC0 }, + { 0x07, 0x75 }, + { 0x08, 0x0A }, + { 0x09, 0xC7 }, + { 0x0A, 0x05 }, + + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x08 }, + { 0x12, 0x00 }, + { 0x13, 0xA1 }, + + { 0x18, 0x85 }, + { 0x19, 0xC0 }, + { 0x1A, 0x75 }, + { 0x1B, 0x0A }, + { 0x1C, 0xC7 }, + { 0x1D, 0x05 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTexture, named with 2 suffix to match EMUPATCH(D3DDevice_GetTexture2) +// ****************************************************************** +#if 0 // Derived XREF_OFFSET_D3DDEVICE_M_TEXTURES is not Implemented yet. +OOVPA_XREF(D3DDevice_GetTexture2, 3911, 1 + 21, // Also for 4361 + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived +#endif +OOVPA_NO_XREF(D3DDevice_GetTexture2, 3911, 23) // Also for 3948 + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB4 }, + { 0x0D, 0x81 }, + { 0x0E, 0xA0 }, // GetTexture A00B vs GetPalette B00B + { 0x0F, 0x0B }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x8B }, + { 0x13, 0x06 }, + { 0x14, 0x85 }, + { 0x15, 0xC0 }, + { 0x16, 0x74 }, + + { 0x18, 0x50 }, + { 0x19, 0xE8 }, + + { 0x1E, 0x8B }, + { 0x1F, 0x16 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTexture +// ****************************************************************** +#if 0 // Derived XREF_OFFSET_D3DDEVICE_M_TEXTURES is not Implemented yet. +OOVPA_XREF(D3DDevice_SetTexture, 3911, 1+28, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x11, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived +#endif +OOVPA_NO_XREF(D3DDevice_SetTexture, 3911, 28) + + { 0x00, 0x51 }, + { 0x01, 0x53 }, + { 0x02, 0x8B }, + { 0x03, 0x5C }, + { 0x04, 0x24 }, + { 0x05, 0x0C }, + { 0x06, 0x55 }, + { 0x07, 0x57 }, + { 0x08, 0x8B }, + { 0x09, 0x3D }, + + { 0x0E, 0x8B }, + { 0x0F, 0x84 }, + { 0x10, 0x9F }, + { 0x11, 0xA0 }, + { 0x12, 0x0B }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x85 }, + { 0x16, 0xC0 }, + { 0x17, 0x89 }, + { 0x18, 0x44 }, + { 0x19, 0x24 }, + { 0x1A, 0x0C }, + { 0x1B, 0x74 }, + { 0x1C, 0x20 }, + { 0x1D, 0x8B }, + { 0x1E, 0x4F }, + { 0x1F, 0x1C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DrawRectPatch +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawRectPatch, 3911, 27) // Also verified for 4361, 4627, 5344, 5558, 5659, 5788, 5849, 5933 + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x38 }, + { 0x03, 0xA1 }, + + { 0x08, 0x8B }, + { 0x09, 0x48 }, + // { 0x0A, 0x0C }, // 0x08 for 4361 and up + { 0x0B, 0x53 }, + { 0x0C, 0x55 }, + { 0x0D, 0x56 }, + { 0x0E, 0x57 }, + { 0x0F, 0x8B }, + { 0x10, 0x7C }, + { 0x11, 0x24 }, + { 0x12, 0x50 }, + { 0x13, 0x33 }, + { 0x14, 0xED }, + { 0x15, 0x81 }, + { 0x16, 0xC9 }, + { 0x17, 0x00 }, + { 0x18, 0x08 }, + { 0x19, 0x00 }, + { 0x1A, 0x00 }, + { 0x1B, 0x85 }, + { 0x1C, 0xFF }, + { 0x1D, 0x89 }, + { 0x1E, 0x6C }, + { 0x1F, 0x24 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DrawTriPatch +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawTriPatch, 3911, 27) // Also verified for 4361, 4627, 5344, 5558, 5659, 5788, 5849, 5933 + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x14 }, + { 0x03, 0xA1 }, + + { 0x08, 0x8B }, + { 0x09, 0x48 }, + // { 0x0A, 0x0C }, // 0x08 for 4361 and up + { 0x0B, 0x53 }, + { 0x0C, 0x55 }, + { 0x0D, 0x56 }, + { 0x0E, 0x57 }, + { 0x0F, 0x8B }, + { 0x10, 0x7C }, + { 0x11, 0x24 }, + { 0x12, 0x2C }, + { 0x13, 0x81 }, + { 0x14, 0xC9 }, + { 0x15, 0x00 }, + { 0x16, 0x08 }, + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0x33 }, + { 0x1A, 0xDB }, + { 0x1B, 0x85 }, + { 0x1C, 0xFF }, + { 0x1D, 0x89 }, + { 0x1E, 0x44 }, + { 0x1F, 0x24 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateVertexShader +// ****************************************************************** +// Based on Dxbx patterns for 3911, 4361, 4627, 5344, 5558, 5659, 5788, 5849, 5933 +OOVPA_NO_XREF(D3DDevice_CreateVertexShader, 3911, 38) + // IDirect3DDevice8_CreateVertexShader+0x00 : push ecx; push ebx; push ebp + { 0x00, 0x51 }, + { 0x01, 0x53 }, + { 0x02, 0x55 }, + + { 0x03, 0x8B }, + { 0x04, 0x6C }, + { 0x05, 0x24 }, + { 0x06, 0x14 }, + { 0x07, 0x85 }, + { 0x08, 0xED }, + { 0x09, 0x56 }, + + // IDirect3DDevice8_CreateVertexShader+0x0A : jz +0x10 + { 0x0A, 0x74 }, + { 0x0B, 0x10 }, + + { 0x0C, 0x0F }, + { 0x0D, 0xB7 }, + { 0x0E, 0x45 }, + { 0x0F, 0x00 }, + { 0x10, 0x0F }, + { 0x11, 0xB7 }, + { 0x12, 0x4D }, + { 0x13, 0x02 }, + { 0x14, 0x89 }, + { 0x15, 0x44 }, + { 0x16, 0x24 }, + { 0x17, 0x0C }, + { 0x18, 0x89 }, + { 0x19, 0x4C }, + { 0x1A, 0x24 }, + { 0x1B, 0x18 }, + { 0x1C, 0x33 }, + { 0x1D, 0xF6 }, + { 0x1E, 0x85 }, + { 0x1F, 0xED }, + + // D3DDevice_CreateVertexShader+0x43 : shl eax, 0x02 + { 0x43, 0xC1 }, + { 0x44, 0xE0 }, + { 0x45, 0x02 }, + + { 0x46, 0x8D }, + { 0x47, 0x1C }, + { 0x48, 0x30 }, +/* + OOVPA_NO_XREF(D3DDevice_CreateVertexShader, 5558) + + // D3DDevice_CreateVertexShader+0x73 : mov eax, 0x8007000E + { 0x65, 0x07 }, + { 0x66, 0x80 }, + + // D3DDevice_CreateVertexShader+0x69 : retn 0x10 + { 0x69, 0xC2 }, + { 0x6A, 0x10 }, +*/ +/* + OOVPA_NO_XREF(D3DDevice_CreateVertexShader, 5788) + + { 0x3E, 0xE8 }, + { 0x5E, 0x75 }, + { 0x7E, 0x04 }, + { 0x9E, 0x24 }, + { 0xBE, 0x24 }, + { 0xDE, 0x83 }, + { 0xFE, 0xC7 }, +*/ +/* + OOVPA_NO_XREF(D3DDevice_CreateVertexShader, 5849) + + { 0x3E, 0xE8 }, + { 0x5E, 0x75 }, + { 0x7E, 0x04 }, + { 0x9E, 0x24 }, + { 0xBE, 0x24 }, + { 0xDE, 0x83 }, + { 0xFE, 0xC7 }, +*/ +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_Release +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Release, 3911, 12) // Also for 4034, 4361, 4627, 5344, 5558, 5788, 5849, 5933 + + { 0x00, 0x57 }, + { 0x08, 0x87 }, + { 0x0B, 0x00 }, + { 0x0C, 0x00 }, + { 0x0D, 0x83 }, + { 0x0E, 0xF8 }, + { 0x0F, 0x01 }, + { 0x10, 0x75 }, + { 0x11, 0x1C }, + { 0x12, 0x8B }, + { 0x13, 0xCF }, + { 0x14, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetDepthStencilSurface +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 3911, 18) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x80 }, + + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x85 }, + { 0x0C, 0xC0 }, + { 0x0D, 0x8B }, + { 0x0E, 0x4C }, + { 0x0F, 0x24 }, + { 0x10, 0x04 }, + { 0x11, 0x89 }, + { 0x12, 0x01 }, + { 0x13, 0x74 }, + { 0x14, 0x0B }, + { 0x15, 0x50 }, + { 0x16, 0xE8 }, + + { 0x1E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetGammaRamp +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3DDevice_GetGammaRamp, 3911, 13) + + { 0x05, 0x8B }, + + { 0x0A, 0x00 }, + { 0x0B, 0x56 }, + { 0x0C, 0x8D }, + { 0x0D, 0x0C }, + { 0x0E, 0x49 }, + { 0x0F, 0xC1 }, + { 0x10, 0xE1 }, + { 0x11, 0x08 }, + + { 0x16, 0x0C }, + { 0x1C, 0x00 }, + { 0x22, 0x00 }, + { 0x27, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_SetPushBufferSize +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3D_SetPushBufferSize, 3911, 13) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + { 0x08, 0xA3 }, + { 0x0D, 0x89 }, + { 0x0E, 0x0D }, + { 0x13, 0xC2 }, + { 0x14, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_LightEnable +// ****************************************************************** +OOVPA_XREF(D3DDevice_LightEnable, 3911, 1 + 24,// valid upto at least 4627, next known difference is from 5344 onwards + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY(0x0B, XREF_D3DDEVICE), + //XREF_ENTRY(0x67, XREF_D3DDEVICE_SETLIGHT), + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x68 }, + { 0x03, 0x53 }, + + { 0x04, 0x8B }, + { 0x05, 0x5C }, + { 0x06, 0x24 }, + { 0x07, 0x70 }, + { 0x08, 0x56 }, + + { 0x09, 0x8B }, + { 0x0A, 0x35 }, + + { 0x0F, 0x3B }, + { 0x10, 0x9E }, + // { 0x11, 0x84 }, // 94 + // { 0x12, 0x04 }, // 03 + { 0x13, 0x00 }, + + { 0x14, 0x00 }, + { 0x15, 0x73 }, + { 0x16, 0x13 }, + { 0x17, 0x8B }, + { 0x18, 0x8E }, + + // { 0x19, 0x80 }, // 90 + // { 0x1A, 0x04 }, // 03 + { 0x1B, 0x00 }, + { 0x1C, 0x00 }, + { 0x1D, 0x8D }, + { 0x1E, 0x04 }, + { 0x1F, 0xDB }, +/* + { 0x36, 0x00 }, + { 0x52, 0x00 }, + { 0x6E, 0x75 }, + { 0x8A, 0x88 }, + { 0xA6, 0x75 }, + { 0xC2, 0x00 }, +*/ +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetLightEnable +// ****************************************************************** +OOVPA_XREF(D3DDevice_GetLightEnable, 3911, 1+24, // valid upto at least 5233, next known difference is from 5344 onwards + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x05, XREF_D3DDEVICE), + + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + { 0x04, 0xA1 }, + { 0x09, 0x8B }, + { 0x0A, 0x90 }, + // 0x0B, 0x80 }, // 0x8004 vs 4134 0x9003 + // 0x0C, 0x04 }, + + { 0x0D, 0x00 }, + { 0x0E, 0x00 }, + { 0x0F, 0x8B }, + { 0x10, 0x80 }, + // 0x11, 0x88 }, // 0x8804 vs 4134 0x9803 + + // 0x12, 0x04 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x8D }, + { 0x16, 0x0C }, + + { 0x17, 0xC9 }, + { 0x18, 0xC1 }, + { 0x19, 0xE1 }, + { 0x1A, 0x04 }, + { 0x1B, 0x03 }, + + { 0x1C, 0xCA }, + { 0x1D, 0x85 }, + { 0x1E, 0xC0 }, + { 0x1F, 0x74 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_ClearStateBlockFlags +// ****************************************************************** +OOVPA_XREF(D3D_ClearStateBlockFlags, 3911, 13, + + XREF_D3D_ClearStateBlockFlags, + XRefZero) + + { 0x01, 0x15 }, + { 0x07, 0x57 }, + { 0x0F, 0xBF }, + { 0x14, 0xF3 }, + { 0x15, 0xAB }, + { 0x16, 0x8B }, + { 0x17, 0x8A }, +// { 0x18, 0x84 }, +// { 0x19, 0x04 }, + { 0x1A, 0x00 }, + { 0x1B, 0x00 }, + { 0x1C, 0x33 }, + { 0x1D, 0xF6 }, + { 0x1E, 0x8D }, + { 0x1F, 0x82 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BeginStateBlock +// ****************************************************************** +OOVPA_XREF(D3DDevice_BeginStateBlock, 3911, 7, + + XRefNoSaveIndex, + XRefOne) + + // D3DDevice_BeginStateBlock+0x0F : call [ClearStateBlockFlags] + XREF_ENTRY( 0x0A, XREF_D3D_ClearStateBlockFlags ), + + // D3DDevice_BeginStateBlock+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_BeginStateBlock+0x05 : mov [eax+C], 0x20 + { 0x05, 0x83 }, + { 0x06, 0x48 }, + { 0x07, 0x0C },//0C VS 08 + { 0x08, 0x20 }, + { 0x09, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_RecordStateBlock +// ****************************************************************** +OOVPA_XREF(D3D_RecordStateBlock, 3911, 19, + + XREF_D3D_RecordStateBlock, + XRefZero) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x18 }, + { 0x06, 0x53 }, + { 0x07, 0x56 }, + + { 0x0F, 0x8B }, + { 0x1F, 0x89 }, + + { 0x37, 0x89 }, + { 0x38, 0x45 }, + { 0x39, 0xEC }, + { 0x3A, 0x8A }, + { 0x3B, 0x02 }, + { 0x3C, 0x42 }, + { 0x3D, 0x84 }, + { 0x3E, 0xC0 }, + { 0x5C, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_EndStateBlock +// ****************************************************************** +OOVPA_XREF(D3DDevice_EndStateBlock, 3911, 6, + + XRefNoSaveIndex, + XRefOne) + + // D3DDevice_EndStateBlock+0x0F : call [ClearStateBlockFlags] + XREF_ENTRY( 0x0A, XREF_D3D_RecordStateBlock ), + + // D3DDevice_EndStateBlock+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_EndStateBlock+0x05 : and [eax+0C], 0xFFFFFFDF + { 0x05, 0x83 }, + { 0x06, 0x60 }, + { 0x07, 0x0C }, + { 0x08, 0xDF }, +OOVPA_END; + +// ****************************************************************** +// * CMiniport::InitHardware +// ****************************************************************** +OOVPA_NO_XREF(CMiniport_InitHardware, 3911, 24) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x0C }, + { 0x06, 0x53 }, + { 0x07, 0x56 }, + { 0x08, 0x8B }, + { 0x09, 0xF1 }, + { 0x0A, 0x56 }, + { 0x0B, 0x68 }, + + { 0x10, 0x8D }, + { 0x11, 0x86 }, + { 0x12, 0x88 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x50 }, + { 0x17, 0xFF }, + { 0x18, 0x15 }, + + { 0x1D, 0x80 }, + { 0x1E, 0xA6 }, + { 0x1F, 0xF8 }, +OOVPA_END; + +// ****************************************************************** +// * CMiniport::CreateCtxDmaObject +// ****************************************************************** +OOVPA_NO_XREF(CMiniport_CreateCtxDmaObject, 3911, 32) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x51 }, + { 0x04, 0x51 }, + { 0x05, 0x53 }, + { 0x06, 0x56 }, + { 0x07, 0x57 }, + { 0x08, 0x33 }, + { 0x09, 0xF6 }, + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0x45 }, + { 0x0D, 0xFC }, + { 0x0E, 0x50 }, + { 0x0F, 0x8D }, + { 0x10, 0x45 }, + { 0x11, 0xF8 }, + { 0x12, 0x50 }, + { 0x13, 0xFF }, + { 0x14, 0x75 }, + { 0x15, 0x10 }, + { 0x16, 0x8B }, + { 0x17, 0xD1 }, + { 0x18, 0x8B }, + { 0x19, 0x3A }, + { 0x1A, 0x89 }, + { 0x1B, 0x75 }, + { 0x1C, 0xF8 }, + { 0x1D, 0x89 }, + { 0x1E, 0x75 }, + { 0x1F, 0xFC }, +OOVPA_END; + +// ****************************************************************** +// * D3D_CMiniport_GetDisplayCapabilities +// ****************************************************************** +OOVPA_NO_XREF(D3D_CMiniport_GetDisplayCapabilities, 3911, 15) + + // D3D_CMiniport_GetDisplayCapabilities+0x00 : xor eax, eax + { 0x00, 0x33 }, + { 0x01, 0xC0 }, + // D3D_CMiniport_GetDisplayCapabilities+0x02 : cmp ds:_D3D__AvInfo, eax + { 0x02, 0x39 }, + { 0x03, 0x05 }, + // D3D_CMiniport_GetDisplayCapabilities+0x08 : jne + { 0x08, 0x75 }, + { 0x09, 0x0f }, + // D3D_CMiniport_GetDisplayCapabilities+0x0A : push # + { 0x0A, 0x68 }, + // D3D_CMiniport_GetDisplayCapabilities+0x0F : push eax + { 0x0F, 0x50 }, + // D3D_CMiniport_GetDisplayCapabilities+0x10 : push 6 + { 0x10, 0x6A }, + { 0x11, 0x06 }, + // D3D_CMiniport_GetDisplayCapabilities+0x12 : push eax + { 0x12, 0x50 }, + // D3D_CMiniport_GetDisplayCapabilities+0x13 : call ds:AvSendTVEncoderOption + { 0x13, 0xFF }, + { 0x14, 0x15 }, + // D3D_CMiniport_GetDisplayCapabilities+0x19 : mov eax, # + { 0x19, 0xA1 }, + // D3D_CMiniport_GetDisplayCapabilities+0x1E : retn + { 0x1E, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DBaseTexture_GetLevelCount +// ****************************************************************** +/* Accuracy is not gauranteed. + It might be a ?GetMipmapLevelCount@PixelJar@D3D@@YGKPAUD3DPixelContainer@@@Z + that has an identical signature... */ +OOVPA_NO_XREF(D3DBaseTexture_GetLevelCount, 3911, 13) + + // D3DBaseTexture_GetLevelCount+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DBaseTexture_GetLevelCount+0x04 : movzx eax, [eax+0x0E] + { 0x04, 0x0F }, + { 0x05, 0xB6 }, + { 0x06, 0x40 }, + { 0x07, 0x0E }, + + // D3DBaseTexture_GetLevelCount+0x08 : and eax, 0x0F + { 0x08, 0x83 }, + { 0x09, 0xE0 }, + { 0x0A, 0x0F }, + + // D3DBaseTexture_GetLevelCount+0x0B : retn 0x04 + { 0x0B, 0xC2 }, + { 0x0C, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DCubeTexture_GetCubeMapSurface +// ****************************************************************** +OOVPA_NO_XREF(D3DCubeTexture_GetCubeMapSurface, 3911, 11) + + { 0x01, 0xEC }, + { 0x18, 0x54 }, + { 0x19, 0x24 }, + { 0x1A, 0x24 }, + { 0x1B, 0x8D }, + { 0x1C, 0x44 }, + { 0x1D, 0x24 }, + { 0x1E, 0x14 }, + { 0x1F, 0x50 }, + { 0x32, 0x4C }, + { 0x45, 0x51 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetCreationParameters +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetCreationParameters, 3911, 7) + + { 0x06, 0x8B }, + { 0x0E, 0x8B }, + { 0x16, 0x4E }, + { 0x1E, 0x83 }, + { 0x26, 0x00 }, + { 0x2E, 0x5E }, + { 0x36, 0xC9 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetScissors +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetScissors, 3911, 15) + + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x85 }, + { 0x05, 0xC9 }, + { 0x06, 0xA1 }, + + { 0x11, 0x00 }, + { 0x18, 0x08 }, + { 0x19, 0x85 }, + { 0x1A, 0xC9 }, + { 0x1B, 0x74 }, + { 0x1C, 0x08 }, + { 0x1D, 0x8B }, + { 0x1E, 0x90 }, +// { 0x1F, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::LazySetPointParams +// ****************************************************************** +OOVPA_NO_XREF(D3D_LazySetPointParams, 3911, 12) + + { 0x0A, 0x57 }, + { 0x0B, 0x08 }, + { 0x0C, 0x83 }, + { 0x0D, 0xE2 }, + { 0x0E, 0xFE }, + { 0x0F, 0x57 }, + { 0x10, 0x89 }, + { 0x11, 0x57 }, + { 0x12, 0x08 }, + { 0x13, 0xE8 }, + { 0x37, 0x89 }, + { 0x6E, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * Lock3DSurface +// ****************************************************************** +OOVPA_XREF(Lock3DSurface, 3911, 11, + + XREF_Lock3DSurface, + XRefZero) + + // D3D::PixelJar::Lock3DSurface + 0x08: test bl, 0x20 + { 0x08, 0xF6 }, + { 0x09, 0xC3 }, + { 0x0A, 0x20 }, + + // D3D::PixelJar::Lock3DSurface + 0x40: test bl, 0x40 + { 0x40, 0xF6 }, + { 0x41, 0xC3 }, + { 0x42, 0x40 }, + + // D3D::PixelJar::Lock3DSurface + 0x6D: and edx, 0x3C + { 0x6D, 0x83 }, + { 0x6E, 0xE2 }, + { 0x6F, 0x3C }, + + // D3D::PixelJar::Lock3DSurface + 0x99: ret 0x14 + { 0x99, 0xC2 }, + { 0x9A, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::CDevice::SetStateUP +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetStateUP, 3911, 16) + + { 0x01, 0xEC }, + { 0x0A, 0xE8 }, + + { 0x10, 0x46 }, + { 0x11, 0x08 }, + { 0x12, 0xF6 }, + { 0x13, 0xC4 }, + { 0x14, 0x01 }, + { 0x15, 0x0F }, + { 0x16, 0x84 }, + { 0x17, 0x79 }, + + { 0x56, 0x25 }, + { 0x9C, 0x00 }, + { 0x9D, 0x72 }, + { 0x9E, 0xB1 }, + { 0x9F, 0x56 }, + + { 0xA5, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * D3D::CDevice::SetStateVB +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetStateVB, 3911, 16) + + { 0x00, 0x51 }, + { 0x08, 0xE8 }, + + { 0x10, 0xA9 }, + { 0x11, 0x00 }, + { 0x12, 0x00 }, + { 0x13, 0x00 }, + { 0x14, 0x40 }, + { 0x15, 0x0F }, + { 0x16, 0x85 }, + { 0x17, 0xCD }, + + { 0x56, 0x25 }, + { 0x8C, 0x00 }, + { 0x8D, 0x00 }, + { 0x8E, 0x81 }, + { 0x8F, 0xC1 }, + + { 0xA5, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * Direct3D_CheckDeviceMultiSampleType +// ****************************************************************** +OOVPA_NO_XREF(Direct3D_CheckDeviceMultiSampleType, 3911, 7) + + { 0x0E, 0x00 }, + { 0x1E, 0x54 }, + { 0x2E, 0xC9 }, + { 0x3E, 0x8B }, + { 0x4E, 0x08 }, + { 0x5E, 0x72 }, + { 0x6E, 0x03 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetOverlayUpdateStatus +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 3911, 16) // Also for 4134, 4361, 4627, 5344, 5558, 5788, 5849 + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, +// { 0x07, 0x88 }, +// { 0x08, 0x2A }, + { 0x09, 0x00 }, + +// { 0x0E, 0x5C }, +// { 0x0F, 0x24 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x33 }, + { 0x13, 0xD2 }, + { 0x14, 0x3B }, +// { 0x15, 0xCE }, // F1 vs CE + + { 0x16, 0x0F }, + { 0x17, 0x95 }, + { 0x18, 0xC2 }, + { 0x19, 0x5E }, + { 0x1A, 0x8B }, + { 0x1B, 0xC2 }, + { 0x1C, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_CheckDeviceFormat +// ****************************************************************** +OOVPA_NO_XREF(D3D_CheckDeviceFormat, 3911, 7) + + { 0x0E, 0x18 }, + { 0x1E, 0x00 }, + { 0x2E, 0x42 }, + { 0x41, 0x40 }, + { 0x4E, 0x74 }, + { 0x5E, 0x08 }, + { 0x6E, 0x3C }, +OOVPA_END; +// ****************************************************************** +// * D3DDevice_EnableOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EnableOverlay, 3911, 24) + + { 0x00, 0x8B }, + + { 0x09, 0x8B }, + { 0x0A, 0x80 }, + { 0x0B, 0x04 }, + { 0x0C, 0x04 }, + { 0x0D, 0x00 }, + { 0x0E, 0x00 }, + { 0x0F, 0x33 }, + { 0x10, 0xC9 }, + { 0x11, 0x3B }, + { 0x12, 0xD1 }, + { 0x13, 0x74 }, + { 0x14, 0x0A }, + { 0x15, 0x39 }, + { 0x16, 0x88 }, + { 0x17, 0x00 }, + { 0x18, 0x87 }, + { 0x19, 0x00 }, + { 0x1A, 0x00 }, + { 0x1B, 0x75 }, + { 0x1C, 0xF8 }, + { 0x1D, 0xEB }, + { 0x1E, 0x0A }, + { 0x1F, 0xC7 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_UpdateOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 3911, 11) + + { 0x02, 0x08 }, + { 0x1F, 0x7C }, + { 0x6F, 0x8B }, + + { 0x80, 0x8B }, + { 0x81, 0x54 }, + { 0x82, 0x24 }, + { 0x83, 0x20 }, + { 0x84, 0x8B }, + { 0x85, 0x3F }, + { 0x86, 0x83 }, + { 0x87, 0xE1 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTextureState_TexCoordIndex +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 3911, 1+11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY(0x11, XREF_D3DTSS_TEXCOORDINDEX), // Derived + + // D3DDevice_SetTextureState_TexCoordIndex+0x0B : shl eax, 0x07 + { 0x0B, 0xC1 }, + { 0x0C, 0xE0 }, + { 0x0D, 0x07 }, + + // D3DDevice_SetTextureState_TexCoordIndex+0x24 : cmp eax, 0x20000 + { 0x24, 0x81 }, + { 0x25, 0xF9 }, + { 0x28, 0x02 }, + + // D3DDevice_SetTextureState_TexCoordIndex+0x3B : mov edi, 0x8511 + { 0x3B, 0xBF }, + { 0x3C, 0x11 }, + { 0x3D, 0x85 }, + + // D3DDevice_SetTextureState_TexCoordIndex+0x97 : shl eax, cl + { 0x97, 0xD3 }, + { 0x98, 0xE0 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_CullMode +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_CullMode, 3911, 2+15, + + XRefNoSaveIndex, + XRefTwo) + + XREF_ENTRY(0x03, XREF_D3DDEVICE), // Derived + XREF_ENTRY(0x25, XREF_D3DRS_CULLMODE), // Derived + + // D3DDevice_SetRenderState_CullMode+0x42 : mov dword ptr [eax+8], 0x4039C + { 0x42, 0xC7 }, + { 0x43, 0x40 }, + { 0x44, 0x08 }, + { 0x45, 0x9C }, + { 0x46, 0x03 }, + { 0x47, 0x04 }, + + // D3DDevice_SetRenderState_CullMode+0x49 : add eax, 0x10 + { 0x49, 0x83 }, + { 0x4A, 0xC0 }, + { 0x4B, 0x10 }, + + // D3DDevice_SetRenderState_CullMode+0x5F : retn 4 + { 0x5F, 0xC2 }, + { 0x60, 0x04 }, + + // D3DDevice_SetRenderState_CullMode+0x4D : add edx, 0x404 + { 0x4D, 0x81 }, + { 0x4E, 0xC2 }, + { 0x4F, 0x04 }, + { 0x50, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_RunPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 3911, 12) + + { 0x00, 0x83 }, + { 0x05, 0x1D }, + + { 0x0A, 0x55 }, + { 0x0B, 0x56 }, + { 0x0C, 0x57 }, + { 0x0D, 0x6A }, + { 0x0E, 0x00 }, + { 0x0F, 0x8B }, + { 0x10, 0xCB }, + { 0x11, 0xE8 }, + + { 0x1A, 0x83 }, + { 0x23, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_IsBusy +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_IsBusy, 3911, 11) + + { 0x00, 0xA1 }, + { 0x12, 0x49 }, + + { 0x20, 0xB8 }, + { 0x21, 0x01 }, + { 0x22, 0x00 }, + { 0x23, 0x00 }, + { 0x24, 0x00 }, + { 0x25, 0xC3 }, + { 0x26, 0x8B }, + { 0x27, 0x92 }, + + { 0x33, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_IsBusy +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_IsBusy, 3911, 8) + + { 0x0B, 0x8B }, + { 0x0C, 0x90 }, + { 0x0D, 0x04 }, + { 0x0E, 0x04 }, + + { 0x1E, 0x74 }, + { 0x1F, 0x06 }, + + { 0x25, 0xC3 }, + + { 0x33, 0xC3 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetDeviceCaps +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDeviceCaps, 3911, 11) + + // D3DDevice_GetDeviceCaps+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, + + // D3DDevice_GetDeviceCaps+0x06 : mov ecx, 0x35 + { 0x06, 0xB9 }, + { 0x07, 0x35 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + + // D3DDevice_GetDeviceCaps+0x10 : rep movsd + { 0x10, 0xF3 }, + { 0x11, 0xA5 }, + + // D3DDevice_GetDeviceCaps+0x14 : retn 0x04 + { 0x14, 0xC2 }, + { 0x15, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BeginVisibilityTest +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 3911, 11) + + // D3DDevice_BeginVisibilityTest+0x0D : mov ecx, 1 + { 0x0D, 0xB9 }, + { 0x0E, 0x01 }, + { 0x0F, 0x00 }, + + // D3DDevice_BeginVisibilityTest+0x12 : mov dword ptr [eax], 0x000817C8 + { 0x12, 0xC7 }, + { 0x13, 0x00 }, + { 0x14, 0xC8 }, + { 0x15, 0x17 }, + { 0x16, 0x08 }, + + // D3DDevice_BeginVisibilityTest+0x1E : add eax, 0x0C + { 0x1E, 0x83 }, + { 0x1F, 0xC0 }, + { 0x20, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetMaterial, 3911, 9) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + { 0x0C, 0xB0 }, + { 0x0D, 0x18 }, + { 0x0E, 0x0B }, + { 0x11, 0xB9 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_EndVisibilityTest +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 3911, 21) + + { 0x00, 0x8B }, + { 0x06, 0xE8 }, + + { 0x0B, 0x8B }, + { 0x0C, 0xF0 }, + { 0x0D, 0x85 }, + { 0x0E, 0xF6 }, + { 0x0F, 0x75 }, + { 0x10, 0x09 }, + { 0x11, 0xB8 }, + { 0x12, 0x0E }, + { 0x13, 0x00 }, + { 0x14, 0x07 }, + { 0x15, 0x80 }, + { 0x16, 0x5E }, + { 0x17, 0xC2 }, + { 0x18, 0x04 }, + { 0x19, 0x00 }, + { 0x1A, 0x57 }, + { 0x1B, 0x8B }, + { 0x1C, 0x3D }, + + { 0x37, 0x00 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_EndVisibilityTest +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 3911, 13) + + // D3DDevice_EndVisibilityTest+0x11 : mov eax, 0x8007000E + { 0x11, 0xB8 }, + { 0x12, 0x0E }, + { 0x13, 0x00 }, + { 0x14, 0x07 }, + { 0x15, 0x80 }, + + // D3DDevice_EndVisibilityTest+0x2D : mov dword ptr [eax], 0x000817CC + { 0x2D, 0xC7 }, + { 0x2E, 0x00 }, + { 0x2F, 0xCC }, + { 0x30, 0x17 }, + { 0x31, 0x08 }, + + // D3DDevice_EndVisibilityTest+0x43 : add eax, 0x0C + { 0x43, 0x83 }, + { 0x44, 0xC0 }, + { 0x45, 0x0C }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetVisibilityTestResult +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVisibilityTestResult, 3911, 11) + + // D3DDevice_GetVisibilityTestResult+0x0C : shr ecx, 8 + { 0x0C, 0xC1 }, + { 0x0D, 0xE9 }, + { 0x0E, 0x08 }, + + // D3DDevice_GetVisibilityTestResult+0x0F : and eax, 0xFF + { 0x0F, 0x25 }, + { 0x10, 0xFF }, + { 0x11, 0x00 }, + + // D3DDevice_GetVisibilityTestResult+0x2B : mov eax, 0x88760828 + { 0x2B, 0xB8 }, + { 0x2C, 0x28 }, + { 0x2D, 0x08 }, + { 0x2E, 0x76 }, + { 0x2F, 0x88 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::CDevice::KickOff +// ****************************************************************** +OOVPA_XREF(D3DDevice_KickOff, 3911, 10, + + XREF_D3D_CDevice_KickOff, + XRefZero) + + { 0x01, 0xA1 }, + + { 0x32, 0x81 }, + { 0x33, 0xCA }, + { 0x36, 0x01 }, + + { 0x5E, 0x89 }, + { 0x5F, 0x50 }, + { 0x60, 0x40 }, + + { 0x90, 0x83 }, + { 0x91, 0xEA }, + { 0x92, 0x02 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_LoadVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_LoadVertexShader, 3911, 10) + + // D3DDevice_LoadVertexShader+0x07 : mov al, [ebx+0x0C] + { 0x07, 0x8A }, + { 0x08, 0x43 }, + { 0x09, 0x0C }, + + // D3DDevice_LoadVertexShader+0x3D : mov dword ptr [eax], 0x00041E9C + { 0x3D, 0xC7 }, + { 0x3E, 0x00 }, + { 0x3F, 0x9C }, + { 0x40, 0x1E }, + { 0x41, 0x04 }, + + // D3DDevice_LoadVertexShader+0x4E : mov [ebx], ebx + { 0x4E, 0x89 }, + { 0x4F, 0x13 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SelectVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 3911, 11) + + // D3DDevice_SelectVertexShader+0x16 : or ecx, 0x3A0 + { 0x16, 0x81 }, + { 0x17, 0xC9 }, + { 0x18, 0xA0 }, + { 0x19, 0x03 }, + + // D3DDevice_SelectVertexShader+0x3F : mov dword ptr [eax], 0x00081E94 + { 0x3F, 0xC7 }, + { 0x40, 0x00 }, + { 0x41, 0x94 }, + { 0x42, 0x1E }, + { 0x43, 0x08 }, + + // D3DDevice_SelectVertexShader+0x51 : mov [esi], eax + { 0x51, 0x89 }, + { 0x52, 0x06 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 3911, 14) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0;push 0;push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x0B : mov dword ptr [eax+0x24F4], + { 0x0B, 0xC7 }, + { 0x0C, 0x80 }, + { 0x0D, 0xF4 }, + { 0x0E, 0x24 }, + { 0x0F, 0x00 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : and eax, 0x24F0 + { 0x17, 0x05 }, + { 0x18, 0xF0 }, + { 0x19, 0x24 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVerticalBlankCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 3911, 12) + + // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+0x24EC], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0xEC }, + { 0x0D, 0x24 }, + { 0x0E, 0x00 }, + + // D3DDevice_SetVerticalBlankCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, + { 0x12, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderTarget +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 3911, 11) + + // D3DDevice_SetRenderTarget+0x00 : sub esp, 0x20 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x20 }, + + // D3DDevice_SetRenderTarget+0x32 : mov [esp+0x34], ebx + { 0x32, 0x89 }, + { 0x33, 0x5C }, + { 0x34, 0x24 }, + { 0x35, 0x34 }, + + // D3DDevice_SetRenderTarget+0x55 : and ecx, 0x0F + { 0x55, 0x83 }, + { 0x56, 0xE1 }, + { 0x57, 0x0F }, + + // D3DDevice_SetRenderTarget+0xDC : push edx + { 0xDC, 0x52 }, +OOVPA_END; + +// ****************************************************************** +// * D3DSurface_GetDesc +// ****************************************************************** +OOVPA_NO_XREF(D3DSurface_GetDesc, 3911, 16) + + // D3DSurface_GetDesc+0x00 : mov eax, [esp+0x08] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x08 }, + + // D3DSurface_GetDesc+0x04 : mov ecx, [esp+0x04] + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x04 }, + + // D3DSurface_GetDesc+0x08 : push eax + { 0x08, 0x50 }, + + // D3DSurface_GetDesc+0x09 : push 0 + { 0x09, 0x6A }, + { 0x0A, 0x00 }, + + // D3DSurface_GetDesc+0x0B : push ecx + { 0x0B, 0x51 }, + + // D3DSurface_GetDesc+0x0C : call [abs] + { 0x0C, 0xE8 }, + + // D3DSurface_GetDesc+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, + { 0x13, 0x00 }, + +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTransform +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTransform, 3911, 12) + + // D3DDevice_GetTransform+0x06 : mov esi, [esp+4+arg_0] + { 0x06, 0x8B }, + { 0x07, 0x74 }, + { 0x08, 0x24 }, + + // D3DDevice_GetTransform+0x12 : shl esi, 6; add esi, eax + { 0x12, 0xC1 }, + { 0x13, 0xE6 }, + { 0x14, 0x06 }, + { 0x15, 0x03 }, + { 0x16, 0xF0 }, + + // D3DDevice_GetTransform+0x17 : mov ecx, 0x10 + { 0x17, 0xB9 }, + { 0x18, 0x10 }, + + // D3DDevice_GetTransform+0x20 : retn 0x08 + { 0x20, 0xC2 }, + { 0x21, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetStreamSource +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetStreamSource, 3911, 12) + + // D3DDevice_SetStreamSource+0x39 : add edx, 0xFFF80000 + { 0x39, 0x81 }, + { 0x3A, 0xC2 }, + { 0x3B, 0x00 }, + { 0x3C, 0x00 }, + { 0x3D, 0xF8 }, + { 0x3E, 0xFF }, + + // D3DDevice_SetStreamSource+0x49 : jnz +0x06 + { 0x49, 0x75 }, + { 0x4A, 0x06 }, + + // D3DDevice_SetStreamSource+0x6A : or ecx, 0x280 + { 0x6A, 0x81 }, + { 0x6B, 0xC9 }, + { 0x6C, 0x80 }, + { 0x6D, 0x02 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexShader, 3911, 14) + + // D3DDevice_SetVertexShader+0x05 : test bl, 1 + { 0x05, 0xF6 }, + { 0x06, 0xC3 }, + { 0x07, 0x01 }, + + // D3DDevice_SetVertexShader+0x10 : mov eax, [esi+0x0470] + { 0x10, 0x8B }, + { 0x11, 0x86 }, + { 0x12, 0x70 }, + { 0x13, 0x04 }, + + // D3DDevice_SetVertexShader+0x6D : retn 0x04 + { 0x6D, 0xC2 }, + { 0x6E, 0x04 }, + + // D3DDevice_SetVertexShader+0x8C : mov dword ptr [eax], 0x81E94 + { 0x8C, 0xC7 }, + { 0x8D, 0x40 }, + { 0x8E, 0x08 }, + { 0x8F, 0x94 }, + { 0x90, 0x1E }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreatePixelShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 3911, 11) + + // D3DDevice_CreatePixelShader+0x00 : push 0xFC + { 0x00, 0x68 }, + { 0x01, 0xFC }, + + // D3DDevice_CreatePixelShader+0x10 : mov eax, 0x8007000E + { 0x10, 0xB8 }, + { 0x11, 0x0E }, + { 0x12, 0x00 }, + { 0x13, 0x07 }, + { 0x14, 0x80 }, + + // D3DDevice_CreatePixelShader+0x31 : mov ecx, 0x3C + { 0x31, 0xB9 }, + { 0x32, 0x3C }, + + // D3DDevice_CreatePixelShader+0x42 : retn 0x08 + { 0x42, 0xC2 }, + { 0x43, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetPixelShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPixelShader, 3911, 10) + + // D3DDevice_SetPixelShader+0x0E : mov esi, [ebx+0x0414] + { 0x0E, 0x8B }, + { 0x0F, 0xB3 }, + { 0x10, 0x14 }, + { 0x11, 0x04 }, + + // D3DDevice_SetPixelShader+0x34 : or eax, 0x40 + { 0x35, 0xC8 }, + { 0x36, 0x40 }, + + // D3DDevice_SetPixelShader+0x68 : retn 0x04 + { 0x68, 0xC2 }, + { 0x69, 0x04 }, + + // D3DDevice_SetPixelShader+0xE3 : rep movsd + { 0xE3, 0xF3 }, + { 0xE4, 0xA5 }, + +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetIndices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetIndices, 3911, 11) + + // D3DDevice_SetIndices+0x0E : jz +0x10 + { 0x0E, 0x74 }, + { 0x0F, 0x10 }, + + // D3DDevice_SetIndices+0x3E : test ecx, 0x78FFFF + { 0x3E, 0xF7 }, + { 0x3F, 0xC1 }, + { 0x40, 0xFF }, + { 0x41, 0xFF }, + { 0x42, 0x78 }, + + // D3DDevice_SetIndices+0x67 : mov [esi+0x047C], edi + { 0x67, 0x89 }, + { 0x68, 0xBE }, + { 0x69, 0x7C }, + { 0x6A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetViewport +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetViewport, 3911, 10) + + // D3DDevice_SetViewport+0x00 : sub esp, 0x08 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x08 }, + + // D3DDevice_SetViewport+0x2F : mov ebx, [esp+0x1C] + { 0x2F, 0x8B }, + { 0x30, 0x5C }, + { 0x31, 0x24 }, + { 0x32, 0x1C }, + + // D3DDevice_SetViewport+0x55 : jnz +0x12 + { 0x55, 0x75 }, + { 0x56, 0x12 }, + + // D3DDevice_SetViewport+0x9D : inc edx + { 0x9D, 0x42 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DrawIndexedVertices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawIndexedVertices, 3911, 12) + + // D3DDevice_DrawIndexedVertices+0x0E : mov eax, [esi+0x0478] + { 0x0E, 0x8B }, + { 0x0F, 0x86 }, + { 0x10, 0x78 }, + { 0x11, 0x04 }, + + // D3DDevice_DrawIndexedVertices+0x44 : mov dword ptr [ebx-8], 0x000417FC + { 0x44, 0xC7 }, + { 0x45, 0x43 }, + { 0x46, 0xF8 }, + { 0x47, 0xFC }, + { 0x48, 0x17 }, + { 0x49, 0x04 }, + + // D3DDevice_DrawIndexedVertices+0xDA : lea ebx, [ebx+0] + { 0xDA, 0x8D }, + { 0xDB, 0x9B }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_Begin +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Begin, 3911, 11) + + // D3DDevice_Begin+0x20 : mov dword ptr [eax], 0x417FC + { 0x20, 0xC7 }, + { 0x21, 0x00 }, + { 0x22, 0xFC }, + { 0x23, 0x17 }, + { 0x24, 0x04 }, + { 0x25, 0x00 }, + + // D3DDevice_Begin+0x2E : shl edx, 6 + { 0x2E, 0x0D }, + { 0x2F, 0x00 }, + { 0x30, 0x08 }, + + // D3DDevice_Begin+0x38 : retn 0x08 + { 0x38, 0xC2 }, + { 0x39, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexData2f +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexData2f, 3911, 14) + + // D3DDevice_SetVertexData2f+0x11 : lea edx, ds:abs[ecx*8] + { 0x11, 0x8D }, + { 0x12, 0x14 }, + { 0x13, 0xCD }, + + // D3DDevice_SetVertexData2f+0x1C : mov [eax], edx; mov edx, [esp+0x10] + { 0x1C, 0x89 }, + { 0x1D, 0x10 }, + { 0x1E, 0x8B }, + { 0x1F, 0x54 }, + { 0x20, 0x24 }, + { 0x21, 0x10 }, + + // D3DDevice_SetVertexData2f+0x28 : add eax, 0x0C + { 0x28, 0x83 }, + { 0x29, 0xC0 }, + { 0x2A, 0x0C }, + + // D3DDevice_SetVertexData2f+0x2E : retn 0x0C + { 0x2E, 0xC2 }, + { 0x2F, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexData2s +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexData2s, 3911, 11) + + // D3DDevice_SetVertexData2s+0x11 : lea edx, ds:abs[ecx*4] + { 0x11, 0x8D }, + { 0x12, 0x14 }, + { 0x13, 0x8D }, + + // D3DDevice_SetVertexData2s+0x24 : shl ecx, 0x10 + { 0x24, 0xC1 }, + { 0x25, 0xE1 }, + { 0x26, 0x10 }, + + // D3DDevice_SetVertexData2s+0x29 : mov [eax+4], ecx + { 0x29, 0x89 }, + { 0x2A, 0x48 }, + { 0x2B, 0x04 }, + + // D3DDevice_SetVertexData2s+0x32 : retn 0x0C + { 0x32, 0xC2 }, + { 0x33, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexData4f +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexData4f, 3911, 11) + + // D3DDevice_SetVertexData4f+0x11 : cmp ecx, -1; jnz +0x07 + { 0x11, 0x83 }, + { 0x12, 0xF9 }, + { 0x13, 0xFF }, + { 0x14, 0x75 }, + { 0x15, 0x07 }, + + // D3DDevice_SetVertexData4f+0x1D : add ecx, 0x01A0 + { 0x1D, 0x81 }, + { 0x1E, 0xC1 }, + { 0x1F, 0xA0 }, + { 0x20, 0x01 }, + + // D3DDevice_SetVertexData4f+0x50 : retn 0x14 + { 0x50, 0xC2 }, + { 0x51, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexDataColor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 3911, 18) + + // D3DDevice_SetVertexDataColor+0x00 : push esi + { 0x00, 0x56 }, + + // D3DDevice_SetVertexDataColor+0x1F : mov byte ptr [esp+?] + { 0x1F, 0x0F }, + { 0x20, 0xB6 }, + { 0x21, 0x54 }, + { 0x22, 0x24 }, + { 0x23, 0x12 }, + + // D3DDevice_SetVertexDataColor+0x26 : add edi, 0xFF; shl edi, 0x10 + { 0x26, 0x81 }, + { 0x27, 0xE7 }, + { 0x28, 0xFF }, + { 0x2C, 0xC1 }, + { 0x2D, 0xE7 }, + { 0x2E, 0x10 }, + + // D3DDevice_SetVertexDataColor+0x31 : and ecx, 0xFF00FF00 + { 0x31, 0x81 }, + { 0x32, 0xE1 }, + { 0x33, 0x00 }, + { 0x34, 0xFF }, + { 0x35, 0x00 }, + { 0x36, 0xFF }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_End +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_End, 3911, 13) + + // D3DDevice_End+0x00 : push esi + { 0x00, 0x56 }, + + // D3DDevice_End+0x17 : mov dword ptr [eax], 0x417FC + { 0x17, 0xC7 }, + { 0x18, 0x00 }, + { 0x19, 0xFC }, + { 0x1A, 0x17 }, + { 0x1B, 0x04 }, + { 0x1C, 0x00 }, + + // D3DDevice_End+0x2C : test ah, 0x10 + { 0x2C, 0xF6 }, + { 0x2D, 0xC4 }, + { 0x2E, 0x10 }, + + // D3DDevice_End+0x2F : jz +0x07 + { 0x2F, 0x74 }, + { 0x30, 0x07 }, + + // D3DDevice_End+0x40 : retn + { 0x40, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_Clear +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Clear, 3911, 10) + + // D3DDevice_Clear+0x00 : sub esp, 0x38 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x38 }, + + // D3DDevice_Clear+0x25 : test cl, 1 + { 0x25, 0xF6 }, + { 0x26, 0xC1 }, + { 0x27, 0x01 }, + + // D3DDevice_Clear+0x5D : mov [esi], eax; xor ebp, ebp + { 0x5D, 0x89 }, + { 0x5E, 0x06 }, + { 0x5F, 0x33 }, + { 0x60, 0xED }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreatePalette +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreatePalette, 3911, 12) + + // D3DDevice_CreatePalette+0x01 : push 0x0C + { 0x01, 0x6A }, + { 0x02, 0x0C }, + + // D3DDevice_CreatePalette+0x03 : push 0x40 + { 0x03, 0x6A }, + { 0x04, 0x40 }, + + // D3DDevice_CreatePalette+0x10 : mov eax, 0x8007000E + { 0x10, 0xB8 }, + { 0x11, 0x0E }, + { 0x12, 0x00 }, + { 0x13, 0x07 }, + { 0x14, 0x80 }, + + // D3DDevice_CreatePalette+0x4E : shl esi, 0x1E + { 0x4E, 0xC1 }, + { 0x4F, 0xE6 }, + { 0x50, 0x1E }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetPalette +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPalette, 3911, 12) + + // D3DDevice_SetPalette+0x0D : mov eax, [edi+esi*4+0x0BB0] + { 0x0D, 0x8B }, + { 0x0E, 0x84 }, + { 0x0F, 0xB7 }, + { 0x10, 0xB0 }, + { 0x11, 0x0B }, + + // D3DDevice_SetPalette+0x68 : add esi, 0x41B20 + { 0x68, 0x81 }, + { 0x69, 0xC6 }, + { 0x6A, 0x20 }, + { 0x6B, 0x1B }, + { 0x6C, 0x04 }, + + // D3DDevice_SetPalette+0x7C : retn 0x08 + { 0x7C, 0xC2 }, + { 0x7D, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateTexture +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateTexture, 3911, 14) + + // D3DDevice_CreateTexture+0x00 : mov eax, [esp+0x1C] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x1C }, + + // D3DDevice_CreateTexture+0x0C : push eax + { 0x0C, 0x50 }, + + // D3DDevice_CreateTexture+0x11 : push 0 + { 0x11, 0x6A }, + { 0x12, 0x00 }, + + // D3DDevice_CreateTexture+0x13 : push 0 + { 0x13, 0x6A }, + { 0x14, 0x00 }, + + // D3DDevice_CreateTexture+0x15 : push ecx + { 0x15, 0x51 }, + + // D3DDevice_CreateTexture+0x22 : push ecx + { 0x22, 0x51 }, + + // D3DDevice_CreateTexture+0x23 : push edx + { 0x23, 0x52 }, + + // D3DDevice_CreateTexture+0x29 : retn 0x1C + { 0x29, 0xC2 }, + { 0x2A, 0x1C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateVolumeTexture +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateVolumeTexture, 3911, 15) + + // D3DDevice_CreateVolumeTexture+0x00 : mov eax, [esp+0x1C] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x20 }, + + // D3DDevice_CreateVolumeTexture+0x0C : push eax + { 0x0C, 0x50 }, + + // D3DDevice_CreateVolumeTexture+0x11 : push 1 + { 0x11, 0x6A }, + { 0x12, 0x01 }, + + // D3DDevice_CreateVolumeTexture+0x13 : push 0 + { 0x13, 0x6A }, + { 0x14, 0x00 }, + + // D3DDevice_CreateVolumeTexture+0x16 : mov ecx, [esp+0x1C] + { 0x16, 0x8B }, + { 0x17, 0x4C }, + { 0x18, 0x24 }, + { 0x19, 0x1C }, + + // D3DDevice_CreateVolumeTexture+0x2C : retn 0x20 + { 0x2C, 0xC2 }, + { 0x2D, 0x20 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateCubeTexture +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateCubeTexture, 3911, 15) + + // D3DDevice_CreateCubeTexture+0x00 : mov eax, [esp+0x1C] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x18 }, + + // D3DDevice_CreateCubeTexture+0x0C : push eax + { 0x0C, 0x50 }, + + // D3DDevice_CreateCubeTexture+0x11 : push 0 + { 0x11, 0x6A }, + { 0x12, 0x00 }, + + // D3DDevice_CreateCubeTexture+0x13 : push 1 + { 0x13, 0x6A }, + { 0x14, 0x01 }, + + // D3DDevice_CreateCubeTexture+0x18 : mov eax, [esp+0x1C] + { 0x18, 0x8B }, + { 0x19, 0x44 }, + { 0x1A, 0x24 }, + { 0x1B, 0x1C }, + + // D3DDevice_CreateCubeTexture+0x25 : retn 0x18 + { 0x25, 0xC2 }, + { 0x26, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateIndexBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer, 3911, 13) + + // D3DDevice_CreateIndexBuffer+0x13 : mov eax, 0x8007000E + { 0x13, 0xB8 }, + { 0x14, 0x0E }, + { 0x15, 0x00 }, + { 0x16, 0x07 }, + { 0x17, 0x80 }, + + // D3DDevice_CreateIndexBuffer+0x18 : retn 0x14 + { 0x18, 0xC2 }, + { 0x19, 0x14 }, + + // D3DDevice_CreateIndexBuffer+0x2E : mov dword ptr [eax], 0x1010001 + { 0x2E, 0xC7 }, + { 0x2F, 0x00 }, + { 0x30, 0x01 }, + { 0x31, 0x00 }, + { 0x32, 0x01 }, + { 0x33, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexShaderConstant +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstant, 3911, 10) + + // D3DDevice_SetVertexShaderConstant+0x11 : mov cl, [ebx+0x0C] + { 0x11, 0x8A }, + { 0x12, 0x4B }, + { 0x13, 0x0C }, + + // D3DDevice_SetVertexShaderConstant+0x1A : test cl, 0x10 + { 0x1A, 0xF6 }, + { 0x1B, 0xC1 }, + { 0x1C, 0x10 }, + + // D3DDevice_SetVertexShaderConstant+0x63 : jle +0x19 + { 0x63, 0x7E }, + { 0x64, 0x19 }, + + // D3DDevice_SetVertexShaderConstant+0x9B : retn 0x0C + { 0x9B, 0xC2 }, + { 0x9C, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetFlickerFilter +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetFlickerFilter, 3911, 12) + + // D3DDevice_SetFlickerFilter+0x0A : mov edx, [ecx+0x2308] + { 0x0A, 0x8B }, + { 0x0B, 0x91 }, + { 0x0C, 0x08 }, + { 0x0D, 0x23 }, + + // D3DDevice_SetFlickerFilter+0x10 : push 0; push eax; push 0x0B; push edx + { 0x10, 0x6A }, + { 0x11, 0x00 }, + { 0x12, 0x50 }, + { 0x13, 0x6A }, + { 0x14, 0x0B }, + { 0x15, 0x52 }, + + // D3DDevice_SetFlickerFilter+0x1C : retn 0x08 + { 0x1C, 0xC2 }, + { 0x1D, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetSoftDisplayFilter +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetSoftDisplayFilter, 3911, 12) + + // D3DDevice_SetSoftDisplayFilter+0x0A : mov edx, [ecx+0x2308] + { 0x0A, 0x8B }, + { 0x0B, 0x91 }, + { 0x0C, 0x08 }, + { 0x0D, 0x23 }, + + // D3DDevice_SetSoftDisplayFilter+0x10 : push 0; push eax; push 0x0E; push edx + { 0x10, 0x6A }, + { 0x11, 0x00 }, + { 0x12, 0x50 }, + { 0x13, 0x6A }, + { 0x14, 0x0E }, + { 0x15, 0x52 }, + + // D3DDevice_SetSoftDisplayFilter+0x1C : retn 0x08 + { 0x1C, 0xC2 }, + { 0x1D, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTextureState_BorderColor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetTextureState_BorderColor, 3911, 13) + + // D3DDevice_SetTextureState_BorderColor+0x13 : shl eax, 0x07 + { 0x13, 0xC1 }, + { 0x14, 0xE2 }, + { 0x15, 0x06 }, + + // D3DDevice_SetTextureState_BorderColor+0x16 : add edx, 0x41B24 + { 0x16, 0x81 }, + { 0x17, 0xC2 }, + { 0x18, 0x24 }, + { 0x19, 0x1B }, + { 0x1A, 0x04 }, + + // D3DDevice_SetTextureState_BorderColor+0x2A : shl ecx, 7 + { 0x2A, 0xC1 }, + { 0x2B, 0xE1 }, + { 0x2C, 0x07 }, + + // D3DDevice_SetTextureState_BorderColor+0x34 : retn 0x08 + { 0x34, 0xC2 }, + { 0x35, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_PSTextureModes +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_PSTextureModes, 3911, 11) + + // D3DDevice_SetRenderState_PSTextureModes+0x0C : or edx, 0x400 + { 0x0C, 0x81 }, + { 0x0D, 0xCA }, + { 0x0E, 0x00 }, + { 0x0F, 0x04 }, + + // D3DDevice_SetRenderState_PSTextureModes+0x12 : mov [eax+0x420], ecx + { 0x12, 0x89 }, + { 0x13, 0x88 }, + { 0x14, 0x20 }, + { 0x15, 0x04 }, + { 0x16, 0x00 }, + + // D3DDevice_SetRenderState_PSTextureModes+0x21 : retn 4 + { 0x21, 0xC2 }, + { 0x22, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_StencilFail +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilFail, 3911, 12) + + // D3DDevice_SetRenderState_StencilFail+0x19 : mov ecx, 2 + { 0x19, 0xB9 }, + { 0x1A, 0x02 }, + { 0x1B, 0x00 }, + + // D3DDevice_SetRenderState_StencilFail+0x3E : or ecx, 1 + { 0x3E, 0x83 }, + { 0x3F, 0xC9 }, + { 0x40, 0x01 }, + + // D3DDevice_SetRenderState_StencilFail+0x48 : mov dword ptr [eax], 0x00041D84 + { 0x48, 0xC7 }, + { 0x49, 0x00 }, + { 0x4A, 0x84 }, + { 0x4B, 0x1D }, + { 0x4C, 0x04 }, + { 0x4D, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_Simple +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_Simple, 3911, 13) + + // D3DDevice_SetRenderState_Simple+0x05 : add eax, 0x08 + { 0x05, 0x83 }, + { 0x06, 0xC0 }, + { 0x07, 0x08 }, + + // D3DDevice_SetRenderState_Simple+0x0E : jnb +0x0C + { 0x0E, 0x73 }, + { 0x0F, 0x0C }, + + // D3DDevice_SetRenderState_Simple+0x15 : mov [eax-8], ecx + { 0x15, 0x89 }, + { 0x16, 0x48 }, + { 0x17, 0xF8 }, + + // D3DDevice_SetRenderState_Simple+0x18 : mov [eax-4], ecx + { 0x18, 0x89 }, + { 0x19, 0x50 }, + { 0x1A, 0xFC }, + + // D3DDevice_SetRenderState_Simple+0x2B : jmp +0xD3 + { 0x2B, 0xEB }, + { 0x2C, 0xD3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTransform +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetTransform, 3911, 10) + + // D3DDevice_SetTransform+0x3A : fld dword ptr [edx+0x28] + { 0x3A, 0xD9 }, + { 0x3B, 0x42 }, + { 0x3C, 0x28 }, + + // D3DDevice_SetTransform+0x47 : test ah, 0x44 + { 0x47, 0xF6 }, + { 0x48, 0xC4 }, + { 0x49, 0x44 }, + + // D3DDevice_SetTransform+0x55 : fnstsw ax + { 0x55, 0xDF }, + { 0x56, 0xE0 }, + + // D3DDevice_SetTransform+0x7A : fdivp st(1), st + { 0x7A, 0xDE }, + { 0x7B, 0xF9 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_FogColor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_FogColor, 3911, 11) + + // D3DDevice_SetRenderState_FogColor+0x2E : mov dword ptr [eax], 0x402A8 + { 0x2E, 0xC7 }, + { 0x2F, 0x00 }, + { 0x30, 0xA8 }, + { 0x31, 0x02 }, + { 0x32, 0x04 }, + { 0x33, 0x00 }, + + // D3DDevice_SetRenderState_FogColor+0x37 : add eax, 0x08 + { 0x37, 0x83 }, + { 0x38, 0xC0 }, + { 0x39, 0x08 }, + + // D3DDevice_SetRenderState_FogColor+0x44 : retn 0x04 + { 0x44, 0xC2 }, + { 0x45, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_FillMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode, 3911, 11) + + // D3DDevice_SetRenderState_FillMode+0x23 : mov dword ptr [eax], 0x8038C + { 0x23, 0xC7 }, + { 0x24, 0x00 }, + { 0x25, 0x8C }, + { 0x26, 0x03 }, + { 0x27, 0x08 }, + { 0x28, 0x00 }, + + // D3DDevice_SetRenderState_FillMode+0x2F : add eax, 0x0C + { 0x2F, 0x83 }, + { 0x30, 0xC0 }, + { 0x31, 0x0C }, + + // D3DDevice_SetRenderState_FillMode+0x3B : retn 0x04 + { 0x3B, 0xC2 }, + { 0x3C, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_StencilEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilEnable, 3911, 11) + + // D3DDevice_SetRenderState_StencilEnable+0x45 : mov dword ptr [eax], 0x41D84 + { 0x45, 0xC7 }, + { 0x46, 0x00 }, + { 0x47, 0x84 }, + { 0x48, 0x1D }, + { 0x49, 0x04 }, + { 0x4A, 0x00 }, + + // D3DDevice_SetRenderState_StencilEnable+0x71 : add eax, 0x08 + { 0x71, 0x83 }, + { 0x72, 0xC0 }, + { 0x73, 0x08 }, + + // D3DDevice_SetRenderState_StencilEnable+0x7D : retn 0x04 + { 0x7D, 0xC2 }, + { 0x7E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_Dxt1NoiseEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 3911, 11) + + // D3DDevice_SetRenderState_Dxt1NoiseEnable+0x0C : mov eax, [esi+0x040C] + { 0x0C, 0x8B }, + { 0x0D, 0x86 }, + { 0x0E, 0x0C }, + { 0x0F, 0x04 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + + // D3DDevice_SetRenderState_Dxt1NoiseEnable+0x22 : cmp dl, 0x20 + { 0x22, 0x80 }, + { 0x23, 0xFA }, + { 0x24, 0x20 }, + + // D3DDevice_SetRenderState_Dxt1NoiseEnable+0x74 : retn 0x04 + { 0x74, 0xC2 }, + { 0x75, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_ZBias +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_ZBias, 3911, 10) + + // D3DDevice_SetRenderState_ZBias+0x0B : setnz al + { 0x0B, 0x0F }, + { 0x0C, 0x95 }, + { 0x0D, 0xC0 }, + + // D3DDevice_SetRenderState_ZBias+0x14 : fild [esp+0x10] + { 0x14, 0xDB }, + { 0x15, 0x44 }, + { 0x16, 0x24 }, + + // D3DDevice_SetRenderState_ZBias+0x45 : push 0x4E + { 0x45, 0x6A }, + { 0x46, 0x4E }, + + // D3DDevice_SetRenderState_ZBias+0x45 : retn 0x04 + { 0x71, 0xC2 }, + { 0x72, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_ZEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 3911, 13) + + // D3DDevice_SetRenderState_ZEnable+0x13 : jz +0x11 + { 0x13, 0x74 }, + { 0x14, 0x11 }, + + // D3DDevice_SetRenderState_ZEnable+0x15 : mov edx, [esi+0x0410] + { 0x15, 0x8B }, + { 0x16, 0x96 }, + { 0x17, 0x10 }, + { 0x18, 0x04 }, + + // D3DDevice_SetRenderState_ZEnable+0x28 : mov dword ptr [eax], 0x4030 + { 0x28, 0xC7 }, + { 0x29, 0x00 }, + { 0x2A, 0x0C }, + { 0x2B, 0x03 }, + { 0x2C, 0x04 }, + + // D3DDevice_SetRenderState_ZEnable+0x69 : retn 0x04 + { 0x69, 0xC2 }, + { 0x6A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_Present +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Present, 3911, 10) + + // D3DDevice_Present+0x0A : push 2 + { 0x0A, 0x6A }, + { 0x0B, 0x02 }, + + // D3DDevice_Present+0x11 : mov eax, [esi+2518] + { 0x11, 0x8B }, + { 0x12, 0x86 }, + { 0x13, 0x18 }, + { 0x14, 0x25 }, + + // D3DDevice_Present+0xBE : shr ebx, 1 + { 0xBE, 0xD1 }, + { 0xBF, 0xEB }, + + // D3DDevice_Present+0xC0 : xor edi, edi + { 0xC0, 0x33 }, + { 0xC1, 0xFF }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetShaderConstantMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 3911, 12) + + // D3DDevice_SetShaderConstantMode+0x26 : mov [ebp+0x2140], eax + { 0x26, 0x89 }, + { 0x27, 0x85 }, + { 0x28, 0x40 }, + { 0x29, 0x21 }, + + // D3DDevice_SetShaderConstantMode+0x51 : mov dword ptr [ebx+0x04], 0x3C + { 0x51, 0xC7 }, + { 0x52, 0x43 }, + { 0x53, 0x04 }, + { 0x54, 0x3C }, + + // D3DDevice_SetShaderConstantMode+0xE4 : add ebx, 0x0124 + { 0xE4, 0x81 }, + { 0xE5, 0xC3 }, + { 0xE6, 0x24 }, + { 0xE7, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetBackBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetBackBuffer, 3911, 12) + + // D3DDevice_GetBackBuffer+0x04 : cmp eax, 0xFFFFFFFF + { 0x04, 0x83 }, + { 0x05, 0xF8 }, + { 0x06, 0xFF }, + + // D3DDevice_GetBackBuffer+0x0D : jnz +0x07 + { 0x0D, 0x75 }, + { 0x0E, 0x07 }, + + // D3DDevice_GetBackBuffer+0x1E : lea eax, [ecx+eax*8+0x2150] + { 0x1E, 0x8D }, + { 0x1F, 0x84 }, + { 0x20, 0xC1 }, + { 0x21, 0x50 }, + { 0x22, 0x21 }, + + // D3DDevice_GetBackBuffer+0x31 : retn 0x0C + { 0x31, 0xC2 }, + { 0x32, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetRenderTarget +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 3911, 9) + + // D3DDevice_GetRenderTarget+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_GetRenderTarget+0x05 : mov eax, [eax + 0x040C] + { 0x05, 0x8B }, + { 0x06, 0x80 }, + { 0x07, 0x0C }, + { 0x08, 0x04 }, + + // D3DDevice_GetRenderTarget+0x11 : mov [ecx], eax + { 0x11, 0x89 }, + { 0x12, 0x01 }, + + // D3DDevice_GetRenderTarget+0x1D : retn 0x04 + { 0x1D, 0xC2 }, + { 0x1E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateVertexBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer, 3911, 13) + + // D3DDevice_CreateVertexBuffer+0x03 : push 0x40 + { 0x03, 0x6A }, + { 0x04, 0x40 }, + + // D3DDevice_CreateVertexBuffer+0x10 : mov eax, [esp+8] + { 0x10, 0x8B }, + { 0x11, 0x44 }, + { 0x12, 0x24 }, + { 0x13, 0x08 }, + + // D3DDevice_CreateVertexBuffer+0x48 : mov dword ptr [esi], 0x01000001 + { 0x48, 0xC7 }, + { 0x49, 0x06 }, + { 0x4A, 0x01 }, + { 0x4B, 0x00 }, + { 0x4D, 0x01 }, + + // D3DDevice_CreateVertexBuffer+0x53 : retn 0x14 + { 0x53, 0xC2 }, + { 0x54, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * D3DVertexBuffer_Lock +// ****************************************************************** +OOVPA_NO_XREF(D3DVertexBuffer_Lock, 3911, 11) + + // D3DVertexBuffer_Lock+0x01 : mov bl, [esp+0x18] + { 0x01, 0x8A }, + { 0x02, 0x5C }, + { 0x03, 0x24 }, + { 0x04, 0x18 }, + + // D3DVertexBuffer_Lock+0x09 : jnz +0x24 + { 0x09, 0x75 }, + { 0x0A, 0x1E }, + + // D3DVertexBuffer_Lock+0x29 : test bl, 0xA0 + { 0x29, 0xF6 }, + { 0x2A, 0xC3 }, + { 0x2B, 0xA0 }, + + // D3DVertexBuffer_Lock+0x4A : retn 0x14 + { 0x4A, 0xC2 }, + { 0x4B, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * D3DResource_Register +// ****************************************************************** +OOVPA_NO_XREF(D3DResource_Register, 3911, 19) + + // D3DResource_Register+0x00 : mov ecx, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x03, 0x04 }, + + // D3DResource_Register+0x04 : mov edx, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x54 }, + { 0x07, 0x08 }, + + // D3DResource_Register+0x08 : mov eax, [ecx+0x04] + { 0x08, 0x8B }, + { 0x09, 0x41 }, + { 0x0A, 0x04 }, + + // D3DResource_Register+0x0F : and edx, 0x00070000 + { 0x0F, 0x81 }, + { 0x10, 0xE2 }, + { 0x13, 0x07 }, + + // D3DResource_Register+0x15 : cmp edx, 0x00020000 + { 0x15, 0x81 }, + { 0x16, 0xFA }, + { 0x19, 0x02 }, + + // D3DResource_Register+0x1B : jnz +0x05 + { 0x1B, 0x74 }, + { 0x1C, 0x05 }, + + // D3DResource_Register+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DResource_Release +// ****************************************************************** +OOVPA_NO_XREF(D3DResource_Release, 3911, 11) +#define D3DResource_Release_4627 D3DResource_Release_3911 + + // D3DResource_Release+0x09 : and ecx, 0xFFFF + { 0x09, 0x81 }, + { 0x0A, 0xE1 }, + { 0x0B, 0xFF }, + { 0x0C, 0xFF }, + + // D3DResource_Release+0x14 : and eax, 0x00070000 + { 0x14, 0x25 }, + { 0x17, 0x07 }, + + // D3DResource_Release+0x19 : cmp eax, 0x00050000 + { 0x19, 0x3D }, + { 0x1C, 0x05 }, + + // D3DResource_Release+0x3E : pop esi + { 0x3E, 0x5E }, + + // D3DResource_Release+0x4B : retn 0x04 + { 0x4B, 0xC2 }, + { 0x4C, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DResource_AddRef +// ****************************************************************** +OOVPA_XREF(D3DResource_AddRef, 3911, 10, + + XREF_D3DResource_AddRef, + XRefZero) + + // D3DResource_AddRef+0x07 : test eax, 0xFFFF + { 0x07, 0xA9 }, + { 0x08, 0xFF }, + { 0x09, 0xFF }, + + // D3DResource_AddRef+0x0E : and eax, 0x00070000 + { 0x0E, 0x25 }, + { 0x11, 0x07 }, + + // D3DResource_AddRef+0x13 : cmp eax, 0x00050000 + { 0x13, 0x3D }, + { 0x16, 0x05 }, + + // D3DResource_AddRef+0x33 : pop esi + { 0x33, 0x5E }, + + // D3DResource_AddRef+0x34 : retn 0x04 + { 0x34, 0xC2 }, + { 0x35, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DResource_IsBusy +// ****************************************************************** +OOVPA_NO_XREF(D3DResource_IsBusy, 3911, 11) + + // D3DResource_IsBusy+0x24 : test eax, 0x780000 + { 0x24, 0xA9 }, + { 0x25, 0x00 }, + { 0x26, 0x00 }, + { 0x27, 0x78 }, + + // D3DResource_IsBusy+0x35 : jnz +0x44 + { 0x35, 0x75 }, + { 0x36, 0x44 }, + + // D3DResource_IsBusy+0x4E : mov eax, [ecx+0x14] + { 0x4E, 0x8B }, + { 0x4F, 0x41 }, + { 0x50, 0x14 }, + + // D3DResource_IsBusy+0x79 : jnb +0x09 + { 0x79, 0x73 }, + { 0x7A, 0x09 }, +OOVPA_END; + +// ****************************************************************** +// * D3DSurface_LockRect +// ****************************************************************** +OOVPA_NO_XREF(D3DSurface_LockRect, 3911, 16) + + // D3DSurface_LockRect+0x00 : mov eax, [esp+0x10] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x10 }, + + // D3DSurface_LockRect+0x04 : mov ecx, [esp+0x0C] + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // D3DSurface_LockRect+0x0C : push eax + { 0x0C, 0x50 }, + + // D3DSurface_LockRect+0x11 : push ecx; push edx; push 0; push 0 + { 0x11, 0x51 }, + { 0x12, 0x52 }, + { 0x13, 0x6A }, + { 0x15, 0x6A }, + + // D3DSurface_LockRect+0x18 : call [abs] + { 0x18, 0xE8 }, + + // D3DSurface_LockRect+0x11 : retn 0x10 + { 0x1D, 0xC2 }, + { 0x1E, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * D3DPalette_Lock +// ****************************************************************** +OOVPA_NO_XREF(D3DPalette_Lock, 3911, 13) + + // D3DPalette_Lock+0x00 : test [esp+0x0C], 0xA0 + { 0x00, 0xF6 }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x0C }, + { 0x04, 0xA0 }, + + // D3DPalette_Lock+0x0A : jnz +0x06 + { 0x0A, 0x75 }, + { 0x0B, 0x06 }, + + // D3DPalette_Lock+0x18 : mov ecx, [esp+0x0C] + { 0x18, 0x8B }, + { 0x19, 0x4C }, + { 0x1A, 0x24 }, + { 0x1B, 0x0C }, + + // D3DPalette_Lock+0x1C : mov [ecx], eax + { 0x1C, 0x89 }, + { 0x1D, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * D3DTexture_LockRect +// ****************************************************************** +OOVPA_NO_XREF(D3DTexture_LockRect, 3911, 17) + + // D3DTexture_LockRect+0x00 : mov eax, [esp+0x14] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x14 }, + + // D3DTexture_LockRect+0x04 : mov ecx, [esp+0x10] + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x10 }, + + // D3DTexture_LockRect+0x0C : push eax, push ecx, push edx, push eax, push 0 + { 0x0C, 0x50 }, + { 0x11, 0x51 }, + { 0x16, 0x52 }, + { 0x17, 0x50 }, + { 0x18, 0x6A }, + { 0x19, 0x00 }, + + // D3DTexture_LockRect+0x1B : call [addr] + { 0x1B, 0xE8 }, + + // D3DTexture_LockRect+0x20 : retn 0x14 + { 0x20, 0xC2 }, + { 0x21, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * D3DVolumeTexture_LockBox +// ****************************************************************** +OOVPA_XREF(D3DVolumeTexture_LockBox, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_Lock3DSurface ), + + { 0x00, 0xE9 }, +OOVPA_END; + +#if 0 // only perform a jmp to Lock3DSurface +// ****************************************************************** +// * D3DVolumeTexture_LockBox +// ****************************************************************** +OOVPA_NO_XREF(D3DVolumeTexture_LockBox, 3911, 11) + + // D3DVolumeTexture_LockBox+0x08 : test bl, 0x20 + { 0x08, 0xF6 }, + { 0x09, 0xC3 }, + { 0x0A, 0x20 }, + + // D3DVolumeTexture_LockBox+0x40 : test bl, 0x40 + { 0x40, 0xF6 }, + { 0x41, 0xC3 }, + { 0x42, 0x40 }, + + // D3DVolumeTexture_LockBox+0x83 : lea ecx, [eax+edx] + { 0x83, 0x8D }, + { 0x84, 0x0C }, + { 0x85, 0x10 }, + + // D3DVolumeTexture_LockBox+0x99 : retn 0x14 + { 0x99, 0xC2 }, + { 0x9A, 0x14 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DCubeTexture_LockRect +// ****************************************************************** +OOVPA_XREF(D3DCubeTexture_LockRect, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_Lock2DSurface ), + + { 0x00, 0xE9 }, +OOVPA_END; + +#if 0 // only perform a jmp to Lock2DSurface +// ****************************************************************** +// * D3DCubeTexture_LockRect +// ****************************************************************** +OOVPA_NO_XREF(D3DCubeTexture_LockRect, 3911, 11) + + // D3DCubeTexture_LockRect+0x06 : test bl, 0x20 + { 0x06, 0xF6 }, + { 0x07, 0xC3 }, + { 0x08, 0x20 }, + + // D3DCubeTexture_LockRect+0x3F : test bl, 0x40 + { 0x3F, 0xF6 }, + { 0x40, 0xC3 }, + { 0x41, 0x40 }, + + // D3DCubeTexture_LockRect+0x71 : shr edx, 0x03 + { 0x71, 0xC1 }, + { 0x72, 0xEA }, + { 0x73, 0x03 }, + + // D3DCubeTexture_LockRect+0x98 : retn 0x18 + { 0x98, 0xC2 }, + { 0x99, 0x18 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DTexture_GetSurfaceLevel +// ****************************************************************** +OOVPA_NO_XREF(D3DTexture_GetSurfaceLevel, 3911, 11) + + // D3DTexture_GetSurfaceLevel+0x08 : lea [esp+0x14] + { 0x08, 0x8D }, + { 0x0B, 0x14 }, + + // D3DTexture_GetSurfaceLevel+0x17 : mov edx, [esp+0x24] + { 0x17, 0x8B }, + { 0x1A, 0x24 }, + + // D3DTexture_GetSurfaceLevel+0x20 : lea ecx, [esp+0x28] + { 0x23, 0x28 }, + + // D3DTexture_GetSurfaceLevel+0x24 : push ecx + { 0x24, 0x51 }, + + // D3DTexture_GetSurfaceLevel+0x25 : push edx + { 0x25, 0x52 }, + + // D3DTexture_GetSurfaceLevel+0x26 : push 0 + { 0x26, 0x6A }, + + // D3DTexture_GetSurfaceLevel+0x43 : call [abs] + { 0x43, 0xE8 }, + + // D3DTexture_GetSurfaceLevel+0x4C : retn 0x0C + { 0x4C, 0xC2 }, + { 0x4D, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * Lock2DSurface +// ****************************************************************** +OOVPA_XREF(Lock2DSurface, 3911, 11, + + XREF_Lock2DSurface, + XRefZero) + + { 0x06, 0xF6 }, + { 0x07, 0xC3 }, + { 0x08, 0x20 }, + + { 0x3F, 0xF6 }, + { 0x40, 0xC3 }, + { 0x41, 0x40 }, + + { 0x71, 0xC1 }, + { 0x72, 0xEA }, + { 0x73, 0x03 }, + + { 0x98, 0xC2 }, + { 0x99, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * Get2DSurfaceDesc +// ****************************************************************** +OOVPA_NO_XREF(Get2DSurfaceDesc, 3911, 10) + + // Get2DSurfaceDesc+0x2B : movzx edx, byte ptr [edi+0x0D] + { 0x2B, 0x0F }, + { 0x2C, 0xB6 }, + { 0x2D, 0x57 }, + { 0x2E, 0x0D }, + + // Get2DSurfaceDesc+0x56 : cmp eax, [edx+0x2154] + { 0x56, 0x3B }, + { 0x57, 0x82 }, + { 0x58, 0x54 }, + { 0x59, 0x21 }, + + // Get2DSurfaceDesc+0xAE : retn 0x0C + { 0xAE, 0xC2 }, + { 0xAF, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShaderSize +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderSize, 3911, 12) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x08 }, + + { 0x08, 0x8B }, + { 0x09, 0x4C }, + { 0x0A, 0x24 }, + { 0x0B, 0x04 }, + + { 0x0C, 0x8B }, + { 0x0D, 0x51 }, +// { 0x0E, 0x07 }, 0F vs 07 + + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +/* + { 0x01, 0x44 }, + { 0x04, 0x85 }, + { 0x07, 0x09 }, + { 0x0A, 0x24 }, + { 0x0D, 0x51 }, + { 0x10, 0x10 }, + { 0x13, 0x00 },*/ +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetGammaRamp +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetGammaRamp, 3911, 9) + + // D3DDevice_SetGammaRamp+0x11 : and eax, 1; push ebx + { 0x11, 0x83 }, + { 0x12, 0xE0 }, + { 0x13, 0x01 }, + { 0x14, 0x53 }, + + // D3DDevice_SetGammaRamp+0x2F : rep movsd + { 0x2F, 0xF3 }, + { 0x30, 0xA5 }, + + // D3DDevice_SetGammaRamp+0x3E : push ebx; mov ecx, edx + { 0x3E, 0x53 }, + { 0x3F, 0x8B }, + { 0x40, 0xCA }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetMaterial, 3911, 11) + + // D3DDevice_SetMaterial+0x0B : lea edi, [eax+0xB18] + { 0x0B, 0x8D }, + { 0x0C, 0xB8 }, + { 0x0D, 0x18 }, + { 0x0E, 0x0B }, + + // D3DDevice_SetMaterial+0x11 : mov ecx, 0x11 + { 0x11, 0xB9 }, + { 0x12, 0x11 }, + + // D3DDevice_SetMaterial+0x1C : or ecx, 0x20 + { 0x1B, 0x83 }, + { 0x1C, 0xC9 }, + { 0x1D, 0x20 }, + + // D3DDevice_SetMaterial+0x23 : retn 0x04 + { 0x23, 0xC2 }, + { 0x24, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 3911, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x0408] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x08 }, + { 0x08, 0x04 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x05 : mov [eax+0x0408], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0x08 }, + { 0x0F, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetViewport +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetViewport, 3911, 16) + + { 0x00, 0xA1 }, + { 0x0C, 0xB0 }, + + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0xB9 }, + { 0x12, 0x06 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0xF3 }, + { 0x17, 0xA5 }, + { 0x18, 0x5F }, + { 0x19, 0x5E }, + { 0x1A, 0xC2 }, + { 0x1B, 0x04 }, + { 0x1C, 0x00 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_GetViewport +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetViewport, 3911, 10) + + // D3DDevice_GetViewport+0x05 : push esi; push edi + { 0x05, 0x56 }, + { 0x06, 0x57 }, + + // D3DDevice_GetViewport+0x0B : lea esi, [eax+0x0B00] + { 0x0B, 0x8D }, + { 0x0C, 0xB0 }, + { 0x0D, 0x00 }, + { 0x0E, 0x0B }, + + // D3DDevice_GetViewport+0x11 : mov ecx, 6 + { 0x11, 0xB9 }, + { 0x12, 0x06 }, + + // D3DDevice_GetViewport+0x1A : retn 0x04 + { 0x1A, 0xC2 }, + { 0x1B, 0x04 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetDisplayFieldStatus +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 3911, 12) + + { 0x00, 0xA1 }, + + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x4C }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x51 }, + { 0x11, 0x04 }, + { 0x12, 0xF7 }, + + { 0x1C, 0x74 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_GetDisplayFieldStatus +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 3911, 14) + + // D3DDevice_GetDisplayFieldStatus+0x05 : mov edx, [eax+0x2B28] + { 0x05, 0x8B }, + { 0x06, 0x90 }, + { 0x07, 0x28 }, + { 0x08, 0x2B }, + + // D3DDevice_GetDisplayFieldStatus+0x12 : test [eax+0x2510], 0x1200000 + { 0x12, 0xF7 }, + { 0x13, 0x80 }, + { 0x14, 0x10 }, + { 0x15, 0x25 }, + + // D3DDevice_GetDisplayFieldStatus+0x1E : mov dx, 0x80C0 + { 0x1E, 0x66 }, + { 0x1F, 0xBA }, + { 0x20, 0xC0 }, + { 0x21, 0x80 }, + + // D3DDevice_GetDisplayFieldStatus+0x3C : retn 4 + { 0x3C, 0xC2 }, + { 0x3D, 0x04 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleAntiAlias +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 3911, 7) + + { 0x0B, 0x8B }, + { 0x1D, 0x8B }, + { 0x26, 0x8B }, + { 0x2C, 0x8B }, + { 0x38, 0x0B }, + { 0x40, 0x89 }, + { 0x49, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_VertexBlend +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_VertexBlend, 3911, 13) + + // D3DDevice_SetRenderState_VertexBlend+0x0A : or ecx, 2 + { 0x0A, 0x83 }, + { 0x0B, 0xC9 }, + { 0x0C, 0x02 }, + + // D3DDevice_SetRenderState_VertexBlend+0x1A : mov dword ptr [eax], 0x40328 + { 0x1A, 0xC7 }, + { 0x1B, 0x00 }, + { 0x1C, 0x28 }, + { 0x1D, 0x03 }, + { 0x1E, 0x04 }, + + // D3DDevice_SetRenderState_VertexBlend+0x23 : add eax, 8 + { 0x23, 0x83 }, + { 0x24, 0xC0 }, + { 0x25, 0x08 }, + + // D3DDevice_SetRenderState_VertexBlend+0x2F : retn 0x04 + { 0x2F, 0xC2 }, + { 0x30, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_BackFillMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 3911, 12) + + // D3DDevice_SetRenderState_BackFillMode+0x2B : jnz +0x2 + { 0x2B, 0x75 }, + { 0x2C, 0x02 }, + + // D3DDevice_SetRenderState_BackFillMode+0x32 : mov dword ptr [eax], abs + { 0x32, 0xC7 }, + { 0x33, 0x00 }, + + // D3DDevice_SetRenderState_BackFillMode+0x3B : add eax, 0x0C; mov [edi], eax; pop edi + { 0x3B, 0x83 }, + { 0x3C, 0xC0 }, + { 0x3D, 0x0C }, + { 0x3E, 0x89 }, + { 0x3F, 0x07 }, + { 0x40, 0x5F }, + + // D3DDevice_SetRenderState_BackFillMode+0x48 : retn 0x04 + { 0x48, 0xC2 }, + { 0x49, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_TwoSidedLighting +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_TwoSidedLighting, 3911, 13) + + // D3DDevice_SetRenderState_TwoSidedLighting+0x06 : or dword ptr [eax+8], 0x20 + { 0x06, 0x83 }, + { 0x07, 0x48 }, + { 0x08, 0x08 }, + { 0x09, 0x20 }, + + // D3DDevice_SetRenderState_TwoSidedLighting+0x3B : mov dword ptr [eax], 0x8038C + { 0x3B, 0xC7 }, + { 0x3C, 0x00 }, + { 0x3D, 0x8C }, + { 0x3E, 0x03 }, + + // D3DDevice_SetRenderState_TwoSidedLighting+0x44 : add eax, 0x0C + { 0x44, 0x83 }, + { 0x45, 0xC0 }, + { 0x46, 0x0C }, + + // D3DDevice_SetRenderState_TwoSidedLighting+0x51 : retn 0x04 + { 0x51, 0xC2 }, + { 0x52, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_NormalizeNormals +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_NormalizeNormals, 3911, 8) + + // D3DDevice_SetRenderState_NormalizeNormals+0x1D : mov [esi], eax + { 0x1D, 0x89 }, + { 0x1E, 0x06 }, + + // D3DDevice_SetRenderState_NormalizeNormals+0x1F : or dword ptr [esi+8], 2 + { 0x1F, 0x83 }, + { 0x20, 0x4E }, + { 0x21, 0x08 }, + { 0x22, 0x02 }, + + // D3DDevice_SetRenderState_NormalizeNormals+0x2A : retn 0x04 + { 0x2A, 0xC2 }, + { 0x2B, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_FrontFace +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_FrontFace, 3911, 9) + + // D3DDevice_SetRenderState_FrontFace+0x00 : push esi + { 0x00, 0x56 }, + + // D3DDevice_SetRenderState_FrontFace+0x07 : push esi + { 0x07, 0x56 }, + + // D3DDevice_SetRenderState_FrontFace+0xD : mov ecx, [esp+0x08] + { 0x0D, 0x8B }, + { 0x0E, 0x4C }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // D3DDevice_SetRenderState_FrontFace+0x1A : add eax, 8 + { 0x1A, 0x83 }, + { 0x1B, 0xC0 }, + { 0x1C, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_TextureFactor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 3911, 10) + + // D3DDevice_SetRenderState_TextureFactor+0x07 : mov eax, [esi+0x0414] + { 0x07, 0x8B }, + { 0x08, 0x86 }, + { 0x09, 0x14 }, + { 0x0A, 0x04 }, + + // D3DDevice_SetRenderState_TextureFactor+0x2E : rep stosd + { 0x2E, 0xF3 }, + { 0x2F, 0xAB }, + + // D3DDevice_SetRenderState_TextureFactor+0x3C : retn 0x04 + { 0x3C, 0xC2 }, + { 0x3D, 0x04 }, + + // D3DDevice_SetRenderState_TextureFactor+0x49 : retn 0x04 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_LogicOp +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_LogicOp, 3911, 9) + + // D3DDevice_SetRenderState_LogicOp+0x11 : test ecx, ecx + { 0x11, 0x85 }, + { 0x12, 0xC9 }, + + // D3DDevice_SetRenderState_LogicOp+0x2D : mov dword ptr [eax], 0x817BC + { 0x2D, 0xC7 }, + { 0x2E, 0x00 }, + { 0x2F, 0xBC }, + { 0x30, 0x17 }, + { 0x31, 0x08 }, + + // D3DDevice_SetRenderState_LogicOp+0x49 : retn 0x04 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_EdgeAntiAlias +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_EdgeAntiAlias, 3911, 11) + + // D3DDevice_SetRenderState_EdgeAntiAlias+0x17 : mov [eax+0x04], ecx + { 0x17, 0x89 }, + { 0x18, 0x48 }, + { 0x19, 0x04 }, + + // D3DDevice_SetRenderState_EdgeAntiAlias+0x1A : mov [eax+0x08], ecx + { 0x1A, 0x89 }, + { 0x1B, 0x48 }, + { 0x1C, 0x08 }, + + // D3DDevice_SetRenderState_EdgeAntiAlias+0x1D : add eax, 0x0C + { 0x1D, 0x83 }, + { 0x1E, 0xC0 }, + { 0x1F, 0x0C }, + + // D3DDevice_SetRenderState_EdgeAntiAlias+0x29 : retn 0x04 + { 0x29, 0xC2 }, + { 0x2A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleMask +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMask, 3911, 13) + + // D3DDevice_SetRenderState_MultiSampleMask+0x0B : mov ecx, esi + { 0x0B, 0x8B }, + { 0x0C, 0xCE }, + + // D3DDevice_SetRenderState_MultiSampleMask+0x32 : and ecx, 0x0F; shl edx, 0x10 + { 0x32, 0x83 }, + { 0x33, 0xE1 }, + { 0x34, 0x0F }, + { 0x35, 0xC1 }, + + // D3DDevice_SetRenderState_MultiSampleMask+0x3A : mov dword ptr [eax], 0x41D7C + { 0x3A, 0xC7 }, + { 0x3B, 0x00 }, + { 0x3C, 0x7C }, + { 0x3D, 0x1D }, + { 0x3E, 0x04 }, + + // D3DDevice_SetRenderState_MultiSampleMask+0x49 : retn 0x04 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 3911, 14) + + // D3DDevice_PersistDisplay+0x25 : mov eax, [ebx+0x408] + { 0x25, 0x8B }, + { 0x26, 0x83 }, + { 0x27, 0x08 }, + { 0x28, 0x04 }, + { 0x29, 0x00 }, + { 0x2A, 0x00 }, + + // D3DDevice_PersistDisplay+0x3A : lea edi, [ebx+0x2308] + { 0x3a, 0x8D }, + { 0x3B, 0xBB }, + { 0x3C, 0x08 }, + { 0x3D, 0x23 }, + { 0x3E, 0x00 }, + { 0x3F, 0x00 }, + + // D3DDevice_PersistDisplay+0x70 : shl edx, cl + { 0x70, 0xD3 }, + { 0x71, 0xE2 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_ShadowFunc +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_ShadowFunc, 3911, 14) + + // D3DDevice_SetRenderState_ShadowFunc+0x00 : push esi + { 0x00, 0x56 }, + + // D3DDevice_SetRenderState_ShadowFunc+0x11 : mov dword ptr [eax], 0x41E6C + { 0x11, 0xC7 }, + { 0x12, 0x00 }, + { 0x13, 0x6C }, + { 0x14, 0x1E }, + { 0x15, 0x04 }, + { 0x16, 0x00 }, + + // D3DDevice_SetRenderState_ShadowFunc+0x17 : lea edx, [ecx-0x0200] + { 0x17, 0x8D }, + { 0x18, 0x91 }, + { 0x19, 0x00 }, + { 0x1A, 0xFE }, + + // D3DDevice_SetRenderState_ShadowFunc+0x20 : add eax, 0x08 + { 0x20, 0x83 }, + { 0x21, 0xC0 }, + { 0x22, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_LineWidth +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_LineWidth, 3911, 10) + + // D3DDevice_SetRenderState_LineWidth+0x15 : fmul dword ptr [esi+0x508] + { 0x15, 0xD8 }, + { 0x16, 0x8E }, + { 0x17, 0x08 }, + { 0x18, 0x05 }, + + // D3DDevice_SetRenderState_LineWidth+0x32 : cmp edi, 0x1FF + { 0x32, 0x81 }, + { 0x33, 0xFF }, + + // D3DDevice_SetRenderState_LineWidth+0x3A : mov edi, 0x1FF + { 0x3A, 0xBF }, + { 0x3B, 0xFF }, + + // D3DDevice_SetRenderState_LineWidth+0x5C : retn 0x04 + { 0x5C, 0xC2 }, + { 0x5D, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_YuvEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_YuvEnable, 3911, 10) + + // D3DDevice_SetRenderState_YuvEnable+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetRenderState_YuvEnable+0x04 : push edi + { 0x04, 0x56 }, + + // D3DDevice_SetRenderState_YuvEnable+0x0B : push edi + { 0x0B, 0x56 }, + + // D3DDevice_SetRenderState_YuvEnable+0x1F : mov [esi], eax + { 0x1F, 0x89 }, + { 0x20, 0x06 }, + + // D3DDevice_SetRenderState_YuvEnable+0x22 : retn 0x04 + { 0x22, 0xC2 }, + { 0x23, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_OcclusionCullEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_OcclusionCullEnable, 3911, 12) + + // D3DDevice_SetRenderState_OcclusionCullEnable+0x20 : jz +0x05 + { 0x20, 0x74 }, + { 0x21, 0x05 }, + + // D3DDevice_SetRenderState_OcclusionCullEnable+0x3B : cmp [abs], 0x1E00 + { 0x3B, 0x81 }, + { 0x41, 0x00 }, + { 0x42, 0x1E }, + + // D3DDevice_SetRenderState_OcclusionCullEnable+0x4A : mov dword ptr [eax], 0x41D84 + { 0x4A, 0xC7 }, + { 0x4B, 0x00 }, + { 0x4C, 0x84 }, + { 0x4D, 0x1D }, + { 0x4E, 0x04 }, + + // D3DDevice_SetRenderState_OcclusionCullEnable+0x59 : retn 0x04 + { 0x59, 0xC2 }, + { 0x5A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_StencilCullEnable +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_StencilCullEnable, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0D, XREF_D3DRS_STENCILCULLENABLE ), + + { 0x0B, 0x56 }, + { 0x16, 0x8B }, + { 0x22, 0xB9 }, + { 0x2E, 0xD2 }, + { 0x3A, 0x0C }, + { 0x46, 0x03 }, + { 0x52, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DrawVerticesUP +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 3911, 8) + + { 0x1F, 0x8B }, + { 0x3E, 0xC0 }, + { 0x5E, 0x03 }, + { 0x7E, 0x07 }, + { 0x9E, 0xF0 }, + { 0xBE, 0x40 }, + { 0xDE, 0x75 }, + { 0xFE, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DrawIndexedVerticesUP +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 3911, 8) + + { 0x1F, 0x8B }, + { 0x3E, 0x8B }, + { 0x5E, 0xF0 }, + { 0x7E, 0x8B }, + { 0xA2, 0x8B }, + { 0xBE, 0x83 }, + { 0xDE, 0x75 }, + { 0xFE, 0x75 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DrawVertices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawVertices, 3911, 17) + + { 0x00, 0x53 }, + { 0x01, 0x8B }, + + { 0x12, 0x8B }, + { 0x13, 0x7C }, + { 0x14, 0x24 }, + { 0x15, 0x18 }, + { 0x16, 0x8D }, + { 0x17, 0x77 }, + { 0x18, 0xFF }, + { 0x19, 0xC1 }, + { 0x1A, 0xEE }, + { 0x1B, 0x08 }, + { 0x1C, 0x46 }, + { 0x1D, 0x8D }, + { 0x1E, 0x46 }, + { 0x1F, 0x05 }, + { 0x20, 0x50 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_DrawVertices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawVertices, 3911, 8) + + { 0x12, 0x8B }, + { 0x27, 0x8B }, + { 0x3A, 0x89 }, + { 0x4E, 0xFF }, + { 0x62, 0x81 }, + { 0x76, 0x00 }, + { 0x8A, 0x17 }, + { 0x9E, 0x00 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetDisplayMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 3911, 7) + + { 0x09, 0xB4 }, + { 0x14, 0x8B }, + { 0x1F, 0x10 }, + { 0x2A, 0x1B }, + { 0x35, 0x8B }, + { 0x41, 0x89 }, + { 0x4B, 0x89 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTextureState_BumpEnv +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetTextureState_BumpEnv, 3911, 7) + + { 0x0E, 0x8B }, + { 0x16, 0x8B }, + { 0x22, 0x24 }, + { 0x2E, 0x24 }, + { 0x3A, 0x04 }, + { 0x46, 0x8B }, + { 0x52, 0xB5 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTextureState_ColorKeyColor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor, 3911, 7) + + { 0x07, 0x56 }, + { 0x0D, 0x8B }, + { 0x13, 0x8D }, + { 0x1A, 0x8B }, + { 0x21, 0x83 }, + { 0x28, 0x07 }, + { 0x2F, 0x5E }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexData4s +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexData4s, 3911, 8) + + { 0x07, 0x56 }, + { 0x10, 0x08 }, + { 0x19, 0xBF }, + { 0x22, 0x24 }, + { 0x2B, 0x54 }, + { 0x34, 0x24 }, + { 0x3D, 0x08 }, + { 0x46, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DResource_GetType +// ****************************************************************** +OOVPA_NO_XREF(D3DResource_GetType, 3911, 7) + + { 0x13, 0x2A }, + { 0x28, 0x00 }, + { 0x3D, 0x00 }, + { 0x52, 0x74 }, + { 0x67, 0x00 }, + { 0x7C, 0x04 }, + { 0x91, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_AllocContiguousMemory +// ****************************************************************** +OOVPA_NO_XREF(D3D_AllocContiguousMemory, 3911, 14) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x08 }, + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x04 }, + { 0x08, 0x68 }, + { 0x09, 0x04 }, + { 0x0A, 0x04 }, + { 0x0B, 0x00 }, + { 0x0C, 0x00 }, + { 0x0D, 0x50 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3D_AllocContiguousMemory +// ****************************************************************** +OOVPA_NO_XREF(D3D_AllocContiguousMemory, 3911, 6) + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x04 }, + { 0x0E, 0x6A }, + { 0x16, 0xC2 }, + { 0x17, 0x08 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetRenderState_Deferred +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_Deferred, 3911, 9) + + // D3DDevice_SetRenderState_Deferred+0x00 : mov eax, ds:(g_DirtyFromRenderState)-148[ecx*4] + { 0x00, 0x8B }, + { 0x01, 0x04 }, + { 0x02, 0x8D }, + + // D3DDevice_SetRenderState_Deferred+0x07 : or dword ptr ds:g_Device+8,eax + { 0x07, 0x09 }, + { 0x08, 0x05 }, + + // D3DDevice_SetRenderState_Deferred+0x0D : mov dword ptr ds:D3D__RenderState[ecx*4], edx + { 0x0D, 0x89 }, + { 0x0E, 0x14 }, + { 0x0F, 0x8D }, + + // D3DDevice_SetRenderState_Deferred+0x14 : retn + { 0x14, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetLight +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetLight, 3911, 10) +// Based on Dxbx patterns for 3911, 4361, 4627, 5344, 5558, 5659, 5788, 5849, 5933 + + // D3DDevice_GetLight+0x0B : mov esi, [ecx+XXXh] + { 0x0B, 0x8B }, + { 0x0C, 0xB1 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + + // D3DDevice_GetLight+0x12 : mov edi, [esp+8+arg_4] + { 0x12, 0x8B }, + { 0x13, 0x7C }, + { 0x14, 0x24 }, + { 0x15, 0x10 }, + + // D3DDevice_GetLight+0x1F : mov ecx, 1Ah + { 0x1E, 0xB9 }, + { 0x1F, 0x1A }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetLight +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetLight, 3911, 15) + + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0x3B }, + { 0x18, 0xDF }, + { 0x19, 0x89 }, + { 0x1A, 0x7C }, + { 0x1B, 0x24 }, + { 0x1C, 0x14 }, + { 0x1D, 0x0F }, + { 0x1E, 0x82 }, + { 0x1F, 0xBF }, + + { 0x3B, 0x8B }, + { 0x3C, 0xD8 }, + + { 0x62, 0x8B }, + { 0x63, 0xF3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_SetLight +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetLight, 3911, 8) + + { 0x1D, 0x0F }, + { 0x3C, 0xD8 }, + { 0x5B, 0x00 }, + { 0x7A, 0x89 }, + { 0x99, 0xA5 }, + { 0xB8, 0xC1 }, + { 0xD7, 0x00 }, + { 0xF6, 0x00 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetProjectionViewportMatrix +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 3911, 7) + + { 0x02, 0x35 }, + { 0x07, 0x57 }, + { 0x0A, 0x24 }, + { 0x0E, 0xA0 }, + { 0x12, 0xB9 }, + { 0x16, 0x00 }, + { 0x1A, 0x5E }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTile +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTile, 3911, 16) + + { 0x00, 0x8B }, + + { 0x0A, 0x56 }, + { 0x0B, 0x57 }, + { 0x0C, 0x8B }, + { 0x0D, 0x7C }, + { 0x0E, 0x24 }, + { 0x0F, 0x10 }, + { 0x10, 0x8D }, + { 0x11, 0x04 }, + { 0x12, 0x40 }, + { 0x13, 0x8D }, + { 0x14, 0xB4 }, + { 0x15, 0xC1 }, + + { 0x1F, 0xF3 }, + { 0x23, 0xC2 }, + { 0x24, 0x08 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_GetTile +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTile, 3911, 7) + + { 0x03, 0x04 }, + { 0x0A, 0x56 }, + { 0x0D, 0x7C }, + { 0x12, 0x40 }, + { 0x17, 0x21 }, + { 0x1C, 0x00 }, + { 0x21, 0x5F }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_ApplyStateBlock +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_ApplyStateBlock, 3911, 8) + + { 0x1D, 0x83 }, + { 0x40, 0x83 }, + { 0x5B, 0x16 }, + { 0x7A, 0x01 }, + { 0x99, 0x46 }, + { 0xB8, 0x06 }, + { 0xD7, 0x39 }, + { 0xF6, 0x51 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CaptureStateBlock +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CaptureStateBlock, 3911, 7) + + { 0x1E, 0x76 }, + { 0x3E, 0xE8 }, + { 0x5E, 0x06 }, + { 0x7E, 0x26 }, + { 0x9E, 0xFF }, + { 0xBE, 0x04 }, + { 0xDE, 0xF8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DeleteStateBlock +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DeleteStateBlock, 3911, 7) + + { 0x11, 0x76 }, + { 0x24, 0x3B }, + { 0x37, 0xE8 }, + { 0x4A, 0x50 }, + { 0x5D, 0x74 }, + { 0x70, 0x06 }, + { 0x83, 0xEB }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 3911, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + { 0x0D, 0x5C }, + { 0x0E, 0x0B }, + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateStateBlock +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateStateBlock, 3911, 8) + + { 0x1E, 0x8B }, + { 0x3E, 0x89 }, + { 0x5E, 0x24 }, + { 0x7E, 0xF8 }, + { 0x9F, 0x01 }, + { 0xBE, 0xB6 }, + { 0xDE, 0xF8 }, + { 0xFE, 0x76 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DeletePixelShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DeletePixelShader, 3911, 7) + + { 0x02, 0x24 }, + { 0x06, 0x75 }, + { 0x0A, 0x04 }, + { 0x0E, 0x09 }, + { 0x12, 0x04 }, + { 0x18, 0xC2 }, + { 0x1A, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetPixelShaderProgram +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 3911, 19) + + { 0x00, 0x8B }, + { 0x01, 0x54 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x85 }, + { 0x05, 0xD2 }, + { 0x06, 0xA1 }, + + { 0x11, 0x00 }, + { 0x12, 0x00 }, + { 0x13, 0xC7 }, + { 0x14, 0x01 }, + { 0x15, 0x01 }, + { 0x16, 0x00 }, + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0xC7 }, + { 0x1A, 0x80 }, + + { 0x29, 0x89 }, + { 0x3A, 0xE9 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_SetPixelShaderProgram +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 3911, 7) + + { 0x06, 0xA1 }, + { 0x0E, 0x88 }, + { 0x16, 0x00 }, + { 0x1E, 0x00 }, + { 0x26, 0x04 }, + { 0x32, 0xC7 }, + { 0x36, 0x00 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3D_KickOffAndWaitForIdle +// ****************************************************************** +// * This is for the real D3D::KickOffAndWaitForIdle +// ****************************************************************** +OOVPA_XREF(D3D_KickOffAndWaitForIdle, 3911, 5, + + XREF_D3D_KickOffAndWaitForIdle, + XRefZero) + + { 0x05, 0x8B }, + { 0x06, 0x48 }, + { 0x07, 0x1C }, + { 0x0A, 0x51 }, + { 0x10, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetModelView +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetModelView, 3911, 7) + + { 0x12, 0x08 }, + { 0x26, 0x53 }, + { 0x3A, 0x8B }, + { 0x4E, 0x80 }, + { 0x62, 0x00 }, + { 0x76, 0x00 }, + { 0x8A, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_FlushVertexCache +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 3911, 8) + + { 0x00, 0x56 }, + { 0x07, 0x56 }, + { 0x08, 0xE8 }, + { 0x0D, 0xC7 }, + { 0x0F, 0x10 }, + { 0x12, 0x00 }, + { 0x17, 0x00 }, + { 0x1C, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetScissors +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetScissors, 3911, 17) // Up to 5233 + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x24 }, + { 0x03, 0x53 }, + { 0x04, 0x8B }, + { 0x05, 0x5C }, + { 0x06, 0x24 }, + { 0x07, 0x2C }, + { 0x08, 0x85 }, + { 0x09, 0xDB }, + { 0x0A, 0x55 }, + { 0x0B, 0x8B }, + { 0x0C, 0x2D }, + + { 0x3E, 0x44 }, + { 0x3F, 0x24 }, + { 0x52, 0x44 }, + { 0x53, 0x24 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_SetScissors +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetScissors, 3911, 8) + + { 0x1D, 0x08 }, + { 0x3C, 0x24 }, + { 0x5F, 0x8B }, + { 0x7A, 0x83 }, + { 0x99, 0xE0 }, + { 0xBA, 0xD9 }, + { 0xD9, 0x8B }, + { 0xF6, 0xDB }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetVertexShaderInput +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexShaderInput, 3911, 8) + + { 0x1E, 0x03 }, + { 0x3E, 0x8B }, + { 0x5E, 0xC7 }, + { 0x7E, 0xF8 }, + { 0x9E, 0xC6 }, + { 0xBE, 0x7F }, + { 0xDE, 0xCA }, + { 0xFE, 0x17 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_PrimeVertexCache +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PrimeVertexCache, 3911, 8) + + { 0x0D, 0x00 }, + { 0x1C, 0x55 }, + { 0x2B, 0x00 }, + { 0x3A, 0x24 }, + { 0x49, 0xCB }, + { 0x58, 0x74 }, + { 0x67, 0x00 }, + { 0x76, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVertexData4ub +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexData4ub, 3911, 7) + + { 0x07, 0x56 }, + { 0x10, 0x08 }, + { 0x19, 0xC9 }, + { 0x22, 0x54 }, + { 0x2B, 0x14 }, + { 0x34, 0x24 }, + { 0x3D, 0xFC }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetPixelShaderConstant +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 3911, 7) + + { 0x1E, 0x4C }, + { 0x3E, 0x11 }, + { 0x61, 0xDF }, + { 0x7E, 0xF6 }, + { 0x9E, 0x05 }, + { 0xC0, 0x51 }, + { 0xDE, 0xC4 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_InsertCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_InsertCallback, 3911, 7) + + { 0x0D, 0x8B }, + { 0x18, 0x8B }, + { 0x25, 0x50 }, + { 0x32, 0x10 }, + { 0x3F, 0x00 }, + { 0x4C, 0x00 }, + { 0x59, 0x03 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BeginPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BeginPushBuffer, 3911, 7) + + { 0x0B, 0xCE }, + { 0x1B, 0x57 }, + { 0x25, 0x00 }, + { 0x32, 0x06 }, + { 0x3F, 0x03 }, + { 0x4C, 0x04 }, + { 0x59, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_EndPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 3911, 13) // Up to 5849 + + { 0x01, 0x56 }, + { 0x11, 0x8D }, + + { 0x2E, 0x8D }, + { 0x2F, 0x4C }, + { 0x30, 0x11 }, + { 0x31, 0x04 }, + { 0x32, 0x89 }, + { 0x33, 0x48 }, + { 0x34, 0x0C }, + { 0x35, 0x8B }, + { 0x36, 0x86 }, + + { 0x6D, 0x8B }, + { 0x6E, 0x86 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_EndPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 3911, 7) + + { 0x11, 0x8D }, + { 0x24, 0x8B }, + { 0x37, 0xFC }, + { 0x4A, 0xFF }, + { 0x5D, 0xF7 }, + { 0x70, 0x03 }, + { 0x83, 0x00 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetRenderState_RopZCmpAlwaysRead +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // D3DDevice_SetRenderState_RopZCmpAlwaysRead+0x05 : D3D__RenderState[D3DRS_ROPZCMPALWAYSREAD] + XREF_ENTRY( 0x05, XREF_D3DRS_ROPZCMPALWAYSREAD ), + + // D3DDevice_SetRenderState_RopZCmpAlwaysRead+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetRenderState_RopZCmpAlwaysRead+0x09 : call [abs] + { 0x09, 0xE8 }, + + // D3DDevice_SetRenderState_RopZCmpAlwaysRead+0x0E : retn 0x04 + { 0x0E, 0xC2 }, + { 0x0F, 0x04 }, + { 0x10, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_RopZRead +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_RopZRead, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // D3DDevice_SetRenderState_RopZRead+0x05 : D3D__RenderState[D3DRS_ROPZCMPALWAYSREAD] + XREF_ENTRY( 0x05, XREF_D3DRS_ROPZREAD ), + + // D3DDevice_SetRenderState_RopZRead+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetRenderState_RopZRead+0x09 : call [abs] + { 0x09, 0xE8 }, + + // D3DDevice_SetRenderState_RopZRead+0x0E : retn 0x04 + { 0x0E, 0xC2 }, + { 0x0F, 0x04 }, + { 0x10, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetRenderState_DoNotCullUncompressed +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // D3DDevice_SetRenderState_DoNotCullUncompressed+0x05 : D3D__RenderState[D3DRS_ROPZCMPALWAYSREAD] + XREF_ENTRY( 0x05, XREF_D3DRS_DONOTCULLUNCOMPRESSED ), + + // D3DDevice_SetRenderState_DoNotCullUncompressed+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetRenderState_DoNotCullUncompressed+0x09 : call [abs] + { 0x09, 0xE8 }, + + // D3DDevice_SetRenderState_DoNotCullUncompressed+0x0E : retn 0x04 + { 0x0E, 0xC2 }, + { 0x0F, 0x04 }, + { 0x10, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * XMETAL_StartPush +// ****************************************************************** +OOVPA_NO_XREF(XMETAL_StartPush, 3911, 11) + + // XMETAL_StartPush+0x00 : mov ecx, [esp+0x4] + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // XMETAL_StartPush+0x04 : mov eax, [ecx] + { 0x04, 0x8B }, + { 0x05, 0x01 }, + + // XMETAL_StartPush+0x06 : cmp eax, [ecx+0x4] + { 0x06, 0x3B }, + { 0x07, 0x41 }, + { 0x08, 0x04 }, + + // XMETAL_StartPush+0x10 : retn 4 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::SetFence +// ****************************************************************** +OOVPA_XREF(D3D_SetFence, 3911, 11, + + XREF_D3D_SetFence, + XRefZero) + + // D3D::SetFence+0x0F : mov edi, [esi+0x1C] + { 0x0F, 0x8B }, + { 0x10, 0x7E }, + { 0x11, 0x1C }, + + // D3D::SetFence+0x3D : and ecx, 0x3F + { 0x3D, 0x83 }, + { 0x3E, 0xE1 }, + { 0x3F, 0x3F }, + + // D3D::SetFence+0x77 : mov [esi*ebp*4], edi + { 0x77, 0x89 }, + { 0x78, 0x3C }, + { 0x79, 0xAE }, + + // D3D::SetFence+0x96 : retn 4 + { 0x96, 0xC2 }, + { 0x97, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_InsertFence +// ****************************************************************** +OOVPA_XREF(D3DDevice_InsertFence, 3911, 5, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x03, XREF_D3D_SetFence ), + + { 0x00, 0x6A }, + { 0x01, 0x00 }, + { 0x02, 0xE8 }, + { 0x07, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_LoadVertexShaderProgram +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 3911, 16) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x53 }, + { 0x05, 0x0F }, + { 0x06, 0xB7 }, + { 0x07, 0x58 }, + { 0x08, 0x02 }, + { 0x09, 0x55 }, + { 0x0A, 0x8B }, + { 0x0B, 0x2D }, + + { 0x14, 0xE3 }, + { 0x15, 0x02 }, + { 0x16, 0xF6 }, + { 0x17, 0xC1 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_LoadVertexShaderProgram +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 3911, 7) + + { 0x0B, 0x2D }, + { 0x18, 0x10 }, + { 0x25, 0x00 }, + { 0x32, 0xA5 }, + { 0x3F, 0x8B }, + { 0x4C, 0x00 }, + { 0x59, 0xE8 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_DeleteVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DeleteVertexShader, 3911, 6) + + { 0x02, 0x24 }, + { 0x06, 0xFF }, + { 0x0A, 0x08 }, + { 0x0E, 0x44 }, + + // D3DDevice_DeleteVertexShader+0x16 : retn 4 + { 0x16, 0xC2 }, + { 0x17, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BlockOnFence +// ****************************************************************** +OOVPA_XREF(D3DDevice_BlockOnFence, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x08, XREF_D3D_BlockOnTime ), + + { 0x00, 0x8B }, + { 0x02, 0x24 }, + { 0x04, 0x6A }, + { 0x06, 0x50 }, + { 0x0C, 0xC2 }, + { 0x0D, 0x04 }, + { 0x0E, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_Reset +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Reset, 3911, 10) + + // D3DDevice_Reset+0x15 : mov ecx, ebp + { 0x15, 0x8B }, + { 0x16, 0xCD }, + + // D3DDevice_Reset+0x1E : jnz +0xF5 + { 0x1E, 0x75 }, + { 0x1F, 0xF5 }, + + // D3DDevice_Reset+0x27 : mov esi, [esp+0x14] + { 0x27, 0x8B }, + { 0x28, 0x74 }, + { 0x29, 0x24 }, + { 0x2A, 0x14 }, + + // D3DDevice_Reset+0x37 : jge +0x10 + { 0x37, 0x7D }, + { 0x38, 0x10 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_Reset +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Reset, 3911, 7) + + { 0x15, 0x8B }, + { 0x2C, 0x8B }, + { 0x43, 0x8B }, + { 0x5A, 0x08 }, + { 0x74, 0x8B }, + { 0x88, 0x50 }, + { 0x9F, 0x03 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3D_GetAdapterIdentifier +// ****************************************************************** +OOVPA_NO_XREF(D3D_GetAdapterIdentifier, 3911, 7) + + { 0x04, 0x85 }, + { 0x0A, 0x08 }, + { 0x10, 0x56 }, + { 0x16, 0xB9 }, + { 0x20, 0xF3 }, + { 0x22, 0x5F }, + { 0x28, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_GetDeviceCaps +// ****************************************************************** +OOVPA_NO_XREF(D3D_GetDeviceCaps, 3911, 7) + + { 0x04, 0x85 }, + { 0x0A, 0x08 }, + { 0x10, 0x83 }, + { 0x16, 0x08 }, + { 0x1C, 0xC2 }, + { 0x22, 0x0C }, + { 0x29, 0x33 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::SetCommonDebugRegisters +// ****************************************************************** +OOVPA_NO_XREF(D3D_SetCommonDebugRegisters, 3911, 10) + + { 0x07, 0x8B }, + { 0x08, 0x96 }, + { 0x09, 0x44 }, + { 0x0A, 0x2B }, + { 0x31, 0x81 }, + { 0x32, 0xE2 }, + { 0x33, 0xFF }, + { 0x34, 0xFF }, + { 0x35, 0xEF }, + { 0x36, 0xE7 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateImageSurface +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateImageSurface, 3911, 7) + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x24 }, + { 0x0E, 0x44 }, + { 0x12, 0x00 }, + { 0x16, 0xE8 }, + { 0x1B, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::BlockOnTime +// ****************************************************************** +OOVPA_XREF(D3D_BlockOnTime, 3911, 10, + + XREF_D3D_BlockOnTime, + XRefZero) + + // D3D::BlockOnFence+0x00 : push ebp + { 0x00, 0x55 }, + + // D3D::BlockOnFence+0x0A : push edi + { 0x0A, 0x57 }, + + // D3D::BlockOnFence+0x4E : cmp eax, 0x8000 + { 0x4E, 0x3D }, + { 0x4F, 0x00 }, + { 0x50, 0x80 }, + { 0x51, 0x00 }, + + // D3D::BlockOnFence+0x6E : mov ebp, 0x40100 + { 0x6E, 0xBD }, + { 0x6F, 0x00 }, + { 0x70, 0x01 }, + { 0x71, 0x04 } +OOVPA_END; + +// ****************************************************************** +// * D3D::BlockOnResource +// ****************************************************************** +OOVPA_XREF(D3D_BlockOnResource, 3911, 9, + + XREF_D3D_BlockOnResource, + XRefZero) + + { 0x34, 0x8B }, // mov edx, [ecx+0x1C] + { 0x35, 0x51 }, + { 0x36, 0x1C }, + { 0x41, 0xC2 }, // retn 4 + { 0x42, 0x04 }, + { 0x43, 0x00 }, + { 0x7E, 0xC2 }, // retn 4 + { 0x7F, 0x04 }, + { 0x80, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DResource_BlockUntilNotBusy +// ****************************************************************** +OOVPA_XREF(D3DResource_BlockUntilNotBusy, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_D3D_BlockOnResource ), + + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTile +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetTile, 3911, 13) + + // D3DDevice_SetTile+0x06 : sub esp, 0x18 + { 0x06, 0x83 }, + { 0x07, 0xEC }, + { 0x08, 0x18 }, + + // D3DDevice_SetTile+0x15 : cmp [esi+4], eax + { 0x15, 0x39 }, + { 0x16, 0x46 }, + { 0x17, 0x04 }, + + // D3DDevice_SetTile+0x7E : lea edi, [edx+ecx*8+21BCh] + { 0x7E, 0x83 }, + { 0x7F, 0xC4 }, + { 0x80, 0x18 }, + + // D3DDevice_SetTile+0x7E : mov ecx, [esi+21D0h] + { 0x8E, 0x8B }, + { 0x8F, 0x8E }, + { 0x90, 0xD0 }, + { 0x91, 0x21 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 3911, 9) + + { 0x0A, 0x57 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB8 }, + { 0x0D, 0x5C }, + { 0x0E, 0x0B }, + { 0x0F, 0x00 }, + { 0x14, 0x00 }, + { 0x18, 0x8B }, + { 0x1E, 0x5F }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SwitchTexture +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SwitchTexture, 3911, 10) + + // D3DDevice_SwitchTexture+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_SwitchTexture+0x05 : add eax, 0x0C + { 0x05, 0x83 }, + { 0x06, 0xC0 }, + { 0x07, 0x0C }, + + // D3DDevice_SwitchTexture+0x08 : cmp eax, ds:dword_XXXXX + { 0x08, 0x3B }, + { 0x09, 0x05 }, + + // D3DDevice_SwitchTexture+0x0E : jnb +0x15 + { 0x0E, 0x73 }, + { 0x0F, 0x15 }, + + // D3DDevice_SwitchTexture+0x22 : retn 0x04 + { 0x22, 0xC2 }, + { 0x23, 0x04 }, + +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetModelView +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetModelView, 3911, 10) + + { 0x05, 0x57 }, + { 0x0A, 0x85 }, + { 0x10, 0xB0 }, + { 0x11, 0xE0 }, + { 0x12, 0x05 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0xB9 }, + { 0x16, 0x10 }, + { 0x1C, 0x5E }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CopyRects +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CopyRects, 3911, 9) + + { 0x10, 0x0F }, + { 0x11, 0xB6 }, + { 0x12, 0x75 }, + { 0x13, 0x0D }, + { 0x14, 0x8A }, + { 0x15, 0x9E }, + { 0x40, 0xF6 }, + { 0x4F, 0x84 }, + { 0x75, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * D3DVertexBuffer_GetDesc +// ****************************************************************** +OOVPA_NO_XREF(D3DVertexBuffer_GetDesc, 3911, 7) + + { 0x02, 0x24 }, + { 0x06, 0x74 }, + { 0x0A, 0xC7 }, + { 0x0E, 0x00 }, + { 0x15, 0x89 }, + { 0x16, 0x46 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetShaderConstantMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 3911, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x40 }, + { 0x08, 0x21 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 3911, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x74 }, + { 0x08, 0x04 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShaderConstant +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 3911, 9) + + { 0x05, 0x8B }, + { 0x06, 0x74 }, + { 0x07, 0x24 }, + { 0x08, 0x08 }, + { 0x09, 0x57 }, + { 0x0A, 0x8B }, + { 0x0B, 0x3D }, + { 0x18, 0x00 }, + { 0x1F, 0xF7 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShaderInput +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 3911, 17) + + { 0x05, 0xC9 }, + + { 0x0B, 0x74 }, + { 0x11, 0x00 }, + { 0x12, 0x00 }, + { 0x13, 0x89 }, + { 0x14, 0x11 }, + { 0x15, 0x8B }, + { 0x16, 0x4C }, + { 0x17, 0x24 }, + { 0x18, 0x04 }, + { 0x19, 0x85 }, + { 0x1A, 0xC9 }, + { 0x1B, 0x74 }, + { 0x1C, 0x08 }, + { 0x1D, 0x8B }, + + { 0x34, 0x8D }, + { 0x35, 0x0C }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_GetVertexShaderInput +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 3911, 8) + + { 0x00, 0x8B }, + { 0x03, 0x08 }, + { 0x04, 0x85 }, + { 0x05, 0xC9 }, + { 0x06, 0xA1 }, + { 0x10, 0x07 }, + { 0x18, 0x04 }, + { 0x1F, 0x20 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_RunVertexStateShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_RunVertexStateShader, 3911, 9) + + { 0x0D, 0x8B }, + { 0x10, 0x0C }, + { 0x11, 0x85 }, + { 0x12, 0xC9 }, + { 0x13, 0x74 }, + { 0x14, 0x21 }, + { 0x15, 0xD9 }, + { 0x16, 0x41 }, + { 0x1F, 0x41 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShaderType +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderType, 3911, 7) + + { 0x04, 0x8B }, + { 0x0A, 0x07 }, + { 0x10, 0xEB }, + { 0x16, 0x00 }, + { 0x1C, 0x40 }, + { 0x22, 0xC9 }, + { 0x28, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShaderDeclaration +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 3911, 15) + + { 0x00, 0x8B }, + { 0x04, 0x8A }, + + { 0x13, 0xC7 }, + { 0x14, 0x01 }, + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0x33 }, + { 0x1A, 0xC0 }, + { 0x1B, 0x83 }, + { 0x1C, 0xC4 }, + + { 0x1E, 0xC2 }, + { 0x1F, 0x0C }, + + { 0x40, 0x33 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_GetVertexShaderDeclaration +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 3911, 9) + + { 0x00F, 0x8B }, + { 0x010, 0x4C }, + { 0x011, 0x24 }, + { 0x012, 0x1C }, + { 0x013, 0xC7 }, + { 0x014, 0x01 }, + { 0x015, 0x00 }, + { 0x11F, 0x83 }, + { 0x129, 0x0F }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetVertexShaderFunction +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderFunction, 3911, 7) + + { 0x16, 0xC0 }, + { 0x2E, 0x01 }, + { 0x46, 0x10 }, + { 0x5E, 0x07 }, + { 0x76, 0xC7 }, + { 0x8E, 0x00 }, + { 0xA6, 0xF8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetPixelShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 3911, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x14 }, + { 0x08, 0x04 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_IsFencePending +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_IsFencePending, 3911, 11) + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0xF0 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x40 }, + { 0x0D, 0x1C }, + { 0x1A, 0x1B }, + { 0x1F, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetPushBufferOffset +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetPushBufferOffset, 3911, 7) + + { 0x14, 0xB8 }, + { 0x2A, 0x8B }, + { 0x40, 0x47 }, + { 0x56, 0x89 }, + { 0x6C, 0xAB }, + { 0x82, 0x04 }, + { 0x98, 0x89 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_GetAdapterDisplayMode +// ****************************************************************** +OOVPA_NO_XREF(D3D_GetAdapterDisplayMode, 3911, 21) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x85 }, + { 0x05, 0xC0 }, + { 0x06, 0x74 }, + { 0x07, 0x08 }, + { 0x08, 0xB8 }, + { 0x09, 0x6C }, + { 0x0A, 0x08 }, + { 0x0B, 0x76 }, + { 0x0C, 0x88 }, + { 0x0D, 0xC2 }, + { 0x0E, 0x08 }, + { 0x0F, 0x00 }, + { 0x10, 0x8B }, + //{ 0x11, 0x0D }, // 0D vs 15 + + { 0x1E, 0x33 }, + { 0x1F, 0xC0 }, + + { 0x30, 0x00 }, + { 0x31, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * D3D_EnumAdapterModes +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3D_EnumAdapterModes, 3911, 14) + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + + { 0x12, 0x57 }, + { 0x13, 0x89 }, + { 0x14, 0x44 }, + { 0x15, 0x24 }, + { 0x16, 0x14 }, + { 0x17, 0x89 }, + { 0x18, 0x4C }, + { 0x19, 0x24 }, + { 0x1A, 0x20 }, + { 0x1B, 0xE8 }, + + { 0x50, 0x6C }, + { 0x51, 0x24 }, +OOVPA_END; + +// ****************************************************************** +// * D3D_GetAdapterModeCount +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3D_GetAdapterModeCount, 3911, 20) + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x08 }, + { 0x03, 0x53 }, + { 0x04, 0x55 }, + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x07, 0xC7 }, + { 0x08, 0x44 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, + { 0x0B, 0x00 }, + { 0x0C, 0x00 }, + { 0x0D, 0x00 }, + { 0x0E, 0x00 }, + { 0x0F, 0xE8 }, + + { 0x1D, 0x8B }, + { 0x1E, 0xD1 }, + + { 0x40, 0x14 }, + { 0x41, 0xEB }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_DeletePatch +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3DDevice_DeletePatch, 3911, 19) + + { 0x00, 0x8B }, + { 0x05, 0x0D }, + { 0x0C, 0xA1 }, + + { 0x11, 0x56 }, + { 0x12, 0x8B }, + { 0x13, 0x34 }, + { 0x14, 0x88 }, + { 0x15, 0x85 }, + { 0x16, 0xF6 }, + { 0x17, 0x74 }, + { 0x18, 0x17 }, + { 0x19, 0x8B }, + { 0x1A, 0x4E }, + { 0x1B, 0x04 }, + { 0x1C, 0xC7 }, + { 0x1D, 0x04 }, + { 0x1E, 0x88 }, + { 0x1F, 0x00 }, + + { 0x25, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_KickPushBuffer +// ****************************************************************** +OOVPA_XREF(D3DDevice_KickPushBuffer, 3911, 4, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x07, XREF_D3D_CDevice_KickOff ), + + { 0x00, 0x8B }, + { 0x01, 0x0D }, + { 0x06, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * CMiniport_IsFlipPending +// ****************************************************************** +OOVPA_NO_XREF(CMiniport_IsFlipPending, 3911, 14) + + { 0x00, 0x8B }, + { 0x01, 0x81 }, + { 0x02, 0xDC }, + { 0x03, 0x01 }, + { 0x04, 0x00 }, + { 0x05, 0x00 }, + { 0x06, 0x8B }, + { 0x07, 0x84 }, + { 0x08, 0xC1 }, + { 0x09, 0xB4 }, + { 0x0A, 0x01 }, + { 0x0B, 0x00 }, + { 0x0C, 0x00 }, + { 0x0D, 0xC3 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.h index aa0c1981e..f472c11bb 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.h +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.h @@ -36,8 +36,10 @@ #include "OOVPA.h" +#if 0 // Moved to 3911 extern LOOVPA<1+11> D3DDevice_SetTextureState_TexCoordIndex_3925; extern LOOVPA<2+15> D3DDevice_SetRenderState_CullMode_3925; +#endif extern OOVPATable D3D8_3925[]; extern uint32 D3D8_3925_SIZE; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.inl index 395e14ec4..7aa1ea9b1 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.inl @@ -32,6 +32,33 @@ // * // ****************************************************************** +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 3925, 12) + + // D3DDevice_SetRenderState_MultiSampleMode+0x05 : mov ecx, [esp+4] + { 0x05, 0x8B }, + { 0x06, 0x4C }, + { 0x07, 0x24 }, + { 0x08, 0x04 }, + + // D3DDevice_SetRenderState_MultiSampleMode+0x0F : mov edx, [eax+0x410] + { 0x0F, 0x8B }, + { 0x10, 0x90 }, + { 0x11, 0x10 }, + { 0x12, 0x04 }, + + // D3DDevice_SetRenderState_MultiSampleMode+0x15 : mov eax, [eax+0x40C] + { 0x15, 0x8B }, + { 0x16, 0x80 }, + + // D3DDevice_SetRenderState_MultiSampleMode+0x22 : retn 0x04 + { 0x22, 0xC2 }, + { 0x23, 0x04 }, +OOVPA_END; + +#if 0 // Moved to 3911 // ****************************************************************** // * Direct3D_CreateDevice // ****************************************************************** @@ -59,7 +86,7 @@ OOVPA_NO_XREF(Direct3D_CreateDevice, 3911, 18) // Also for 4361, 4627, 5558, 565 { 0x1C, 0xC7 }, { 0x1D, 0x05 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * Direct3D_CreateDevice @@ -82,7 +109,7 @@ OOVPA_NO_XREF(Direct3D_CreateDevice, 3925, 8) { 0x91, 0x18 }, OOVPA_END; #endif - +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_IsBusy // ****************************************************************** @@ -99,7 +126,8 @@ OOVPA_NO_XREF(D3DDevice_IsBusy, 3925, 8) { 0x33, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetDeviceCaps // ****************************************************************** @@ -123,8 +151,8 @@ OOVPA_NO_XREF(D3DDevice_GetDeviceCaps, 3925, 11) { 0x14, 0xC2 }, { 0x15, 0x04 }, OOVPA_END; - - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_BeginVisibilityTest // ****************************************************************** @@ -147,8 +175,8 @@ OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 3925, 11) { 0x1F, 0xC0 }, { 0x20, 0x0C }, OOVPA_END; - - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetMaterial // ****************************************************************** @@ -163,7 +191,8 @@ OOVPA_NO_XREF(D3DDevice_GetMaterial, 3925, 9) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_EndVisibilityTest // ****************************************************************** @@ -188,7 +217,8 @@ OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 3925, 13) { 0x44, 0xC0 }, { 0x45, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVisibilityTestResult // ****************************************************************** @@ -210,7 +240,8 @@ OOVPA_NO_XREF(D3DDevice_GetVisibilityTestResult, 3925, 11) { 0x2E, 0x76 }, { 0x2F, 0x88 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** @@ -229,7 +260,8 @@ OOVPA_NO_XREF(D3DDevice_KickOff, 3925, 10) { 0x91, 0xEA }, { 0x92, 0x02 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_LoadVertexShader // ****************************************************************** @@ -250,7 +282,8 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShader, 3925, 10) { 0x4E, 0x89 }, { 0x4F, 0x13 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SelectVertexShader // ****************************************************************** @@ -272,7 +305,8 @@ OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 3925, 11) { 0x51, 0x89 }, { 0x52, 0x06 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -297,7 +331,8 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 3925, 14) { 0x18, 0xF0 }, { 0x19, 0x24 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVerticalBlankCallback // ****************************************************************** @@ -320,7 +355,8 @@ OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 3925, 12) { 0x11, 0x04 }, { 0x12, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderTarget // ****************************************************************** @@ -344,11 +380,13 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 3925, 11) // D3DDevice_SetRenderTarget+0xDC : push edx { 0xDC, 0x52 }, OOVPA_END; - +#endif +#if 0 // Moved to 3948 // ****************************************************************** // * D3DDevice_SetRenderTarget // ****************************************************************** OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 3948, 8) + // D3DDevice_SetRenderTarget+0x00 : sub esp, 0x30 { 0x00, 0x83 }, { 0x01, 0xEC }, @@ -359,13 +397,14 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 3948, 8) { 0x33, 0xE1 }, { 0x34, 0x0F }, - // D3DDevice_SetRenderTarget+0x69 : push ebx + // D3DDevice_SetRenderTarget+0x69 : push ebx { 0x69, 0x53 }, // D3DDevice_SetRenderTarget+0xDA : push edx { 0xDA, 0x52 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DSurface_GetDesc // ****************************************************************** @@ -401,7 +440,8 @@ OOVPA_NO_XREF(D3DSurface_GetDesc, 3925, 16) { 0x13, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetTransform // ****************************************************************** @@ -427,7 +467,8 @@ OOVPA_NO_XREF(D3DDevice_GetTransform, 3925, 12) { 0x20, 0xC2 }, { 0x21, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetStreamSource // ****************************************************************** @@ -450,7 +491,8 @@ OOVPA_NO_XREF(D3DDevice_SetStreamSource, 3925, 12) { 0x6C, 0x80 }, { 0x6D, 0x02 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexShader // ****************************************************************** @@ -477,7 +519,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShader, 3925, 14) { 0x8F, 0x94 }, { 0x90, 0x1E }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreatePixelShader // ****************************************************************** @@ -501,7 +544,8 @@ OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 3925, 11) { 0x42, 0xC2 }, { 0x43, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetPixelShader // ****************************************************************** @@ -525,7 +569,8 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShader, 3925, 10) { 0xE4, 0xA5 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -547,7 +592,8 @@ OOVPA_NO_XREF(D3DDevice_SetIndices, 3925, 11) { 0x69, 0x7C }, { 0x6A, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetViewport // ****************************************************************** @@ -570,7 +616,8 @@ OOVPA_NO_XREF(D3DDevice_SetViewport, 3925, 10) // D3DDevice_SetViewport+0x9D : inc edx { 0x9D, 0x42 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTexture // ****************************************************************** @@ -593,7 +640,8 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 3925, 12) // Deprecated in favor of 3911 bel { 0x7D, 0xC2 }, { 0x7E, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetTexture, named with 2 suffix to match EMUPATCH(D3DDevice_GetTexture2) // ****************************************************************** @@ -605,7 +653,6 @@ OOVPA_XREF(D3DDevice_GetTexture2, 3911, 1 + 21, // Also for 4361 XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived #endif - OOVPA_NO_XREF(D3DDevice_GetTexture2, 3911, 21) // Also for 4361 { 0x00, 0x8B }, @@ -634,7 +681,8 @@ OOVPA_NO_XREF(D3DDevice_GetTexture2, 3911, 21) // Also for 4361 { 0x1E, 0x8B }, { 0x1F, 0x16 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTexture // ****************************************************************** @@ -678,7 +726,8 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 3911, 28) { 0x1E, 0x4F }, { 0x1F, 0x1C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DrawRectPatch // ****************************************************************** @@ -713,7 +762,8 @@ OOVPA_NO_XREF(D3DDevice_DrawRectPatch, 3911, 27) // Also verified for 4361, 4627 { 0x1E, 0x6C }, { 0x1F, 0x24 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DrawTriPatch // ****************************************************************** @@ -749,7 +799,8 @@ OOVPA_NO_XREF(D3DDevice_DrawTriPatch, 3911, 27) // Also verified for 4361, 4627, { 0x1E, 0x44 }, { 0x1F, 0x24 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DrawIndexedVertices // ****************************************************************** @@ -772,7 +823,8 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVertices, 3925, 12) { 0xDA, 0x8D }, { 0xDB, 0x9B }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_Begin // ****************************************************************** @@ -794,7 +846,8 @@ OOVPA_NO_XREF(D3DDevice_Begin, 3925, 11) { 0x38, 0xC2 }, { 0x39, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexData2f // ****************************************************************** @@ -821,7 +874,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData2f, 3925, 14) { 0x2E, 0xC2 }, { 0x2F, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexData2s // ****************************************************************** @@ -845,7 +899,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData2s, 3925, 11) { 0x32, 0xC2 }, { 0x33, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexData4f // ****************************************************************** @@ -867,11 +922,16 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData4f, 3925, 11) { 0x50, 0xC2 }, { 0x51, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexDataColor // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 3925, 17) +OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 3925, 18) + + // D3DDevice_SetVertexDataColor+0x00 : push esi + { 0x00, 0x56 }, + // D3DDevice_SetVertexDataColor+0x1F : mov byte ptr [esp+?] { 0x1F, 0x0F }, { 0x20, 0xB6 }, @@ -895,7 +955,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 3925, 17) { 0x35, 0x00 }, { 0x36, 0xFF }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_End // ****************************************************************** @@ -920,7 +981,8 @@ OOVPA_NO_XREF(D3DDevice_End, 3925, 12) // D3DDevice_End+0x40 : retn { 0x40, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_Clear // ****************************************************************** @@ -941,7 +1003,8 @@ OOVPA_NO_XREF(D3DDevice_Clear, 3925, 10) { 0x5F, 0x33 }, { 0x60, 0xED }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreatePalette // ****************************************************************** @@ -966,7 +1029,8 @@ OOVPA_NO_XREF(D3DDevice_CreatePalette, 3925, 12) { 0x4F, 0xE6 }, { 0x50, 0x1E }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -989,7 +1053,8 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 3925, 12) { 0x7C, 0xC2 }, { 0x7D, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateTexture // ****************************************************************** @@ -1024,7 +1089,8 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture, 3925, 14) { 0x29, 0xC2 }, { 0x2A, 0x1C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateVolumeTexture // ****************************************************************** @@ -1056,7 +1122,8 @@ OOVPA_NO_XREF(D3DDevice_CreateVolumeTexture, 3925, 15) { 0x2C, 0xC2 }, { 0x2D, 0x20 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateCubeTexture // ****************************************************************** @@ -1088,7 +1155,8 @@ OOVPA_NO_XREF(D3DDevice_CreateCubeTexture, 3925, 15) { 0x25, 0xC2 }, { 0x26, 0x18 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateIndexBuffer // ****************************************************************** @@ -1112,7 +1180,8 @@ OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer, 3925, 13) { 0x32, 0x01 }, { 0x33, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateVertexShader // ****************************************************************** @@ -1198,7 +1267,8 @@ OOVPA_NO_XREF(D3DDevice_CreateVertexShader, 3925, 38) { 0xFE, 0xC7 }, */ OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexShaderConstant // ****************************************************************** @@ -1221,7 +1291,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstant, 3925, 10) { 0x9B, 0xC2 }, { 0x9C, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetFlickerFilter // ****************************************************************** @@ -1244,7 +1315,8 @@ OOVPA_NO_XREF(D3DDevice_SetFlickerFilter, 3925, 12) { 0x1C, 0xC2 }, { 0x1D, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetSoftDisplayFilter // ****************************************************************** @@ -1267,7 +1339,8 @@ OOVPA_NO_XREF(D3DDevice_SetSoftDisplayFilter, 3925, 12) { 0x1C, 0xC2 }, { 0x1D, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** @@ -1297,7 +1370,8 @@ OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 3925, 1+11, { 0x97, 0xD3 }, { 0x98, 0xE0 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** @@ -1323,7 +1397,8 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_BorderColor, 3925, 13) { 0x34, 0xC2 }, { 0x35, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_PSTextureModes // ****************************************************************** @@ -1345,7 +1420,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_PSTextureModes, 3925, 11) { 0x21, 0xC2 }, { 0x22, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_StencilFail // ****************************************************************** @@ -1368,19 +1444,20 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilFail, 3925, 12) { 0x4C, 0x04 }, { 0x4D, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_CullMode // ****************************************************************** OOVPA_XREF(D3DDevice_SetRenderState_CullMode, 3925, 2+15, - XRefNoSaveIndex, - XRefTwo) + XRefNoSaveIndex, + XRefTwo) - XREF_ENTRY(0x03, XREF_D3DDEVICE), // Derived - XREF_ENTRY(0x25, XREF_D3DRS_CULLMODE), // Derived + XREF_ENTRY(0x03, XREF_D3DDEVICE), // Derived + XREF_ENTRY(0x25, XREF_D3DRS_CULLMODE), // Derived - // D3DDevice_SetRenderState_CullMode+0x42 : mov dword ptr [eax+8], 0x4039C + // D3DDevice_SetRenderState_CullMode+0x42 : mov dword ptr [eax+8], 0x4039C { 0x42, 0xC7 }, { 0x43, 0x40 }, { 0x44, 0x08 }, @@ -1403,7 +1480,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_CullMode, 3925, 2+15, { 0x4F, 0x04 }, { 0x50, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_Simple // ****************************************************************** @@ -1431,7 +1509,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Simple, 3925, 13) { 0x2B, 0xEB }, { 0x2C, 0xD3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTransform // ****************************************************************** @@ -1454,7 +1533,8 @@ OOVPA_NO_XREF(D3DDevice_SetTransform, 3925, 10) { 0x7A, 0xDE }, { 0x7B, 0xF9 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_FogColor // ****************************************************************** @@ -1476,7 +1556,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_FogColor, 3925, 11) { 0x44, 0xC2 }, { 0x45, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_FillMode // ****************************************************************** @@ -1498,7 +1579,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode, 3925, 11) { 0x3B, 0xC2 }, { 0x3C, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_StencilEnable // ****************************************************************** @@ -1520,7 +1602,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilEnable, 3925, 11) { 0x7D, 0xC2 }, { 0x7E, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -1542,7 +1625,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 3925, 11) { 0x74, 0xC2 }, { 0x75, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_ZBias // ****************************************************************** @@ -1565,7 +1649,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZBias, 3925, 10) { 0x71, 0xC2 }, { 0x72, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable // ****************************************************************** @@ -1591,7 +1676,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 3925, 13) { 0x69, 0xC2 }, { 0x6A, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_Release // ****************************************************************** @@ -1610,7 +1696,7 @@ OOVPA_NO_XREF(D3DDevice_Release, 3911, 12) // Also for 4034, 4361, 4627, 5344, 5 { 0x13, 0xCF }, { 0x14, 0xE8 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_Release @@ -1636,7 +1722,7 @@ OOVPA_NO_XREF(D3DDevice_Release, 3925, 11) { 0x2E, 0x48 }, OOVPA_END; #endif - +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_Present // ****************************************************************** @@ -1659,7 +1745,8 @@ OOVPA_NO_XREF(D3DDevice_Present, 3925, 10) { 0xC0, 0x33 }, { 0xC1, 0xFF }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetShaderConstantMode // ****************************************************************** @@ -1683,7 +1770,8 @@ OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 3925, 12) { 0xE6, 0x24 }, { 0xE7, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetBackBuffer // ****************************************************************** @@ -1709,7 +1797,8 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer, 3925, 12) { 0x31, 0xC2 }, { 0x32, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetRenderTarget // ****************************************************************** @@ -1732,7 +1821,8 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 3925, 9) { 0x1D, 0xC2 }, { 0x1E, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetDepthStencilSurface // ****************************************************************** @@ -1760,7 +1850,7 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 3911, 18) { 0x1E, 0x04 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface @@ -1788,6 +1878,7 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 3925, 10) { 0x26, 0x04 }, OOVPA_END; #endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateVertexBuffer // ****************************************************************** @@ -1814,7 +1905,8 @@ OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer, 3925, 13) { 0x53, 0xC2 }, { 0x54, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DVertexBuffer_Lock // ****************************************************************** @@ -1839,7 +1931,8 @@ OOVPA_NO_XREF(D3DVertexBuffer_Lock, 3925, 11) { 0x4A, 0xC2 }, { 0x4B, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DResource_Register // ****************************************************************** @@ -1878,7 +1971,8 @@ OOVPA_NO_XREF(D3DResource_Register, 3925, 19) { 0x25, 0xC2 }, { 0x26, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DResource_Release // ****************************************************************** @@ -1906,7 +2000,8 @@ OOVPA_NO_XREF(D3DResource_Release, 3925, 11) { 0x4B, 0xC2 }, { 0x4C, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DResource_AddRef // ****************************************************************** @@ -1932,7 +2027,8 @@ OOVPA_NO_XREF(D3DResource_AddRef, 3925, 10) { 0x34, 0xC2 }, { 0x35, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DResource_IsBusy // ****************************************************************** @@ -1957,7 +2053,8 @@ OOVPA_NO_XREF(D3DResource_IsBusy, 3925, 11) { 0x79, 0x73 }, { 0x7A, 0x09 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DSurface_LockRect // ****************************************************************** @@ -1991,7 +2088,8 @@ OOVPA_NO_XREF(D3DSurface_LockRect, 3925, 16) { 0x1D, 0xC2 }, { 0x1E, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DPalette_Lock // ****************************************************************** @@ -2018,7 +2116,8 @@ OOVPA_NO_XREF(D3DPalette_Lock, 3925, 13) { 0x1C, 0x89 }, { 0x1D, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DTexture_LockRect // ****************************************************************** @@ -2051,7 +2150,8 @@ OOVPA_NO_XREF(D3DTexture_LockRect, 3925, 17) { 0x20, 0xC2 }, { 0x21, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DVolumeTexture_LockBox // ****************************************************************** @@ -2076,7 +2176,8 @@ OOVPA_NO_XREF(D3DVolumeTexture_LockBox, 3925, 11) { 0x99, 0xC2 }, { 0x9A, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DCubeTexture_LockRect // ****************************************************************** @@ -2101,7 +2202,8 @@ OOVPA_NO_XREF(D3DCubeTexture_LockRect, 3925, 11) { 0x98, 0xC2 }, { 0x99, 0x18 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DTexture_GetSurfaceLevel // ****************************************************************** @@ -2134,7 +2236,8 @@ OOVPA_NO_XREF(D3DTexture_GetSurfaceLevel, 3925, 11) { 0x4C, 0xC2 }, { 0x4D, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * Lock2DSurface // ****************************************************************** @@ -2155,7 +2258,8 @@ OOVPA_NO_XREF(Lock2DSurface, 3925, 11) { 0x98, 0xC2 }, { 0x99, 0x18 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -2177,7 +2281,8 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 3925, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShaderSize // ****************************************************************** @@ -2208,7 +2313,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderSize, 3925, 12) { 0x10, 0x10 }, { 0x13, 0x00 },*/ OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetGammaRamp // ****************************************************************** @@ -2229,7 +2335,8 @@ OOVPA_NO_XREF(D3DDevice_SetGammaRamp, 3925, 9) { 0x3F, 0x8B }, { 0x40, 0xCA }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetMaterial // ****************************************************************** @@ -2254,7 +2361,8 @@ OOVPA_NO_XREF(D3DDevice_SetMaterial, 3925, 11) { 0x23, 0xC2 }, { 0x24, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_AddRef // ****************************************************************** @@ -2278,7 +2386,8 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 3925, 10) { 0x0E, 0x08 }, { 0x0F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_CMiniport_GetDisplayCapabilities // Was D3DDevice_Unknown1 // ****************************************************************** @@ -2297,7 +2406,8 @@ OOVPA_NO_XREF(D3D_CMiniport_GetDisplayCapabilities, 3925, 9) // D3D_CMiniport_GetDisplayCapabilities+0x1E : retn { 0x1E, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -2321,7 +2431,31 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 3925, 10) { 0x1A, 0xC2 }, { 0x1B, 0x04 }, OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * D3DDevice_GetGammaRamp +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetGammaRamp, 3911, 13) // Up to 5849 + { 0x05, 0x8B }, + + { 0x0A, 0x00 }, + { 0x0B, 0x56 }, + { 0x0C, 0x8D }, + { 0x0D, 0x0C }, + { 0x0E, 0x49 }, + { 0x0F, 0xC1 }, + { 0x10, 0xE1 }, + { 0x11, 0x08 }, + + { 0x16, 0x0C }, + { 0x1C, 0x00 }, + { 0x22, 0x00 }, + { 0x27, 0xC2 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetGammaRamp // ****************************************************************** @@ -2335,6 +2469,8 @@ OOVPA_NO_XREF(D3DDevice_GetGammaRamp, 3925, 7) { 0x22, 0x00 }, { 0x28, 0x04 }, OOVPA_END; +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus // ****************************************************************** @@ -2359,7 +2495,8 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 3925, 14) { 0x3C, 0xC2 }, { 0x3D, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias // ****************************************************************** @@ -2373,7 +2510,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 3925, 7) { 0x40, 0x89 }, { 0x49, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_VertexBlend // ****************************************************************** @@ -2400,7 +2538,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_VertexBlend, 3925, 13) { 0x2F, 0xC2 }, { 0x30, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_BackFillMode // ****************************************************************** @@ -2426,7 +2565,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 3925, 12) { 0x48, 0xC2 }, { 0x49, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_TwoSidedLighting // ****************************************************************** @@ -2453,7 +2593,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TwoSidedLighting, 3925, 13) { 0x51, 0xC2 }, { 0x52, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_NormalizeNormals // ****************************************************************** @@ -2473,7 +2614,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_NormalizeNormals, 3925, 8) { 0x2A, 0xC2 }, { 0x2B, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_FrontFace // ****************************************************************** @@ -2496,7 +2638,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_FrontFace, 3925, 9) { 0x1B, 0xC0 }, { 0x1C, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -2520,7 +2663,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 3925, 10) { 0x49, 0xC2 }, { 0x4A, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_LogicOp // ****************************************************************** @@ -2541,7 +2685,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_LogicOp, 3925, 9) { 0x49, 0xC2 }, { 0x4A, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_EdgeAntiAlias // ****************************************************************** @@ -2566,7 +2711,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_EdgeAntiAlias, 3925, 11) { 0x29, 0xC2 }, { 0x2A, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMask // ****************************************************************** @@ -2593,33 +2739,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMask, 3925, 13) { 0x49, 0xC2 }, { 0x4A, 0x04 }, OOVPA_END; - -// ****************************************************************** -// * D3DDevice_SetRenderState_MultiSampleMode -// ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 3925, 12) - - // D3DDevice_SetRenderState_MultiSampleMode+0x05 : mov ecx, [esp+4] - { 0x05, 0x8B }, - { 0x06, 0x4C }, - { 0x07, 0x24 }, - { 0x08, 0x04 }, - - // D3DDevice_SetRenderState_MultiSampleMode+0x0F : mov edx, [eax+0x410] - { 0x0F, 0x8B }, - { 0x10, 0x90 }, - { 0x11, 0x10 }, - { 0x12, 0x04 }, - - // D3DDevice_SetRenderState_MultiSampleMode+0x15 : mov eax, [eax+0x40C] - { 0x15, 0x8B }, - { 0x16, 0x80 }, - - // D3DDevice_SetRenderState_MultiSampleMode+0x22 : retn 0x04 - { 0x22, 0xC2 }, - { 0x23, 0x04 }, -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -2643,7 +2764,8 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 3925, 14) { 0x70, 0xD3 }, { 0x71, 0xE2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_ShadowFunc // ****************************************************************** @@ -2671,7 +2793,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ShadowFunc, 3925, 14) { 0x21, 0xC0 }, { 0x22, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_LineWidth // ****************************************************************** @@ -2695,7 +2818,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_LineWidth, 3925, 10) { 0x5C, 0xC2 }, { 0x5D, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_YuvEnable // ****************************************************************** @@ -2721,7 +2845,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_YuvEnable, 3925, 10) { 0x22, 0xC2 }, { 0x23, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_OcclusionCullEnable // ****************************************************************** @@ -2747,7 +2872,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_OcclusionCullEnable, 3925, 12) { 0x59, 0xC2 }, { 0x5A, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_StencilCullEnable // ****************************************************************** @@ -2766,7 +2892,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_StencilCullEnable, 3925, 8, { 0x46, 0x03 }, { 0x52, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -2781,7 +2908,8 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 3925, 8) { 0xDE, 0x75 }, { 0xFE, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DrawIndexedVerticesUP // ****************************************************************** @@ -2796,7 +2924,8 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 3925, 8) { 0xDE, 0x75 }, { 0xFE, 0x75 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DrawVertices // ****************************************************************** @@ -2811,7 +2940,8 @@ OOVPA_NO_XREF(D3DDevice_DrawVertices, 3925, 8) { 0x8A, 0x17 }, { 0x9E, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetDisplayMode // ****************************************************************** @@ -2825,7 +2955,8 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 3925, 7) { 0x41, 0x89 }, { 0x4B, 0x89 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTextureState_BumpEnv // ****************************************************************** @@ -2839,7 +2970,8 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_BumpEnv, 3925, 7) { 0x46, 0x8B }, { 0x52, 0xB5 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** @@ -2853,7 +2985,8 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor, 3925, 7) { 0x28, 0x07 }, { 0x2F, 0x5E }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexData4s // ****************************************************************** @@ -2868,7 +3001,30 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData4s, 3925, 8) { 0x3D, 0x08 }, { 0x46, 0x00 }, OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * D3D_SetPushBufferSize +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(D3D_SetPushBufferSize, 3911, 13) + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + { 0x08, 0xA3 }, + { 0x0D, 0x89 }, + { 0x0E, 0x0D }, + { 0x13, 0xC2 }, + { 0x14, 0x08 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_SetPushBufferSize // ****************************************************************** @@ -2882,7 +3038,8 @@ OOVPA_NO_XREF(D3D_SetPushBufferSize, 3925, 7) { 0x13, 0xC2 }, { 0x14, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DResource_GetType // ****************************************************************** @@ -2896,7 +3053,8 @@ OOVPA_NO_XREF(D3DResource_GetType, 3925, 7) { 0x7C, 0x04 }, { 0x91, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_AllocContiguousMemory // ****************************************************************** @@ -2909,7 +3067,8 @@ OOVPA_NO_XREF(D3D_AllocContiguousMemory, 3925, 6) { 0x16, 0xC2 }, { 0x17, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_Deferred // ****************************************************************** @@ -2929,7 +3088,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Deferred, 3925, 9) // D3DDevice_SetRenderState_Deferred+0x14 : retn { 0x14, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetLight // ****************************************************************** @@ -2952,7 +3112,8 @@ OOVPA_NO_XREF(D3DDevice_GetLight, 3925, 10) { 0x1E, 0xB9 }, { 0x1F, 0x1A }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -2967,7 +3128,8 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 3925, 8) { 0xD7, 0x00 }, { 0xF6, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_LightEnable // ****************************************************************** @@ -3021,52 +3183,54 @@ OOVPA_XREF(D3DDevice_LightEnable, 3911, 1 + 24,// valid upto at least 4627, next { 0xC2, 0x00 }, */ OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetLightEnable // ****************************************************************** -OOVPA_XREF(D3DDevice_GetLightEnable, 3911, 1+28, // valid upto at least 4627, next known difference is from 5344 onwards +OOVPA_XREF(D3DDevice_GetLightEnable, 3911, 1+24, // valid upto at least 5233, next known difference is from 5344 onwards XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x5D, XREF_D3DDEVICE), + XREF_ENTRY( 0x05, XREF_D3DDEVICE), - { 0x00, 0x8B }, - { 0x01, 0x4C }, - { 0x02, 0x24 }, - { 0x03, 0x04 }, + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, - { 0x04, 0xA1 }, - { 0x09, 0x8B }, - { 0x0A, 0x90 }, - { 0x0B, 0x80 }, - { 0x0C, 0x04 }, + { 0x04, 0xA1 }, + { 0x09, 0x8B }, + { 0x0A, 0x90 }, + // 0x0B, 0x80 }, // 0x8004 vs 4134 0x9003 + // 0x0C, 0x04 }, - { 0x0D, 0x00 }, - { 0x0E, 0x00 }, - { 0x0F, 0x8B }, - { 0x10, 0x80 }, - { 0x11, 0x88 }, + { 0x0D, 0x00 }, + { 0x0E, 0x00 }, + { 0x0F, 0x8B }, + { 0x10, 0x80 }, + // 0x11, 0x88 }, // 0x8804 vs 4134 0x9803 - { 0x12, 0x04 }, - { 0x13, 0x00 }, - { 0x14, 0x00 }, - { 0x15, 0x8D }, - { 0x16, 0x0C }, + // 0x12, 0x04 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x8D }, + { 0x16, 0x0C }, - { 0x17, 0xC9 }, - { 0x18, 0xC1 }, - { 0x19, 0xE1 }, - { 0x1A, 0x04 }, - { 0x1B, 0x03 }, + { 0x17, 0xC9 }, + { 0x18, 0xC1 }, + { 0x19, 0xE1 }, + { 0x1A, 0x04 }, + { 0x1B, 0x03 }, - { 0x1C, 0xCA }, - { 0x1D, 0x85 }, - { 0x1E, 0xC0 }, - { 0x1F, 0x74 }, + { 0x1C, 0xCA }, + { 0x1D, 0x85 }, + { 0x1E, 0xC0 }, + { 0x1F, 0x74 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** @@ -3080,7 +3244,8 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 3925, 7) { 0x16, 0x00 }, { 0x1A, 0x5E }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -3094,7 +3259,8 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 3925, 7) { 0x1C, 0x00 }, { 0x21, 0x5F }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_ApplyStateBlock // ****************************************************************** @@ -3109,7 +3275,8 @@ OOVPA_NO_XREF(D3DDevice_ApplyStateBlock, 3925, 8) { 0xD7, 0x39 }, { 0xF6, 0x51 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CaptureStateBlock // ****************************************************************** @@ -3123,7 +3290,8 @@ OOVPA_NO_XREF(D3DDevice_CaptureStateBlock, 3925, 7) { 0xBE, 0x04 }, { 0xDE, 0xF8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DeleteStateBlock // ****************************************************************** @@ -3137,7 +3305,8 @@ OOVPA_NO_XREF(D3DDevice_DeleteStateBlock, 3925, 7) { 0x70, 0x06 }, { 0x83, 0xEB }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetBackMaterial // ****************************************************************** @@ -3152,7 +3321,8 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 3925, 8) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateStateBlock // ****************************************************************** @@ -3167,7 +3337,8 @@ OOVPA_NO_XREF(D3DDevice_CreateStateBlock, 3925, 8) { 0xDE, 0xF8 }, { 0xFE, 0x76 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DeletePixelShader // ****************************************************************** @@ -3181,7 +3352,8 @@ OOVPA_NO_XREF(D3DDevice_DeletePixelShader, 3925, 7) { 0x18, 0xC2 }, { 0x1A, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetPixelShaderProgram // ****************************************************************** @@ -3195,7 +3367,8 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 3925, 7) { 0x32, 0xC7 }, { 0x36, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_KickOffAndWaitForIdle // ****************************************************************** @@ -3212,7 +3385,8 @@ OOVPA_XREF(D3D_KickOffAndWaitForIdle, 3925, 5, { 0x0A, 0x51 }, { 0x10, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetModelView // ****************************************************************** @@ -3226,7 +3400,8 @@ OOVPA_NO_XREF(D3DDevice_SetModelView, 3925, 7) { 0x76, 0x00 }, { 0x8A, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_FlushVertexCache // ****************************************************************** @@ -3241,7 +3416,8 @@ OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 3925, 8) { 0x17, 0x00 }, { 0x1C, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetScissors // ****************************************************************** @@ -3256,7 +3432,8 @@ OOVPA_NO_XREF(D3DDevice_SetScissors, 3925, 8) { 0xD9, 0x8B }, { 0xF6, 0xDB }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexShaderInput // ****************************************************************** @@ -3271,7 +3448,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderInput, 3925, 8) { 0xDE, 0xCA }, { 0xFE, 0x17 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_PrimeVertexCache // ****************************************************************** @@ -3286,7 +3464,8 @@ OOVPA_NO_XREF(D3DDevice_PrimeVertexCache, 3925, 8) { 0x67, 0x00 }, { 0x76, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetVertexData4ub // ****************************************************************** @@ -3300,7 +3479,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData4ub, 3925, 7) { 0x34, 0x24 }, { 0x3D, 0xFC }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetPixelShaderConstant // ****************************************************************** @@ -3314,7 +3494,8 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 3925, 7) { 0xC0, 0x51 }, { 0xDE, 0xC4 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_InsertCallback // ****************************************************************** @@ -3328,7 +3509,8 @@ OOVPA_NO_XREF(D3DDevice_InsertCallback, 3925, 7) { 0x4C, 0x00 }, { 0x59, 0x03 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_BeginPushBuffer // ****************************************************************** @@ -3342,7 +3524,8 @@ OOVPA_NO_XREF(D3DDevice_BeginPushBuffer, 3925, 7) { 0x4C, 0x04 }, { 0x59, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_EndPushBuffer // ****************************************************************** @@ -3356,7 +3539,8 @@ OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 3925, 7) { 0x70, 0x03 }, { 0x83, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_RopZCmpAlwaysRead // ****************************************************************** @@ -3382,7 +3566,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, 9, { 0x0F, 0x04 }, { 0x10, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_RopZRead // ****************************************************************** @@ -3408,7 +3593,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_RopZRead, 3925, 9, { 0x0F, 0x04 }, { 0x10, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetRenderState_DoNotCullUncompressed // ****************************************************************** @@ -3434,7 +3620,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, 9, { 0x0F, 0x04 }, { 0x10, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * XMETAL_StartPush // ****************************************************************** @@ -3459,13 +3646,14 @@ OOVPA_NO_XREF(XMETAL_StartPush, 3925, 11) { 0x10, 0xC2 }, { 0x11, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::SetFence // ****************************************************************** OOVPA_XREF(D3D_SetFence, 3925, 11, - XREF_D3D_SETFENCE, + XREF_D3D_SetFence, XRefZero) // D3D::SetFence+0x0F : mov edi, [esi+0x1C] @@ -3487,7 +3675,8 @@ OOVPA_XREF(D3D_SetFence, 3925, 11, { 0x96, 0xC2 }, { 0x97, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_InsertFence // ****************************************************************** @@ -3496,14 +3685,15 @@ OOVPA_XREF(D3DDevice_InsertFence, 3925, 5, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x03, XREF_D3D_SETFENCE ), + XREF_ENTRY( 0x03, XREF_D3D_SetFence ), { 0x00, 0x6A }, { 0x01, 0x00 }, { 0x02, 0xE8 }, { 0x07, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_LoadVertexShaderProgram // ****************************************************************** @@ -3517,7 +3707,8 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 3925, 7) { 0x4C, 0x00 }, { 0x59, 0xE8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_DeleteVertexShader // ****************************************************************** @@ -3532,7 +3723,8 @@ OOVPA_NO_XREF(D3DDevice_DeleteVertexShader, 3925, 6) { 0x16, 0xC2 }, { 0x17, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_RunPushBuffer // ****************************************************************** @@ -3559,7 +3751,8 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 3925, 15) { 0xF6, 0x04 }, { 0xF7, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_BlockOnFence // ****************************************************************** @@ -3568,7 +3761,7 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 3925, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x08, XREF_D3D_BLOCKONTIME ), + XREF_ENTRY( 0x08, XREF_D3D_BlockOnTime ), { 0x00, 0x8B }, { 0x02, 0x24 }, @@ -3578,7 +3771,8 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 3925, 8, { 0x0D, 0x04 }, { 0x0E, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_EnumAdapterModes // ****************************************************************** @@ -3593,7 +3787,8 @@ OOVPA_NO_XREF(D3D_EnumAdapterModes, 3925, 8) { 0xE2, 0x89 }, { 0xFE, 0x5D }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_GetAdapterModeCount // ****************************************************************** @@ -3608,7 +3803,8 @@ OOVPA_NO_XREF(D3D_GetAdapterModeCount, 3925, 8) { 0x8A, 0x3B }, { 0x9E, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_Reset // ****************************************************************** @@ -3622,7 +3818,8 @@ OOVPA_NO_XREF(D3DDevice_Reset, 3925, 7) { 0x88, 0x50 }, { 0x9F, 0x03 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_GetAdapterIdentifier // ****************************************************************** @@ -3636,7 +3833,8 @@ OOVPA_NO_XREF(D3D_GetAdapterIdentifier, 3925, 7) { 0x22, 0x5F }, { 0x28, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_GetDeviceCaps // ****************************************************************** @@ -3650,7 +3848,8 @@ OOVPA_NO_XREF(D3D_GetDeviceCaps, 3925, 7) { 0x22, 0x0C }, { 0x29, 0x33 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::SetCommonDebugRegisters // ****************************************************************** @@ -3667,7 +3866,8 @@ OOVPA_NO_XREF(D3D_SetCommonDebugRegisters, 3925, 10) { 0x35, 0xEF }, { 0x36, 0xE7 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CreateImageSurface // ****************************************************************** @@ -3681,29 +3881,36 @@ OOVPA_NO_XREF(D3DDevice_CreateImageSurface, 3925, 7) { 0x16, 0xE8 }, { 0x1B, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::BlockOnTime // ****************************************************************** -OOVPA_XREF(D3D_BlockOnTime, 3925, 9, +OOVPA_XREF(D3D_BlockOnTime, 3925, 10, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XRefZero) - // D3D::BlockOnFence+0x0A : push edi - { 0x0A, 0x57 }, - // D3D::BlockOnFence+0x4E : cmp eax, 0x8000 - { 0x4E, 0x3D }, - { 0x4F, 0x00 }, - { 0x50, 0x80 }, - { 0x51, 0x00 }, - // D3D::BlockOnFence+0x6E : mov ebp, 0x40100 - { 0x6E, 0xBD }, - { 0x6F, 0x00 }, - { 0x70, 0x01 }, - { 0x71, 0x04 } -OOVPA_END; + // D3D::BlockOnFence+0x00 : push ebp + { 0x00, 0x55 }, + // D3D::BlockOnFence+0x0A : push edi + { 0x0A, 0x57 }, + + // D3D::BlockOnFence+0x4E : cmp eax, 0x8000 + { 0x4E, 0x3D }, + { 0x4F, 0x00 }, + { 0x50, 0x80 }, + { 0x51, 0x00 }, + + // D3D::BlockOnFence+0x6E : mov ebp, 0x40100 + { 0x6E, 0xBD }, + { 0x6F, 0x00 }, + { 0x70, 0x01 }, + { 0x71, 0x04 } +OOVPA_END; +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::BlockOnResource // ****************************************************************** @@ -3722,7 +3929,8 @@ OOVPA_XREF(D3D_BlockOnResource, 3925, 9, { 0x7F, 0x04 }, { 0x80, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DResource_BlockUntilNotBusy // ****************************************************************** @@ -3735,13 +3943,14 @@ OOVPA_XREF(D3DResource_BlockUntilNotBusy, 3925, 2, { 0x00, 0xE9 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_ClearStateBlockFlags // ****************************************************************** OOVPA_XREF(D3D_ClearStateBlockFlags, 3911, 13, - XREF_CLEARSTATEBLOCKFLAGS, + XREF_D3D_ClearStateBlockFlags, XRefZero) { 0x01, 0x15 }, @@ -3760,7 +3969,8 @@ OOVPA_XREF(D3D_ClearStateBlockFlags, 3911, 13, { 0x1E, 0x8D }, { 0x1F, 0x82 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_BeginStateBlock // ****************************************************************** @@ -3770,7 +3980,7 @@ OOVPA_XREF(D3DDevice_BeginStateBlock, 3911, 7, XRefOne) // D3DDevice_BeginStateBlock+0x0F : call [ClearStateBlockFlags] - XREF_ENTRY( 0x0A, XREF_CLEARSTATEBLOCKFLAGS ), + XREF_ENTRY( 0x0A, XREF_D3D_ClearStateBlockFlags ), // D3DDevice_BeginStateBlock+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -3782,7 +3992,7 @@ OOVPA_XREF(D3DDevice_BeginStateBlock, 3911, 7, { 0x08, 0x20 }, { 0x09, 0xE9 }, OOVPA_END; - +#endif #if 0 // Use XREF // ****************************************************************** // * D3DDevice_BeginStateBlock @@ -3797,13 +4007,13 @@ OOVPA_NO_XREF(D3DDevice_BeginStateBlock, 3925, 6) { 0x09, 0xE9 }, OOVPA_END; #endif - +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_RecordStateBlock // ****************************************************************** OOVPA_XREF(D3D_RecordStateBlock, 3911, 19, - XREF_RECORDSTATEBLOCK, + XREF_D3D_RecordStateBlock, XRefZero) { 0x00, 0x55 }, @@ -3828,7 +4038,8 @@ OOVPA_XREF(D3D_RecordStateBlock, 3911, 19, { 0x3E, 0xC0 }, { 0x5C, 0xE8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_EndStateBlock // ****************************************************************** @@ -3838,7 +4049,7 @@ OOVPA_XREF(D3DDevice_EndStateBlock, 3911, 6, XRefOne) // D3DDevice_EndStateBlock+0x0F : call [ClearStateBlockFlags] - XREF_ENTRY( 0x0A, XREF_RECORDSTATEBLOCK ), + XREF_ENTRY( 0x0A, XREF_D3D_RecordStateBlock ), // D3DDevice_EndStateBlock+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -3849,7 +4060,7 @@ OOVPA_XREF(D3DDevice_EndStateBlock, 3911, 6, { 0x07, 0x0C }, { 0x08, 0xDF }, OOVPA_END; - +#endif #if 0 // Used 3911 // ****************************************************************** // * D3DDevice_EndStateBlock @@ -3864,7 +4075,7 @@ OOVPA_NO_XREF(D3DDevice_EndStateBlock, 3925, 6) { 0x09, 0xE9 }, OOVPA_END; #endif - +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetTile // ****************************************************************** @@ -3885,7 +4096,8 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 3925, 9) { 0x7F, 0xC4 }, { 0x80, 0x18 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SetBackMaterial // ****************************************************************** @@ -3901,7 +4113,8 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 3925, 9) { 0x18, 0x8B }, { 0x1E, 0x5F }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_SwitchTexture // ****************************************************************** @@ -3928,7 +4141,8 @@ OOVPA_NO_XREF(D3DDevice_SwitchTexture, 3925, 10) { 0x23, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetModelView // ****************************************************************** @@ -3945,7 +4159,8 @@ OOVPA_NO_XREF(D3DDevice_GetModelView, 3925, 10) { 0x16, 0x10 }, { 0x1C, 0x5E }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_CopyRects // ****************************************************************** @@ -3961,7 +4176,8 @@ OOVPA_NO_XREF(D3DDevice_CopyRects, 3925, 9) { 0x4F, 0x84 }, { 0x75, 0x15 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DVertexBuffer_GetDesc // ****************************************************************** @@ -3975,7 +4191,8 @@ OOVPA_NO_XREF(D3DVertexBuffer_GetDesc, 3925, 7) { 0x16, 0x46 }, { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** @@ -3990,7 +4207,8 @@ OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 3925, 8) { 0x10, 0x0A }, { 0x13, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** @@ -4004,7 +4222,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShader, 3925, 7) { 0x10, 0x0A }, { 0x13, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShaderConstant // ****************************************************************** @@ -4020,7 +4239,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 3925, 9) { 0x18, 0x00 }, { 0x1F, 0xF7 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShaderInput // ****************************************************************** @@ -4035,7 +4255,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 3925, 8) { 0x18, 0x04 }, { 0x1F, 0x20 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_RunVertexStateShader // ****************************************************************** @@ -4051,7 +4272,8 @@ OOVPA_NO_XREF(D3DDevice_RunVertexStateShader, 3925, 9) { 0x16, 0x41 }, { 0x1F, 0x41 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShaderType // ****************************************************************** @@ -4065,7 +4287,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderType, 3925, 7) { 0x22, 0xC9 }, { 0x28, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShaderDeclaration // ****************************************************************** @@ -4081,7 +4304,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 3925, 9) { 0x11F, 0x83 }, { 0x129, 0x0F }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetVertexShaderFunction // ****************************************************************** @@ -4095,7 +4319,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderFunction, 3925, 7) { 0x8E, 0x00 }, { 0xA6, 0xF8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** @@ -4109,7 +4334,8 @@ OOVPA_NO_XREF(D3DDevice_GetPixelShader, 3925, 7) { 0x10, 0x0A }, { 0x13, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_IsFencePending // ****************************************************************** @@ -4127,7 +4353,8 @@ OOVPA_NO_XREF(D3DDevice_IsFencePending, 3925, 11) { 0x1A, 0x1B }, { 0x1F, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMiniport::InitHardware // ****************************************************************** @@ -4159,7 +4386,8 @@ OOVPA_NO_XREF(CMiniport_InitHardware, 3911, 24) { 0x1E, 0xA6 }, { 0x1F, 0xF8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMiniport::CreateCtxDmaObject // ****************************************************************** @@ -4197,7 +4425,8 @@ OOVPA_NO_XREF(CMiniport_CreateCtxDmaObject, 3911, 32) { 0x1E, 0x75 }, { 0x1F, 0xFC }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_CMiniport_GetDisplayCapabilities // ****************************************************************** @@ -4229,7 +4458,8 @@ OOVPA_NO_XREF(D3D_CMiniport_GetDisplayCapabilities, 3911, 15) // D3D_CMiniport_GetDisplayCapabilities+0x1E : retn { 0x1E, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetPushBufferOffset // ****************************************************************** @@ -4243,7 +4473,8 @@ OOVPA_NO_XREF(D3DDevice_GetPushBufferOffset, 3925, 7) { 0x82, 0x04 }, { 0x98, 0x89 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DBaseTexture_GetLevelCount // ****************************************************************** @@ -4273,7 +4504,8 @@ OOVPA_NO_XREF(D3DBaseTexture_GetLevelCount, 3911, 13) { 0x0B, 0xC2 }, { 0x0C, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DCubeTexture_GetCubeMapSurface // ****************************************************************** @@ -4291,7 +4523,8 @@ OOVPA_NO_XREF(D3DCubeTexture_GetCubeMapSurface, 3911, 11) { 0x32, 0x4C }, { 0x45, 0x51 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetCreationParameters // ****************************************************************** @@ -4305,7 +4538,8 @@ OOVPA_NO_XREF(D3DDevice_GetCreationParameters, 3911, 7) { 0x2E, 0x5E }, { 0x36, 0xC9 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetScissors // ****************************************************************** @@ -4329,7 +4563,8 @@ OOVPA_NO_XREF(D3DDevice_GetScissors, 3911, 15) { 0x1E, 0x90 }, // { 0x1F, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::LazySetPointParams // ****************************************************************** @@ -4348,7 +4583,8 @@ OOVPA_NO_XREF(D3D_LazySetPointParams, 3911, 12) { 0x37, 0x89 }, { 0x6E, 0x15 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * Lock3DSurface // ****************************************************************** @@ -4373,7 +4609,8 @@ OOVPA_NO_XREF(Lock3DSurface, 3911, 11) { 0x99, 0xC2 }, { 0x9A, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::CDevice::SetStateUP // ****************************************************************** @@ -4399,7 +4636,8 @@ OOVPA_NO_XREF(D3DDevice_SetStateUP, 3911, 16) { 0xA5, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D::CDevice::SetStateVB // ****************************************************************** @@ -4425,7 +4663,8 @@ OOVPA_NO_XREF(D3DDevice_SetStateVB, 3911, 16) { 0xA5, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * Direct3D_CheckDeviceMultiSampleType // ****************************************************************** @@ -4439,8 +4678,8 @@ OOVPA_NO_XREF(Direct3D_CheckDeviceMultiSampleType, 3911, 7) { 0x5E, 0x72 }, { 0x6E, 0x03 }, OOVPA_END; - - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetOverlayUpdateStatus // ****************************************************************** @@ -4469,7 +4708,8 @@ OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 3911, 15) // Also for 4134, 4361 { 0x1C, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3D_CheckDeviceFormat // ****************************************************************** @@ -4483,186 +4723,240 @@ OOVPA_NO_XREF(D3D_CheckDeviceFormat, 3911, 7) { 0x5E, 0x08 }, { 0x6E, 0x3C }, OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * D3DDevice_EnableOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EnableOverlay, 3911, 24) + + { 0x00, 0x8B }, + + { 0x09, 0x8B }, + { 0x0A, 0x80 }, + { 0x0B, 0x04 }, + { 0x0C, 0x04 }, + { 0x0D, 0x00 }, + { 0x0E, 0x00 }, + { 0x0F, 0x33 }, + { 0x10, 0xC9 }, + { 0x11, 0x3B }, + { 0x12, 0xD1 }, + { 0x13, 0x74 }, + { 0x14, 0x0A }, + { 0x15, 0x39 }, + { 0x16, 0x88 }, + { 0x17, 0x00 }, + { 0x18, 0x87 }, + { 0x19, 0x00 }, + { 0x1A, 0x00 }, + { 0x1B, 0x75 }, + { 0x1C, 0xF8 }, + { 0x1D, 0xEB }, + { 0x1E, 0x0A }, + { 0x1F, 0xC7 }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * D3DDevice_UpdateOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 3911, 11) + + { 0x02, 0x08 }, + { 0x1F, 0x7C }, + { 0x6F, 0x8B }, + + { 0x80, 0x8B }, + { 0x81, 0x54 }, + { 0x82, 0x24 }, + { 0x83, 0x20 }, + { 0x84, 0x8B }, + { 0x85, 0x3F }, + { 0x86, 0x83 }, + { 0x87, 0xE1 }, +OOVPA_END; +#endif // ****************************************************************** // * D3D8_3925 // ****************************************************************** +// No longer supported XDK 3948 by HLEDB_v1 OOVPATable D3D8_3925[] = { REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), - REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetMaterial, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackMaterial, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), + REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetMaterial, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackMaterial, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTarget, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetStreamSource, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetViewport, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_Begin, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2f, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4f, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_End, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePalette, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_Present, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTarget, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetStreamSource, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetViewport, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_Begin, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2f, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4f, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_End, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePalette, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_Present, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3925, DISABLED), - REGISTER_OOVPA(D3DVertexBuffer_Lock, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_IsBusy, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DPalette_Lock, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH), - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3911, DISABLED), + REGISTER_OOVPA(D3DVertexBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_IsBusy, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DPalette_Lock, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetMaterial, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 3925, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH), + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetMaterial, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_PersistDisplay, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 3925, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), - REGISTER_OOVPA(D3DResource_GetType, 3925, DISABLED), // Probably not even necessary... - REGISTER_OOVPA(D3D_AllocContiguousMemory, 3925, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH - REGISTER_OOVPA(D3DDevice_SetRenderState_Deferred, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_PersistDisplay, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 3911, PATCH), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), + REGISTER_OOVPA(D3DResource_GetType, 3911, DISABLED), // Probably not even necessary... + REGISTER_OOVPA(D3D_AllocContiguousMemory, 3911, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH + REGISTER_OOVPA(D3DDevice_SetRenderState_Deferred, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTarget, 3948, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetModelView, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_FlushVertexCache, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_InsertCallback, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(XMETAL_StartPush, 3925, DISABLED), - REGISTER_OOVPA(D3D_SetFence, 3925, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_RunPushBuffer, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 3925, PATCH), - REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3925, DISABLED), - REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3D_SetCommonDebugRegisters, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateImageSurface, 3925, PATCH), - REGISTER_OOVPA(D3D_BlockOnTime, 3925, PATCH), - REGISTER_OOVPA(D3D_BlockOnResource, 3925, PATCH), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + // REGISTER_OOVPA(D3DDevice_SetRenderTarget, 3948, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetModelView, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_FlushVertexCache, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_InsertCallback, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(XMETAL_StartPush, 3911, DISABLED), + REGISTER_OOVPA(D3D_SetFence, 3911, XREF), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_RunPushBuffer, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3911, DISABLED), + REGISTER_OOVPA(D3D_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3D_SetCommonDebugRegisters, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateImageSurface, 3911, PATCH), + REGISTER_OOVPA(D3D_BlockOnTime, 3911, PATCH), + REGISTER_OOVPA(D3D_BlockOnResource, 3911, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 3911, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3DDevice_EndStateBlock, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackMaterial, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetModelView, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 3925, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetPixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_IsFencePending, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetTile, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackMaterial, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetModelView, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 3911, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetPixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_IsFencePending, 3911, PATCH), REGISTER_OOVPA(CMiniport_InitHardware, 3911, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 3911, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), @@ -4678,7 +4972,8 @@ OOVPATable D3D8_3925[] = { REGISTER_OOVPA(Direct3D_CheckDeviceMultiSampleType, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), - + REGISTER_OOVPA(D3DDevice_EnableOverlay, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3948.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3948.inl new file mode 100644 index 000000000..a384ddae7 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3948.inl @@ -0,0 +1,55 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.3948.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_SetRenderTarget +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 3948, 8) + + // D3DDevice_SetRenderTarget+0x00 : sub esp, 0x30 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x30 }, + + // D3DDevice_SetRenderTarget+0x32 : and ecx, 0x0F + { 0x32, 0x83 }, + { 0x33, 0xE1 }, + { 0x34, 0x0F }, + + // D3DDevice_SetRenderTarget+0x69 : push ebx + { 0x69, 0x53 }, + + // D3DDevice_SetRenderTarget+0xDA : push edx + { 0xDA, 0x52 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.h index d5f6ab188..bb742ccbe 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.h +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.h @@ -36,6 +36,7 @@ #include "OOVPA.h" +extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4034; extern LOOVPA<2+14> D3DDevice_SetRenderState_CullMode_4034; extern OOVPATable D3D8_4034[]; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl index 7942281b5..4c1f0ac3d 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl @@ -35,33 +35,34 @@ // ****************************************************************** // * CMiniport::InitHardware // ****************************************************************** -OOVPA_NO_XREF(CMiniport_InitHardware, 4034, 24) - { 0x00, 0x55 }, - { 0x01, 0x8B }, - { 0x02, 0xEC }, - { 0x03, 0x83 }, - { 0x04, 0xEC }, - { 0x05, 0x10 }, - { 0x06, 0x53 }, - { 0x07, 0x56 }, - { 0x08, 0x8B }, - { 0x09, 0xF1 }, - { 0x0A, 0x56 }, - { 0x0B, 0x68 }, +OOVPA_NO_XREF(CMiniport_InitHardware, 4034, 23) - { 0x10, 0x8D }, - { 0x11, 0x86 }, - { 0x12, 0x84 }, - { 0x13, 0x00 }, - { 0x14, 0x00 }, - { 0x15, 0x00 }, - { 0x16, 0x50 }, - { 0x17, 0xFF }, - { 0x18, 0x15 }, + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x10 }, + { 0x06, 0x53 }, + { 0x07, 0x56 }, + { 0x08, 0x8B }, + { 0x09, 0xF1 }, + { 0x0A, 0x56 }, + { 0x0B, 0x68 }, - { 0x1D, 0x80 }, - { 0x1E, 0xA6 }, - { 0x1F, 0xD8 }, + { 0x10, 0x8D }, + { 0x11, 0x86 }, + { 0x12, 0x84 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x50 }, + { 0x17, 0xFF }, + { 0x18, 0x15 }, + + { 0x1D, 0x80 }, + { 0x1E, 0xA6 }, + //{ 0x1F, 0xD8 }, // 4034 0xD8 vs 4242 0xDC OOVPA_END; // ****************************************************************** @@ -102,6 +103,7 @@ OOVPA_NO_XREF(CMiniport_CreateCtxDmaObject, 4034, 32) // Also for 4361, 4627, 53 { 0x1F, 0x3A }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetGammaRamp // ****************************************************************** @@ -114,7 +116,7 @@ OOVPA_NO_XREF(D3DDevice_GetGammaRamp, 4034, 7) { 0x22, 0x00 }, { 0x28, 0x04 }, OOVPA_END; - +#endif #if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetCreationParameters @@ -130,7 +132,7 @@ OOVPA_NO_XREF(D3DDevice_GetCreationParameters, 4034, 7) { 0x36, 0xC9 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -154,6 +156,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 4034, 10) { 0x1A, 0xC2 }, { 0x1B, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetViewport @@ -182,7 +185,10 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetTransform // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTransform, 4034, 10) +OOVPA_NO_XREF(D3DDevice_SetTransform, 4034, 11) + + // D3DDevice_SetTransform+0x00 : mov eax, [esp+arg_0] + { 0x00, 0x8B }, // D3DDevice_SetTransform+0x44 : fld dword ptr [edx+0x28] { 0x44, 0xD9 }, @@ -208,7 +214,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(D3DDevice_SetRenderState_CullMode, 4034, 2+14, - XREF_SETRENDERSTATE_CULLMODE, + XREF_D3DDevice_SetRenderState_CullMode, XRefTwo) XREF_ENTRY(0x03, XREF_D3DDEVICE), // Derived @@ -253,6 +259,7 @@ OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 4034, 7) { 0x28, 0x06 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_EndVisibilityTest // ****************************************************************** @@ -266,6 +273,7 @@ OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 4034, 7) { 0x46, 0x89 }, { 0x55, 0x5F }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CopyRects @@ -282,6 +290,7 @@ OOVPA_NO_XREF(D3DDevice_CopyRects, 4034, 8) { 0xFE, 0x14 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_DeletePatch // ****************************************************************** @@ -295,6 +304,7 @@ OOVPA_NO_XREF(D3DDevice_DeletePatch, 4034, 7) { 0x2A, 0x56 }, { 0x30, 0x5E }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_DrawIndexedVertices @@ -354,8 +364,9 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTextureState_BorderColor, 4034, 7) +OOVPA_NO_XREF(D3DDevice_SetTextureState_BorderColor, 4034, 8) + { 0x00, 0x56 }, { 0x07, 0x8B }, { 0x0E, 0xE8 }, { 0x16, 0x08 }, @@ -368,8 +379,9 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor, 4034, 7) +OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor, 4034, 8) + { 0x00, 0x56 }, { 0x07, 0x8B }, { 0x0E, 0xE8 }, { 0x16, 0x08 }, @@ -379,6 +391,7 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor, 4034, 7) { 0x36, 0xC2 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_DrawVertices // ****************************************************************** @@ -404,6 +417,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVertices, 4034, 12) { 0x9C, 0xC2 }, { 0x9D, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_LoadVertexShader @@ -444,6 +458,30 @@ OOVPA_NO_XREF(D3DDevice_DrawRectPatch, 4034, 8) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_SetIndices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetIndices, 4034, 14) + + { 0x00, 0x56 }, + { 0x02, 0x35 }, + + { 0x10, 0x81 }, + { 0x11, 0x07 }, + { 0x12, 0x00 }, + { 0x13, 0x00 }, + { 0x14, 0x08 }, + { 0x15, 0x00 }, + { 0x16, 0x8B }, + { 0x17, 0x47 }, + { 0x18, 0x04 }, + { 0x19, 0xA3 }, + + { 0x48, 0x50 }, + { 0x49, 0xE8 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -468,6 +506,7 @@ OOVPA_NO_XREF(D3DDevice_SetIndices, 4034, 11) { 0x78, 0x04 }, { 0x79, 0x05 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_EdgeAntiAlias @@ -486,8 +525,9 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetRenderState_FillMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode, 4034, 7) +OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode, 4034, 8) + { 0x00, 0x56 }, { 0x07, 0x8B }, { 0x13, 0x8B }, { 0x19, 0x8B }, @@ -497,6 +537,34 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode, 4034, 7) { 0x40, 0x5E }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetRenderState_BackFillMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 4034, 13) + + // D3DDevice_SetRenderState_BackFillMode+0x1C : jb +0x05 + { 0x1C, 0x72 }, + { 0x1D, 0x05 }, + + // D3DDevice_SetRenderState_BackFillMode+0x35 : mov dword ptr [eax], abs + { 0x35, 0xC7 }, + { 0x36, 0x00 }, + + // D3DDevice_SetRenderState_BackFillMode+0x41 : add eax, 0x0C; mov [esi], eax; mov [abs], edi + { 0x41, 0x83 }, + { 0x42, 0xC0 }, + { 0x43, 0x0C }, + { 0x44, 0x89 }, + { 0x45, 0x06 }, + { 0x46, 0x89 }, + { 0x47, 0x3D }, + + // D3DDevice_SetRenderState_BackFillMode+0x4E : retn 0x04 + { 0x4E, 0xC2 }, + { 0x4F, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_BackFillMode // ****************************************************************** @@ -511,6 +579,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 4034, 8) { 0x40, 0x08 }, { 0x4C, 0x5F }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_FogColor @@ -529,8 +598,9 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetRenderState_FrontFace // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetRenderState_FrontFace, 4034, 6) +OOVPA_NO_XREF(D3DDevice_SetRenderState_FrontFace, 4034, 7) + { 0x00, 0x56 }, { 0x07, 0x8B }, { 0x0E, 0xE8 }, { 0x16, 0x08 }, @@ -707,6 +777,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_VertexBlend, 4034, 7) { 0x34, 0x08 }, { 0x3D, 0x5E }, OOVPA_END; + #if 0 // Moved to 3911 // ****************************************************************** // * D3D_CheckDeviceFormat @@ -722,10 +793,29 @@ OOVPA_NO_XREF(D3D_CheckDeviceFormat, 4034, 7) { 0x6E, 0x3C }, OOVPA_END; #endif + // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** -/*OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) +OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) + + { 0x10, 0x0D }, + { 0x48, 0x08 }, + { 0x49, 0x02 }, + { 0x4A, 0x00 }, + { 0x4B, 0x00 }, + { 0x4C, 0x00 }, + { 0x4D, 0xA1 }, + { 0x58, 0x53 }, + { 0x63, 0x80 }, + { 0xAE, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version +// ****************************************************************** +// * Get2DSurfaceDesc +// ****************************************************************** +OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) // Get2DSurfaceDesc+0x2B : movzx edx, byte ptr [edi+0x0D] { 0x2B, 0x0F }, @@ -742,9 +832,8 @@ OOVPA_END; // Get2DSurfaceDesc+0xAE : retn 0x0C { 0xAE, 0xC2 }, { 0xAF, 0x0C }, - } OOVPA_END; -*/ +#endif // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable @@ -804,6 +893,31 @@ OOVPA_NO_XREF(D3DDevice_LightEnable, 4034, 13) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_SetRenderState_TextureFactor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 4034, 15) + + { 0x00, 0x56 }, + { 0x07, 0x8B }, + { 0x08, 0x86 }, + { 0x2F, 0x90 }, + + { 0x40, 0x5E }, + { 0x41, 0xC2 }, + { 0x42, 0x04 }, + { 0x43, 0x00 }, + { 0x44, 0x8B }, + { 0x45, 0x44 }, + { 0x46, 0x24 }, + { 0x47, 0x08 }, + { 0x48, 0xA3 }, + + { 0x4E, 0xC2 }, + { 0x4F, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -826,7 +940,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 4034, 9) { 0x4E, 0xC2 }, { 0x4F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -848,7 +963,34 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_Clear +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Clear, 4034, 16) + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + + { 0x23, 0x33 }, + { 0x24, 0xF6 }, + { 0x25, 0xF6 }, + { 0x26, 0xC1 }, + { 0x27, 0x01 }, + { 0x28, 0x89 }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0x89 }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + + { 0x54, 0x05 }, + { 0x81, 0xB6 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Clear // ****************************************************************** @@ -868,7 +1010,8 @@ OOVPA_NO_XREF(D3DDevice_Clear, 4034, 9) { 0x0399, 0xC2 }, { 0x039A, 0x18 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -894,6 +1037,7 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 4034, 12) { 0xFE, 0x4B }, { 0xFF, 0x68 }, OOVPA_END; +#endif // ****************************************************************** // * D3DVertexBuffer_Lock @@ -946,6 +1090,27 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 4034, 10) // TODO : Alias 3911 instead ? { 0xCA, 0x4D }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetPalette +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPalette, 4034, 12) + + { 0x00, 0x53 }, + { 0x08, 0x57 }, + { 0x1B, 0x89 }, + { 0x1C, 0x48 }, + + { 0x4D, 0x39 }, + { 0x4E, 0x55 }, + { 0x4F, 0x8B }, + { 0x50, 0x2B }, + { 0x51, 0x81 }, + { 0x52, 0xC5 }, + { 0x53, 0x00 }, + { 0x54, 0x00 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -969,6 +1134,7 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 4034, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTextureState_TexCoordIndex @@ -978,7 +1144,7 @@ OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4034, 1+10, XRefNoSaveIndex, XRefOne) - XREF_ENTRY(0x11, XREF_D3DTSS_TEXCOORDINDEX), // Derived - TODO : Verify 0x11 (could be 0x18 or 0x19) + XREF_ENTRY(0x18, XREF_D3DTSS_TEXCOORDINDEX), // Derived // D3DDevice_SetTextureState_TexCoordIndex+0x13 : shl eax, 0x07 { 0x13, 0xC1 }, @@ -1053,6 +1219,36 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShader, 4034, 14) { 0xB4, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_Swap +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Swap, 4034, 20) // Up to 4432 + + { 0x00, 0x53 }, + + { 0x0E, 0x75 }, + { 0x0F, 0x05 }, + { 0x10, 0xBB }, + { 0x11, 0x05 }, + { 0x12, 0x00 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x8B }, + { 0x16, 0x46 }, + { 0x17, 0x08 }, + { 0x18, 0xF6 }, + { 0x19, 0xC4 }, + { 0x1A, 0x40 }, + { 0x1B, 0x74 }, + { 0x1C, 0x4E }, + { 0x1D, 0xF6 }, + { 0x1E, 0xC3 }, + { 0x1F, 0x03 }, + + { 0x29, 0x8B }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -1077,6 +1273,7 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4034, 11) { 0xB0, 0xC2 }, { 0xB1, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3D_KickOffAndWaitForIdle @@ -1105,6 +1302,44 @@ OOVPA_NO_XREF(D3D_KickOffAndWaitForIdle, 4034, 9) { 0x10, 0xC3 }, OOVPA_END; +// ****************************************************************** +// * D3D::CreateStandAloneSurface +// ****************************************************************** +OOVPA_XREF(D3D_CreateStandAloneSurface, 4034, 12, + + XREF_D3D_CreateStandAloneSurface, + XRefZero) + + { 0x01, 0x54 }, + + { 0x17, 0x14 }, + { 0x18, 0x6A }, + { 0x19, 0x00 }, + { 0x1A, 0x6A }, + { 0x1B, 0x00 }, + { 0x1C, 0x6A }, + { 0x1D, 0x00 }, + { 0x1E, 0x52 }, + { 0x1F, 0x6A }, + + { 0x36, 0xF0 }, + { 0x4B, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateImageSurface +// ****************************************************************** +OOVPA_XREF(D3DDevice_CreateImageSurface, 4034, 2, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_D3D_CreateStandAloneSurface), + + { 0x00, 0xE9 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_CreateImageSurface // ****************************************************************** @@ -1127,6 +1362,7 @@ OOVPA_NO_XREF(D3DDevice_CreateImageSurface, 4034, 9) { 0x61, 0xC2 }, { 0x62, 0x10 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetBackBuffer @@ -1181,7 +1417,7 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetTransform // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetTransform, 4039, 12) +OOVPA_NO_XREF(D3DDevice_GetTransform, 4034, 12) // D3DDevice_GetTransform+0x0A : shl ecx, 0x06 { 0x0A, 0xC1 }, @@ -1209,33 +1445,50 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SelectVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 4039, 9) +OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 4034, 12) - { 0x04, 0x85 }, - { 0x05, 0xC0 }, - { 0x06, 0x56 }, - { 0x07, 0x8B }, - { 0x3B, 0x35 }, + // D3DDevice_SelectVertexShader+0x00 : mov eax, [esp+4] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SelectVertexShader+0x3B : mov dword ptr [eax], 0x00081E94 + { 0x3B, 0xC7 }, { 0x3C, 0x00 }, { 0x3D, 0x94 }, { 0x3E, 0x1E }, { 0x3F, 0x08 }, + { 0x40, 0x00 }, + + // D3DDevice_SelectVertexShader+0x55 : mov [esi], eax + { 0x55, 0x89 }, + { 0x56, 0x06 }, OOVPA_END; // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 4039, 9) +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 4034, 11) + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 { 0x05, 0x6A }, { 0x06, 0x00 }, { 0x07, 0x6A }, { 0x08, 0x00 }, { 0x09, 0x6A }, { 0x0A, 0x01 }, - { 0x10, 0x00 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x25B0 { 0x17, 0x05 }, - { 0x1E, 0x15 }, + { 0x18, 0xB0 }, + { 0x19, 0x25 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, OOVPA_END; // ****************************************************************** @@ -1257,14 +1510,18 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetPixelShader, 4039, 9) +OOVPA_NO_XREF(D3DDevice_SetPixelShader, 4034, 12) + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, { 0x04, 0x85 }, { 0x05, 0xC0 }, { 0x06, 0x53 }, { 0x07, 0x8B }, { 0x08, 0x1D }, - { 0x09, 0xA0 }, + //{ 0x09, 0xA0 }, { 0x18, 0x00 }, { 0x1D, 0x0D }, { 0x3F, 0xA3 }, @@ -1295,7 +1552,7 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 4039, 9) +OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 4034, 9) { 0x08, 0x1D }, { 0x1A, 0x81 }, @@ -1422,6 +1679,32 @@ OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 4039, 13) { 0x25, 0x0F }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_End +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_End, 4039, 16) // Up to 5233 + + { 0x01, 0x8B }, + { 0x07, 0x8B }, + { 0x0E, 0xE8 }, + { 0x16, 0x17 }, + { 0x1E, 0x00 }, + + { 0x22, 0x08 }, + { 0x23, 0x89 }, + { 0x24, 0x06 }, + { 0x25, 0x8B }, + { 0x26, 0x46 }, + { 0x27, 0x08 }, + { 0x28, 0xF6 }, + { 0x29, 0xC4 }, + + { 0x2E, 0x01 }, + { 0x36, 0x08 }, + { 0x3C, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_End // ****************************************************************** @@ -1434,7 +1717,7 @@ OOVPA_NO_XREF(D3DDevice_End, 4039, 7) { 0x2E, 0x01 }, { 0x36, 0x08 }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_SetFlickerFilter @@ -1545,6 +1828,7 @@ OOVPA_NO_XREF(D3DResource_IsBusy, 4039, 11) { 0x77, 0x09 }, OOVPA_END; +#if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_SetBackBufferScale // ****************************************************************** @@ -1569,6 +1853,7 @@ OOVPA_NO_XREF(D3DDevice_SetBackBufferScale, 4039, 16) { 0x2D, 0xE0 }, { 0x2E, 0x0F }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMode @@ -1622,6 +1907,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, 12) { 0x2B, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_IsBusy // ****************************************************************** @@ -1635,6 +1921,7 @@ OOVPA_NO_XREF(D3DDevice_IsBusy, 4034, 7) { 0x28, 0x00 }, { 0x2F, 0xD2 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetRenderTarget @@ -1661,6 +1948,7 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 4039, 11) { 0x1E, 0x04 }, OOVPA_END; +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus // ****************************************************************** @@ -1680,6 +1968,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 4039, 12) { 0x12, 0xF7 }, { 0x1C, 0x74 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_PersistDisplay @@ -1849,6 +2138,40 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 4039, 15) { 0x5C, 0x8D }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetDisplayMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4039, 24) + + { 0x00, 0x56 }, + + { 0x0B, 0x00 }, + { 0x0C, 0x00 }, + { 0x0D, 0x8B }, + { 0x0E, 0x41 }, + { 0x0F, 0x10 }, + { 0x10, 0x85 }, + { 0x11, 0xC0 }, + { 0x12, 0x57 }, + { 0x13, 0x75 }, + { 0x14, 0x12 }, + { 0x15, 0x8B }, + { 0x16, 0x49 }, + { 0x17, 0x0C }, + { 0x18, 0xC1 }, + { 0x19, 0xE9 }, + { 0x1A, 0x14 }, + { 0x1B, 0x83 }, + { 0x1C, 0xE1 }, + { 0x1D, 0x0F }, + { 0x1E, 0xB8 }, + { 0x1F, 0x01 }, + + { 0x4C, 0xD3 }, + { 0x4D, 0xE0 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_GetDisplayMode // ****************************************************************** @@ -1877,11 +2200,12 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4039, 13) { 0x92, 0xC2 }, { 0x93, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTextureState_BumpEnv // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTextureState_BumpEnv, 4039, 12) +OOVPA_NO_XREF(D3DDevice_SetTextureState_BumpEnv, 4034, 12) // D3DDevice_SetTextureState_BumpEnv+0x18 : jnz +0x03 { 0x18, 0x75 }, @@ -1907,7 +2231,10 @@ OOVPA_END; // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_KickOff, 4039, 16) +OOVPA_XREF(D3DDevice_KickOff, 4034, 15, + + XREF_D3D_CDevice_KickOff, + XRefZero) { 0x00, 0x51 }, { 0x0E, 0x04 }, @@ -1927,6 +2254,7 @@ OOVPA_NO_XREF(D3DDevice_KickOff, 4039, 16) { 0x87, 0xB8 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetScissors // ****************************************************************** @@ -1949,7 +2277,8 @@ OOVPA_NO_XREF(D3DDevice_SetScissors, 4039, 10) { 0x1B, 0x8B }, { 0x1C, 0x95 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetPixelShaderConstant // ****************************************************************** @@ -1973,14 +2302,14 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 4039, 10) { 0xC8, 0x1C }, { 0xC9, 0x24 }, OOVPA_END; - +#endif // ****************************************************************** // * D3D::SetFence // ****************************************************************** -OOVPA_XREF(D3D_SetFence, 4039, 16, +OOVPA_XREF(D3D_SetFence, 4034, 16, - XREF_D3D_SETFENCE, + XREF_D3D_SetFence, XRefZero) { 0x02, 0x35 }, @@ -2019,6 +2348,7 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 4039, 8) { 0xFE, 0x24 }, OOVPA_END; +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_Reset // ****************************************************************** @@ -2042,13 +2372,14 @@ OOVPA_NO_XREF(D3DDevice_Reset, 4039, 10) { 0x37, 0x7D }, { 0x38, 0x10 }, OOVPA_END; +#endif // ****************************************************************** // * D3D::BlockOnTime // ****************************************************************** -OOVPA_XREF(D3D_BlockOnTime, 4039, 10, +OOVPA_XREF(D3D_BlockOnTime, 4034, 10, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XRefZero) { 0x07, 0x3D }, @@ -2062,9 +2393,10 @@ OOVPA_XREF(D3D_BlockOnTime, 4039, 10, { 0x1E, 0x0F }, { 0x1F, 0x83 }, - { 0x41, 0x3D }, + { 0x2F, 0x53 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_BlockOnFence // ****************************************************************** @@ -2073,7 +2405,7 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 4039, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x08, XREF_D3D_BLOCKONTIME ), + XREF_ENTRY( 0x08, XREF_D3D_BlockOnTime ), { 0x00, 0x8B }, { 0x02, 0x24 }, @@ -2083,11 +2415,12 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 4039, 8, { 0x0D, 0x04 }, { 0x0E, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTile // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTile, 4039, 12) +OOVPA_NO_XREF(D3DDevice_SetTile, 4034, 12) { 0x05, 0x1D }, @@ -2108,35 +2441,73 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4039, 9) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4039, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, - { 0x07, 0xFC }, + { 0x07, 0xFC }, // D3DDevice_GetVertexShader 0xFC vs D3DDevice_GetPixelShader 0xE8 { 0x08, 0x04 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4039, 9) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4039, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, - { 0x07, 0xE8 }, + { 0x07, 0xE8 }, // D3DDevice_GetVertexShader 0xFC vs D3DDevice_GetPixelShader 0xE8 { 0x08, 0x04 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetVertexShaderConstant +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 4039, 12) + + { 0x00, 0x8B }, + { 0x0C, 0x24 }, + + { 0x15, 0x57 }, + { 0x16, 0x8B }, + { 0x17, 0x7C }, + { 0x18, 0x24 }, + { 0x19, 0x10 }, + { 0x1A, 0x8D }, + { 0x1B, 0xB4 }, + { 0x1C, 0x10 }, + + { 0x28, 0x8B }, + { 0x2F, 0x5F }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 4039 version // ****************************************************************** // * D3DDevice_GetVertexShaderConstant // ****************************************************************** @@ -2150,6 +2521,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 4039, 7) { 0x28, 0x8B }, { 0x2F, 0x5F }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_IsFencePending @@ -2171,21 +2543,26 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 4039, 7) +OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 4034, 11) // Up to 5344 { 0x06, 0x56 }, { 0x07, 0xD8 }, { 0x08, 0x44 }, { 0x09, 0x24 }, { 0x0A, 0x08 }, + { 0x0B, 0x8B }, + { 0x0C, 0x35 }, + { 0x2E, 0x8B }, { 0x2F, 0x06 }, + { 0x46, 0xC2 }, + { 0x47, 0x08 }, OOVPA_END; // ****************************************************************** // * D3D::LazySetPointParams // ****************************************************************** -OOVPA_NO_XREF(D3D_LazySetPointParams, 4039, 7) +OOVPA_NO_XREF(D3D_LazySetPointParams, 4034, 7) { 0x00, 0x83 }, { 0x01, 0xEC }, { 0x02, 0x14 }, @@ -2195,6 +2572,30 @@ OOVPA_NO_XREF(D3D_LazySetPointParams, 4039, 7) { 0x75, 0x41 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 4039, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x05B4] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0xB4 }, + { 0x08, 0x05 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x05 : mov [eax+0x05B4], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0xB4 }, + { 0x0F, 0x05 }, +OOVPA_END; + // ****************************************************************** // * D3D8_4034 // ****************************************************************** @@ -2205,19 +2606,19 @@ OOVPATable D3D8_4034[] = { REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), // ****************************************************************** // Tested on version 4039, The Simpsons - Road Rage (PAL) 4039 etc // TODO: This needs to be verified on 4034 // ****************************************************************** - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShader, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShader, 4034, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), @@ -2225,30 +2626,29 @@ OOVPATable D3D8_4034[] = { REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 4039, PATCH), REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 4039, PATCH), - REGISTER_OOVPA(D3D_SetFence, 4039, XREF), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 4034, PATCH), + REGISTER_OOVPA(D3D_SetFence, 4034, XREF), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), - REGISTER_OOVPA(D3D_BlockOnTime, 4039, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3D_BlockOnTime, 4034, XREF), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTile, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 4039, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4039, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), // ****************************************************************** REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), @@ -2261,50 +2661,50 @@ OOVPATable D3D8_4034[] = { REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4034, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_CreatePalette, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3925, DISABLED), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_CreatePalette, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3911, DISABLED), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), REGISTER_OOVPA(D3DResource_GetType, 4034, PATCH), - REGISTER_OOVPA(D3D_AllocContiguousMemory, 3925, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH - REGISTER_OOVPA(D3DPalette_Lock, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH), - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3D_AllocContiguousMemory, 3911, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH + REGISTER_OOVPA(D3DPalette_Lock, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 4034, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH), + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 4034, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CopyRects, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_DeletePatch, 4034, DISABLED), // (TODO) + REGISTER_OOVPA(D3DDevice_DeletePatch, 3911, DISABLED), // (TODO) REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawRectPatch, 3911, PATCH), // TODO: Unused? REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), @@ -2324,16 +2724,16 @@ OOVPATable D3D8_4034[] = { REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), - REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3925, DISABLED), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3911, DISABLED), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DVertexBuffer_Lock, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTexture, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), @@ -2345,58 +2745,59 @@ OOVPATable D3D8_4034[] = { REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetBackBuffer, 4034, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), +// REGISTER_OOVPA(D3DDevice_AddRef, 4039, PATCH), // ****************************************************************** // Provisional registration functions in XDK 4034 // TODO: Need test cases // ****************************************************************** +// REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), REGISTER_OOVPA(D3DDevice_DrawTriPatch, 3911, DISABLED), - REGISTER_OOVPA(D3DDevice_Present, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_Present, 3911, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), // REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), // REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_InsertCallback, 4434, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 3925, PATCH), +// REGISTER_OOVPA(D3DDevice_InsertCallback, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), // REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4134, PATCH), +// REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), +// REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), // REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4134, PATCH), +// REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), // REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), -// REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 4134, PATCH), -// REGISTER_OOVPA(MakeRequestedSpace, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), +// REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), +// REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), +// REGISTER_OOVPA(D3D_MakeRequestedSpace, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3911, PATCH), // REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_SetModelView, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_AddRef, 4361, PATCH), // REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), // REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), -// REGISTER_OOVPA(D3DDevice_GetTile, 4134, PATCH), +// REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), // REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), // ****************************************************************** }; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.h index 3727400ee..56e5a313b 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.h +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.h @@ -36,7 +36,9 @@ #include "OOVPA.h" +#if 0 // Moved to 4034 extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4134; +#endif extern OOVPATable D3D8_4134[]; extern uint32 D3D8_4134_SIZE; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl index 0fada51b4..2a4282dab 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // Moved to 4034 // ****************************************************************** // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** @@ -60,7 +61,8 @@ OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4134, 1+10, { 0xB5, 0xE2 }, { 0xB6, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetTransform // ****************************************************************** @@ -87,7 +89,8 @@ OOVPA_NO_XREF(D3DDevice_SetTransform, 4134, 11) { 0x92, 0xEB }, { 0x93, 0x10 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_CheckDeviceFormat // ****************************************************************** @@ -109,7 +112,8 @@ OOVPA_NO_XREF(D3D_CheckDeviceFormat, 4134, 8) { 0x61, 0xC2 }, { 0x62, 0x18 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_GetAdapterModeCount // ****************************************************************** @@ -135,7 +139,8 @@ OOVPA_NO_XREF(D3D_GetAdapterModeCount, 4134, 12) { 0x9A, 0xC4 }, { 0x9B, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_EnumAdapterModes // ****************************************************************** @@ -157,7 +162,8 @@ OOVPA_NO_XREF(D3D_EnumAdapterModes, 4134, 10) { 0xF7, 0x10 }, { 0xF8, 0x1E }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_FogColor // ****************************************************************** @@ -181,7 +187,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_FogColor, 4134, 10) { 0x40, 0x89 }, { 0x41, 0x06 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -206,7 +213,8 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4134, 11) { 0xAE, 0xC2 }, { 0xAF, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Clear // ****************************************************************** @@ -226,7 +234,7 @@ OOVPA_NO_XREF(D3DDevice_Clear, 4134, 9) { 0x0399, 0xC2 }, { 0x039A, 0x18 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_Begin @@ -290,6 +298,7 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer, 4134, 12) { 0x20, 0x7C }, { 0x21, 0x20 }, OOVPA_END; + #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface @@ -338,6 +347,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 4134, 9) { 0x7B, 0x14 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SelectVertexShader // ****************************************************************** @@ -360,7 +370,8 @@ OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 4134, 11) { 0x55, 0x89 }, { 0x56, 0x06 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_CopyRects // ****************************************************************** @@ -382,8 +393,8 @@ OOVPA_NO_XREF(D3DDevice_CopyRects, 4134, 10) { 0xDD, 0x75 }, { 0xDE, 0x22 }, OOVPA_END; - - +#endif +#if 0 // Moved to 4034 // ****************************************************************** // * D3D::CreateStandAloneSurface // ****************************************************************** @@ -392,7 +403,8 @@ OOVPA_XREF(D3D_CreateStandAloneSurface, 4134, 12, XREF_D3D_CreateStandAloneSurface, XRefZero) - { 0x02, 0x24 }, + { 0x01, 0x54 }, + { 0x17, 0x14 }, { 0x18, 0x6A }, { 0x19, 0x00 }, @@ -406,7 +418,8 @@ OOVPA_XREF(D3D_CreateStandAloneSurface, 4134, 12, { 0x36, 0xF0 }, { 0x4B, 0x15 }, OOVPA_END; - +#endif +#if 0 // Moved to 4034 // ****************************************************************** // * D3DDevice_CreateImageSurface // ****************************************************************** @@ -419,7 +432,7 @@ OOVPA_XREF(D3DDevice_CreateImageSurface, 4134, 2, { 0x00, 0xE9 }, OOVPA_END; - +#endif #if 0 // Probably ?Lock3DSurface@PixelJar@D3D@@YGXPAUD3DPixelContainer@@IPAU_D3DLOCKED_BOX@@PBU_D3DBOX@@K@Z // ****************************************************************** // * D3DDevice_CreateImageSurface @@ -456,6 +469,7 @@ OOVPA_NO_XREF(D3DDevice_CreateImageSurface, 4134, 28) OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetPixelShader // ****************************************************************** @@ -480,6 +494,7 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShader, 4134, 10) { 0xE4, 0xA5 }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_SetTextureState_BumpEnv @@ -507,6 +522,7 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_BumpEnv, 4134, 12) { 0x52, 0x05 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -531,7 +547,8 @@ OOVPA_NO_XREF(D3DDevice_SetIndices, 4134, 11) { 0x78, 0x8C }, { 0x79, 0x03 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_VertexBlend // ****************************************************************** @@ -556,7 +573,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_VertexBlend, 4134, 11) { 0x3E, 0xC2 }, { 0x3F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -579,7 +597,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 4134, 9) { 0x4E, 0xC2 }, { 0x4F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_EdgeAntiAlias // ****************************************************************** @@ -603,6 +622,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, 10) { 0x2F, 0xC2 }, { 0x30, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable @@ -631,6 +651,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 4134, 13) { 0x99, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_StencilEnable // ****************************************************************** @@ -655,7 +676,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilEnable, 4134, 11) { 0x81, 0xC2 }, { 0x82, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias // ****************************************************************** @@ -685,6 +707,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4134, 12) { 0x4F, 0xC2 }, { 0x50, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVertexShader @@ -714,6 +737,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShader, 4134, 14) { 0xB4, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -735,7 +759,8 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 4134, 10) { 0xC2, 0xFE }, { 0xC3, 0x80 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -761,6 +786,7 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 4134, 12) { 0xFE, 0x4B }, { 0xFF, 0x68 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetMaterial @@ -882,7 +908,7 @@ OOVPA_NO_XREF(D3DDevice_LightEnable, 4134, 13) { 0xE2, 0x08 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_NormalizeNormals // ****************************************************************** @@ -902,7 +928,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_NormalizeNormals, 4134, 8) { 0x36, 0xC2 }, { 0x37, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -924,6 +951,7 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 4134, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_Reset @@ -949,6 +977,7 @@ OOVPA_NO_XREF(D3DDevice_Reset, 4134, 10) { 0x38, 0x10 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_TwoSidedLighting // ****************************************************************** @@ -975,7 +1004,9 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TwoSidedLighting, 4134, 13) { 0x60, 0xC2 }, { 0x61, 0x04 }, OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_BackFillMode // ****************************************************************** @@ -989,7 +1020,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 4134, 13) { 0x35, 0xC7 }, { 0x36, 0x00 }, - // D3DDevice_SetRenderState_BackFillMode+0x3B : add eax, 0x0C; mov [esi], eax; mov [abs], edi + // D3DDevice_SetRenderState_BackFillMode+0x41 : add eax, 0x0C; mov [esi], eax; mov [abs], edi { 0x41, 0x83 }, { 0x42, 0xC0 }, { 0x43, 0x0C }, @@ -1002,7 +1033,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 4134, 13) { 0x4E, 0xC2 }, { 0x4F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetTextureState_ColorKeyColor // ****************************************************************** @@ -1026,7 +1058,8 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor, 4134, 12) { 0x36, 0xC2 }, { 0x37, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_FrontFace // ****************************************************************** @@ -1036,7 +1069,7 @@ OOVPA_XREF(D3DDevice_SetRenderState_FrontFace, 4134, 11, XRefOne) // D3DDevice_SetRenderState_FrontFace+0x36 : jmp D3DDevice_SetRenderState_CullMode - XREF_ENTRY( 0x36, XREF_SETRENDERSTATE_CULLMODE), + XREF_ENTRY( 0x36, XREF_D3DDevice_SetRenderState_CullMode), // D3DDevice_SetRenderState_FrontFace+0x09 : cmp eax, [esi+4] { 0x09, 0x3B }, @@ -1054,7 +1087,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_FrontFace, 4134, 11, { 0x21, 0xC0 }, { 0x22, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_LogicOp // ****************************************************************** @@ -1075,7 +1109,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_LogicOp, 4134, 9) { 0x4F, 0xC2 }, { 0x50, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_StencilFail // ****************************************************************** @@ -1101,6 +1136,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilFail, 4134, 12) { 0x6A, 0xC2 }, { 0x6B, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 4034 // ****************************************************************** // * D3DDevice_SetRenderState_OcclusionCullEnable @@ -1161,6 +1197,7 @@ OOVPA_XREF(D3DDevice_SetRenderState_StencilCullEnable, 4134, 13, { 0x60, 0x04 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_FillMode // ****************************************************************** @@ -1185,7 +1222,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode, 4134, 11) { 0x36, 0xC0 }, { 0x37, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -1206,7 +1244,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4134, 9) { 0x7C, 0xC2 }, { 0x7D, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMask // ****************************************************************** @@ -1233,6 +1272,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMask, 4134, 13) { 0x4F, 0xC2 }, { 0x50, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMode @@ -1286,6 +1326,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4134, 12) { 0x2B, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_ShadowFunc // ****************************************************************** @@ -1314,7 +1355,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ShadowFunc, 4134, 13) { 0x27, 0xC0 }, { 0x28, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_YuvEnable // ****************************************************************** @@ -1343,7 +1385,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_YuvEnable, 4134, 13) { 0x28, 0xC2 }, { 0x29, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_DrawIndexedVerticesUP // ****************************************************************** @@ -1365,6 +1408,7 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 4134, 10) { 0x6A, 0xB8 }, { 0x6B, 0x10 }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_SetPixelShaderConstant @@ -1425,21 +1469,21 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(D3D_SetFence, 4134, 12, - XREF_D3D_SETFENCE, + XREF_D3D_SetFence, XRefZero) - { 0x0D, 0x72 }, - { 0x0E, 0x0E }, - { 0x31, 0xBA }, - { 0x32, 0x90 }, - { 0x33, 0x1D }, - { 0x34, 0x04 }, - { 0x35, 0x00 }, - { 0x45, 0x83 }, - { 0x46, 0xE1 }, - { 0x47, 0x3F }, + { 0x0D, 0x72 }, + { 0x0E, 0x0E }, + { 0x31, 0xBA }, + { 0x32, 0x90 }, + { 0x33, 0x1D }, + { 0x34, 0x04 }, + { 0x35, 0x00 }, + { 0x45, 0x83 }, + { 0x46, 0xE1 }, + { 0x47, 0x3F }, { 0xAA, 0xC2 }, - { 0xAB, 0x04 }, + { 0xAB, 0x04 }, OOVPA_END; #if 0 // No longer used, replaced by generic 4034 version @@ -1474,6 +1518,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_PSTextureModes, 4134, 10) { 0x1F, 0xC2 }, OOVPA_END; #endif + // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -1555,6 +1600,7 @@ OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4134, 12) { 0x11, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -1579,7 +1625,8 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 4134, 11) { 0x23, 0xC2 }, { 0x24, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetTile // ****************************************************************** @@ -1602,6 +1649,7 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 4134, 11) { 0x40, 0x1C }, { 0x41, 0x21 }, OOVPA_END; +#endif #if 0 // Moved to 4034 // ****************************************************************** // * D3DDevice_IsBusy @@ -1617,6 +1665,7 @@ OOVPA_NO_XREF(D3DDevice_IsBusy, 4134, 7) { 0x2F, 0xD2 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** @@ -1639,7 +1688,8 @@ OOVPA_NO_XREF(D3DDevice_KickOff, 4134, 12) // D3D::CDevice::KickOff+0xE3 : retn { 0xE3, 0xC3 } OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_BlockOnFence // ****************************************************************** @@ -1653,6 +1703,7 @@ OOVPA_NO_XREF(D3DDevice_BlockOnFence, 4134, 7) { 0x0D, 0x04 }, { 0x0E, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetRenderTarget @@ -1735,6 +1786,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4134, 13) { 0x93, 0x04 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetShaderConstantMode // ****************************************************************** @@ -1748,6 +1800,7 @@ OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 4134, 7) { 0xB8, 0x00 }, { 0xD7, 0xC7 }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3D::LazySetPointParams @@ -1844,6 +1897,7 @@ OOVPA_NO_XREF(D3DDevice_SetFlickerFilter, 4134, 11) { 0x40, 0x04 }, OOVPA_END; #endif + // ****************************************************************** // * D3DDevice_SetSoftDisplayFilter // ****************************************************************** @@ -1875,6 +1929,7 @@ OOVPA_NO_XREF(D3DDevice_SetSoftDisplayFilter, 4134, 13) OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -1898,6 +1953,7 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 4134, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_EnableOverlay @@ -1924,6 +1980,27 @@ OOVPA_NO_XREF(D3DDevice_EnableOverlay, 4134, 11) { 0x61, 0x04 }, OOVPA_END; +#if 0 // Moved to 3911 +// ****************************************************************** +// * D3DDevice_UpdateOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4134, 11) + + { 0x02, 0x08 }, + { 0x1F, 0x7C }, + { 0x6F, 0x8B }, + + { 0x80, 0x8B }, + { 0x81, 0x54 }, + { 0x82, 0x24 }, + { 0x83, 0x20 }, + { 0x84, 0x8B }, + { 0x85, 0x3F }, + { 0x86, 0x83 }, + { 0x87, 0xE1 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -1946,6 +2023,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4134, 11) { 0xA4, 0x20 }, { 0xA5, 0x89 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetModelView @@ -1961,11 +2039,10 @@ OOVPA_NO_XREF(D3DDevice_GetModelView, 4134, 7) { 0x28, 0xE0 }, OOVPA_END; - // ****************************************************************** -// * MakeRequestedSpace +// * D3D_MakeRequestedSpace // ****************************************************************** -OOVPA_XREF(MakeRequestedSpace, 4134, 28, // Also for 4361, 4627 +OOVPA_XREF(D3D_MakeRequestedSpace, 4134, 28, // Also for 4361, 4627 XREF_D3D_MakeRequestedSpace, XRefZero) @@ -2000,6 +2077,7 @@ OOVPA_XREF(MakeRequestedSpace, 4134, 28, // Also for 4361, 4627 { 0x1E, 0x54 }, { 0x1F, 0x03 }, OOVPA_END; + #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_RunPushBuffer @@ -2017,6 +2095,25 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 4134, 8) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_BeginPush +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BeginPush, 4134, 10) + + { 0x00, 0x56 }, + { 0x07, 0x6A }, + + { 0x10, 0x8B }, + { 0x11, 0x44 }, + { 0x12, 0x24 }, + { 0x13, 0x08 }, + { 0x14, 0x40 }, + { 0x15, 0x50 }, + { 0x16, 0x56 }, + { 0x17, 0xE8 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_BeginPush // ****************************************************************** @@ -2030,7 +2127,32 @@ OOVPA_NO_XREF(D3DDevice_BeginPush, 4134, 7) { 0x1C, 0x8B }, { 0x21, 0x01 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_EndPush +// ****************************************************************** +OOVPA_XREF(D3DDevice_EndPush, 4134, 1+11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDEVICE ), + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + { 0x0A, 0x89 }, + { 0x0B, 0x01 }, + { 0x0C, 0xC2 }, + { 0x0D, 0x04 }, + { 0x0E, 0x00 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_EndPush // ****************************************************************** @@ -2045,6 +2167,7 @@ OOVPA_NO_XREF(D3DDevice_EndPush, 4134, 8) { 0x0D, 0x04 }, { 0x0E, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BeginPushBuffer @@ -2064,6 +2187,30 @@ OOVPA_NO_XREF(D3DDevice_BeginPushBuffer, 4134, 10) { 0x57, 0x83 }, OOVPA_END; +#if 0 // Moved to 3911 +// ****************************************************************** +// * D3DDevice_EndPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 4134, 13) // Up to 5849 + + { 0x01, 0x56 }, + { 0x11, 0x8D }, + + { 0x2E, 0x8D }, + { 0x2F, 0x4C }, + { 0x30, 0x11 }, + { 0x31, 0x04 }, + { 0x32, 0x89 }, + { 0x33, 0x48 }, + { 0x34, 0x0C }, + { 0x35, 0x8B }, + { 0x36, 0x86 }, + + { 0x6D, 0x8B }, + { 0x6E, 0x86 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_EndPushBuffer // ****************************************************************** @@ -2077,6 +2224,7 @@ OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 4134, 7) { 0x70, 0x03 }, { 0x83, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetModelView @@ -2180,7 +2328,7 @@ OOVPA_NO_XREF(D3DDevice_InsertCallback, 4134, 13) { 0x28, 0x08 }, OOVPA_END; - +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_LoadVertexShaderProgram // ****************************************************************** @@ -2204,24 +2352,33 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 4134, 16) { 0x16, 0xF6 }, { 0x17, 0xC1 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4134, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4134, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x18 }, { 0x08, 0x20 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, { 0x0B, 0x8B }, { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderInput // ****************************************************************** @@ -2244,6 +2401,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 4134, 15) { 0x1C, 0x08 }, { 0x1D, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_RunVertexStateShader @@ -2259,6 +2417,7 @@ OOVPA_NO_XREF(D3DDevice_RunVertexStateShader, 4134, 7) { 0x4B, 0x08 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderDeclaration // ****************************************************************** @@ -2279,7 +2438,8 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 4134, 14) { 0x1E, 0xC2 }, { 0x1F, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderFunction // ****************************************************************** @@ -2298,16 +2458,19 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderFunction, 4134, 12) { 0x12, 0x00 }, { 0x1C, 0x56 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4134, 14) +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4134, 16) // Up to 4531 { 0x02, 0x35 }, { 0x07, 0x57 }, + { 0x0E, 0x70 }, // 4361 0x7004 + { 0x0F, 0x04 }, { 0x10, 0x00 }, { 0x11, 0x00 }, { 0x12, 0xB9 }, @@ -2336,6 +2499,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData4ub, 4134, 7) { 0x44, 0x89 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DCubeTexture_GetCubeMapSurface // ****************************************************************** @@ -2349,7 +2513,8 @@ OOVPA_NO_XREF(D3DCubeTexture_GetCubeMapSurface, 4134, 7) { 0x40, 0x24 }, { 0x4B, 0x5E }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -2373,6 +2538,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 4134, 10) { 0x1A, 0xC2 }, { 0x1B, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CaptureStateBlock @@ -2425,7 +2591,7 @@ OOVPA_XREF(D3DDevice_BeginStateBlock, 4134, 6, XRefOne) // D3DDevice_BeginStateBlock+0x0F : call [ClearStateBlockFlags] - XREF_ENTRY( 0x0A, XREF_CLEARSTATEBLOCKFLAGS ), + XREF_ENTRY( 0x0A, XREF_D3D_ClearStateBlockFlags ), // D3DDevice_BeginStateBlock+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -2436,13 +2602,14 @@ OOVPA_XREF(D3DDevice_BeginStateBlock, 4134, 6, { 0x07, 0x08 }, { 0x08, 0x20 }, OOVPA_END; + #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D_ClearStateBlockFlags // ****************************************************************** OOVPA_XREF(D3D_ClearStateBlockFlags, 4134, 9,//OK - XREF_CLEARSTATEBLOCKFLAGS, + XREF_D3D_ClearStateBlockFlags, XRefZero) // D3D_ClearStateBlockFlags+0x0A : movzx ecx, 0x82 @@ -2471,7 +2638,7 @@ OOVPA_XREF(D3DDevice_EndStateBlock, 4134, 6, XRefOne) // D3DDevice_EndStateBlock+0x0F : call [ClearStateBlockFlags] - XREF_ENTRY( 0x0A, XREF_RECORDSTATEBLOCK ), + XREF_ENTRY( 0x0A, XREF_D3D_RecordStateBlock ), // D3DDevice_EndStateBlock+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -2486,31 +2653,76 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4134, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4134, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x84 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4134, 7) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4134, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x70 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 4134, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x043C] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x3C }, + { 0x08, 0x04 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x0C : mov [eax+0x043C], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0x3C }, + { 0x0F, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 4134 version // ****************************************************************** // * D3DDevice_AddRef // ****************************************************************** @@ -2529,6 +2741,7 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 4134, 10) { 0x13, 0xC1 }, { 0x14, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVertexData2s @@ -2566,6 +2779,83 @@ OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 4134, 10) { 0x26, 0xC3 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetBackBufferScale +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackBufferScale, 4134, 16) + + { 0x09, 0x86 }, + + { 0x10, 0xC1 }, + { 0x11, 0xE9 }, + { 0x12, 0x04 }, + { 0x13, 0x83 }, + { 0x14, 0xE1 }, + { 0x15, 0x0F }, + { 0x16, 0x85 }, + { 0x17, 0xC9 }, + + { 0x28, 0xD8 }, + { 0x29, 0x4C }, + { 0x2A, 0x24 }, + { 0x2B, 0x0C }, + { 0x2C, 0x83 }, + { 0x2D, 0xE0 }, + { 0x2E, 0x0F }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_MakeSpace +// ****************************************************************** +OOVPA_XREF(D3DDevice_MakeSpace, 4134, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0A, XREF_D3D_MakeRequestedSpace ), + + { 0x00, 0xA1 }, + { 0x05, 0x50 }, + { 0x06, 0xD1 }, + { 0x07, 0xE8 }, + { 0x08, 0x50 }, + { 0x09, 0xE8 }, + { 0x0E, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTexture, named with 2 suffix to match EMUPATCH(D3DDevice_GetTexture2) +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTexture2, 4134, 23) // Up to 4531 + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB4 }, + { 0x0D, 0x81 }, + { 0x0E, 0x78 }, // GetTexture 780A vs GetPalette 880A + { 0x0F, 0x0A }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x8B }, + { 0x13, 0x06 }, + { 0x14, 0x85 }, + { 0x15, 0xC0 }, + { 0x16, 0x74 }, + + { 0x18, 0x50 }, + { 0x19, 0xE8 }, + + { 0x1E, 0x8B }, + { 0x1F, 0x16 }, +OOVPA_END; + // ****************************************************************** // * Rollback support signature(s) // ****************************************************************** @@ -2582,154 +2872,154 @@ OOVPATable D3D8_4134[] = { REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), - REGISTER_OOVPA(MakeRequestedSpace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4134, PATCH), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 3911, PATCH), REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePalette, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePalette, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_Present, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3925, DISABLED), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_Present, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3911, DISABLED), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), - REGISTER_OOVPA(D3DPalette_Lock, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH), // Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), // Just calls Lock2DSurface - REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3925, PATCH), + REGISTER_OOVPA(D3DPalette_Lock, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetBackBuffer, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 4134, PATCH), - REGISTER_OOVPA(D3D_CreateStandAloneSurface, 4134, XREF), - REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4134, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH), // Just calls Lock3DSurface + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), // Just calls Lock2DSurface + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 4034, PATCH), + REGISTER_OOVPA(D3D_CreateStandAloneSurface, 4034, XREF), + REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 4134, DISABLED), + REGISTER_OOVPA(D3DDevice_SetPixelShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), REGISTER_OOVPA(D3DDevice_SetTexture, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), REGISTER_OOVPA(D3DVertexBuffer_Lock, 4034, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 4134, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), REGISTER_OOVPA(D3D_SetFence, 4134, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTile, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4134, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), - REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4134, PATCH), + REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4134, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3D_BlockOnTime, 3925, PATCH), + REGISTER_OOVPA(D3D_BlockOnTime, 3911, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, PATCH), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 4039, PATCH), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), @@ -2740,22 +3030,22 @@ OOVPATable D3D8_4134[] = { REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4134, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), - REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3925, PATCH), + REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 4134, PATCH), @@ -2763,7 +3053,7 @@ OOVPATable D3D8_4134[] = { REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_AddRef, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4242.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4242.h new file mode 100644 index 000000000..521703f3a --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4242.h @@ -0,0 +1,44 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4242.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef D3D8_4242_H +#define D3D8_4242_H + +#include "OOVPA.h" + +extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4242; + +extern OOVPATable D3D8_4242[]; +extern uint32 D3D8_4242_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4242.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4242.inl new file mode 100644 index 000000000..fbf76d914 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4242.inl @@ -0,0 +1,187 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4242.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_SetVerticalBlankCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 4242, 12) + + // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetVerticalBlankCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+0x242C], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0x30 }, // 2C vs 30 + { 0x0D, 0x24 }, + + // D3DDevice_SetVerticalBlankCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetSwapCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4242, 12) + + // D3DDevice_SetSwapCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetSwapCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetSwapCallback+0x0A : mov [ecx+0x242C], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0x2C }, // 2C vs 30 + { 0x0D, 0x24 }, + + // D3DDevice_SetSwapCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 4242, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x0440] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x40 }, + { 0x08, 0x04 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x05 : mov [eax+0x0440], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0x40 }, + { 0x0F, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTextureState_TexCoordIndex +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4242, 1+10, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY(0x19, XREF_D3DTSS_TEXCOORDINDEX), // Derived + + // D3DDevice_SetTextureState_TexCoordIndex+0x0D : shl eax, 0x07 + { 0x0D, 0xC1 }, + { 0x0E, 0xE0 }, + { 0x0F, 0x07 }, + + // D3DDevice_SetTextureState_TexCoordIndex+0x24 : cmp eax, ecx + { 0x24, 0x3B }, + { 0x25, 0xC1 }, + + // D3DDevice_SetTextureState_TexCoordIndex+0x6B : mov esi, 0x2400 + { 0x6B, 0xBE }, + { 0x6D, 0x24 }, + + // D3DDevice_SetTextureState_TexCoordIndex+0xB3 : shl edx, 0x04 + { 0xB3, 0xC1 }, + { 0xB4, 0xE2 }, + { 0xB5, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 4242, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x2434 + { 0x17, 0x05 }, + { 0x18, 0x34 }, + { 0x19, 0x24 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CMiniport_IsFlipPending +// ****************************************************************** +OOVPA_NO_XREF(CMiniport_IsFlipPending, 4242, 17) + + { 0x00, 0x8B }, + { 0x01, 0x81 }, + { 0x02, 0xF4 }, + { 0x03, 0x01 }, + { 0x04, 0x00 }, + { 0x05, 0x00 }, + { 0x06, 0x83 }, + { 0x07, 0xE0 }, + { 0x08, 0x01 }, + { 0x09, 0x8B }, + { 0x0A, 0x84 }, + { 0x0B, 0xC1 }, + { 0x0C, 0xB4 }, + { 0x0D, 0x01 }, + { 0x0E, 0x00 }, + { 0x0F, 0x00 }, + { 0x10, 0xC3 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.h index a01167c84..7a0019805 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.h +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.h @@ -36,7 +36,9 @@ #include "OOVPA.h" -extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4361; +#if 0 // Moved to 4242 +extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4242; +#endif extern OOVPATable D3D8_4361[]; extern uint32 D3D8_4361_SIZE; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl index d64a08708..73048fb91 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * CMiniport::InitHardware // ****************************************************************** @@ -63,6 +64,7 @@ OOVPA_NO_XREF(CMiniport_InitHardware, 4361, 24) { 0x1E, 0xA6 }, { 0x1F, 0xDC }, OOVPA_END; +#endif #if 0 // Moved to 4034 // ****************************************************************** // * CMiniport::CreateCtxDmaObject @@ -126,9 +128,9 @@ OOVPA_END; #endif #if 0 // Moved to 4134 // ****************************************************************** -// * MakeRequestedSpace +// * D3D_MakeRequestedSpace // ****************************************************************** -OOVPA_XREF(MakeRequestedSpace, 4361, 28, // Also for 4627 +OOVPA_XREF(D3D_MakeRequestedSpace, 4361, 28, // Also for 4627 XREF_D3D_MakeRequestedSpace, XRefZero) @@ -164,10 +166,11 @@ OOVPA_XREF(MakeRequestedSpace, 4361, 28, // Also for 4627 { 0x1F, 0x03 }, OOVPA_END; #endif +#if 0 // Moved to 4242 // ****************************************************************** // * D3DDevice_SetVerticalBlankCallback // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 4361, 12) +OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 4242, 12) // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] { 0x00, 0x8B }, @@ -189,11 +192,12 @@ OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 4361, 12) { 0x10, 0xC2 }, { 0x11, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * D3DDevice_SetSwapCallback // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4361, 12) +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4242, 12) // D3DDevice_SetSwapCallback+0x00 : mov eax, [esp+0x04] { 0x00, 0x8B }, @@ -215,6 +219,7 @@ OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4361, 12) { 0x10, 0xC2 }, { 0x11, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3D_GetAdapterDisplayMode @@ -243,10 +248,11 @@ OOVPA_NO_XREF(D3D_GetAdapterDisplayMode, 4361, 13) { 0xBE, 0x08 }, OOVPA_END; +#if 0 // Moved to 4242 // ****************************************************************** // * D3DDevice_AddRef // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_AddRef, 4361, 10) +OOVPA_NO_XREF(D3DDevice_AddRef, 4242, 10) // D3DDevice_AddRef+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -266,13 +272,14 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 4361, 10) { 0x0E, 0x40 }, { 0x0F, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 4134 // ****************************************************************** // * D3D_ClearStateBlockFlags // ****************************************************************** OOVPA_XREF(D3D_ClearStateBlockFlags, 4361, 9, - XREF_CLEARSTATEBLOCKFLAGS, + XREF_D3D_ClearStateBlockFlags, XRefZero) // D3D_ClearStateBlockFlags+0x0A : movzx ecx, 0x82 @@ -297,7 +304,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(D3D_RecordStateBlock, 4361, 10, - XREF_RECORDSTATEBLOCK, + XREF_D3D_RecordStateBlock, XRefZero) // D3D_RecordStateBlock+0x0F : mov eax, [edi+0x0390] @@ -327,7 +334,7 @@ OOVPA_XREF(D3DDevice_BeginStateBlock, 4361, 6, XRefOne) // D3DDevice_BeginStateBlock+0x0F : call [ClearStateBlockFlags] - XREF_ENTRY( 0x0A, XREF_CLEARSTATEBLOCKFLAGS ), + XREF_ENTRY( 0x0A, XREF_D3D_ClearStateBlockFlags ), // D3DDevice_BeginStateBlock+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -359,7 +366,7 @@ OOVPA_NO_XREF(D3DDevice_CaptureStateBlock, 4361, 9) { 0xAC, 0x00 }, OOVPA_END; #endif -#if 1 //same as 3925 +#if 0 //same as 3925 // ****************************************************************** // * D3DDevice_DeleteStateBlock // ****************************************************************** @@ -374,11 +381,14 @@ OOVPA_NO_XREF(D3DDevice_DeleteStateBlock, 4361, 7) { 0x83, 0xEB }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_ApplyStateBlock // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_ApplyStateBlock, 4361, 9) +OOVPA_NO_XREF(D3DDevice_ApplyStateBlock, 4361, 10) + + // D3DDevice_ApplyStateBlock+0x00 : push ebx + { 0x00, 0x53 }, // D3DDevice_ApplyStateBlock+0x0E : lea esi, [edi+0x3C] { 0x0E, 0x8D }, @@ -395,6 +405,7 @@ OOVPA_NO_XREF(D3DDevice_ApplyStateBlock, 4361, 9) { 0x9F, 0xE8 }, { 0xA0, 0x60 }, OOVPA_END; +#endif #if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_EndStateBlock @@ -405,7 +416,7 @@ OOVPA_XREF(D3DDevice_EndStateBlock, 4361, 6, XRefOne) // D3DDevice_EndStateBlock+0x0F : call [ClearStateBlockFlags] - XREF_ENTRY( 0x0A, XREF_RECORDSTATEBLOCK ), + XREF_ENTRY( 0x0A, XREF_D3D_RecordStateBlock ), // D3DDevice_EndStateBlock+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -417,6 +428,7 @@ OOVPA_XREF(D3DDevice_EndStateBlock, 4361, 6, { 0x08, 0xDF }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_GetRenderTarget // ****************************************************************** @@ -439,6 +451,7 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 4361, 9) { 0x1D, 0xC2 }, { 0x1E, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_GetViewport @@ -464,6 +477,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 4361, 10) { 0x1B, 0x04 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetTextureState_BorderColor // ****************************************************************** @@ -492,7 +506,8 @@ OOVPA_NO_XREF(D3DDevice_SetTextureState_BorderColor, 4361, 15) { 0x3A, 0xC2 }, { 0x3B, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SwitchTexture // ****************************************************************** @@ -518,7 +533,8 @@ OOVPA_NO_XREF(D3DDevice_SwitchTexture, 4361, 10) { 0x2E, 0xEB }, { 0x2F, 0xD0 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -543,7 +559,8 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4361, 11) { 0xAE, 0xC2 }, { 0xAF, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -566,6 +583,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4361, 11) { 0xA4, 0x20 }, { 0xA5, 0x89 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank @@ -592,15 +610,16 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 4361, 11) { 0x23, 0xC3 }, OOVPA_END; +#if 0 // Moved to 4242 // ****************************************************************** // * D3DDevice_SetTextureState_TexCoordIndex // ****************************************************************** -OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4361, 1+10, +OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4242, 1+10, - XRefNoSaveIndex, - XRefOne) + XRefNoSaveIndex, + XRefOne) - XREF_ENTRY(0x19, XREF_D3DTSS_TEXCOORDINDEX), // Derived + XREF_ENTRY(0x19, XREF_D3DTSS_TEXCOORDINDEX), // Derived // D3DDevice_SetTextureState_TexCoordIndex+0x0D : shl eax, 0x07 { 0x0D, 0xC1 }, @@ -620,7 +639,8 @@ OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4361, 1+10, { 0xB4, 0xE2 }, { 0xB5, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DResource_Release // ****************************************************************** @@ -649,6 +669,7 @@ OOVPA_NO_XREF(D3DResource_Release, 4361, 13) { 0x4B, 0xC2 }, { 0x4C, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3DResource_IsBusy @@ -703,7 +724,7 @@ OOVPA_NO_XREF(D3DBaseTexture_GetLevelCount, 4361, 13) { 0x0C, 0x04 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetShaderConstantMode // ****************************************************************** @@ -727,7 +748,7 @@ OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 4361, 12) { 0xE9, 0x24 }, { 0xEA, 0x01 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetFlickerFilter @@ -752,7 +773,7 @@ OOVPA_NO_XREF(D3DDevice_SetFlickerFilter, 4361, 11) { 0x40, 0x04 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_PrimeVertexCache // ****************************************************************** @@ -766,7 +787,7 @@ OOVPA_NO_XREF(D3DDevice_PrimeVertexCache, 4361, 7) { 0x5E, 0x04 }, { 0x6E, 0x04 }, OOVPA_END; - +#endif #if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_BeginPush @@ -905,6 +926,7 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 4361, 8) { 0xFE, 0x24 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_CreateCubeTexture // ****************************************************************** @@ -919,6 +941,7 @@ OOVPA_NO_XREF(D3DDevice_CreateCubeTexture, 4361, 8) { 0x25, 0xC2 }, { 0x26, 0x18 }, OOVPA_END; +#endif #if 0 // Moved to 4134 // ****************************************************************** // * D3DCubeTexture_GetCubeMapSurface @@ -934,6 +957,7 @@ OOVPA_NO_XREF(D3DCubeTexture_GetCubeMapSurface, 4361, 7) { 0x4B, 0x5E }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetScissors // ****************************************************************** @@ -955,8 +979,8 @@ OOVPA_NO_XREF(D3DDevice_SetScissors, 4361, 10) { 0x1D, 0xD8 }, { 0x1E, 0x09 }, OOVPA_END; - - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetPixelShaderProgram // ****************************************************************** @@ -973,6 +997,7 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 4361, 10) { 0x2B, 0x24 }, { 0x2C, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_GetVertexShader @@ -988,6 +1013,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4361, 7) { 0x13, 0x00 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetVertexDataColor // ****************************************************************** @@ -1001,7 +1027,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 4361, 7) { 0x3A, 0xFF }, { 0x44, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_SetVertexShaderInput // ****************************************************************** @@ -1016,7 +1043,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderInput, 4361, 8) { 0xDE, 0xC6 }, { 0xFE, 0x89 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_SetVertexData2s // ****************************************************************** @@ -1031,7 +1059,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData2s, 4361, 8) { 0x1A, 0x00 }, { 0x1F, 0xBF }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_SetVertexData4s // ****************************************************************** @@ -1047,6 +1076,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData4s, 4361, 9) { 0x1B, 0x19 }, { 0x1F, 0xBF }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BeginVisibilityTest@0 @@ -1061,6 +1091,7 @@ OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 4361, 7) { 0x28, 0x06 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_EndVisibilityTest@4 // ****************************************************************** @@ -1073,7 +1104,7 @@ OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 4361, 7) { 0x46, 0x89 }, { 0x55, 0x5F }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_SetTexture @@ -1086,7 +1117,6 @@ OOVPA_XREF(D3DDevice_SetTexture, 4361, 1+28, XREF_ENTRY( 0x13, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived #endif - OOVPA_NO_XREF(D3DDevice_SetTexture, 4361, 28) { 0x00, 0x83 }, @@ -1120,12 +1150,13 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 4361, 28) { 0x1F, 0x24 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3D::BlockOnTime // ****************************************************************** OOVPA_XREF(D3D_BlockOnTime, 4361, 13, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XRefZero) { 0x07, 0x3D }, @@ -1145,6 +1176,7 @@ OOVPA_XREF(D3D_BlockOnTime, 4361, 13, { 0x38, 0x8B }, { 0x44, 0xE8 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SelectVertexShaderDirect @@ -1197,198 +1229,198 @@ OOVPA_END; // ****************************************************************** OOVPATable D3D8_4361[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 4361, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 4034, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), - REGISTER_OOVPA(MakeRequestedSpace, 4134, PATCH), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 4134, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_AddRef, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_AddRef, 4242, PATCH), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3911, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 4034, PATCH), REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetBackBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 4134, DISABLED), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), REGISTER_OOVPA(D3DDevice_SetTexture, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4242, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4242, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), REGISTER_OOVPA(D3DVertexBuffer_Lock, 4034, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 4361, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 4134, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_CreatePalette, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3925, DISABLED), // TODO: This needs to be verified on 4361, not just 4242! - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), - REGISTER_OOVPA(D3DPalette_Lock, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH), // Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), // Just calls Lock2DSurface - REGISTER_OOVPA(D3DDevice_SetPalette, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_CreatePalette, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 3911, DISABLED), // TODO: This needs to be verified on 4361, not just 4242! + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), + REGISTER_OOVPA(D3DPalette_Lock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), REGISTER_OOVPA(D3D_SetFence, 4134, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4242, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetTile, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_BeginPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4242, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 4134, PATCH), - REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), + REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4361, PATCH), - REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 4361, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH), // Just calls Lock3DSurface + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), // Just calls Lock2DSurface + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), - REGISTER_OOVPA(D3D_BlockOnTime, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), + REGISTER_OOVPA(D3D_BlockOnTime, 4034, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, PATCH), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawTriPatch, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_DrawRectPatch, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 4034, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4134, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl index e15094bd0..8c0c12d7b 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl @@ -55,6 +55,7 @@ OOVPA_NO_XREF(Direct3D_CreateDevice, 4432, 8) { 0xA1, 0x18 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_GetRenderTarget // ****************************************************************** @@ -83,6 +84,7 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 4432, 11) { 0x1D, 0xC2 }, { 0x1E, 0x04 }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface @@ -113,6 +115,7 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 4432, 11) { 0x26, 0x04 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetPixelShader // ****************************************************************** @@ -136,7 +139,30 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShader, 4432, 10) { 0xE3, 0xF3 }, { 0xE4, 0xA5 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_SetRenderState_ZEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 4432, 12) + + { 0x08, 0x06 }, + { 0x0E, 0xE8 }, + + { 0x45, 0x48 }, + { 0x46, 0x0C }, + { 0x47, 0x83 }, + { 0x48, 0xC0 }, + { 0x49, 0x10 }, + { 0x4A, 0x89 }, + { 0x4B, 0x06 }, + { 0x4C, 0xA1 }, + + { 0x5A, 0x74 }, + { 0x60, 0x2A }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable // ****************************************************************** @@ -163,7 +189,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 4432, 13) { 0x8C, 0xC2 }, { 0x8D, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias // ****************************************************************** @@ -188,7 +215,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4432, 9) { 0x4F, 0xC2 }, { 0x50, 0x04 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_LineWidth @@ -214,7 +241,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_LineWidth, 4432, 10) { 0x63, 0x04 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -238,7 +265,8 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 4432, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -263,7 +291,8 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4432, 11) { 0xAE, 0xC2 }, { 0xAF, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 4531 // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -288,7 +317,8 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4531, 11) { 0xB9, 0xC2 }, { 0xBA, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -311,6 +341,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4432, 11) { 0xA4, 0x20 }, { 0xA5, 0x89 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank @@ -389,22 +420,24 @@ OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 4432, 12) { 0x11, 0x04 }, OOVPA_END; +#if 0 // Moved to 4531 // ****************************************************************** // * D3DDevice_SetRenderState_BackFillMode // ****************************************************************** OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 4531, 9) { 0x04, 0x56 }, - { 0x10, 0x8B }, - { 0x11, 0x06 }, - { 0x12, 0x3B }, - { 0x13, 0x46 }, - { 0x14, 0x04 }, - { 0x41, 0x83 }, - { 0x42, 0xC0 }, - { 0x43, 0x0C }, + { 0x10, 0x8B }, + { 0x11, 0x06 }, + { 0x12, 0x3B }, + { 0x13, 0x46 }, + { 0x14, 0x04 }, + { 0x41, 0x83 }, + { 0x42, 0xC0 }, + { 0x43, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_BeginPush // ****************************************************************** @@ -417,7 +450,7 @@ OOVPA_NO_XREF(D3DDevice_BeginPush, 4432, 6) { 0x17, 0xE8 }, { 0x1D, 0xC2 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_Release @@ -437,7 +470,7 @@ OOVPA_NO_XREF(D3DDevice_Release, 4432, 11) { 0x1F, 0x00 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DTexture_GetSurfaceLevel // ****************************************************************** @@ -471,7 +504,8 @@ OOVPA_NO_XREF(D3DTexture_GetSurfaceLevel, 4432, 14) { 0x4C, 0xC2 }, { 0x4D, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_GetDisplayMode // ****************************************************************** @@ -499,7 +533,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4432, 12) { 0x92, 0xC2 }, { 0x93, 0x04 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetFlickerFilter @@ -549,6 +583,7 @@ OOVPA_NO_XREF(D3DDevice_SetSoftDisplayFilter, 4432, 12) { 0x4F, 0x04 }, OOVPA_END; #endif +#if 0 // Moved to 4531 // ****************************************************************** // * D3DVertexBuffer_Lock // ****************************************************************** @@ -573,7 +608,8 @@ OOVPA_NO_XREF(D3DVertexBuffer_Lock, 4531, 11) { 0x54, 0xC2 }, { 0x55, 0x14 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** @@ -587,6 +623,7 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4432, 7) { 0x16, 0x00 }, { 0x1A, 0x5E }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_SetModelView @@ -602,6 +639,7 @@ OOVPA_NO_XREF(D3DDevice_SetModelView, 4432, 7) { 0x9F, 0x75 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus // ****************************************************************** @@ -615,204 +653,251 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 4432, 7) { 0x25, 0x33 }, { 0x26, 0xD2 }, OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetViewportOffsetAndScale +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetViewportOffsetAndScale, 4432, 12) // Up to 5849 + + { 0x00, 0xA1 }, + { 0x19, 0x05 }, + + { 0x45, 0x00 }, + { 0x46, 0x8B }, + { 0x47, 0x50 }, + { 0x48, 0x08 }, + { 0x49, 0x33 }, + { 0x4A, 0xC9 }, + { 0x4B, 0x84 }, + { 0x4C, 0xF6 }, + + { 0x5B, 0x74 }, + { 0x5C, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetDepthClipPlanes +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 4432, 15) + + { 0x03, 0x0C }, + { 0x04, 0x48 }, + { 0x05, 0x83 }, + { 0x06, 0xF8 }, + { 0x07, 0x03 }, + { 0x08, 0x56 }, + { 0x09, 0x8B }, + { 0x0A, 0x35 }, + + { 0x0F, 0x77 }, + { 0x10, 0x5F }, + { 0x11, 0xFF }, + { 0x12, 0x24 }, + { 0x13, 0x85 }, + + { 0x18, 0x8B }, + { 0x1F, 0x0C }, +OOVPA_END; // ****************************************************************** // * D3D8_4432 // ****************************************************************** +// No longer supported XDK 4531 by HLEDB_v1 OOVPATable D3D8_4432[] { - REGISTER_OOVPA(CMiniport_InitHardware, 4361, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 4034, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), - REGISTER_OOVPA(MakeRequestedSpace, 4134, PATCH), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_AddRef, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_AddRef, 4242, PATCH), REGISTER_OOVPA(D3DDevice_GetBackBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShader, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShader, 4034, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTexture, 4034, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4242, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePalette, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 4531, PATCH), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePalette, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4034, PATCH), + // REGISTER_OOVPA(D3DDevice_Swap, 4531, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4432, PATCH), REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4432, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), - REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 4432, PATCH), - REGISTER_OOVPA(D3DPalette_Lock, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 3911, PATCH), + REGISTER_OOVPA(D3DPalette_Lock, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4531, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + // REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4531, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), REGISTER_OOVPA(D3D_SetFence, 4134, XREF), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer, 3911, DISABLED), REGISTER_OOVPA(D3DVertexBuffer_Lock, 4034, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_Lock, 4531, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4361, PATCH), + // REGISTER_OOVPA(D3DVertexBuffer_Lock, 4531, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 4034, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 4134, DISABLED), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH),// Just calls Lock3DSurface + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH),// Just calls Lock2DSurface REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_BeginPush, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_BeginPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 4361, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH),// Just calls Lock3DSurface + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH),// Just calls Lock2DSurface - REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 4134, PATCH), + REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 4034, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4034, PATCH), - REGISTER_OOVPA(D3D_BlockOnTime, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 4134, PATCH), + REGISTER_OOVPA(D3D_BlockOnTime, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), - REGISTER_OOVPA(D3DDevice_SetTile, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTile, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 4034, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), // ****************************************************************** // Provisional registration functions in XDK 4432 // TODO: Need test cases // ****************************************************************** REGISTER_OOVPA(D3DDevice_DrawRectPatch, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4531.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4531.inl new file mode 100644 index 000000000..77a0af0f4 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4531.inl @@ -0,0 +1,175 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4531.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_Swap +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Swap, 4531, 11) + + // D3DDevice_Swap+0x10 : mov ebx, 5 + { 0x10, 0xBB }, + { 0x11, 0x05 }, + + // D3DDevice_Swap+0x1D : test bl, 3 + { 0x1D, 0xF6 }, + { 0x1E, 0xC3 }, + { 0x1F, 0x03 }, + + // D3DDevice_Swap+0x46 : inc dword ptr [esi+0x2AD8] + { 0x46, 0xFF }, + { 0x47, 0x86 }, + { 0x48, 0xD8 }, + { 0x49, 0x2A }, + + // D3DDevice_Swap+0xAE : retn 4 + { 0xB9, 0xC2 }, + { 0xBA, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4134 version +// ****************************************************************** +// * D3DDevice_SetRenderState_BackFillMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 4531, 9) + + { 0x04, 0x56 }, + { 0x10, 0x8B }, + { 0x11, 0x06 }, + { 0x12, 0x3B }, + { 0x13, 0x46 }, + { 0x14, 0x04 }, + { 0x41, 0x83 }, + { 0x42, 0xC0 }, + { 0x43, 0x0C }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DVertexBuffer_Lock +// ****************************************************************** +OOVPA_NO_XREF(D3DVertexBuffer_Lock, 4531, 11) + + // D3DVertexBuffer_Lock+0x01 : mov bl, [esp+0x18] + { 0x01, 0x8A }, + { 0x02, 0x5C }, + { 0x03, 0x24 }, + { 0x04, 0x18 }, + + // D3DVertexBuffer_Lock+0x09 : jnz +0x24 + { 0x09, 0x75 }, + { 0x0A, 0x24 }, + + // D3DVertexBuffer_Lock+0x2F : test bl, 0xA0 + { 0x2F, 0xF6 }, + { 0x30, 0xC3 }, + { 0x31, 0xA0 }, + + // D3DVertexBuffer_Lock+0x50 : retn 0x14 + { 0x54, 0xC2 }, + { 0x55, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_UpdateOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4531, 11) // Up to 5120 + + { 0x03, 0xA1 }, + { 0x1A, 0x04 }, + { 0x1F, 0x7C }, + + { 0x6F, 0x8B }, + { 0x70, 0x4F }, + { 0x71, 0x04 }, + { 0x72, 0x8B }, + { 0x73, 0xD0 }, + { 0x74, 0x8B }, + { 0x75, 0x44 }, + { 0x76, 0x24 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::CDevice::KickOff +// ****************************************************************** +OOVPA_XREF(D3DDevice_KickOff, 4531, 13, + + XREF_D3D_CDevice_KickOff, + XRefZero) + + // D3D::CDevice::KickOff+0x0B : mov edx, [ecx+0x35C] + { 0x0B, 0x8B }, + { 0x0C, 0x91 }, + { 0x0D, 0x5C }, + { 0x0E, 0x03 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + + // D3D::CDevice::KickOff+0x1F : test ch, 0x20 + { 0x1F, 0xF6 }, + { 0x20, 0xC5 }, + { 0x21, 0x20 }, + + // D3D::CDevice::KickOff+0x2F : sfence + { 0x2F, 0x0F }, + { 0x30, 0xAE }, + { 0x31, 0xF8 }, + + // D3D::CDevice::KickOff+0xE2 : retn + { 0xE2, 0xC3 } +OOVPA_END; + +// ****************************************************************** +// * D3DPalette_Lock +// ****************************************************************** +OOVPA_NO_XREF(D3DPalette_Lock, 4531, 17) + + { 0x00, 0xF6 }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x0C }, + { 0x04, 0xA0 }, + { 0x05, 0x56 }, + { 0x06, 0x8B }, + { 0x07, 0x74 }, + { 0x08, 0x24 }, + { 0x09, 0x08 }, + { 0x0A, 0x75 }, + { 0x0B, 0x06 }, + { 0x0C, 0x56 }, + { 0x0D, 0xE8 }, + + { 0x12, 0x8B }, + { 0x21, 0xC2 }, + { 0x22, 0x0C }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl index 14c971e99..52a197de6 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl @@ -101,10 +101,14 @@ OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 4627, 11) { 0x26, 0x0C }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_EndVisibilityTest // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 4627, 11) +OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 4627, 12) + + // D3DDevice_EndVisibilityTest+0x00 : mov eax, [esp+4] + { 0x00, 0x8B }, // D3DDevice_EndVisibilityTest+0x0B : mov esi, eax { 0x0B, 0x8B }, @@ -125,7 +129,32 @@ OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 4627, 11) { 0x14, 0x07 }, { 0x15, 0x80 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3D_GetAdapterDisplayMode +// ****************************************************************** +// Generic OOVPA as of 4627 and newer. +OOVPA_NO_XREF(D3D_GetAdapterDisplayMode, 4627, 13) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + + { 0x0A, 0x08 }, + { 0x0B, 0x76 }, + { 0x0C, 0x88 }, + { 0x0D, 0xC2 }, + { 0x0E, 0x08 }, + { 0x0F, 0x00 }, + { 0x10, 0x56 }, + { 0x11, 0x8B }, + { 0x12, 0x35 }, + + { 0x30, 0xC2 }, + { 0x31, 0x08 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3D_GetAdapterDisplayMode // ****************************************************************** @@ -152,6 +181,7 @@ OOVPA_NO_XREF(D3D_GetAdapterDisplayMode, 4627, 13) { 0xB6, 0xC2 }, { 0xB7, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * D3D_KickOffAndWaitForIdle @@ -225,6 +255,7 @@ OOVPA_NO_XREF(D3DDevice_BeginPush, 4627, 7) { 0x44, 0x52 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetViewport // ****************************************************************** @@ -245,13 +276,14 @@ OOVPA_NO_XREF(D3DDevice_SetViewport, 4627, 9) { 0xE0, 0xE1 }, { 0xE1, 0x0F }, OOVPA_END; +#endif // ****************************************************************** // * D3D_CommonSetRenderTarget // ****************************************************************** OOVPA_XREF(D3D_CommonSetRenderTarget, 4627, 12, - XREF_COMMONSETRENDERTARGET, + XREF_D3D_CommonSetRenderTarget, XRefZero) // D3D_CommonSetRenderTarget+0x00 : sub esp, 0x20 @@ -280,7 +312,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(D3D_CommonSetRenderTargetB, 4627, 11, - XREF_COMMONSETRENDERTARGET, + XREF_D3D_CommonSetRenderTarget, XRefZero) // D3D_CommonSetRenderTargetB+0x00 : sub esp, 0x24 @@ -312,7 +344,7 @@ OOVPA_XREF(D3DDevice_SetRenderTarget, 4627, 13, XRefOne) // D3DDevice_SetRenderTarget+0x10 : call [D3D_CommonSetRenderTarget] - XREF_ENTRY( 0x10, XREF_COMMONSETRENDERTARGET ), + XREF_ENTRY( 0x10, XREF_D3D_CommonSetRenderTarget ), // D3DDevice_SetRenderTarget+0x00 : mov eax, [esp+0x08] { 0x00, 0x8B }, @@ -362,7 +394,7 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetGammaRamp // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetGammaRamp, 4928, 9) +OOVPA_NO_XREF(D3DDevice_SetGammaRamp, 4627, 17) // Up to 5849 { 0x25, 0x57 }, { 0x26, 0x83 }, @@ -375,8 +407,18 @@ OOVPA_NO_XREF(D3DDevice_SetGammaRamp, 4928, 9) { 0x5A, 0x89 }, { 0x5B, 0x82 }, { 0x5C, 0xE4 }, + + { 0x70, 0x00 }, + { 0x71, 0xC7 }, + { 0x72, 0x84 }, + { 0x73, 0x82 }, + { 0x74, 0xDC }, + { 0x75, 0x07 }, + { 0x76, 0x00 }, + { 0x77, 0x00 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetShaderConstantMode // ****************************************************************** @@ -400,6 +442,7 @@ OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 4627, 12) { 0xE9, 0x24 }, { 0xEA, 0x01 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CopyRects @@ -419,7 +462,12 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetBackBuffer // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetBackBuffer, 4627, 10) +OOVPA_XREF(D3DDevice_GetBackBuffer, 4627, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDevice_GetBackBuffer2 ), { 0x03, 0x04 }, { 0x05, 0xE8 }, @@ -437,7 +485,10 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 4627, 12) +OOVPA_XREF(D3DDevice_GetBackBuffer2, 4627, 12, + + XREF_D3DDevice_GetBackBuffer2, + XRefZero) // D3DDevice_GetBackBuffer2+0x04 : cmp eax, 0xFFFFFFFF { 0x04, 0x83 }, @@ -465,7 +516,12 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetRenderTarget // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 4627, 12) +OOVPA_XREF(D3DDevice_GetRenderTarget, 4627, 13, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_D3DDevice_GetRenderTarget2 ), { 0x00, 0xE8 }, @@ -485,7 +541,12 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetRenderTarget2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetRenderTarget2, 4627, 10) +OOVPA_XREF(D3DDevice_GetRenderTarget2, 4627, 9, + + XREF_D3DDevice_GetRenderTarget2, + XRefOne) + + XREF_ENTRY( 0x12, XREF_D3DResource_AddRef ), // D3DDevice_GetRenderTarget2+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -493,11 +554,11 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget2, 4627, 10) // D3DDevice_GetRenderTarget2+0x05 : push esi { 0x05, 0x56 }, - // D3DDevice_GetRenderTarget2+0x06 : mov esi, [eax + 0x21B4] + // D3DDevice_GetRenderTarget2+0x06 : mov esi, [eax + 0xXXXX] { 0x06, 0x8B }, { 0x07, 0xB0 }, - { 0x08, 0xB4 }, - { 0x09, 0x21 }, + //{ 0x08, 0xB4 }, + //{ 0x09, 0x21 }, // D3DDevice_GetRenderTarget2+0x0E : jz + 0x06 { 0x0E, 0x74 }, @@ -513,7 +574,12 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetDepthStencilSurface // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 4627, 10) +OOVPA_XREF(D3DDevice_GetDepthStencilSurface, 4627, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_D3DDevice_GetDepthStencilSurface2 ), { 0x00, 0xE8 }, @@ -528,6 +594,41 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 4627, 10) { 0x1C, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetDepthStencilSurface2 +// ****************************************************************** +OOVPA_XREF(D3DDevice_GetDepthStencilSurface2, 4627, 20, + + XREF_D3DDevice_GetDepthStencilSurface2, + XRefZero) + + { 0x00, 0xA1 }, + + { 0x05, 0x56 }, + { 0x06, 0x8B }, + { 0x07, 0xB0 }, + //{ 0x08, 0xB8 }, + //{ 0x09, 0x21 }, + { 0x0A, 0x00 }, + { 0x0B, 0x00 }, + { 0x0C, 0x85 }, + { 0x0D, 0xF6 }, + { 0x0E, 0x75 }, + { 0x0F, 0x04 }, + { 0x10, 0x33 }, + { 0x11, 0xC0 }, + { 0x12, 0x5E }, + { 0x13, 0xC3 }, + { 0x14, 0x56 }, + { 0x15, 0xE8 }, + + { 0x1A, 0x8B }, + { 0x1B, 0xC6 }, + { 0x1C, 0x5E }, + { 0x1D, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface2 // ****************************************************************** @@ -555,7 +656,8 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 4627, 10) // D3DDevice_GetDepthStencilSurface2+0x1D : retn { 0x1D, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -580,34 +682,57 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 4627, 11) { 0x23, 0xC2 }, { 0x24, 0x08 }, OOVPA_END; +#endif // ****************************************************************** -// * D3DDevice_SetTile +// * D3D_SetTileNoWait // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTile, 4627, 11) +OOVPA_XREF(D3D_SetTileNoWait, 4627, 11, - // D3DDevice_SetTile+0x06 : sub esp, 0x18 + XREF_D3D_SetTileNoWait, + XRefZero) + + // D3D_SetTileNoWait+0x06 : sub esp, 0x18 { 0x06, 0x83 }, { 0x07, 0xEC }, { 0x08, 0x18 }, - // D3DDevice_SetTile+0x15 : cmp [esi+4], eax + // D3D_SetTileNoWait+0x15 : cmp [esi+4], eax { 0x15, 0x39 }, { 0x16, 0x46 }, { 0x17, 0x04 }, - // D3DDevice_SetTile+0x3D : lea edi, [edx+ecx*8+0x2260] + // D3D_SetTileNoWait+0x3D : lea edi, [edx+ecx*8+0xXXXX] { 0x3D, 0x8D }, { 0x3E, 0xBC }, { 0x3F, 0xCA }, - { 0x40, 0x60 }, - { 0x41, 0x22 }, + //{ 0x40, 0x60 }, + //{ 0x41, 0x22 }, + { 0x42, 0x00 }, + { 0x43, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetTile +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetTile, 4627, 3, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3D_SetTileNoWait ), + + { 0x00, 0xE8 }, + { 0x05, 0xE9 }, OOVPA_END; // ****************************************************************** // * D3DDevice_CreateIndexBuffer2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer2, 4627, 7) +OOVPA_XREF(D3DDevice_CreateIndexBuffer2, 4627, 7, + + XREF_D3DDevice_CreateIndexBuffer2, + XRefZero) { 0x05, 0xC0 }, { 0x0F, 0x85 }, @@ -618,32 +743,58 @@ OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer2, 4627, 7) { 0x2F, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_CreateIndexBuffer +// ****************************************************************** +OOVPA_XREF(D3DDevice_CreateIndexBuffer, 4627, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDevice_CreateIndexBuffer2 ), + + { 0x00, 0x8B }, + + { 0x0A, 0x8B }, + { 0x0B, 0x4C }, + { 0x0C, 0x24 }, + { 0x0D, 0x14 }, + { 0x0E, 0x33 }, + { 0x0F, 0xD2 }, + { 0x10, 0x85 }, + { 0x11, 0xC0 }, + + { 0x1F, 0xC2 }, +OOVPA_END; + +#if 0 // Moved to 4831 // ****************************************************************** // * D3DDevice_SetPixelShaderConstant // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 4928, 13) +OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 4831, 13) // D3DDevice_SetPixelShaderConstant+0x1E : test eax, eax { 0x1E, 0x85 }, { 0x1F, 0xC0 }, - // D3DDevice_SetPixelShaderConstant+0x32 : mov [ebp+0x10], eax - { 0x32, 0x89 }, - { 0x33, 0x45 }, - { 0x34, 0x10 }, + // D3DDevice_SetPixelShaderConstant+0x32 : mov [ebp+0x10], eax + { 0x32, 0x89 }, + { 0x33, 0x45 }, + { 0x34, 0x10 }, - // D3DDevice_SetPixelShaderConstant+0x84 : or eax, ebx - { 0x84, 0x0B }, - { 0x85, 0xC3 }, + // D3DDevice_SetPixelShaderConstant+0x84 : or eax, ebx + { 0x84, 0x0B }, + { 0x85, 0xC3 }, // D3DDevice_SetPixelShaderConstant+0xBD : mov dword ptr [eax], 0x406A0 - { 0xBD, 0xC7 }, - { 0xBE, 0x00 }, - { 0xBF, 0x60 }, - { 0xC0, 0x0A }, - { 0xC1, 0x04 }, - { 0xC2, 0x00 }, + { 0xBD, 0xC7 }, + { 0xBE, 0x00 }, + { 0xBF, 0x60 }, + { 0xC0, 0x0A }, + { 0xC1, 0x04 }, + { 0xC2, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVertexShaderConstant @@ -748,7 +899,6 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstantNotInline, 4627, 12) // (NOT 5344 { 0x28, 0xE8 }, OOVPA_END; - // ****************************************************************** // * D3DDevice_SetVertexShaderConstantNotInlineFast // ****************************************************************** @@ -916,6 +1066,7 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 4627, 13) { 0xAF, 0x1C }, OOVPA_END; +#if 0 // Moved to 4831 // ****************************************************************** // * D3DDevice_CreateTexture2 // ****************************************************************** @@ -945,6 +1096,7 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 4831, 12) { 0x88, 0xC2 }, { 0x89, 0x1C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CreateTexture @@ -966,7 +1118,7 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture, 4627, 11) { 0x38, 0xC2 }, OOVPA_END; -#if 0 // Used 4134 instead in 4627, 4721, 4831, 4928 +#if 0 // Used 4034 instead in 4627, 4721, 4831, 4928 // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -1019,6 +1171,7 @@ OOVPA_NO_XREF(D3DDevice_SetTexture_unused, 4627, 10) // Deprecated in favor of 4 { 0xDA, 0x4D }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetTexture // ****************************************************************** @@ -1062,19 +1215,20 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 4627, 28) { 0x1E, 0x44 }, { 0x1F, 0x24 }, OOVPA_END; - +#endif +#if 0 // Moved to 4831 // ****************************************************************** // * D3DDevice_SetTexture // ****************************************************************** #if 0 // Derived XREF_OFFSET_D3DDEVICE_M_TEXTURES is not Implemented yet. -OOVPA_XREF(D3DDevice_SetTexture, 4928, 1+10, +OOVPA_XREF(D3DDevice_SetTexture, 4928, 1+15, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x13, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived + XREF_ENTRY( 0x13, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived #endif -OOVPA_NO_XREF(D3DDevice_SetTexture, 4928, 10) +OOVPA_NO_XREF(D3DDevice_SetTexture, 4831, 15) { 0x0B, 0x56 }, @@ -1090,8 +1244,14 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 4928, 10) { 0x50, 0x75 }, { 0x51, 0x47 }, + { 0x52, 0x8B }, + { 0x53, 0x45 }, + { 0x54, 0x00 }, + { 0x55, 0x3B }, + { 0x56, 0x45 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_GetDisplayMode // ****************************************************************** @@ -1119,6 +1279,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4627, 12) { 0x7F, 0xEB }, { 0x80, 0x1C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_RunPushBuffer @@ -1202,7 +1363,6 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData2f, 4627, 14) { 0x3E, 0x0C }, OOVPA_END; #endif - #if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetVertexData4f @@ -1227,7 +1387,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData4f, 4627, 11) { 0x60, 0x14 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_End // ****************************************************************** @@ -1246,7 +1406,8 @@ OOVPA_NO_XREF(D3DDevice_End, 4627, 12) { 0x3B, 0x5E }, { 0x3C, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Clear // ****************************************************************** @@ -1262,7 +1423,30 @@ OOVPA_NO_XREF(D3DDevice_Clear, 4627, 9) { 0x81, 0xB6 }, { 0xF8, 0x95 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_Swap +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Swap, 4627, 13) + + { 0x2A, 0xBB }, + { 0x2B, 0x05 }, + { 0x37, 0xF6 }, + { 0x38, 0xC3 }, + { 0x39, 0x03 }, + + { 0x73, 0xEB }, + { 0x74, 0x36 }, + { 0x75, 0x8B }, + { 0x76, 0xFB }, + { 0x77, 0x83 }, + { 0x78, 0xE7 }, + { 0x79, 0x04 }, + { 0x7A, 0x74 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -1287,11 +1471,41 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4627, 11) { 0xD8, 0xC2 }, { 0xD9, 0x04 }, OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_CreateVertexBuffer +// ****************************************************************** +OOVPA_XREF(D3DDevice_CreateVertexBuffer, 4627, 13, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDevice_CreateVertexBuffer2 ), + + { 0x00, 0x8B }, + + { 0x0A, 0x8B }, + { 0x0B, 0x4C }, + { 0x0C, 0x24 }, + { 0x0D, 0x14 }, + { 0x0E, 0x33 }, + { 0x0F, 0xD2 }, + { 0x10, 0x85 }, + { 0x11, 0xC0 }, + { 0x12, 0x0F }, + + { 0x1E, 0x8B }, + { 0x1F, 0xC2 }, +OOVPA_END; // ****************************************************************** // * D3DDevice_CreateVertexBuffer2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2, 4627, 13) +OOVPA_XREF(D3DDevice_CreateVertexBuffer2, 4627, 13, + + XREF_D3DDevice_CreateVertexBuffer2, + XRefZero) // D3DDevice_CreateVertexBuffer2+0x03 : push 0x40 { 0x03, 0x6A }, @@ -1315,6 +1529,27 @@ OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2, 4627, 13) { 0x4B, 0x04 }, OOVPA_END; +#if 0 // Moved to 4531 +// ****************************************************************** +// * D3DDevice_UpdateOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4531, 11) // Up to 5120 + + { 0x03, 0xA1 }, + { 0x1A, 0x04 }, + { 0x1F, 0x7C }, + + { 0x6F, 0x8B }, + { 0x70, 0x4F }, + { 0x71, 0x04 }, + { 0x72, 0x8B }, + { 0x73, 0xD0 }, + { 0x74, 0x8B }, + { 0x75, 0x44 }, + { 0x76, 0x24 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4531 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -1337,7 +1572,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4627, 11) { 0xAE, 0x30 }, { 0xAF, 0x89 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetOverlayUpdateStatus @@ -1417,6 +1652,7 @@ OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 4627, 12) { 0x11, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -1440,6 +1676,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 4627, 10) { 0x1A, 0xC2 }, { 0x1B, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTextureState_TexCoordIndex @@ -1491,7 +1728,6 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_NormalizeNormals, 4627, 8) { 0x40, 0x04 }, OOVPA_END; #endif - #if 0 // Used 4134 instead in 4627, 4721, 4831, 4928 // ****************************************************************** // * D3DDevice_SetRenderState_EdgeAntiAlias @@ -1518,6 +1754,28 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_EdgeAntiAlias, 4627, 10) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_SetRenderState_Dxt1NoiseEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, 12) + + { 0x0D, 0x8B }, + { 0x0E, 0x87 }, + + { 0x50, 0x40 }, + { 0x51, 0x04 }, + { 0x52, 0x00 }, + { 0x53, 0x00 }, + { 0x54, 0x00 }, + { 0x55, 0x00 }, + { 0x56, 0xC1 }, + { 0x57, 0xE6 }, + + { 0x74, 0xC2 }, + { 0x75, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -1538,7 +1796,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, 9) { 0x74, 0xC2 }, { 0x75, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable // ****************************************************************** @@ -1554,7 +1813,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 4627, 9) { 0x5A, 0x74 }, { 0x60, 0x2A }, OOVPA_END; - +#endif #if 0 // Used 4134 instead in 4627, 4721, 4831, 4928 // ****************************************************************** // * D3DDevice_SetRenderState_StencilEnable @@ -1607,6 +1866,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, 17) { 0x5C, 0x05 }, { 0x5D, 0xE8 }, OOVPA_END; + #if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias @@ -1638,7 +1898,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, 12) { 0x70, 0x04 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -1660,6 +1920,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 4627, 10) { 0x8B, 0x45 }, { 0x8C, 0x14 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_DrawIndexedVertices @@ -1715,7 +1976,10 @@ OOVPA_END; // ****************************************************************** // * D3DVertexBuffer_Lock2 // ****************************************************************** -OOVPA_NO_XREF(D3DVertexBuffer_Lock2, 4627, 12) +OOVPA_XREF(D3DVertexBuffer_Lock2, 4627, 12, + + XREF_D3DVertexBuffer_Lock2, + XRefZero) // D3DVertexBuffer_Lock2B+0x00 : push ebx { 0x00, 0x53 }, @@ -1740,6 +2004,44 @@ OOVPA_NO_XREF(D3DVertexBuffer_Lock2, 4627, 12) { 0x49, 0x08 }, OOVPA_END; +// ****************************************************************** +// * D3DVertexBuffer_Lock +// ****************************************************************** +OOVPA_XREF(D3DVertexBuffer_Lock, 4627, 26, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0B, XREF_D3DVertexBuffer_Lock2 ), + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x14 }, + { 0x04, 0x8B }, + { 0x05, 0x4C }, + { 0x06, 0x24 }, + { 0x07, 0x04 }, + { 0x08, 0x50 }, + { 0x09, 0x51 }, + { 0x0A, 0xE8 }, + + { 0x0F, 0x8B }, + { 0x10, 0x4C }, + { 0x11, 0x24 }, + { 0x12, 0x08 }, + { 0x13, 0x8B }, + { 0x14, 0x54 }, + { 0x15, 0x24 }, + { 0x16, 0x10 }, + { 0x17, 0x03 }, + { 0x18, 0xC1 }, + { 0x19, 0x89 }, + { 0x1A, 0x02 }, + { 0x1B, 0xC2 }, + { 0x1C, 0x14 }, +OOVPA_END; + #if 0 // Used 3925 instead in 4627, 4721, 4831, 4928 // ****************************************************************** // * D3DResource_Release @@ -1851,6 +2153,7 @@ OOVPA_NO_XREF(D3DSurface_LockRect, 4627, 17) { 0x1E, 0x10 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -1867,11 +2170,15 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 4627, 10) { 0x63, 0x80 }, { 0xAE, 0xC2 }, OOVPA_END; +#endif // ****************************************************************** // * D3DTexture_GetSurfaceLevel2 // ****************************************************************** -OOVPA_NO_XREF(D3DTexture_GetSurfaceLevel2, 4627, 12) +OOVPA_XREF(D3DTexture_GetSurfaceLevel2, 4627, 12, + + XREF_D3DTexture_GetSurfaceLevel2, + XRefZero) // D3DTexture_GetSurfaceLevel2+0x00 : sub esp, 0x0C { 0x00, 0x83 }, @@ -1898,6 +2205,33 @@ OOVPA_NO_XREF(D3DTexture_GetSurfaceLevel2, 4627, 12) { 0x3E, 0xE8 }, OOVPA_END; +// ****************************************************************** +// * D3DTexture_GetSurfaceLevel +// ****************************************************************** +OOVPA_XREF(D3DTexture_GetSurfaceLevel, 4627, 13, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0B, XREF_D3DTexture_GetSurfaceLevel2 ), + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x08 }, + + { 0x0A, 0xE8 }, + + { 0x0F, 0x8B }, + { 0x10, 0x54 }, + { 0x11, 0x24 }, + { 0x12, 0x0C }, + { 0x13, 0x33 }, + { 0x14, 0xC9 }, + { 0x15, 0x85 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice_GetViewportOffsetAndScale@8 // ****************************************************************** @@ -1912,7 +2246,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewportOffsetAndScale, 4627, 8) { 0xDE, 0x14 }, { 0xFE, 0xE0 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4361 version // ****************************************************************** // * D3DDevice_SelectVertexShaderDirect @@ -1932,16 +2266,27 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4627, 7) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4627, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0xD8 }, + { 0x08, 0x20 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; + #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_GetVertexShaderConstant @@ -1972,6 +2317,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderInputDirect, 4627, 7) { 0x2F, 0x00 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderInput // ****************************************************************** @@ -1985,6 +2331,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 4627, 7) { 0x4C, 0x03 }, { 0x59, 0xD0 }, OOVPA_END; +#endif #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_RunVertexStateShader @@ -2000,6 +2347,7 @@ OOVPA_NO_XREF(D3DDevice_RunVertexStateShader, 4627, 7) { 0x4B, 0x08 }, OOVPA_END; #endif +#if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_EndPush // ****************************************************************** @@ -2008,20 +2356,21 @@ OOVPA_XREF(D3DDevice_EndPush, 4627, 12, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x06, XREF_D3DDEVICE ), // 1 + XREF_ENTRY( 0x06, XREF_D3DDEVICE ), - { 0x00, 0x8B }, // 2 - { 0x01, 0x44 }, // 3 - { 0x02, 0x24 }, // 4 - { 0x03, 0x04 }, // 5 - { 0x04, 0x8B }, // 6 - { 0x05, 0x0D }, // 7 - { 0x0A, 0x89 }, // 8 - { 0x0B, 0x01 }, // 9 - { 0x0C, 0xC2 }, // 10 - { 0x0D, 0x04 }, // 11 - { 0x0E, 0x00 }, // 12 + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + { 0x0A, 0x89 }, + { 0x0B, 0x01 }, + { 0x0C, 0xC2 }, + { 0x0D, 0x04 }, + { 0x0E, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_LoadVertexShader @@ -2037,6 +2386,7 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShader, 4627, 7) { 0x4B, 0x8D }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_LoadVertexShaderProgram // ****************************************************************** @@ -2051,7 +2401,8 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 4627, 8) { 0x25, 0xE0 }, { 0x32, 0x5F }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SelectVertexShader // ****************************************************************** @@ -2066,7 +2417,8 @@ OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 4627, 8) { 0x6E, 0x89 }, { 0x7E, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderDeclaration // ****************************************************************** @@ -2081,6 +2433,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 4627, 8) { 0xDE, 0x9A }, { 0xFE, 0x10 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetStreamSource2 (Maybe same in older versions) @@ -2125,7 +2478,6 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShader, 4627, 14) { 0xC6, 0x04 }, OOVPA_END; #endif - #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_Release @@ -2180,6 +2532,7 @@ OOVPA_NO_XREF(D3DDevice_SetBackBufferScale, 4627, 6) { 0xDE, 0x8B }, OOVPA_END; #endif + // ****************************************************************** // * CMiniport_IsFlipPending // ****************************************************************** @@ -2205,6 +2558,7 @@ OOVPA_NO_XREF(CMiniport_IsFlipPending, 4627, 18) // Was D3DDevice_Reset { 0x11, 0x81 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetPixelShaderProgram // ****************************************************************** @@ -2221,6 +2575,7 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 4627, 10) { 0x2B, 0x24 }, { 0x2C, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 4432 // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus @@ -2236,7 +2591,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 4627, 7) { 0x26, 0xD2 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_CreateStateBlock // ****************************************************************** @@ -2254,7 +2609,8 @@ OOVPA_NO_XREF(D3DDevice_CreateStateBlock, 4627, 11) { 0x8B, 0x33 }, { 0x8C, 0xC0 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_InsertCallback // ****************************************************************** @@ -2268,6 +2624,7 @@ OOVPA_NO_XREF(D3DDevice_InsertCallback, 4627, 7) { 0x58, 0x10 }, { 0x67, 0x07 }, OOVPA_END; +#endif #if 0 // obsolete, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_DrawRectPatch @@ -2285,6 +2642,32 @@ OOVPA_NO_XREF(D3DDevice_DrawRectPatch, 4627, 8) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_GetProjectionViewportMatrix +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4627, 16) // Up to 5233 + + { 0x02, 0x35 }, + + { 0x07, 0x57 }, + + { 0x0E, 0x30 }, // 4361 0x7004 + { 0x0F, 0x05 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0xB9 }, + { 0x13, 0x10 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0xF3 }, + { 0x18, 0xA5 }, + { 0x19, 0x5F }, + { 0x1A, 0x5E }, + { 0x1B, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** @@ -2298,7 +2681,8 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4627, 7) { 0x16, 0x00 }, { 0x1A, 0x5E }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetScissors@12 // ****************************************************************** @@ -2313,7 +2697,8 @@ OOVPA_NO_XREF(D3DDevice_SetScissors, 4627, 8) { 0xDE, 0x24 }, { 0xFE, 0x4C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette@8 // ****************************************************************** @@ -2327,6 +2712,7 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 4627, 7) { 0x6E, 0x8B }, { 0x7C, 0x89 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMask @@ -2343,6 +2729,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMask, 4627, 8) { 0x4E, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_LogicOp // ****************************************************************** @@ -2356,34 +2743,37 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_LogicOp, 4627, 7) { 0x40, 0x89 }, { 0x4E, 0x5E }, OOVPA_END; - +#endif +#if 0 // Moved to 4531 // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_KickOff, 4627, 13) +OOVPA_NO_XREF(D3DDevice_KickOff, 4531, 13) - // D3D::CDevice::KickOff+0x0B : mov edx, [ecx+0x35C] - { 0x0B, 0x8B }, - { 0x0C, 0x91 }, - { 0x0D, 0x5C }, - { 0x0E, 0x03 }, - { 0x0F, 0x00 }, - { 0x10, 0x00 }, + // D3D::CDevice::KickOff+0x0B : mov edx, [ecx+0x35C] + { 0x0B, 0x8B }, + { 0x0C, 0x91 }, + { 0x0D, 0x5C }, + { 0x0E, 0x03 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, - // D3D::CDevice::KickOff+0x1F : test ch, 0x20 - { 0x1F, 0xF6 }, - { 0x20, 0xC5 }, - { 0x21, 0x20 }, + // D3D::CDevice::KickOff+0x1F : test ch, 0x20 + { 0x1F, 0xF6 }, + { 0x20, 0xC5 }, + { 0x21, 0x20 }, - // D3D::CDevice::KickOff+0x2F : sfence - { 0x2F, 0x0F }, - { 0x30, 0xAE }, - { 0x31, 0xF8 }, + // D3D::CDevice::KickOff+0x2F : sfence + { 0x2F, 0x0F }, + { 0x30, 0xAE }, + { 0x31, 0xF8 }, - // D3D::CDevice::KickOff+0xE2 : retn - { 0xE2, 0xC3 } + // D3D::CDevice::KickOff+0xE2 : retn + { 0xE2, 0xC3 } OOVPA_END; +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * D3DDevice_KickPushBuffer // ****************************************************************** @@ -2392,12 +2782,13 @@ OOVPA_XREF(D3DDevice_KickPushBuffer, 4627, 4, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x07, XREF_D3D_KickOff ), + XREF_ENTRY( 0x07, XREF_D3D_CDevice_KickOff ), { 0x00, 0x8B }, { 0x01, 0x0D }, { 0x06, 0xE9 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetTexture2 @@ -2410,7 +2801,7 @@ OOVPA_XREF(D3DDevice_GetTexture2, 4627, 1 + 21, // Also for 5344, 5558, 5659, 57 XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived #endif -OOVPA_NO_XREF(D3DDevice_GetTexture2, 4627, 21) +OOVPA_NO_XREF(D3DDevice_GetTexture2, 4627, 23) // Up to 5233 { 0x00, 0x8B }, { 0x01, 0x44 }, @@ -2423,6 +2814,8 @@ OOVPA_NO_XREF(D3DDevice_GetTexture2, 4627, 21) { 0x0B, 0x8D }, { 0x0C, 0xB4 }, { 0x0D, 0x81 }, + { 0x0E, 0x38 }, // GetTexture2 380B vs GetPalette2 480B + { 0x0F, 0x0B }, { 0x10, 0x00 }, { 0x11, 0x00 }, @@ -2523,6 +2916,29 @@ OOVPA_NO_XREF(D3DDevice_SetStipple, 4627, 7) { 0x44, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4627, 13) + + { 0x00, 0x51 }, + { 0x01, 0x53 }, + { 0x02, 0x8B }, + { 0x03, 0x1D }, + + { 0x0E, 0x85 }, + { 0x0F, 0xC0 }, + { 0x10, 0x74 }, + { 0x11, 0x0F }, + { 0x12, 0x50 }, + { 0x13, 0xFF }, + { 0x14, 0x15 }, + + { 0x21, 0x8B }, + { 0x42, 0xE8 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -2537,7 +2953,31 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4627, 8) { 0xD7, 0x8B }, { 0xF6, 0xF9 }, OOVPA_END; +#endif +#if 0 // Moved to 4831 +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4831, 13) // Up to 5344 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x1E, 0x15 }, + + { 0x28, 0x00 }, + { 0x29, 0x85 }, + { 0x2A, 0xC0 }, + { 0x2B, 0x75 }, + { 0x2C, 0x0A }, + { 0x2D, 0xB8 }, + { 0x2E, 0x05 }, + { 0x2F, 0x40 }, + { 0x30, 0x00 }, + + { 0x36, 0xC3 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -2561,12 +3001,13 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4928, 14) { 0x72, 0xD3 }, { 0x73, 0xE2 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetSwapCallback // ****************************************************************** /* See the comment for the 4134 OOVPA signature for previous notes */ -OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4928, 12) +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 4627, 12) // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] { 0x00, 0x8B }, @@ -2604,6 +3045,31 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 4627, 8) { 0x31, 0xC2 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0B, XREF_D3DRS_MULTISAMPLERENDERTARGETMODE ), + + { 0x03, 0x04 }, + + { 0x19, 0x00 }, + { 0x1A, 0x00 }, + { 0x1B, 0x74 }, + { 0x1C, 0x14 }, + { 0x1D, 0x8D }, + { 0x1E, 0x90 }, + { 0x1F, 0x90 }, + { 0x20, 0x0A }, + + { 0x31, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode // ****************************************************************** @@ -2618,6 +3084,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, 8) { 0x28, 0x00 }, { 0x31, 0xC2 }, OOVPA_END; +#endif #if 0 // High detection accuracy, use 4134. // ****************************************************************** // * D3DDevice_BeginStateBlock @@ -2662,6 +3129,7 @@ OOVPA_NO_XREF(D3DDevice_ApplyStateBlock, 4627, 8) { 0xFE, 0x33 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_CaptureStateBlock // ****************************************************************** @@ -2676,13 +3144,14 @@ OOVPA_NO_XREF(D3DDevice_CaptureStateBlock, 4627, 8) { 0xD7, 0x89 }, { 0xF9, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * D3D::BlockOnTime // ****************************************************************** OOVPA_XREF(D3D_BlockOnTime, 4627, 6, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XRefZero) { 0x09, 0x34 }, @@ -2692,6 +3161,7 @@ OOVPA_XREF(D3D_BlockOnTime, 4627, 6, { 0xE3, 0x80 }, { 0xF5, 0x30 }, OOVPA_END; + #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_BlockOnFence @@ -2701,7 +3171,7 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 4627, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x08, XREF_D3D_BLOCKONTIME ), + XREF_ENTRY( 0x08, XREF_D3D_BlockOnTime ), { 0x00, 0x8B }, { 0x02, 0x24 }, @@ -2755,7 +3225,6 @@ OOVPA_NO_XREF(D3DDevice_CreateImageSurface, 4627, 9) { 0x2E, 0x00 }, OOVPA_END; - // ****************************************************************** // * D3DCubeTexture_GetCubeMapSurface // ****************************************************************** @@ -2828,7 +3297,10 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_CreatePalette2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreatePalette2, 4627, 8) +OOVPA_XREF(D3DDevice_CreatePalette2, 4627, 8, + + XREF_D3DDevice_CreatePalette2, + XRefZero) { 0x0A, 0x8B }, { 0x16, 0x74 }, @@ -2843,9 +3315,15 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_CreatePalette // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreatePalette, 4627, 10) +OOVPA_XREF(D3DDevice_CreatePalette, 4627, 11, - { 0x04, 0x50 }, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDevice_CreatePalette2 ), + + { 0x00, 0x8B }, + { 0x0A, 0x8B }, { 0x13, 0x95 }, { 0x14, 0xC2 }, @@ -2888,9 +3366,9 @@ OOVPA_XREF(D3DPalette_Lock, 4627, 8, { 0x08, 0x50 }, { 0x0A, 0xE8 }, { 0x0F, 0x8B }, + { 0x10, 0x54 }, + { 0x13, 0x89 }, { 0x14, 0x02 }, - { 0x16, 0x0C }, - { 0x17, 0x00 }, OOVPA_END; #if 0 // No longer used, replaced by generic 3911 version @@ -2923,7 +3401,7 @@ OOVPA_NO_XREF(D3DDevice_BeginPushBuffer, 4627, 7) { 0x59, 0x04 }, OOVPA_END; #endif - +#if 0 // Moved to 5028 // ****************************************************************** // * D3DDevice_EndPushBuffer // ****************************************************************** @@ -2937,6 +3415,7 @@ OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 4627, 7) { 0x6D, 0x8B }, { 0x7C, 0x88 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetPushBufferOffset @@ -2955,6 +3434,7 @@ OOVPA_NO_XREF(D3DDevice_GetPushBufferOffset, 4627, 10) { 0x1F, 0x03 }, OOVPA_END; +#if 0 // Moved to 4928 // ****************************************************************** // * D3DDevice_GetPersistedSurface2 // ****************************************************************** @@ -2967,6 +3447,7 @@ OOVPA_NO_XREF(D3DDevice_GetPersistedSurface2, 4928, 6) // For only on Unreal Cha { 0x04, 0x3A }, { 0x05, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetModelView @@ -2996,6 +3477,7 @@ OOVPA_NO_XREF(D3D_LazySetPointParams, 4627, 7) { 0x75, 0x41 }, OOVPA_END; +#if 0 // Moved to 4432 // ****************************************************************** // * D3DDevice_SetDepthClipPlanes // ****************************************************************** @@ -3019,7 +3501,7 @@ OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 4627, 15) { 0x18, 0x8B }, { 0x1F, 0x0C }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetDepthClipPlanes @@ -3035,6 +3517,7 @@ OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 4627, 7) { 0x8A, 0x00 }, OOVPA_END; #endif + // ****************************************************************** // * D3DDevice_GetMaterial // ****************************************************************** @@ -3082,6 +3565,7 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 4627, 8) { 0x1A, 0xC2 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_PrimeVertexCache // ****************************************************************** @@ -3096,7 +3580,7 @@ OOVPA_NO_XREF(D3DDevice_PrimeVertexCache, 4627, 8) { 0x3E, 0x00 }, { 0x4E, 0x89 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3D::BlockOnResource @@ -3132,6 +3616,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_SampleAlpha, 4627, 7) { 0x44, 0x83 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * CMiniport::InitHardware // ****************************************************************** @@ -3163,6 +3648,7 @@ OOVPA_NO_XREF(CMiniport_InitHardware, 4627, 24) // Also for 5344 { 0x1E, 0xA6 }, { 0x1F, 0xA4 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CreateVolumeTexture @@ -3205,174 +3691,227 @@ OOVPA_NO_XREF(D3DDevice_CreateCubeTexture, 4627, 11) { 0x1F, 0x4C }, OOVPA_END; +#if 0 // Moved to 4531 +// ****************************************************************** +// * D3DPalette_Lock +// ****************************************************************** +OOVPA_NO_XREF(D3DPalette_Lock, 4531, 17) + + { 0x00, 0xF6 }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x0C }, + { 0x04, 0xA0 }, + { 0x05, 0x56 }, + { 0x06, 0x8B }, + { 0x07, 0x74 }, + { 0x08, 0x24 }, + { 0x09, 0x08 }, + { 0x0A, 0x75 }, + { 0x0B, 0x06 }, + { 0x0C, 0x56 }, + { 0x0D, 0xE8 }, + + { 0x12, 0x8B }, + { 0x21, 0xC2 }, + { 0x22, 0x0C }, +OOVPA_END; +#endif + +// ****************************************************************** +// * IDirect3DVertexBuffer8_Lock +// ****************************************************************** +OOVPA_XREF(IDirect3DVertexBuffer8_Lock, 4627, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x03, XREF_D3DVertexBuffer_Lock2 ), + + { 0x00, 0x50 }, + { 0x01, 0x51 }, + { 0x02, 0xE8 }, + + { 0x07, 0x8B }, + { 0x08, 0x4C }, + { 0x09, 0x24 }, + { 0x0A, 0x04 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, +OOVPA_END; + // ****************************************************************** // * D3D8_4627 // ****************************************************************** +// No longer supported XDK 4831 to 4928 by HLEDB_v1 OOVPATable D3D8_4627[] = { REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), REGISTER_OOVPA(D3D_CreateDeviceX, 4627, DISABLED), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), - REGISTER_OOVPA(MakeRequestedSpace, 4134, PATCH), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 4134, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 4627, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_BeginPush, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_EndPush, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CopyRects, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetBackBuffer, 4627, DISABLED), // Called D3DDevice_GetBackBuffer2 - REGISTER_OOVPA(D3DDevice_SetViewport, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), REGISTER_OOVPA(D3D_CommonSetRenderTarget, 4627, XREF), REGISTER_OOVPA(D3D_CommonSetRenderTargetB, 4627, XREF), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4627, PATCH), REGISTER_OOVPA(D3DDevice_AddRef, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetRenderTarget, 4627, DISABLED), // Called D3DDevice_GetRenderTarget2 REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface, 4627, DISABLED), // Called D3DDevice_GetDepthStencilSurface2 - REGISTER_OOVPA(D3DDevice_GetTile, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 4627, XREF), REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 4627, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, ALIAS, D3DDevice_SetVertexShaderConstantNotInlineFast), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateTexture2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), + // REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), REGISTER_OOVPA(D3DDevice_CreateTexture, 4627, DISABLED), // Called D3DDevice_CreateTexture2 - REGISTER_OOVPA(D3DDevice_SetIndices, 4134, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTexture, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4034, PATCH), + // REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 4627, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_End, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 4627, DISABLED), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4531, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_Lock, 4627, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3DResource_GetType, 4034, DISABLED), - REGISTER_OOVPA(Get2DSurfaceDesc, 4627, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH), // Just calls Lock3DSurface - REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_GetSurfaceLevel, 4627, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_InsertCallback, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_InsertCallback, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4531, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3D_SetFence, 4134, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4134, PATCH), // Beware of the typo... + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 4531, PATCH), + // REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), // Beware of the typo... REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetStateVB, 4627, DISABLED), REGISTER_OOVPA(D3DDevice_SetStateUP, 4627, DISABLED), REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_PersistDisplay, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), + // REGISTER_OOVPA(D3DDevice_PersistDisplay, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), @@ -3381,14 +3920,16 @@ OOVPATable D3D8_4627[] = { REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3D_BlockOnTime, 4627, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH), // Just calls Lock3DSurface + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4627, PATCH),//TODO 4721,4928 REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 4627, PATCH), // Called D3DCubeTexture_GetCubeMapSurface2 @@ -3397,25 +3938,25 @@ OOVPATable D3D8_4627[] = { REGISTER_OOVPA(D3DDevice_GetPixelShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreatePalette2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreatePalette, 4627, PATCH), // Called D3DDevice_CreatePalette2 + REGISTER_OOVPA(D3DPalette_Lock, 4531, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), REGISTER_OOVPA(D3DPalette_Lock, 4627, PATCH), // Called D3DPalette_Lock2 REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetPersistedSurface2, 4928, PATCH), // For only on Unreal Championship + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), + // REGISTER_OOVPA(D3DDevice_GetPersistedSurface2, 4928, PATCH), // For only on Unreal Championship REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4627, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_KickPushBuffer, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_KickPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4627, PATCH), - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, PATCH), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(CMiniport_IsFlipPending, 4627, XREF), - REGISTER_OOVPA(CMiniport_InitHardware, 4627, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 4034, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_SampleAlpha, 4627, PATCH), @@ -3425,11 +3966,11 @@ OOVPATable D3D8_4627[] = { REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 4039, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl new file mode 100644 index 000000000..e55c4020b --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl @@ -0,0 +1,169 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4831.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_CreateTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateTexture2, 4831, 12) + + { 0x00, 0x56 }, + { 0x01, 0x57 }, + + { 0x10, 0x0F }, + { 0x11, 0x94 }, + { 0x12, 0xC2 }, + { 0x13, 0x8D }, + { 0x14, 0x4C }, + { 0x15, 0x24 }, + { 0x16, 0x28 }, + { 0x17, 0x51 }, + + { 0x51, 0x24 }, + { 0x52, 0xF7 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4831 version +// ****************************************************************** +// * D3DDevice_CreateTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateTexture2, 4831, 12) + + // D3DDevice_CreateTexture2+0x02 : lea eax, [esp+0x20] + { 0x04, 0x8D }, + { 0x07, 0x20 }, + + // D3DDevice_CreateTexture2+0x0E : setz dl + { 0x10, 0x0F }, + { 0x11, 0x94 }, + { 0x12, 0xC2 }, + + // D3DDevice_CreateTexture2+0x2A : push 0x00 + { 0x2E, 0x6A }, + { 0x2F, 0x00 }, + + // D3DDevice_CreateTexture2+0x53 : call [abs] + { 0x57, 0xE8 }, + + // D3DDevice_CreateTexture2+0x78 : jnz +0x0D + { 0x7C, 0x75 }, + { 0x7D, 0x0D }, + + // D3DDevice_CreateTexture2+0xAE : retn 0x1C + { 0x88, 0xC2 }, + { 0x89, 0x1C }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetTexture +// ****************************************************************** +#if 0 // Derived XREF_OFFSET_D3DDEVICE_M_TEXTURES is not Implemented yet. +OOVPA_XREF(D3DDevice_SetTexture, 4928, 1+15, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x13, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived +#endif +OOVPA_NO_XREF(D3DDevice_SetTexture, 4831, 15) + + { 0x0B, 0x56 }, + + { 0x21, 0x74 }, + { 0x22, 0x20 }, + + { 0x33, 0xF7 }, + { 0x34, 0xC1 }, + { 0x36, 0xFF }, + + { 0x39, 0x89 }, + { 0x3A, 0x10 }, + + { 0x50, 0x75 }, + { 0x51, 0x47 }, + { 0x52, 0x8B }, + { 0x53, 0x45 }, + { 0x54, 0x00 }, + { 0x55, 0x3B }, + { 0x56, 0x45 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4831, 13) // Up to 5344 + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x1E, 0x15 }, + + { 0x28, 0x00 }, + { 0x29, 0x85 }, + { 0x2A, 0xC0 }, + { 0x2B, 0x75 }, + { 0x2C, 0x0A }, + { 0x2D, 0xB8 }, + { 0x2E, 0x05 }, + { 0x2F, 0x40 }, + { 0x30, 0x00 }, + + { 0x36, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetPixelShaderConstant +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 4831, 13) + + // D3DDevice_SetPixelShaderConstant+0x1E : test eax, eax + { 0x1E, 0x85 }, + { 0x1F, 0xC0 }, + + // D3DDevice_SetPixelShaderConstant+0x32 : mov [ebp+0x10], eax + { 0x32, 0x89 }, + { 0x33, 0x45 }, + { 0x34, 0x10 }, + + // D3DDevice_SetPixelShaderConstant+0x84 : or eax, ebx + { 0x84, 0x0B }, + { 0x85, 0xC3 }, + + // D3DDevice_SetPixelShaderConstant+0xBD : mov dword ptr [eax], 0x406A0 + { 0xBD, 0xC7 }, + { 0xBE, 0x00 }, + { 0xBF, 0x60 }, + { 0xC0, 0x0A }, + { 0xC1, 0x04 }, + { 0xC2, 0x00 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4928.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4928.inl new file mode 100644 index 000000000..ca255eba7 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4928.inl @@ -0,0 +1,70 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.4928.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_GetPersistedSurface2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetPersistedSurface2, 4928, 6) // For only on Unreal Championship + + { 0x00, 0xFF }, + { 0x01, 0x25 }, + { 0x02, 0x04 }, + { 0x03, 0xC1 }, + { 0x04, 0x3A }, + { 0x05, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CMiniport_IsFlipPending +// ****************************************************************** +OOVPA_NO_XREF(CMiniport_IsFlipPending, 4928, 18) + + { 0x00, 0x8B }, + { 0x01, 0x81 }, + { 0x02, 0xBC }, + { 0x03, 0x01 }, + { 0x04, 0x00 }, + { 0x05, 0x00 }, + { 0x06, 0x83 }, + { 0x07, 0xE0 }, + { 0x08, 0x01 }, + { 0x09, 0x8D }, + { 0x0A, 0x44 }, + { 0x0B, 0x40 }, + { 0x0C, 0x5D }, + { 0x0D, 0x8B }, + { 0x0E, 0x04 }, + { 0x0F, 0x81 }, + { 0x10, 0xC3 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl index bc367aa5e..e8d276494 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl @@ -62,6 +62,7 @@ OOVPA_NO_XREF(Direct3D_CreateDevice, 5028, 20) // Also for 5120, 5233, 5344 (545 { 0x1F, 0xC7 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -84,7 +85,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 5028, 9) { 0x4E, 0xC2 }, { 0x4F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -98,7 +100,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5028, 7) { 0x58, 0x05 }, { 0x75, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable // ****************************************************************** @@ -113,6 +116,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 5028, 8) { 0x7C, 0xCE }, { 0x8E, 0x00 }, OOVPA_END; +#endif #if 0 // Moved to 4627 // ****************************************************************** // * D3DDevice_SetRenderState_SampleAlpha @@ -128,6 +132,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_SampleAlpha, 5028, 7) { 0x44, 0x83 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_CreateTexture2 // ****************************************************************** @@ -145,7 +150,34 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 5028, 11) // Also for 5233, 5344, 5558, { 0x42, 0x8B }, { 0x52, 0xF7 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5028, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x1954 + { 0x17, 0x05 }, + { 0x18, 0x54 }, + { 0x19, 0x19 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5028 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -159,7 +191,8 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5028, 7) { 0x1C, 0x50 }, { 0x23, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** @@ -185,7 +218,8 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5028, 12) { 0x40, 0xC2 }, { 0x41, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetRenderTarget2 // ****************************************************************** @@ -198,7 +232,8 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget2, 5028, 6) { 0x16, 0x8B }, { 0x17, 0xC6 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface2 // ****************************************************************** @@ -212,7 +247,8 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 5028, 7) { 0x1A, 0x8B }, { 0x1B, 0xC6 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetViewport // ****************************************************************** @@ -233,7 +269,8 @@ OOVPA_NO_XREF(D3DDevice_SetViewport, 5028, 9) { 0xE0, 0xE1 }, { 0xE1, 0x0F }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -259,7 +296,8 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5028, 12) { 0xFE, 0x4B }, { 0xFF, 0x68 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_LightEnable // ****************************************************************** @@ -288,7 +326,8 @@ OOVPA_NO_XREF(D3DDevice_LightEnable, 5028, 13) { 0xE1, 0xC2 }, { 0xE2, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -302,10 +341,12 @@ OOVPA_NO_XREF(D3DDevice_SetIndices, 5028, 7) { 0x64, 0x89 }, { 0x75, 0x10 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetTile // ****************************************************************** +// Accurately this one ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z OOVPA_NO_XREF(D3DDevice_SetTile, 5028, 11) // D3DDevice_SetTile+0x06 : sub esp, 0x18 @@ -325,8 +366,8 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 5028, 11) { 0x42, 0x00 }, { 0x43, 0x00 }, OOVPA_END; - - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -349,7 +390,8 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 5028, 13) { 0x23, 0xC2 }, { 0x24, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Clear // ****************************************************************** @@ -363,7 +405,8 @@ OOVPA_NO_XREF(D3DDevice_Clear, 5028, 8) { 0xD7, 0x75 }, { 0xF6, 0xFF }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_DrawVertices // ****************************************************************** @@ -377,6 +420,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVertices, 5028, 7) { 0x70, 0x75 }, { 0x83, 0x40 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_DrawIndexedVertices @@ -424,6 +468,7 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShader, 5028, 7) { 0x4B, 0x5E }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetShaderConstantMode // ****************************************************************** @@ -438,6 +483,7 @@ OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 5028, 8) { 0xD7, 0x89 }, { 0xF6, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVertexShader @@ -467,6 +513,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShader, 5028, 14) { 0xB4, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -480,18 +527,29 @@ OOVPA_NO_XREF(D3DDevice_Swap, 5028, 7) { 0xAC, 0xC6 }, { 0xC9, 0xC0 }, OOVPA_END; +#endif // ****************************************************************** // * D3D::SetFence // ****************************************************************** -OOVPA_XREF(D3D_SetFence, 5028, 7, +OOVPA_XREF(D3D_SetFence, 5028, 14, - XREF_D3D_SETFENCE, + XREF_D3D_SetFence, XRefZero) { 0x0E, 0x05 }, { 0x18, 0xC9 }, + + { 0x28, 0xBA }, + { 0x29, 0x90 }, + { 0x2A, 0x1D }, + { 0x2B, 0x04 }, + { 0x2C, 0x00 }, + + { 0x3C, 0x83 }, + { 0x3D, 0xE1 }, { 0x3E, 0x3F }, + { 0x5E, 0x28 }, { 0x86, 0x5D }, { 0x98, 0xE8 }, @@ -503,7 +561,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(D3D_BlockOnTime, 5028, 6, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XRefZero) { 0x09, 0x30 }, @@ -541,6 +599,7 @@ OOVPA_NO_XREF(D3D_KickOffAndWaitForIdle, 5028, 9) { 0x10, 0xC3 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -562,6 +621,7 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 5028, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVertexShaderConstantNotInline @@ -623,14 +683,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5028, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5028, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x80 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -652,23 +722,58 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5028, 7) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5028, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x6C }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3D::CommonSetRenderTarget +// ****************************************************************** +OOVPA_XREF(D3D_CommonSetRenderTarget, 5028, 12, + + XREF_D3D_CommonSetRenderTarget, + XRefZero) + + { 0x02, 0x1C }, + { 0x1A, 0x15 }, + + { 0x3D, 0x28 }, + { 0x3E, 0x05 }, + { 0x3F, 0x00 }, + { 0x40, 0x00 }, + { 0x41, 0x89 }, + { 0x42, 0x4C }, + { 0x43, 0x24 }, + { 0x44, 0x24 }, + + { 0x7E, 0xD8 }, + { 0x7F, 0x05 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5028 version // ****************************************************************** // * D3D_CommonSetRenderTarget // ****************************************************************** OOVPA_XREF(D3D_CommonSetRenderTarget, 5028, 10, - XREF_COMMONSETRENDERTARGET, + XREF_D3D_CommonSetRenderTarget, XRefZero) { 0x06, 0x24 }, @@ -682,7 +787,8 @@ OOVPA_XREF(D3D_CommonSetRenderTarget, 5028, 10, { 0x57, 0x10 }, { 0x67, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -699,30 +805,31 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5028, 10) { 0x23, 0x8B }, { 0x24, 0x83 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_LazySetStateVB // ****************************************************************** OOVPA_XREF(D3DDevice_LazySetStateVB, 5028, 12, - XREF_D3DCD_LAZYSETSTATEVB, + XREF_D3DDevice_LazySetStateVB, XRefZero) - { 0x00, 0x83 }, // 1 - { 0x01, 0xEC }, // 2 - { 0x02, 0x0C }, // 3 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x0C }, - { 0x34, 0xF6 }, // 4 - { 0x35, 0xC3 }, // 5 - { 0x36, 0x40 }, // 6 + { 0x34, 0xF6 }, + { 0x35, 0xC3 }, + { 0x36, 0x40 }, - { 0x57, 0x83 }, // 7 - { 0x58, 0xE5 }, // 8 - { 0x59, 0x10 }, // 9 + { 0x57, 0x83 }, + { 0x58, 0xE5 }, + { 0x59, 0x10 }, - { 0x79, 0x17 }, // 10 - { 0x7A, 0x40 }, // 11 - { 0x7B, 0x00 }, // 12 + { 0x79, 0x17 }, + { 0x7A, 0x40 }, + { 0x7B, 0x00 }, OOVPA_END; // ****************************************************************** @@ -733,20 +840,20 @@ OOVPA_XREF(D3DDevice_BeginPush, 5028, 10, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x09, XREF_D3DCD_LAZYSETSTATEVB ), // 1 + XREF_ENTRY( 0x09, XREF_D3DDevice_LazySetStateVB ), - { 0x00, 0x8B }, // 2 - { 0x01, 0x0D }, // 3 + { 0x00, 0x8B }, + { 0x01, 0x0D }, - { 0x06, 0x6A }, // 4 - { 0x07, 0x00 }, // 5 + { 0x06, 0x6A }, + { 0x07, 0x00 }, - { 0x11, 0x40 }, // 6 + { 0x11, 0x40 }, - { 0x12, 0x89 }, // 7 - { 0x13, 0x44 }, // 8 - { 0x14, 0x24 }, // 9 - { 0x15, 0x04 }, // 10 + { 0x12, 0x89 }, + { 0x13, 0x44 }, + { 0x14, 0x24 }, + { 0x15, 0x04 }, OOVPA_END; #if 0 @@ -763,11 +870,14 @@ OOVPA_NO_XREF(D3DDevice_BeginPush, 5028, 6) { 0x16, 0xE9 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_End // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_End, 5028, 12) +OOVPA_NO_XREF(D3DDevice_End, 5028, 13) + + // D3DDevice_End+0x00 : push esi + { 0x00, 0x56 }, // D3DDevice_End+0x13 : mov dword ptr [eax], 0x417FC { 0x13, 0xC7 }, @@ -789,6 +899,7 @@ OOVPA_NO_XREF(D3DDevice_End, 5028, 12) // D3DDevice_End+0x3C : retn { 0x3C, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_IsFencePending @@ -807,6 +918,7 @@ OOVPA_XREF(D3DDevice_IsFencePending, 5028, 6, { 0x1C, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4531 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -821,6 +933,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5028, 8) { 0x80, 0xCA }, { 0x88, 0x8B }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetOverlayUpdateStatus @@ -848,10 +961,14 @@ OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 5028, 12) { 0x1C, 0xC3 }, OOVPA_END; #endif + // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_KickOff, 5028, 8) +OOVPA_XREF(D3DDevice_KickOff, 5028, 8, + + XREF_D3D_CDevice_KickOff, + XRefZero) { 0x07, 0x08 }, { 0x17, 0xC4 }, @@ -863,6 +980,7 @@ OOVPA_NO_XREF(D3DDevice_KickOff, 5028, 8) { 0x7E, 0xBA }, OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetLightEnable // ****************************************************************** @@ -871,7 +989,7 @@ OOVPA_XREF(D3DDevice_GetLightEnable, 5028, 1+26, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x5D, XREF_D3DDEVICE), + XREF_ENTRY( 0x05, XREF_D3DDEVICE), { 0x00, 0x8B }, { 0x01, 0x4C }, @@ -907,6 +1025,7 @@ OOVPA_XREF(D3DDevice_GetLightEnable, 5028, 1+26, { 0x1E, 0xC0 }, { 0x1F, 0x74 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BeginStateBig @@ -1032,9 +1151,9 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 5028, 17) // Also for 5120, 5233 OOVPA_END; // ****************************************************************** -// * MakeRequestedSpace +// * D3D_MakeRequestedSpace // ****************************************************************** -OOVPA_XREF(MakeRequestedSpace, 5028, 28, // Also for 5344 +OOVPA_XREF(D3D_MakeRequestedSpace, 5028, 28, // Also for 5344 XREF_D3D_MakeRequestedSpace, XRefZero) @@ -1070,6 +1189,7 @@ OOVPA_XREF(MakeRequestedSpace, 5028, 28, // Also for 5344 { 0x1F, 0x03 }, OOVPA_END; +#if 0 // Moved to 5120 // ****************************************************************** // * D3DDevice_RunPushBuffer // ****************************************************************** @@ -1091,6 +1211,31 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 5120, 13) { 0x94, 0x2C }, { 0x95, 0x8B }, OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetShaderConstantMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5028, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0xD8 }, + { 0x08, 0x14 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; // ****************************************************************** // * Rollback support signature(s) @@ -1100,170 +1245,174 @@ OOVPA_END; // ****************************************************************** // * D3D8_5028 // ****************************************************************** +// No longer supported XDK 5120 by HLEDB_v1 OOVPATable D3D8_5028[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 4627, XREF), + REGISTER_OOVPA(CMiniport_InitHardware, 4034, XREF), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, XREF), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, XREF), - REGISTER_OOVPA(MakeRequestedSpace, 5028, PATCH), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 5028, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 5028, PATCH), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3911, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH), REGISTER_OOVPA(D3DDevice_LazySetStateVB, 5028, XREF), REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_EndPush, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CopyRects, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetViewport, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), REGISTER_OOVPA(D3D_CommonSetRenderTarget, 5028, XREF), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4627, PATCH), REGISTER_OOVPA(D3DDevice_AddRef, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 4627, XREF), + REGISTER_OOVPA(D3D_SetTileNoWait, 4627, XREF), + REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 4627, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4928, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, ALIAS, D3DDevice_SetVertexShaderConstantNotInlineFast), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 5028, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBig, 5028, XREF), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_End, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 4627, DISABLED), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4531, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4531, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetLightEnable, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetLightEnable, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_LightEnable, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3DResource_GetType, 4034, DISABLED), // I forget why I had this in here... - REGISTER_OOVPA(Get2DSurfaceDesc, 5028, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH), // Just calls Lock3DSurface - REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4432, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3D_SetFence, 5028, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, PATCH), REGISTER_OOVPA(D3DDevice_KickOff, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4134, PATCH), // Beware of the typo... + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), // Beware of the typo... REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetStateVB, 4627, DISABLED), REGISTER_OOVPA(D3DDevice_SetStateUP, 4627, DISABLED), REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_PersistDisplay, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_PersistDisplay, 4831, PATCH), REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3D_BlockOnTime, 5028, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH), // Just calls Lock3DSurface + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), @@ -1271,30 +1420,29 @@ OOVPATable D3D8_5028[] = { REGISTER_OOVPA(D3DDevice_CreatePalette2, 4627, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_KickPushBuffer, 4627, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_KickPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4627, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_SetRenderState_SampleAlpha, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), + REGISTER_OOVPA(D3D_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, DISABLED), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3911, DISABLED), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), REGISTER_OOVPA(D3DDevice_IsBusy, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), // ****************************************************************** // Provisional registration functions in XDK 5028 @@ -1308,12 +1456,12 @@ OOVPATable D3D8_5028[] = { REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5120, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), + // REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5120, PATCH), REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4627, PATCH), // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5120.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5120.inl new file mode 100644 index 000000000..93669d3e9 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5120.inl @@ -0,0 +1,70 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.5120.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_RunPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 5120, 13) + + { 0x0B, 0x57 }, + { 0x10, 0xE8 }, + + { 0x15, 0x8B }, + { 0x1F, 0x01 }, + + { 0x8D, 0x8B }, + { 0x8E, 0x4E }, + { 0x8F, 0x30 }, + { 0x90, 0x8B }, + { 0x91, 0x11 }, + { 0x92, 0x8B }, + { 0x93, 0x4E }, + { 0x94, 0x2C }, + { 0x95, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CopyRects +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CopyRects, 5120, 8) + + { 0x1E, 0xE1 }, + { 0x42, 0x84 }, + { 0x5E, 0x24 }, + { 0x7E, 0x8B }, + { 0x9E, 0x1C }, + { 0xBE, 0x00 }, + { 0xDE, 0xBD }, + { 0xFE, 0x4C }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.h index 766f94047..5642fa50a 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.h +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.h @@ -36,7 +36,9 @@ #include "OOVPA.h" +#if 0 // No longer used, replaced by generic 4034 version extern LOOVPA<2+13> D3DDevice_SetRenderState_CullMode_5233; +#endif extern OOVPATable D3D8_5233[]; extern uint32 D3D8_5233_SIZE; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl index 8bb87fc52..fe85d3ed2 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus // ****************************************************************** @@ -45,7 +46,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 5233, 7) { 0x2E, 0x89 }, { 0x36, 0x00 }, OOVPA_END; - +#endif #if 0 // Moved to 4627 // ****************************************************************** // * D3DDevice_SetVertexShaderConstantNotInlineFast @@ -93,7 +94,7 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShader, 5233, 7) { 0xE1, 0xF6 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_CreateTexture2 // ****************************************************************** @@ -123,13 +124,14 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 5233, 12) { 0xB2, 0xC2 }, { 0xB3, 0x1C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_CullMode // ****************************************************************** OOVPA_XREF(D3DDevice_SetRenderState_CullMode, 5233, 2+13, - XREF_SETRENDERSTATE_CULLMODE, + XREF_D3DDevice_SetRenderState_CullMode, XRefTwo) XREF_ENTRY(0x03, XREF_D3DDEVICE), // Derived @@ -156,7 +158,8 @@ OOVPA_XREF(D3DDevice_SetRenderState_CullMode, 5233, 2+13, { 0x55, 0x04 }, { 0x56, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_SetTexture // ****************************************************************** @@ -173,7 +176,8 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 5233, 10) { 0xDE, 0xFF }, { 0xFE, 0xE2 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -189,7 +193,29 @@ OOVPA_NO_XREF(D3DDevice_Swap, 5233, 9) { 0x7C, 0x6A }, { 0xA6, 0xE8 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_UpdateOverlay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5233, 12) // Up to 5849 + + { 0x00, 0x83 }, + { 0x13, 0x89 }, + { 0x14, 0x88 }, + { 0x74, 0x4F }, + + { 0x80, 0xE1 }, + { 0x81, 0xFE }, + { 0x82, 0x0F }, + { 0x83, 0xAF }, + { 0x84, 0xCA }, + { 0x85, 0x25 }, + { 0x86, 0xFF }, + { 0x87, 0xFF }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5233 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -212,7 +238,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5233, 11) { 0xB2, 0x30 }, { 0xB3, 0x89 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetOverlayUpdateStatus @@ -240,6 +266,7 @@ OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 5233, 12) { 0x1C, 0xC3 }, OOVPA_END; #endif + // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -281,11 +308,11 @@ OOVPA_NO_XREF(D3DDevice_Release, 5233, 8) { 0x36, 0xC3 }, OOVPA_END; #endif - +#if 0 // Moved to 5120 // ****************************************************************** // * D3DDevice_CopyRects // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CopyRects, 5233, 8) +OOVPA_NO_XREF(D3DDevice_CopyRects, 5120, 8) { 0x1E, 0xE1 }, { 0x42, 0x84 }, @@ -296,7 +323,8 @@ OOVPA_NO_XREF(D3DDevice_CopyRects, 5233, 8) { 0xDE, 0xBD }, { 0xFE, 0x4C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetScissors // ****************************************************************** @@ -311,7 +339,8 @@ OOVPA_NO_XREF(D3DDevice_SetScissors, 5233, 8) { 0xD4, 0x1C }, { 0xFE, 0x4C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset // ****************************************************************** @@ -331,6 +360,7 @@ OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 5233, 8) { 0x46, 0xC2 }, { 0x47, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMode @@ -363,6 +393,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 5233, 13) { 0x26, 0x00 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode // ****************************************************************** @@ -381,13 +412,14 @@ OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5233, 8, { 0x2C, 0xE8 }, { 0x32, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5028 version // ****************************************************************** // * D3D::CommonSetRenderTarget // ****************************************************************** OOVPA_XREF(D3D_CommonSetRenderTarget, 5233, 8, - XREF_COMMONSETRENDERTARGET, + XREF_D3D_CommonSetRenderTarget, XRefZero) { 0x02, 0x1C }, @@ -399,7 +431,8 @@ OOVPA_XREF(D3D_CommonSetRenderTarget, 5233, 8, { 0xDC, 0xD9 }, { 0xFF, 0x75 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_BlockOnFence // ****************************************************************** @@ -408,7 +441,7 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 5233, 6, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x08, XREF_D3D_BLOCKONTIME ), + XREF_ENTRY( 0x08, XREF_D3D_BlockOnTime ), { 0x00, 0x8B }, { 0x02, 0x24 }, @@ -416,7 +449,8 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 5233, 6, { 0x06, 0x50 }, { 0x0D, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -440,7 +474,7 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 5233, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetFlickerFilter @@ -589,6 +623,7 @@ OOVPA_NO_XREF(D3DDevice_GetVisibilityTestResult, 5233, 7) { 0x5F, 0x0C }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_SetPixelShaderConstant // ****************************************************************** @@ -604,141 +639,160 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 5233, 9) { 0x64, 0xC0 }, { 0x68, 0x2D }, OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4134 version +// ****************************************************************** +// * D3DDevice_EndPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 5233, 7) + + { 0x11, 0x8D }, + { 0x22, 0x50 }, + { 0x34, 0x0C }, + { 0x46, 0x08 }, + { 0x58, 0x00 }, + { 0x6D, 0x8B }, + { 0x7C, 0x88 }, +OOVPA_END; +#endif // ****************************************************************** // * D3D8_5233 // ****************************************************************** OOVPATable D3D8_5233[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 4627, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 4034, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 5233, PATCH), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetScissors, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5028, PATCH), - REGISTER_OOVPA(D3D_CommonSetRenderTarget, 5233, XREF), + REGISTER_OOVPA(D3DDevice_CopyRects, 5120, PATCH), + REGISTER_OOVPA(D3DDevice_SetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), + REGISTER_OOVPA(D3D_CommonSetRenderTarget, 5028, XREF), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4627, PATCH), REGISTER_OOVPA(D3DDevice_AddRef, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 4627, XREF), + REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 4627, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, ALIAS, D3DDevice_SetVertexShaderConstantNotInlineFast), - REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DeletePixelShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 5028, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBig, 5028, XREF), - REGISTER_OOVPA(D3DDevice_End, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_End, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 4627, DISABLED), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), - REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_LightEnable, 5028, PATCH), + REGISTER_OOVPA(D3D_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_LightEnable, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4627, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, DISABLED), + REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3911, DISABLED), REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5028, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetViewport, 5028, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetViewport, 4034, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 5028, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH),// Just calls Lock3DSurface + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5028, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), REGISTER_OOVPA(D3D_SetFence, 5028, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, PATCH), REGISTER_OOVPA(D3D_BlockOnTime, 5028, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4134, PATCH), // Beware of the typo... - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 4034, PATCH), // Beware of the typo... + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), // Was 4627 @@ -750,64 +804,62 @@ OOVPATable D3D8_5233[] = { REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5120, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_IsBusy, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), REGISTER_OOVPA(D3DDevice_CreatePalette2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH),// Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_PersistDisplay, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_PersistDisplay, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4039, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_KickOff, 5028, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 5028, PATCH), - REGISTER_OOVPA(MakeRequestedSpace, 5028, PATCH), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 5028, PATCH), REGISTER_OOVPA(D3DDevice_LazySetStateVB, 5028, XREF), REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4627, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), // ****************************************************************** // Provisional registration functions in XDK 5233 diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl index 9a06dd46a..4189c26a7 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl @@ -64,9 +64,9 @@ OOVPA_END; #endif #if 0 // Moved to 5028 // ****************************************************************** -// * MakeRequestedSpace +// * D3D_MakeRequestedSpace // ****************************************************************** -OOVPA_XREF(MakeRequestedSpace, 5344, 28, +OOVPA_XREF(D3D_MakeRequestedSpace, 5344, 28, XREF_D3D_MakeRequestedSpace, XRefZero) @@ -102,6 +102,7 @@ OOVPA_XREF(MakeRequestedSpace, 5344, 28, { 0x1F, 0x03 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -125,7 +126,42 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5344, 10) { 0x23, 0xFA }, { 0x24, 0x20 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_SetLight +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetLight, 5344, 15) + + // D3DDevice_SetLight+0x1f : add REG, 0x10 + { 0x1F, 0x83 }, + { 0x21, 0x10 }, + + // D3DDevice_SetLight+0x22 : and REG, 0xfffffff0 + { 0x22, 0x83 }, + { 0x24, 0xf0 }, + + // D3DDevice_SetLight+0x2c : push 0x24800000 + { 0x2C, 0x68 }, + { 0x2D, 0x00 }, + { 0x2E, 0x00 }, + { 0x2F, 0x80 }, + { 0x30, 0x24 }, + + // D3DDevice_SetLight+0x65 : jz +8 + { 0x65, 0x74 }, + { 0x66, 0x08 }, + + // D3DDevice_SetLight+0xe3 : jz +8 + { 0xE3, 0x74 }, + { 0xE4, 0x08 }, + + // D3DDevice_SetLight+0xfe : shr ???, 2 + { 0xFE, 0xC1 }, + { 0x100, 0x02 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -140,6 +176,7 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5344, 8) { 0xDE, 0x03 }, { 0xFE, 0xC1 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode @@ -188,6 +225,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TwoSidedLighting, 5344, 13) { 0x7E, 0x04 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset // ****************************************************************** @@ -201,7 +239,8 @@ OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 5344, 7) { 0x3A, 0x8B }, { 0x44, 0x06 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -215,7 +254,8 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 5344, 7) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** @@ -229,6 +269,7 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5344, 7) { 0x34, 0x15 }, { 0x3D, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_LightEnable @@ -280,42 +321,42 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetLightEnable // ****************************************************************** -OOVPA_XREF(D3DDevice_GetLightEnable, 5344, 1+29, +OOVPA_XREF(D3DDevice_GetLightEnable, 5344, 1+26, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x6D, XREF_D3DDEVICE), + XREF_ENTRY( 0x06, XREF_D3DDEVICE), - { 0x00, 0x8B }, - { 0x01, 0x44 }, - { 0x02, 0x24 }, - { 0x03, 0x04 }, - { 0x04, 0x8B }, - { 0x05, 0x0D }, + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, - { 0x0A, 0x8B }, - { 0x0B, 0x91 }, - { 0x0C, 0x8C }, - { 0x0D, 0x03 }, - { 0x0E, 0x00 }, - { 0x0F, 0x00 }, - { 0x10, 0x8D }, - { 0x11, 0x04 }, - { 0x12, 0xC0 }, - { 0x13, 0xC1 }, - { 0x14, 0xE0 }, - { 0x15, 0x04 }, - { 0x16, 0x56 }, - { 0x17, 0x8B }, - { 0x18, 0xB4 }, - { 0x19, 0x02 }, - { 0x1A, 0x8C }, - { 0x1B, 0x00 }, - { 0x1C, 0x00 }, - { 0x1D, 0x00 }, - { 0x1E, 0x8B }, - { 0x1F, 0x54 }, + { 0x0A, 0x8B }, + { 0x0B, 0x91 }, + //{ 0x0C, 0x8C }, 5344 0x8C03 vs 5558 0xA007 + //{ 0x0D, 0x03 }, + { 0x0E, 0x00 }, + { 0x0F, 0x00 }, + { 0x10, 0x8D }, + { 0x11, 0x04 }, + { 0x12, 0xC0 }, + { 0x13, 0xC1 }, + { 0x14, 0xE0 }, + { 0x15, 0x04 }, + { 0x16, 0x56 }, + { 0x17, 0x8B }, + { 0x18, 0xB4 }, + { 0x19, 0x02 }, + { 0x1A, 0x8C }, + { 0x1B, 0x00 }, + { 0x1C, 0x00 }, + { 0x1D, 0x00 }, + { 0x1E, 0x8B }, + { 0x1F, 0x54 }, /* { 0x3E, 0xC7 }, { 0x5E, 0xC7 }, @@ -352,6 +393,28 @@ OOVPA_NO_XREF(D3DDevice_SetSoftDisplayFilter, 5344, 12) { 0x4F, 0x04 }, OOVPA_END; #endif + +// ****************************************************************** +// * D3DDevice_SetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetMaterial, 5344, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0xE0 }, + { 0x0F, 0x0A }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic another 5344 version // ****************************************************************** // * D3DDevice_SetMaterial // ****************************************************************** @@ -367,7 +430,8 @@ OOVPA_NO_XREF(D3DDevice_SetMaterial, 5344, 9) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -389,7 +453,7 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 5344, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetFlickerFilter @@ -415,6 +479,7 @@ OOVPA_NO_XREF(D3DDevice_SetFlickerFilter, 5344, 12) { 0x40, 0x04 }, OOVPA_END; #endif + // ****************************************************************** // * D3DDevice_SetViewport // ****************************************************************** @@ -430,6 +495,31 @@ OOVPA_NO_XREF(D3DDevice_SetViewport, 5344, 8) { 0xFE, 0x14 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetTransform +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetTransform, 5344, 15) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x54 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + { 0x08, 0x53 }, + { 0x09, 0x8B }, + { 0x0A, 0x1D }, + + { 0x0F, 0x56 }, + { 0x1F, 0xF2 }, + + { 0x2F, 0x0B }, + { 0x35, 0x35 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_SetTransform // ****************************************************************** @@ -445,6 +535,7 @@ OOVPA_NO_XREF(D3DDevice_SetTransform, 5344, 9) { 0xDE, 0x42 }, { 0xFE, 0xCB }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetScissors @@ -489,6 +580,7 @@ OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5344, 7) { 0x10, 0xC2 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 5233 version // ****************************************************************** // * D3DDevice_SetRenderTargetFast // ****************************************************************** @@ -503,7 +595,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTargetFast, 5344, 8) { 0xD7, 0x0C }, { 0xF6, 0xC5 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SelectVertexShader // ****************************************************************** @@ -518,12 +611,14 @@ OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 5344, 8) { 0x38, 0x83 }, { 0x3C, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderTarget // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 5344, 8) +OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 5344, 9) + { 0x00, 0x83 }, { 0x08, 0x56 }, { 0x09, 0x33 }, { 0x0A, 0xF6 }, @@ -534,6 +629,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 5344, 8) { 0x34, 0x14 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -557,7 +653,8 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 5344, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5028 version // ****************************************************************** // * D3DDevice_IsBusy // ****************************************************************** @@ -576,11 +673,15 @@ OOVPA_NO_XREF(D3DDevice_IsBusy, 5344, 12) { 0x18, 0x06 }, { 0x1C, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CreateVertexBuffer2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2, 5344, 9) +OOVPA_XREF(D3DDevice_CreateVertexBuffer2, 5344, 9, + + XREF_D3DDevice_CreateVertexBuffer2, + XRefZero) { 0x08, 0xE8 }, { 0x0E, 0xF0 }, @@ -608,6 +709,32 @@ OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5344, 8) { 0x3C, 0x68 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_DrawVerticesUP +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5344, 16) + + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x14 }, + + { 0x25, 0x8B }, + { 0x26, 0x4D }, + { 0x27, 0x08 }, + { 0x28, 0x8B }, + { 0x29, 0x5D }, + { 0x2A, 0x10 }, + { 0x2B, 0x8B }, + { 0x2C, 0x75 }, + { 0x2D, 0x14 }, + { 0x2E, 0xC7 }, + { 0x2F, 0x00 }, + + { 0x50, 0xC3 }, + { 0x51, 0x8B }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -629,6 +756,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5344, 10) { 0xC5, 0xFE }, { 0xC6, 0x80 }, OOVPA_END; +#endif #if 0 // Used 4361 // ****************************************************************** // * D3DDevice_SetVertexDataColor @@ -645,6 +773,32 @@ OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 5344, 8) { 0x1C, 0x19 }, OOVPA_END; #endif + +// ****************************************************************** +// * D3DDevice_End +// ****************************************************************** +//Generic OOVPA as of 5344 and newer. +OOVPA_NO_XREF(D3DDevice_End, 5344, 14) + + { 0x08, 0x06 }, + { 0x0A, 0x46 }, + { 0x0E, 0xE8 }, + { 0x15, 0xFC }, + { 0x17, 0x04 }, + + { 0x34, 0x4E }, + { 0x35, 0x08 }, + { 0x36, 0x5E }, + { 0x37, 0x74 }, + { 0x38, 0x07 }, + { 0x39, 0x6A }, + { 0x3A, 0x01 }, + { 0x3B, 0xE8 }, + + { 0x40, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_End // ****************************************************************** @@ -660,6 +814,7 @@ OOVPA_NO_XREF(D3DDevice_End, 5344, 9) { 0x1B, 0x04 }, { 0x40, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CreatePixelShader @@ -685,6 +840,7 @@ OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 5344, 11) { 0x45, 0xC2 }, { 0x46, 0x08 }, OOVPA_END; + #if 0 // Moved to 5233 // ****************************************************************** // * D3DDevice_SetPixelShaderConstant @@ -729,6 +885,7 @@ OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 5344, 12) { 0x1C, 0xC3 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 5233 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -745,7 +902,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5344, 10) { 0x80, 0xE1 }, { 0x84, 0xCA }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * IDirectD3DDevice8_Release @@ -777,6 +934,7 @@ OOVPA_NO_XREF(D3DDevice_GetVisibilityTestResult, 5344, 7) { 0x5F, 0x0C }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -790,6 +948,7 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5344, 7) { 0x4E, 0xF5 }, { 0x6E, 0x01 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_DeleteVertexShader @@ -851,6 +1010,7 @@ OOVPA_NO_XREF(D3DDevice_GetMaterial, 5344, 8) { 0x1A, 0xC2 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DPalette_Lock // ****************************************************************** @@ -865,6 +1025,7 @@ OOVPA_NO_XREF(D3DPalette_Lock, 5344, 8) { 0x17, 0xC2 }, { 0x18, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetBackMaterial @@ -881,6 +1042,27 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5344, 8) { 0x1A, 0xC2 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5344, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0B }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5344 version // ****************************************************************** // * D3DDevice_SetBackMaterial // ****************************************************************** @@ -895,7 +1077,34 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5344, 8) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_GetProjectionViewportMatrix +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 5344, 16) // Up to 5455 + + { 0x02, 0x35 }, + + { 0x07, 0x57 }, + + { 0x0E, 0x60 }, // 4361 0x7004 + { 0x0F, 0x05 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0xB9 }, + { 0x13, 0x10 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0xF3 }, + { 0x18, 0xA5 }, + { 0x19, 0x5F }, + { 0x1A, 0x5E }, + { 0x1B, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** @@ -909,7 +1118,8 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 5344, 7) { 0x16, 0x00 }, { 0x1A, 0x5E }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -926,11 +1136,15 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 5344, 10) { 0x11, 0x04 }, { 0x1F, 0xF3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CreateIndexBuffer2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer2, 5344, 7) +OOVPA_XREF(D3DDevice_CreateIndexBuffer2, 5344, 7, + + XREF_D3DDevice_CreateIndexBuffer2, + XRefZero) { 0x05, 0x00 }, { 0x0C, 0x50 }, @@ -941,6 +1155,7 @@ OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer2, 5344, 7) { 0x2F, 0x48 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_SetTexture // ****************************************************************** @@ -983,7 +1198,34 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 5344, 26) { 0x1E, 0x44 }, { 0x1F, 0x24 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5344, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x198C + { 0x17, 0x05 }, + { 0x18, 0x8C }, + { 0x19, 0x19 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5344 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -1003,6 +1245,7 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5344, 13) { 0x1E, 0x15 }, { 0x23, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BeginPush @@ -1012,22 +1255,47 @@ OOVPA_XREF(D3DDevice_BeginPush, 5344, 10, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x09, XREF_D3DCD_LAZYSETSTATEVB ), // 1 + XREF_ENTRY( 0x09, XREF_D3DDevice_LazySetStateVB ), - { 0x00, 0x8B }, // 2 - { 0x01, 0x0D }, // 3 + { 0x00, 0x8B }, + { 0x01, 0x0D }, - { 0x06, 0x6A }, // 4 - { 0x07, 0x00 }, // 5 + { 0x06, 0x6A }, + { 0x07, 0x00 }, - { 0x11, 0x40 }, // 6 + { 0x11, 0x40 }, - { 0x12, 0x89 }, // 7 - { 0x13, 0x44 }, // 8 - { 0x14, 0x24 }, // 9 - { 0x15, 0x04 }, // 10 + { 0x12, 0x89 }, + { 0x13, 0x44 }, + { 0x14, 0x24 }, + { 0x15, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 5344, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x0520] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x20 }, + { 0x08, 0x05 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x0C : mov [eax+0x0520], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0x20 }, + { 0x0F, 0x05 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 4134 version // ****************************************************************** // * D3DDevice_AddRef // ****************************************************************** @@ -1046,24 +1314,69 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 5344, 10) { 0x13, 0xC1 }, { 0x14, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5344, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5344, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x08 }, { 0x08, 0x15 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTexture2, 5344, 23) // Up to 5455 + + // XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB4 }, + { 0x0D, 0x81 }, + { 0x0E, 0x68 }, // GetTexture2 680B vs GetPalette2 780B + { 0x0F, 0x0B }, + + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x8B }, + { 0x13, 0x06 }, + { 0x14, 0x85 }, + { 0x15, 0xC0 }, + { 0x16, 0x74 }, + + { 0x18, 0x50 }, + { 0x19, 0xE8 }, + + { 0x1E, 0x8B }, + { 0x1F, 0x06 }, +// { 0x21, 0xC2 }, +OOVPA_END; + // ****************************************************************** // * Rollback support signature(s) // ****************************************************************** @@ -1074,34 +1387,35 @@ OOVPA_END; // ****************************************************************** OOVPATable D3D8_5344[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 4627, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 4034, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 5233, PATCH), - REGISTER_OOVPA(MakeRequestedSpace, 5028, PATCH), - REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 5028, PATCH), + REGISTER_OOVPA(D3D_CheckDeviceFormat, 3911, DISABLED), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 5120, PATCH), REGISTER_OOVPA(D3DDevice_SetScissors, 5344, PATCH), // Was 5233 - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5344, PATCH), REGISTER_OOVPA(D3DDevice_AddRef, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 4627, XREF), + REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 5344, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), @@ -1110,98 +1424,99 @@ OOVPATable D3D8_5344[] = { REGISTER_OOVPA(D3DDevice_DeletePixelShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 5028, PATCH), // Was 4627 - REGISTER_OOVPA(D3DDevice_SetIndices, 5028, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 5233, PATCH), // Was 4928 - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), // Was 4627 + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), // Was 4928 + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), // Was 4627 REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBig, 5028, XREF), REGISTER_OOVPA(D3DDevice_End, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5344, DISABLED), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5344, PATCH), // Was 5233 + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), // Was 5233 REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5233, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5344, PATCH), // Was 5233 - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTransform, 5344, PATCH), // Was 4134 REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), - REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), + REGISTER_OOVPA(D3D_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetLight, 5344, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 5344, PATCH), // Was 5233 REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 5344, PATCH), // Was 4627 - REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, DISABLED), + REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3911, DISABLED), REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5344, PATCH), // 5233 - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5344, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), // 5233 + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 5344, PATCH), // Was 4627 + REGISTER_OOVPA(D3DDevice_GetViewport, 3911, PATCH), // Was 4627 REGISTER_OOVPA(D3DDevice_SetViewport, 5344, PATCH), // Was 5233 - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 5344, PATCH), // Was 5233 - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), // Was 5233 + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4432, PATCH), REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5028, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5344, PATCH), // Was 5233 + REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4034, PATCH), // Was 5233 REGISTER_OOVPA(D3D_SetFence, 5028, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, PATCH), REGISTER_OOVPA(D3D_BlockOnTime, 5028, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5344, PATCH), // 4134 - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3DDevice_LazySetStateVB, 5028, XREF), REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), @@ -1212,52 +1527,52 @@ OOVPATable D3D8_5344[] = { REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5233, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 5028, PATCH), REGISTER_OOVPA(D3DDevice_CreatePalette2, 5344, PATCH), REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_PersistDisplay, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_PersistDisplay, 4831, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 5344, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 5344, PATCH), - REGISTER_OOVPA(D3DPalette_Lock, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 3911, PATCH), + REGISTER_OOVPA(D3DPalette_Lock, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTexture2, 5344, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5120, PATCH), REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 4627, PATCH), REGISTER_OOVPA(D3DDevice_DrawTriPatch, 3911, DISABLED), @@ -1266,23 +1581,22 @@ OOVPATable D3D8_5344[] = { REGISTER_OOVPA(D3DDevice_CreateVolumeTexture, 4627, PATCH), REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH),// Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH),// Just calls Lock3DSurface + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_KickOff, 5028, PATCH), REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4627, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), // ****************************************************************** // Unused functions in XDK 5344 // TODO: Remove // ****************************************************************** - REGISTER_OOVPA(D3D_CommonSetRenderTarget, 5233, XREF), // Used between 4627 to 5233 + REGISTER_OOVPA(D3D_CommonSetRenderTarget, 5028, XREF), // Used between 4627 to 5233 // ****************************************************************** }; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5455.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5455.inl new file mode 100644 index 000000000..7dd909495 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5455.inl @@ -0,0 +1,616 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.5455.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_SelectVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 5455, 12) + + { 0x00, 0x8B }, + { 0x1D, 0xBE }, + + { 0x3F, 0x00 }, + { 0x40, 0x10 }, + { 0x41, 0x00 }, + { 0x42, 0x00 }, + { 0x43, 0x8B }, + { 0x44, 0x06 }, + { 0x45, 0x3B }, + { 0x46, 0x46 }, + + { 0x58, 0x8B }, + { 0x7B, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetViewport +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetViewport, 5455, 8) + + { 0x1E, 0x86 }, + { 0x3E, 0x1B }, + { 0x5E, 0x8B }, + { 0x7E, 0x6D }, + { 0x9E, 0x81 }, + { 0xBE, 0x0C }, + { 0xDE, 0x75 }, + { 0xFE, 0x85 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreateVertexBuffer2 +// ****************************************************************** +OOVPA_XREF(D3DDevice_CreateVertexBuffer2, 5455, 14, + + XREF_D3DDevice_CreateVertexBuffer2, + XRefZero) + + { 0x00, 0x56 }, + { 0x08, 0xE8 }, + + { 0x16, 0x08 }, + { 0x17, 0x68 }, + { 0x18, 0x00 }, + { 0x19, 0x00 }, + { 0x1A, 0x80 }, + { 0x1B, 0xB2 }, + { 0x1C, 0x50 }, + { 0x1D, 0xE8 }, + + { 0x26, 0x68 }, + { 0x31, 0x33 }, + { 0x3A, 0xFF }, + { 0x44, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_CreatePalette2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5455, 7) + + { 0x0D, 0x8B }, + { 0x16, 0x00 }, + { 0x23, 0x68 }, + { 0x2E, 0x85 }, + { 0x3D, 0x5E }, + { 0x46, 0x1E }, + { 0x52, 0x89 }, +OOVPA_END; + +#if 0 // Moved to 5344 +// ****************************************************************** +// * D3DDevice_SetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetMaterial, 5455, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0xE0 }, + { 0x0F, 0x0A }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5344 version +// ****************************************************************** +// * D3DDevice_GetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetMaterial, 5455, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + + { 0x0D, 0xE0 }, + { 0x0E, 0x0A }, + + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVertexShader, 5455, 8) + + { 0x1E, 0x89 }, + { 0x3E, 0x5F }, + { 0x61, 0x3B }, + { 0x81, 0x00 }, + { 0x9E, 0x00 }, + { 0xBE, 0x8B }, + { 0xDE, 0x04 }, + { 0xFE, 0xC1 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version +// ****************************************************************** +// * D3DDevice_GetBackBuffer2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5455, 12) + + // D3DDevice_GetBackBuffer2+0x04 : cmp eax, 0xFFFFFFFF + { 0x04, 0x83 }, + { 0x05, 0xF8 }, + { 0x06, 0xFF }, + + // D3DDevice_GetBackBuffer2+0x0D : jnz +0x19 + { 0x0D, 0x75 }, + { 0x0E, 0x19 }, + + // D3DDevice_GetBackBuffer2+0x15 : mov esi, [ecx+eax*4+0x15F4] + { 0x15, 0x8B }, + { 0x16, 0xB4 }, + { 0x17, 0x81 }, + { 0x18, 0xF4 }, + { 0x19, 0x15 }, + + // D3DDevice_GetBackBuffer2+0x40 : retn 0x04 + { 0x40, 0xC2 }, + { 0x41, 0x04 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetVerticalBlankCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 5455, 12) + + // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetVerticalBlankCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+0x1998], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0x98 }, // 94 vs 98 + { 0x0D, 0x19 }, + + // D3DDevice_SetVerticalBlankCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetSwapCallback +// ****************************************************************** +/* See the comment for the 4134 OOVPA signature for previous notes */ +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5455, 12) + + // D3DDevice_SetSwapCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetSwapCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetSwapCallback+0x0A : mov [ecx+0x1994], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0x94 }, // 94 vs 98 + { 0x0D, 0x19 }, + + // D3DDevice_SetSwapCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetViewport +// ****************************************************************** +OOVPA_XREF(D3DDevice_GetViewport, 5455, 1+17, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_D3DDEVICE ), + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x4C }, + { 0x07, 0x24 }, + { 0x08, 0x04 }, + { 0x09, 0x05 }, + + { 0x0C, 0x00 }, + { 0x0D, 0x00 }, + { 0x0E, 0x8B }, + + { 0x2A, 0x8B }, + { 0x2B, 0x40 }, + { 0x2C, 0x14 }, + { 0x2D, 0x89 }, + { 0x2E, 0x41 }, + { 0x2F, 0x14 }, + { 0x30, 0xC2 }, + { 0x31, 0x04 }, +OOVPA_END; + +#if 0 // Moved to 5344 +// ****************************************************************** +// * D3DDevice_SetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5455, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0B }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5344 version +// ****************************************************************** +// * D3DDevice_GetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5455, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + + { 0x0D, 0x24 }, + { 0x0E, 0x0B }, + + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5455, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x199C + { 0x17, 0x05 }, + { 0x18, 0x9C }, + { 0x19, 0x19 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetScreenSpaceOffset +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 5455, 17) + + { 0x00, 0xD9 }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x56 }, + { 0x05, 0xD8 }, + { 0x06, 0x05 }, + + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0xD9 }, + { 0x1A, 0x44 }, + { 0x1B, 0x24 }, + { 0x1C, 0x0C }, + { 0x1D, 0xD8 }, + { 0x1E, 0x05 }, + + { 0x23, 0xD9 }, + { 0x29, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5455, 12) + + { 0x00, 0x83 }, + { 0x1F, 0x6A }, + + { 0x2C, 0x00 }, + { 0x2D, 0x85 }, + { 0x2E, 0xC0 }, + { 0x2F, 0x75 }, + { 0x30, 0x0A }, + { 0x31, 0xB8 }, + { 0x32, 0x05 }, + { 0x33, 0x40 }, + + { 0x4D, 0x85 }, + { 0x6F, 0xE1 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5233 version +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 5455, 9) + + { 0x03, 0x04 }, + { 0x0A, 0xA3 }, + { 0x0F, 0x8B }, + { 0x12, 0x15 }, + { 0x17, 0xF4 }, + { 0x1B, 0x75 }, + { 0x1C, 0x07 }, + { 0x24, 0xC2 }, + { 0x26, 0x00 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5344 version +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5455, 9) + + { 0x03, 0x04 }, + { 0x0A, 0xA3 }, + { 0x0F, 0x8B }, + { 0x12, 0x15 }, + { 0x17, 0xF4 }, + { 0x1B, 0x74 }, + { 0x1C, 0x07 }, + { 0x24, 0xC2 }, + { 0x26, 0x00 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3D_SetTileNoWait +// ****************************************************************** +OOVPA_XREF(D3D_SetTileNoWait, 5455, 16, + + XREF_D3D_SetTileNoWait, + XRefZero) + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x1C }, + { 0x03, 0x8B }, + { 0x04, 0x44 }, + { 0x05, 0x24 }, + { 0x06, 0x24 }, + { 0x07, 0x85 }, + { 0x08, 0xC0 }, + { 0x09, 0x53 }, + { 0x0A, 0x8B }, + { 0x0B, 0x1D }, + + { 0x45, 0x8D }, + { 0x46, 0x9C }, + + { 0x88, 0x5F }, + { 0x9B, 0xCB }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4134 version +// ****************************************************************** +// * D3DDevice_CaptureStateBlock +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CaptureStateBlock, 5455, 8) + + { 0x1E, 0x3C }, + { 0x3E, 0xC0 }, + { 0x5E, 0x7E }, + { 0x7E, 0x00 }, + { 0x9E, 0x74 }, + { 0xC0, 0x8B }, + { 0xDE, 0x83 }, + { 0xFE, 0x45 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * CMiniport::InitHardware +// ****************************************************************** +OOVPA_NO_XREF(CMiniport_InitHardware, 5455, 24) // Also for 5558, 5659, 5788, 5849, 5933 + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x10 }, + { 0x06, 0x53 }, + { 0x07, 0x56 }, + { 0x08, 0x8B }, + { 0x09, 0xF1 }, + { 0x0A, 0x56 }, + { 0x0B, 0x68 }, + + { 0x10, 0x8D }, + { 0x11, 0x86 }, + { 0x12, 0x84 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x50 }, + { 0x17, 0xFF }, + { 0x18, 0x15 }, + + { 0x1D, 0x8D }, + { 0x1E, 0x86 }, + { 0x1F, 0xAC }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTile +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTile, 5455, 12) + + { 0x00, 0x8B }, + { 0x01, 0x0D }, + + { 0x13, 0x00 }, + { 0x14, 0x8B }, + { 0x15, 0x0A }, + { 0x16, 0x8B }, + { 0x17, 0x44 }, + { 0x18, 0x24 }, + { 0x19, 0x08 }, + { 0x1A, 0x89 }, + + { 0x3A, 0xC2 }, + { 0x3B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * D3D::CDevice::KickOff +// ****************************************************************** +OOVPA_XREF(D3DDevice_KickOff, 5455, 15, + + XREF_D3D_CDevice_KickOff, + XRefZero) + + { 0x06, 0xA8 }, + { 0x07, 0x04 }, + { 0x08, 0x74 }, + { 0x09, 0x08 }, + + // D3D::CDevice::KickOff+0x0A : mov edx, [ecx+0x35C] + { 0x0A, 0x8B }, + { 0x0B, 0x96 }, +// { 0x0C, 0x6C }, +// { 0x0D, 0x07 }, + { 0x0E, 0x00 }, + { 0x0F, 0x00 }, + + // D3D::CDevice::KickOff+0x14 : test ch, 0x20 + { 0x14, 0xF6 }, + { 0x15, 0xC4 }, + { 0x16, 0x20 }, + + // D3D::CDevice::KickOff+0x24 : sfence + { 0x24, 0x0F }, + { 0x25, 0xAE }, + { 0x26, 0xF8 }, + + { 0x62, 0x74 } + + // D3D::CDevice::KickOff+0xAF : retn +// { 0xAF, 0xC3 } +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * D3DDevice_GetVertexShaderDeclaration +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 5455, 14) + + { 0x00, 0x8B }, + + { 0x05, 0x48 }, + { 0x06, 0x03 }, + { 0x07, 0x83 }, + { 0x08, 0xEC }, + { 0x09, 0x14 }, + { 0x0A, 0xF6 }, + { 0x0B, 0xC1 }, + { 0x0C, 0x08 }, + + { 0x1E, 0xC2 }, + { 0x1F, 0x0C }, + + { 0x53, 0xC1 }, + { 0x54, 0x07 }, + { 0x55, 0x01 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_SetRenderTarget +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 5455, 9) + + { 0x00, 0x83 }, + { 0x1E, 0x44 }, + { 0x3E, 0x2C }, + { 0x5E, 0x8B }, + { 0x7E, 0xDE }, + { 0xA0, 0x89 }, + { 0xBE, 0x09 }, + { 0xDE, 0x8B }, + { 0xFE, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * D3D_AllocContiguousMemory +// ****************************************************************** +OOVPA_NO_XREF(D3D_AllocContiguousMemory, 5455, 7) + + { 0x05, 0x10 }, + { 0x0C, 0x00 }, + { 0x13, 0x00 }, + { 0x1A, 0x08 }, + { 0x21, 0xBC }, + { 0x28, 0x0D }, + { 0x2F, 0x24 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl index 1f34bea92..12bce2e34 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl @@ -37,25 +37,26 @@ // ****************************************************************** OOVPA_XREF(D3DDevice_LazySetStateVB, 5558, 12, - XREF_D3DCD_LAZYSETSTATEVB, + XREF_D3DDevice_LazySetStateVB, XRefZero) - { 0x00, 0x83 }, // 1 - { 0x01, 0xEC }, // 2 - { 0x02, 0x0C }, // 3 + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x0C }, - { 0x34, 0xF6 }, // 4 - { 0x35, 0xC3 }, // 5 - { 0x36, 0x40 }, // 6 + { 0x34, 0xF6 }, + { 0x35, 0xC3 }, + { 0x36, 0x40 }, - { 0x57, 0x83 }, // 7 - { 0x58, 0xE5 }, // 8 - { 0x59, 0x10 }, // 9 + { 0x57, 0x83 }, + { 0x58, 0xE5 }, + { 0x59, 0x10 }, - { 0x79, 0x17 }, // 10 - { 0x7A, 0x40 }, // 11 - { 0x7B, 0x00 }, // 12 + { 0x79, 0x17 }, + { 0x7A, 0x40 }, + { 0x7B, 0x00 }, OOVPA_END; + #if 0 // Moved to 5028 // ****************************************************************** // * D3DDevice_BeginPush @@ -65,23 +66,45 @@ OOVPA_XREF(D3DDevice_BeginPush, 5558, 10, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x09, XREF_D3DCD_LAZYSETSTATEVB ), // 1 + XREF_ENTRY( 0x09, XREF_D3DDevice_LazySetStateVB ), - { 0x00, 0x8B }, // 2 - { 0x01, 0x0D }, // 3 + { 0x00, 0x8B }, + { 0x01, 0x0D }, - { 0x06, 0x6A }, // 4 - { 0x07, 0x00 }, // 5 + { 0x06, 0x6A }, + { 0x07, 0x00 }, - { 0x11, 0x40 }, // 6 + { 0x11, 0x40 }, - { 0x12, 0x89 }, // 7 - { 0x13, 0x44 }, // 8 - { 0x14, 0x24 }, // 9 - { 0x15, 0x04 }, // 10 + { 0x12, 0x89 }, + { 0x13, 0x44 }, + { 0x14, 0x24 }, + { 0x15, 0x04 }, OOVPA_END; #endif +#if 0 // Moved to 5455 +// ****************************************************************** +// * D3DDevice_SelectVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 5455, 12) + { 0x00, 0x8B }, + { 0x1D, 0xBE }, + + { 0x3F, 0x00 }, + { 0x40, 0x10 }, + { 0x41, 0x00 }, + { 0x42, 0x00 }, + { 0x43, 0x8B }, + { 0x44, 0x06 }, + { 0x45, 0x3B }, + { 0x46, 0x46 }, + + { 0x58, 0x8B }, + { 0x7B, 0xE8 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_SelectVertexShader // ****************************************************************** @@ -95,7 +118,8 @@ OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 5558, 7) { 0x76, 0x3B }, { 0x8A, 0x89 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetVertexShaderConstant1 // ****************************************************************** @@ -140,6 +164,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstant1, 5558, 11) // D3DDevice_SetVertexShaderConstant1+0x53 : retn { 0x53, 0xC3 }, OOVPA_END; +#endif #if 0 // Moved to 4627 // ****************************************************************** // * D3DDevice_SetVertexShaderConstant1Fast @@ -168,11 +193,11 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstant1Fast, 5558, 11) { 0x48, 0xB7 }, OOVPA_END; #endif - +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetViewport // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetViewport, 5558, 8) +OOVPA_NO_XREF(D3DDevice_SetViewport, 5455, 8) { 0x1E, 0x86 }, { 0x3E, 0x1B }, @@ -183,7 +208,32 @@ OOVPA_NO_XREF(D3DDevice_SetViewport, 5558, 8) { 0xDE, 0x75 }, { 0xFE, 0x85 }, OOVPA_END; +#endif +#if 0 // Moved to 5455 +// ****************************************************************** +// * D3DDevice_CreateVertexBuffer2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2, 5455, 14) + { 0x00, 0x56 }, + { 0x08, 0xE8 }, + + { 0x16, 0x08 }, + { 0x17, 0x68 }, + { 0x18, 0x00 }, + { 0x19, 0x00 }, + { 0x1A, 0x80 }, + { 0x1B, 0xB2 }, + { 0x1C, 0x50 }, + { 0x1D, 0xE8 }, + + { 0x26, 0x68 }, + { 0x31, 0x33 }, + { 0x3A, 0xFF }, + { 0x44, 0x01 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_CreateVertexBuffer2 // ****************************************************************** @@ -197,7 +247,8 @@ OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2, 5558, 7) { 0x3A, 0xFF }, { 0x44, 0x01 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5233 version // ****************************************************************** // * D3DDevice_UpdateOverlay // ****************************************************************** @@ -220,6 +271,7 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5558, 11) { 0x9F, 0x20 }, { 0xA0, 0x89 }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetOverlayUpdateStatus @@ -247,10 +299,11 @@ OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 5558, 12) { 0x1C, 0xC3 }, OOVPA_END; #endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_CreatePalette2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5558, 7) +OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5455, 7) { 0x0D, 0x8B }, { 0x16, 0x00 }, @@ -260,7 +313,7 @@ OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5558, 7) { 0x46, 0x1E }, { 0x52, 0x89 }, OOVPA_END; - +#endif #if 0 // Used 5028 // ****************************************************************** // * D3DDevice_CreateTexture2 @@ -277,7 +330,7 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 5558, 8) { 0xAE, 0x1C }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_End // ****************************************************************** @@ -291,14 +344,15 @@ OOVPA_NO_XREF(D3DDevice_End, 5558, 7) { 0x34, 0x4E }, { 0x40, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 5344 // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** OOVPA_NO_XREF(D3DDevice_SetLight, 5558, 15) // D3DDevice_SetLight+0x1f : add REG, 0x10 - { 0x1f, 0x83 }, + { 0x1F, 0x83 }, { 0x21, 0x10 }, // D3DDevice_SetLight+0x22 : and REG, 0xfffffff0 @@ -306,10 +360,10 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5558, 15) { 0x24, 0xf0 }, // D3DDevice_SetLight+0x2c : push 0x24800000 - { 0x2c, 0x68 }, - { 0x2d, 0x00 }, - { 0x2e, 0x00 }, - { 0x2f, 0x80 }, + { 0x2C, 0x68 }, + { 0x2D, 0x00 }, + { 0x2E, 0x00 }, + { 0x2F, 0x80 }, { 0x30, 0x24 }, // D3DDevice_SetLight+0x65 : jz +8 @@ -317,14 +371,15 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5558, 15) { 0x66, 0x08 }, // D3DDevice_SetLight+0xe3 : jz +8 - { 0xe3, 0x74 }, - { 0xe4, 0x08 }, + { 0xE3, 0x74 }, + { 0xE4, 0x08 }, // D3DDevice_SetLight+0xfe : shr ???, 2 - { 0xfe, 0xc1 }, + { 0xFE, 0xC1 }, { 0x100, 0x02 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetMaterial // ****************************************************************** @@ -344,6 +399,7 @@ OOVPA_NO_XREF(D3DDevice_SetMaterial, 5455, 11) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetMaterial @@ -365,6 +421,28 @@ OOVPA_NO_XREF(D3DDevice_SetMaterial, 5558, 11) { 0x2E, 0x04 }, OOVPA_END; +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_SetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetMaterial, 5659, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x00 }, + { 0x0F, 0x0F }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_GetMaterial // ****************************************************************** @@ -381,6 +459,7 @@ OOVPA_NO_XREF(D3DDevice_GetMaterial, 5455, 8) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetMaterial @@ -399,10 +478,29 @@ OOVPA_NO_XREF(D3DDevice_GetMaterial, 5558, 8) { 0x1A, 0xC2 }, OOVPA_END; +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_GetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetMaterial, 5659, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + + { 0x0D, 0x00 }, + { 0x0E, 0x0F }, + + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetVertexShader, 5558, 8) +OOVPA_NO_XREF(D3DDevice_SetVertexShader, 5455, 8) { 0x1E, 0x89 }, { 0x3E, 0x5F }, @@ -413,7 +511,8 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShader, 5558, 8) { 0xDE, 0x04 }, { 0xFE, 0xC1 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -437,7 +536,34 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 5558, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5558, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x1DAC + { 0x17, 0x05 }, + { 0x18, 0xAC }, + { 0x19, 0x1D }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5558 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -451,7 +577,8 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5558, 7) { 0x1C, 0x50 }, { 0x23, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_DrawIndexedVerticesUP // ****************************************************************** @@ -474,11 +601,12 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 5558, 10) { 0x6A, 0xB8 }, { 0x6B, 0x10 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTransform // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTransform, 5558, 10) +OOVPA_NO_XREF(D3DDevice_SetTransform, 5558, 12) { 0x04, 0x8B }, { 0x05, 0x54 }, @@ -488,10 +616,15 @@ OOVPA_NO_XREF(D3DDevice_SetTransform, 5558, 10) { 0x09, 0x8B }, { 0x0A, 0x1D }, { 0x0F, 0x56 }, + + { 0x2C, 0x8B }, + { 0x2D, 0x0C }, + { 0x9C, 0x00 }, { 0x9D, 0x00 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** @@ -517,7 +650,8 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5558, 12) { 0x40, 0xC2 }, { 0x41, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** @@ -543,6 +677,7 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5455, 12) { 0x40, 0xC2 }, { 0x41, 0x04 }, OOVPA_END; +#endif #if 0 // Moved to 3911 // ****************************************************************** // * Direct3D_CheckDeviceMultiSampleType @@ -562,9 +697,9 @@ OOVPA_END; // ****************************************************************** // * D3D::SetFence // ****************************************************************** -OOVPA_XREF(D3D_SetFence, 5558, 8, +OOVPA_XREF(D3D_SetFence, 5558, 9, - XREF_D3D_SETFENCE, + XREF_D3D_SetFence, XRefZero) { 0x07, 0x8B }, @@ -575,6 +710,8 @@ OOVPA_XREF(D3D_SetFence, 5558, 8, { 0x14, 0x8B }, { 0x15, 0x7E }, { 0x16, 0x2C }, + + { 0x39, 0x0C }, OOVPA_END; // ****************************************************************** @@ -582,7 +719,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(D3D_BlockOnTime, 5558, 12, - XREF_D3D_BLOCKONTIME, + XREF_D3D_BlockOnTime, XRefZero) { 0x02, 0x35 }, @@ -636,6 +773,7 @@ OOVPA_XREF(D3D_BlockOnResource, 5558, 16, OOVPA_END; #endif + // ****************************************************************** // * D3DDevice_SetScissors // ****************************************************************** @@ -659,7 +797,7 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 5558, 10) // D3DDevice_AddRef+0x00 : mov eax, [addr] { 0x00, 0xA1 }, - // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x04FC] + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x0934] { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x34 }, @@ -668,13 +806,39 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 5558, 10) // D3DDevice_AddRef+0x0B : inc ecx { 0x0B, 0x41 }, - // D3DDevice_AddRef+0x0C : mov [eax+0x04FC], ecx + // D3DDevice_AddRef+0x0C : mov [eax+0x0934], ecx { 0x0C, 0x89 }, { 0x0D, 0x88 }, { 0x0E, 0x34 }, { 0x0F, 0x09 }, OOVPA_END; +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 5659, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x0938] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x38 }, + { 0x08, 0x09 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x0C : mov [eax+0x0938], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0x38 }, + { 0x0F, 0x09 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -697,7 +861,8 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5558, 9) { 0xC5, 0xFE }, { 0xC6, 0x80 }, OOVPA_END; - +#endif +#if 0 // Was _IDirect3DDevice8_CreateIndexBuffer@24, replaced by D3DDevice_CreateIndexBuffer 4627 version // ****************************************************************** // * D3DDevice_CreateIndexBuffer // ****************************************************************** @@ -714,6 +879,7 @@ OOVPA_NO_XREF(D3DDevice_CreateIndexBuffer, 5558, 10) { 0x1A, 0x8B }, { 0x1E, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVerticalBlankCallback @@ -729,6 +895,7 @@ OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 5558, 7) { 0x10, 0xC2 }, OOVPA_END; +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetVerticalBlankCallback // ****************************************************************** @@ -747,13 +914,42 @@ OOVPA_NO_XREF(D3DDevice_SetVerticalBlankCallback, 5455, 12) // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+0x1998], eax { 0x0A, 0x89 }, { 0x0B, 0x81 }, - { 0x0C, 0x98 }, + { 0x0C, 0x98 }, // 94 vs 98 { 0x0D, 0x19 }, // D3DDevice_SetVerticalBlankCallback+0x10 : retn 0x04 { 0x10, 0xC2 }, { 0x11, 0x04 }, OOVPA_END; +#endif +#if 0 // Moved to 5455 +// ****************************************************************** +// * D3DDevice_SetSwapCallback +// ****************************************************************** +/* See the comment for the 4134 OOVPA signature for previous notes */ +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5455, 12) + + // D3DDevice_SetSwapCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetSwapCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetSwapCallback+0x0A : mov [ecx+0x1994], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0x94 }, // 94 vs 98 + { 0x0D, 0x19 }, + + // D3DDevice_SetSwapCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetSwapCallback @@ -769,6 +965,7 @@ OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5558, 7) { 0x10, 0xC2 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -782,7 +979,41 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 5558, 7) { 0x40, 0x5E }, { 0x4D, 0x5E }, OOVPA_END; +#endif +#if 0 // Moved to 5455 +// ****************************************************************** +// * D3DDevice_GetViewport +// ****************************************************************** +OOVPA_XREF(D3DDevice_GetViewport, 5455, 1+17, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x01, XREF_D3DDEVICE ), + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x4C }, + { 0x07, 0x24 }, + { 0x08, 0x04 }, + { 0x09, 0x05 }, + + { 0x0C, 0x00 }, + { 0x0D, 0x00 }, + { 0x0E, 0x8B }, + + { 0x2A, 0x8B }, + { 0x2B, 0x40 }, + { 0x2C, 0x14 }, + { 0x2D, 0x89 }, + { 0x2E, 0x41 }, + { 0x2F, 0x14 }, + { 0x30, 0xC2 }, + { 0x31, 0x04 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -796,6 +1027,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 5558, 7) { 0x28, 0x51 }, { 0x2F, 0x14 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_Reset @@ -831,6 +1063,7 @@ OOVPA_NO_XREF(D3DDevice_SetGammaRamp, 5558, 7) { 0x75, 0x07 }, OOVPA_END; +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetBackMaterial // ****************************************************************** @@ -850,6 +1083,7 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5455, 11) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetBackMaterial @@ -871,6 +1105,28 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5558, 11) { 0x2E, 0x04 }, OOVPA_END; +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_SetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5659, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x44 }, + { 0x0F, 0x0F }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_GetBackMaterial // ****************************************************************** @@ -887,6 +1143,7 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5455, 8) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetBackMaterial @@ -905,6 +1162,25 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5558, 8) { 0x1A, 0xC2 }, OOVPA_END; +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_GetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5659, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + + { 0x0D, 0x44 }, + { 0x0E, 0x0F }, + + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_SetRenderState_TwoSidedLighting // ****************************************************************** @@ -919,7 +1195,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TwoSidedLighting, 5558, 8) { 0x6E, 0x48 }, { 0x7E, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -941,11 +1218,12 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 5558, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * D3D::MakeRequestedSpace // ****************************************************************** -OOVPA_XREF(MakeRequestedSpace, 5558, 26, // Also for 5659 +OOVPA_XREF(D3D_MakeRequestedSpace, 5558, 26, // Also for 5659 XREF_D3D_MakeRequestedSpace, XRefZero) @@ -981,6 +1259,7 @@ OOVPA_XREF(MakeRequestedSpace, 5558, 26, // Also for 5659 { 0x1F, 0x00 }, OOVPA_END; +#if 0 // Moved to 4134 // ****************************************************************** // * D3DDevice_MakeSpace // ****************************************************************** @@ -995,7 +1274,8 @@ OOVPA_NO_XREF(D3DDevice_MakeSpace, 5558, 7) { 0x09, 0xE8 }, { 0x0E, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetRenderTarget@8 // ****************************************************************** @@ -1010,6 +1290,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 5558, 8) { 0xDE, 0x8B }, { 0xFE, 0x8B }, OOVPA_END; +#endif #if 0 // Used 3925 // ****************************************************************** // * D3DTexture_LockRect @@ -1026,6 +1307,7 @@ OOVPA_NO_XREF(D3DTexture_LockRect, 5558, 8) { 0x21, 0x14 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_SetPixelShaderConstant // ****************************************************************** @@ -1039,7 +1321,7 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 5558, 7) { 0xBE, 0x00 }, { 0xDE, 0xC0 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetFlickerFilter @@ -1067,6 +1349,7 @@ OOVPA_NO_XREF(D3DDevice_SetFlickerFilter, 5455, 12) { 0x40, 0x04 }, OOVPA_END; #endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -1091,7 +1374,8 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5455, 11) // D3DDevice_BlockUntilVerticalBlank+0x23 : retn { 0x23, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset // ****************************************************************** @@ -1117,7 +1401,7 @@ OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 5455, 17) { 0x23, 0xD9 }, { 0x29, 0xE8 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset @@ -1217,7 +1501,7 @@ OOVPA_NO_XREF(D3DDevice_LightEnable, 5455, 13) { 0xFC, 0x08 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -1231,7 +1515,8 @@ OOVPA_NO_XREF(D3DDevice_SetIndices, 5558, 7) { 0x64, 0x89 }, { 0x75, 0x10 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetBackBuffer // ****************************************************************** @@ -1244,7 +1529,52 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer, 5558, 6) { 0x0D, 0x0C }, { 0x10, 0xC2 }, OOVPA_END; +#endif +#if 0 // Moved to 5455 +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5455, 12) + { 0x00, 0x83 }, + { 0x1F, 0x6A }, + + { 0x2C, 0x00 }, + { 0x2D, 0x85 }, + { 0x2E, 0xC0 }, + { 0x2F, 0x75 }, + { 0x30, 0x0A }, + { 0x31, 0xB8 }, + { 0x32, 0x05 }, + { 0x33, 0x40 }, + + { 0x4D, 0x85 }, + { 0x6F, 0xE1 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5558, 12) + + { 0x00, 0x83 }, + { 0x1B, 0x6A }, + + { 0x28, 0x00 }, + { 0x29, 0x85 }, + { 0x2A, 0xC0 }, + { 0x2B, 0x75 }, + { 0x2C, 0x0A }, + { 0x2D, 0xB8 }, + { 0x2E, 0x05 }, + { 0x2F, 0x40 }, + + { 0x49, 0x85 }, + { 0x6B, 0xE1 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5558 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -1258,7 +1588,8 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5558, 7) { 0xBE, 0x00 }, { 0xDE, 0x8B }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DCubeTexture_GetCubeMapSurface // ****************************************************************** @@ -1272,6 +1603,7 @@ OOVPA_NO_XREF(D3DCubeTexture_GetCubeMapSurface, 5558, 7) { 0x22, 0x81 }, { 0x28, 0x8B }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetVertexData4f @@ -1303,7 +1635,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData2f, 5558, 8) { 0x36, 0x00 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_LoadVertexShaderProgram // ****************************************************************** @@ -1317,7 +1649,8 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 5558, 7) { 0x4C, 0x83 }, { 0x5C, 0x89 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetPixelShaderProgram // ****************************************************************** @@ -1331,7 +1664,8 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 5558, 7) { 0x32, 0xC7 }, { 0x36, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5233 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMode // ****************************************************************** @@ -1347,7 +1681,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 5558, 9) { 0x24, 0xC2 }, { 0x26, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMode // ****************************************************************** @@ -1363,8 +1698,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 5455, 9) { 0x24, 0xC2 }, { 0x26, 0x00 }, OOVPA_END; - - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode // ****************************************************************** @@ -1380,7 +1715,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5455, 9) { 0x24, 0xC2 }, { 0x26, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode // ****************************************************************** @@ -1396,7 +1732,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5558, 9) { 0x24, 0xC2 }, { 0x26, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -1411,7 +1748,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5558, 8) { 0x67, 0xC0 }, { 0x76, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5028 version // ****************************************************************** // * D3DDevice_IsFencePending // ****************************************************************** @@ -1425,7 +1763,7 @@ OOVPA_NO_XREF(D3DDevice_IsFencePending, 5558, 7) { 0x16, 0xC2 }, { 0x1A, 0xD8 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_SetSoftDisplayFilter @@ -1469,9 +1807,38 @@ OOVPA_NO_XREF(D3DDevice_GetViewportOffsetAndScale, 5558, 8) { 0xFE, 0xC1 }, OOVPA_END; +#if 0 // Moved to 5455, rename to D3D_SetTileNoWait // ****************************************************************** // * D3DDevice_SetTile // ****************************************************************** +// Accurately this one ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z +OOVPA_NO_XREF(D3DDevice_SetTile, 5455, 16) + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x1C }, + { 0x03, 0x8B }, + { 0x04, 0x44 }, + { 0x05, 0x24 }, + { 0x06, 0x24 }, + { 0x07, 0x85 }, + { 0x08, 0xC0 }, + { 0x09, 0x53 }, + { 0x0A, 0x8B }, + { 0x0B, 0x1D }, + + { 0x45, 0x8D }, + { 0x46, 0x9C }, + + { 0x88, 0x5F }, + { 0x9B, 0xCB }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5455 version +// ****************************************************************** +// * D3DDevice_SetTile +// ****************************************************************** +// Accurately this one ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z OOVPA_NO_XREF(D3DDevice_SetTile, 5558, 10) { 0x00, 0x83 }, @@ -1485,53 +1852,57 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 5558, 10) { 0x9A, 0x94 }, { 0x9B, 0xCB }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_CaptureStateBlock // ****************************************************************** OOVPA_NO_XREF(D3DDevice_CaptureStateBlock, 5455, 8) - { 0x1E, 0x3C }, - { 0x3E, 0xC0 }, - { 0x5E, 0x7E }, - { 0x7E, 0x00 }, - { 0x9E, 0x74 }, - { 0xC0, 0x8B }, - { 0xDE, 0x83 }, - { 0xFE, 0x45 }, + + { 0x1E, 0x3C }, + { 0x3E, 0xC0 }, + { 0x5E, 0x7E }, + { 0x7E, 0x00 }, + { 0x9E, 0x74 }, + { 0xC0, 0x8B }, + { 0xDE, 0x83 }, + { 0xFE, 0x45 }, OOVPA_END; - - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * CMiniport::InitHardware // ****************************************************************** -OOVPA_NO_XREF(CMiniport_InitHardware, 5558, 24) // Also for 5659, 5788, 5849, 5933 - { 0x00, 0x55 }, - { 0x01, 0x8B }, - { 0x02, 0xEC }, - { 0x03, 0x83 }, - { 0x04, 0xEC }, - { 0x05, 0x10 }, - { 0x06, 0x53 }, - { 0x07, 0x56 }, - { 0x08, 0x8B }, - { 0x09, 0xF1 }, - { 0x0A, 0x56 }, - { 0x0B, 0x68 }, +OOVPA_NO_XREF(CMiniport_InitHardware, 5455, 24) // Also for 5558, 5659, 5788, 5849, 5933 - { 0x10, 0x8D }, - { 0x11, 0x86 }, - { 0x12, 0x84 }, - { 0x13, 0x00 }, - { 0x14, 0x00 }, - { 0x15, 0x00 }, - { 0x16, 0x50 }, - { 0x17, 0xFF }, - { 0x18, 0x15 }, + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x10 }, + { 0x06, 0x53 }, + { 0x07, 0x56 }, + { 0x08, 0x8B }, + { 0x09, 0xF1 }, + { 0x0A, 0x56 }, + { 0x0B, 0x68 }, - { 0x1D, 0x8D }, - { 0x1E, 0x86 }, - { 0x1F, 0xAC }, + { 0x10, 0x8D }, + { 0x11, 0x86 }, + { 0x12, 0x84 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x50 }, + { 0x17, 0xFF }, + { 0x18, 0x15 }, + + { 0x1D, 0x8D }, + { 0x1E, 0x86 }, + { 0x1F, 0xAC }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix @@ -1555,6 +1926,29 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 5558, 15) { 0x1B, 0xC2 }, OOVPA_END; +#if 0 // Moved to 5455 +// ****************************************************************** +// * D3DDevice_GetTile +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTile, 5455, 12) + + { 0x00, 0x8B }, + { 0x01, 0x0D }, + + { 0x13, 0x00 }, + { 0x14, 0x8B }, + { 0x15, 0x0A }, + { 0x16, 0x8B }, + { 0x17, 0x44 }, + { 0x18, 0x24 }, + { 0x19, 0x08 }, + { 0x1A, 0x89 }, + + { 0x3A, 0xC2 }, + { 0x3B, 0x08 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -1568,40 +1962,42 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 5558, 7) { 0x2E, 0x8B }, { 0x36, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** OOVPA_NO_XREF(D3DDevice_KickOff, 5455, 15) - { 0x06, 0xA8 }, - { 0x07, 0x04 }, - { 0x08, 0x74 }, - { 0x09, 0x08 }, + { 0x06, 0xA8 }, + { 0x07, 0x04 }, + { 0x08, 0x74 }, + { 0x09, 0x08 }, - // D3D::CDevice::KickOff+0x0A : mov edx, [ecx+0x35C] - { 0x0A, 0x8B }, - { 0x0B, 0x96 }, -// { 0x0C, 0x6C }, -// { 0x0D, 0x07 }, - { 0x0E, 0x00 }, - { 0x0F, 0x00 }, + // D3D::CDevice::KickOff+0x0A : mov edx, [ecx+0x35C] + { 0x0A, 0x8B }, + { 0x0B, 0x96 }, +// { 0x0C, 0x6C }, +// { 0x0D, 0x07 }, + { 0x0E, 0x00 }, + { 0x0F, 0x00 }, - // D3D::CDevice::KickOff+0x14 : test ch, 0x20 - { 0x14, 0xF6 }, - { 0x15, 0xC4 }, - { 0x16, 0x20 }, + // D3D::CDevice::KickOff+0x14 : test ch, 0x20 + { 0x14, 0xF6 }, + { 0x15, 0xC4 }, + { 0x16, 0x20 }, - // D3D::CDevice::KickOff+0x24 : sfence - { 0x24, 0x0F }, - { 0x25, 0xAE }, - { 0x26, 0xF8 }, + // D3D::CDevice::KickOff+0x24 : sfence + { 0x24, 0x0F }, + { 0x25, 0xAE }, + { 0x26, 0xF8 }, - { 0x62, 0x74 } + { 0x62, 0x74 } - // D3D::CDevice::KickOff+0xAF : retn -// { 0xAF, 0xC3 } + // D3D::CDevice::KickOff+0xAF : retn +// { 0xAF, 0xC3 } OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_RunPushBuffer @@ -1619,24 +2015,32 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5558, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5558, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x18 }, { 0x08, 0x19 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +#if 0 // Moved to 5455 // ****************************************************************** // * D3DDevice_GetVertexShaderDeclaration // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 5558, 14) +OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 5455, 14) { 0x00, 0x8B }, @@ -1656,11 +2060,14 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 5558, 14) { 0x54, 0x07 }, { 0x55, 0x01 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5558, 9) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5558, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, @@ -1668,11 +2075,138 @@ OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5558, 9) { 0x08, 0x07 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_SetVerticalBlankCallback +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetVerticalBlankCallback, 5659, 1+12, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDEVICE ), + + // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetVerticalBlankCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+0x1DB4], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0xB8 }, // B4 vs B8 + { 0x0D, 0x1D }, + + // D3DDevice_SetVerticalBlankCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; +#endif +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_SetSwapCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5659, 12) + + // D3DDevice_SetSwapCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetSwapCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetSwapCallback+0x0A : mov [ecx+0x1DB4], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0xB4 }, // B4 vs B8 + { 0x0D, 0x1D }, + + // D3DDevice_SetSwapCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * D3DDevice_GetVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5558, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x94 }, + { 0x08, 0x07 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTexture2, 5558, 23) // Up to 5659 + + // XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB4 }, + { 0x0D, 0x81 }, + { 0x0E, 0x78 }, // GetTexture2 780F vs GetPalette2 880F + { 0x0F, 0x0F }, + + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x8B }, + { 0x13, 0x06 }, + { 0x14, 0x85 }, + { 0x15, 0xC0 }, + { 0x16, 0x74 }, + + { 0x18, 0x50 }, + { 0x19, 0xE8 }, + + { 0x1E, 0x8B }, + { 0x1F, 0x06 }, +// { 0x21, 0xC2 }, +OOVPA_END; + // ****************************************************************** // * Rollback support signature(s) // ****************************************************************** @@ -1683,145 +2217,152 @@ OOVPA_END; // ****************************************************************** // * D3D8_5558 // ****************************************************************** +// No longer supported XDK 5659 by HLEDB_v1 OOVPATable D3D8_5558[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 5558, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 5455, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LazySetStateVB, 5028, XREF), REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_EndPush, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5558, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, ALIAS, D3DDevice_SetVertexShaderConstantNotInlineFast), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5558, DISABLED), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5455, DISABLED), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePalette2, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePalette2, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5558, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_End, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_End, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetMaterial, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetMaterial, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetMaterial, 5455, PATCH), + // REGISTER_OOVPA(D3DDevice_SetMaterial, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_GetMaterial, 5558, PATCH), + // REGISTER_OOVPA(D3DDevice_GetMaterial, 5659, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 5344, PATCH), REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShader, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 5558, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShader, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBig, 5028, XREF), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetTransform, 5558, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetViewport, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5028, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetViewport, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), REGISTER_OOVPA(Direct3D_CheckDeviceMultiSampleType, 3911, DISABLED), - REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH), + REGISTER_OOVPA(D3D_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), REGISTER_OOVPA(D3D_SetFence, 5558, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3D_BlockOnTime, 5558, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_CopyRects, 5233, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_CopyRects, 5120, PATCH), REGISTER_OOVPA(D3DDevice_SetScissors, 5558, PATCH), REGISTER_OOVPA(D3DDevice_SetScissors, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_AddRef, 5558, PATCH), REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 5344, DISABLED), - REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 5558, DISABLED), + REGISTER_OOVPA(D3DDevice_CreateIndexBuffer, 4627, DISABLED), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5558, PATCH), REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5455, PATCH), REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_SampleAlpha, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 5455, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 5344, PATCH), // For 5455 REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 5558, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5455, PATCH), + // REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5344, PATCH), REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5558, PATCH), + // REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5344, PATCH), REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3D_RecordStateBlock, 3911, XREF), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(Get2DSurfaceDesc, 5558, PATCH), - REGISTER_OOVPA(MakeRequestedSpace, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_MakeSpace, 5558, DISABLED), - REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 5558, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_MakeSpace, 4134, DISABLED), + REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5455, PATCH), REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5455, PATCH), @@ -1829,79 +2370,80 @@ OOVPATable D3D8_5558[] = { REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_PersistDisplay, 5455, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 5558, PATCH), - REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 5558, PATCH), + REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface, 4627, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_IsFencePending, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5233, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3925, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 5455, XREF), + REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DeletePixelShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5120, PATCH), // for 5455 REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5558, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 4627, PATCH), REGISTER_OOVPA(D3DDevice_DrawTriPatch, 3911, DISABLED), REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_IsBusy, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 5233, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_GetTexture2, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH),// Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 5558, PATCH), // NOT 5455 + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH),// Just calls Lock3DSurface + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 5455, PATCH), REGISTER_OOVPA(D3DDevice_KickOff, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 5558, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShader, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPixelShader, 5558, PATCH), REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4627, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5659.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5659.inl new file mode 100644 index 000000000..47a8254f1 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5659.inl @@ -0,0 +1,322 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.5659.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * D3DDevice_SetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetMaterial, 5659, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x00 }, + { 0x0F, 0x0F }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetMaterial, 5659, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + + { 0x0D, 0x00 }, + { 0x0E, 0x0F }, + + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_AddRef +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_AddRef, 5659, 10) + + // D3DDevice_AddRef+0x00 : mov eax, [addr] + { 0x00, 0xA1 }, + + // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x0938] + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x38 }, + { 0x08, 0x09 }, + + // D3DDevice_AddRef+0x0B : inc ecx + { 0x0B, 0x41 }, + + // D3DDevice_AddRef+0x0C : mov [eax+0x0938], ecx + { 0x0C, 0x89 }, + { 0x0D, 0x88 }, + { 0x0E, 0x38 }, + { 0x0F, 0x09 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5659, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x44 }, + { 0x0F, 0x0F }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5659, 8) + + { 0x05, 0x56 }, + { 0x06, 0x57 }, + { 0x0A, 0x0C }, + + { 0x0D, 0x44 }, + { 0x0E, 0x0F }, + + { 0x12, 0x11 }, + { 0x16, 0xF3 }, + { 0x1A, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetVerticalBlankCallback +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetVerticalBlankCallback, 5659, 1+12, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x06, XREF_D3DDEVICE ), + + // D3DDevice_SetVerticalBlankCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetVerticalBlankCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+0x1DB4], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0xB8 }, // B4 vs B8 + { 0x0D, 0x1D }, + + // D3DDevice_SetVerticalBlankCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_SetSwapCallback +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5659, 12) + + // D3DDevice_SetSwapCallback+0x00 : mov eax, [esp+0x04] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // D3DDevice_SetSwapCallback+0x04 : mov ecx, [addr] + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + // D3DDevice_SetSwapCallback+0x0A : mov [ecx+0x1DB4], eax + { 0x0A, 0x89 }, + { 0x0B, 0x81 }, + { 0x0C, 0xB4 }, // B4 vs B8 + { 0x0D, 0x1D }, + + // D3DDevice_SetSwapCallback+0x10 : retn 0x04 + { 0x10, 0xC2 }, + { 0x11, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5659, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x98 }, + { 0x08, 0x07 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetPixelShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5659, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x84 }, + { 0x08, 0x07 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5659, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x1DBC + { 0x17, 0x05 }, + { 0x18, 0xBC }, + { 0x19, 0x1D }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetShaderConstantMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5659, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x28 }, + { 0x08, 0x19 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * D3DDevice_GetTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTexture2, 5659, 23) // Up to 5849 + + // XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB4 }, + { 0x0D, 0x81 }, + { 0x0E, 0x88 }, // GetTexture2 880F vs GetPalette2 980F + { 0x0F, 0x0F }, + + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x8B }, + { 0x13, 0x06 }, + { 0x14, 0x85 }, + { 0x15, 0xC0 }, + { 0x16, 0x74 }, + + { 0x18, 0x50 }, + { 0x19, 0xE8 }, + + { 0x1E, 0x8B }, + { 0x1F, 0x06 }, +// { 0x21, 0xC2 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl index 50e21d3df..95988448b 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_EndVisibilityTest // ****************************************************************** @@ -45,7 +46,8 @@ OOVPA_NO_XREF(D3DDevice_EndVisibilityTest, 5788, 7) { 0x50, 0x0C }, { 0x58, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -60,6 +62,7 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 5788, 8) { 0x2F, 0x14 }, { 0x31, 0x04 }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_SetBackBufferScale @@ -75,6 +78,7 @@ OOVPA_NO_XREF(D3DDevice_SetBackBufferScale, 5788, 7) { 0xDE, 0xC0 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** @@ -100,7 +104,8 @@ OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5788, 12) { 0x40, 0xC2 }, { 0x41, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface2 // ****************************************************************** @@ -128,12 +133,14 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 5788, 10) // D3DDevice_GetDepthStencilSurface2+0x1D : retn { 0x1D, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_CreatePixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 5788, 8) +OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 5788, 9) + { 0x00, 0x68 }, { 0x07, 0x00 }, { 0x10, 0xC0 }, { 0x19, 0x08 }, @@ -143,7 +150,8 @@ OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 5788, 8) { 0x3D, 0x24 }, { 0x46, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -157,7 +165,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 5788, 7) { 0x40, 0x5E }, { 0x4D, 0x5E }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_DrawIndexedVerticesUP // ****************************************************************** @@ -172,7 +181,8 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 5788, 8) { 0xE4, 0xDB }, { 0xFF, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_SetMaterial // ****************************************************************** @@ -188,7 +198,8 @@ OOVPA_NO_XREF(D3DDevice_SetMaterial, 5788, 9) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_GetMaterial // ****************************************************************** @@ -203,7 +214,7 @@ OOVPA_NO_XREF(D3DDevice_GetMaterial, 5788, 8) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; - +#endif #if 0 // Moved to 5028 // ****************************************************************** // * D3DDevice_BeginStateBig @@ -227,6 +238,7 @@ OOVPA_NO_XREF(D3DDevice_BeginStateBig, 5788, 15) { 0x40, 0x5E }, OOVPA_END; #endif +#if 0 // This one _IDirect3DVertexBuffer8_Lock@20, replaced by generic 4627 version // ****************************************************************** // * D3DVertexBuffer8_Lock // ****************************************************************** @@ -241,7 +253,8 @@ OOVPA_NO_XREF(D3DVertexBuffer_Lock, 5788, 8) { 0x13, 0x33 }, { 0x16, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DVertexBuffer_Lock2 // ****************************************************************** @@ -255,7 +268,8 @@ OOVPA_NO_XREF(D3DVertexBuffer_Lock2, 5788, 7) { 0x3E, 0x8B }, { 0x44, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * D3D_AllocContiguousMemory // ****************************************************************** @@ -269,7 +283,8 @@ OOVPA_NO_XREF(D3D_AllocContiguousMemory, 5788, 7) { 0x28, 0x0D }, { 0x2F, 0x24 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DTexture8_GetLevelDesc // ****************************************************************** @@ -294,7 +309,7 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 5788, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; - +#endif #if 0 // Used 5028 // ****************************************************************** // * D3DDevice_CreateTexture2 @@ -314,7 +329,7 @@ OOVPA_XREF(D3DDevice_CreateTexture2, 5788, 8, { 0xAE, 0x1C }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetVertexShaderConstant1 // ****************************************************************** @@ -341,7 +356,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstant1, 5788, 11) { 0x5D, 0xEB }, { 0x5E, 0xA2 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_SetVertexData2f @@ -358,7 +373,7 @@ OOVPA_NO_XREF(D3DDevice_SetVertexData2f, 5788, 8) { 0x35, 0x0C }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -373,6 +388,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5788, 8) { 0xDE, 0x8B }, { 0xFE, 0x7D }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_BeginPushBuffer @@ -387,6 +403,7 @@ OOVPA_NO_XREF(D3DDevice_BeginPushBuffer, 5788, 6) { 0x63, 0x04 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_EndPushBuffer // ****************************************************************** @@ -399,6 +416,7 @@ OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 5788, 6) { 0x77, 0x07 }, { 0x8C, 0xC3 }, OOVPA_END; +#endif #if 0 // Moved to 5558 // ****************************************************************** // * D3DDevice_RunPushBuffer @@ -413,6 +431,7 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 5788, 6) { 0xF6, 0x41 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_SetVerticalBlankCallback // ****************************************************************** @@ -430,7 +449,8 @@ OOVPA_XREF(D3DDevice_SetVerticalBlankCallback, 5788, 7, { 0x0D, 0x1D }, { 0x11, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -444,7 +464,8 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5788, 7) { 0x1C, 0x50 }, { 0x23, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_SetBackMaterial // ****************************************************************** @@ -461,7 +482,7 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5788, 10) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * IDirectD3DDevice8_Release @@ -495,9 +516,11 @@ OOVPA_END; OOVPA_END; */ +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_SetTile // ****************************************************************** +// Accurately this one ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z OOVPA_NO_XREF(D3DDevice_SetTile, 5788, 10) // D3DDevice_SetTile+0x00: sub esp, 0x1C @@ -513,7 +536,8 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 5788, 10) { 0x4A, 0x00 }, { 0x4B, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_SetSwapCallback // ****************************************************************** @@ -527,7 +551,7 @@ OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5788, 7) { 0x0D, 0x1D }, { 0x10, 0xC2 }, OOVPA_END; - +#endif #if 0 // Moved to 5849 // ****************************************************************** // * D3DDevice_SetRenderState_StencilFail @@ -574,7 +598,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_LineWidth, 5788, 13) { 0x43, 0x04 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice8::SetDepthClipPlanes // ****************************************************************** @@ -602,7 +626,7 @@ OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 5788, 18) { 0x7C, 0x8B }, { 0x80, 0xE8 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 5788 version // ****************************************************************** // * D3DDevice8::SetDepthClipPlanes @@ -629,7 +653,7 @@ OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 5788, 13) { 0x17, 0x00 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -643,6 +667,7 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 5788, 7) { 0x6E, 0x8B }, { 0x7C, 0x89 }, OOVPA_END; +#endif #if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetPushBufferOffset @@ -658,10 +683,11 @@ OOVPA_NO_XREF(D3DDevice_GetPushBufferOffset, 5788, 7) { 0x91, 0x5F }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 5558 version // ****************************************************************** // * D3D::MakeRequestedSpace // ****************************************************************** -OOVPA_XREF(MakeRequestedSpace, 5788, 28, // Also for 5849, 5933 +OOVPA_XREF(D3D_MakeRequestedSpace, 5788, 28, // Also for 5849, 5933 XREF_D3D_MakeRequestedSpace, XRefZero) @@ -696,7 +722,8 @@ OOVPA_XREF(MakeRequestedSpace, 5788, 28, // Also for 5849, 5933 { 0x1E, 0x00 }, { 0x1F, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic D3DDevice_MakeSpace 4134 version // ****************************************************************** // * D3D::Unknown (D3D::MakeSpace?) // ****************************************************************** @@ -715,7 +742,8 @@ OOVPA_XREF(D3D_Unknown, 5788, 6, { 0x08, 0x50 }, { 0x0E, 0xC3 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_AddRef // ****************************************************************** @@ -729,13 +757,14 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 5788, 7) { 0x10, 0x00 }, { 0x13, 0xC1 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3D::ClearStateBlockFlags // ****************************************************************** OOVPA_XREF(D3D_ClearStateBlockFlags, 5788, 9, - XREF_CLEARSTATEBLOCKFLAGS, + XREF_D3D_ClearStateBlockFlags, XRefZero) // D3D_ClearStateBlockFlags+0x0A : mov ecx, 0x87 @@ -753,13 +782,14 @@ OOVPA_XREF(D3D_ClearStateBlockFlags, 5788, 9, { 0x30, 0xC1 }, { 0x31, 0x90 }, OOVPA_END; +#endif // ****************************************************************** // * D3D::RecordStateBlock // ****************************************************************** OOVPA_XREF(D3D_RecordStateBlock, 5788, 10, - XREF_RECORDSTATEBLOCK, + XREF_D3D_RecordStateBlock, XRefZero) // D3D_RecordStateBlock+0x0F : mov eax, [edi+0x07A4] @@ -779,6 +809,7 @@ OOVPA_XREF(D3D_RecordStateBlock, 5788, 10, { 0xD8, 0x01 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_SetRenderState_BackFillMode // ****************************************************************** @@ -792,6 +823,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_BackFillMode, 5788, 7) { 0x40, 0x08 }, { 0x4C, 0x5F }, OOVPA_END; +#endif #if 0 // Moved to 5558 // ****************************************************************** // * D3DDevice_GetTile @@ -807,7 +839,7 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 5788, 7) { 0x36, 0x14 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3D::CDevice::KickOff // ****************************************************************** @@ -834,7 +866,8 @@ OOVPA_NO_XREF(D3DDevice_KickOff, 5788, 13) // D3D::CDevice::KickOff+0xAF : retn { 0xAF, 0xC3 } OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5233 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleMode // ****************************************************************** @@ -850,7 +883,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 5788, 9) { 0x24, 0xC2 }, { 0x26, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode // ****************************************************************** @@ -866,7 +900,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5788, 9) { 0x24, 0xC2 }, { 0x26, 0x00 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias @@ -882,7 +916,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleAntiAlias, 5788, 7) { 0x6B, 0x5F }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus // ****************************************************************** @@ -896,7 +930,8 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 5788, 7) { 0x2E, 0x89 }, { 0x36, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetScissors // ****************************************************************** @@ -910,7 +945,8 @@ OOVPA_NO_XREF(D3DDevice_GetScissors, 5788, 7) { 0x40, 0xC1 }, { 0x4B, 0xA4 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5659 version // ****************************************************************** // * D3DDevice_GetBackMaterial // ****************************************************************** @@ -925,7 +961,8 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5788, 8) { 0x16, 0xF3 }, { 0x1A, 0xC2 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3925 version // ****************************************************************** // * D3DDevice_DeleteStateBlock // ****************************************************************** @@ -946,7 +983,7 @@ OOVPA_NO_XREF(D3DDevice_DeleteStateBlock, 5788, 9) { 0x3D, 0x6F }, { 0x3E, 0x08 }, OOVPA_END; - +#endif #if 0 // Used 3925 instead in 5788, 5849 // ****************************************************************** // * D3DDevice_SetRenderState_RopZCmpAlwaysRead @@ -990,42 +1027,63 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderSize, 5788, 13) { 0x12, 0x08 }, OOVPA_END; #endif - +#if 0 // Moved to 5659 // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5788, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5788, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x28 }, { 0x08, 0x19 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 5659 // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5788, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5788, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x98 }, + { 0x08, 0x07 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 5659 // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5788, 9) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5788, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, @@ -1033,217 +1091,263 @@ OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5788, 9) { 0x08, 0x07 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; +#endif +#if 0 // Moved to 5659 +// ****************************************************************** +// * D3DDevice_GetTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTexture2, 5788, 23) // Up to 5849 + + // XREF_ENTRY( 0x0E, XREF_OFFSET_D3DDEVICE_M_TEXTURES ), // derived + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x8B }, + { 0x05, 0x0D }, + + { 0x0A, 0x56 }, + { 0x0B, 0x8D }, + { 0x0C, 0xB4 }, + { 0x0D, 0x81 }, + { 0x0E, 0x88 }, // GetTexture2 880F vs GetPalette2 980F + { 0x0F, 0x0F }, + + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x8B }, + { 0x13, 0x06 }, + { 0x14, 0x85 }, + { 0x15, 0xC0 }, + { 0x16, 0x74 }, + + { 0x18, 0x50 }, + { 0x19, 0xE8 }, + + { 0x1E, 0x8B }, + { 0x1F, 0x06 }, +// { 0x21, 0xC2 }, +OOVPA_END; +#endif // ****************************************************************** // * D3D8_5788 // ****************************************************************** OOVPATable D3D8_5788[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 5558, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 5455, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_End, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_End, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5659, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShader, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 5558, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShader, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LazySetStateVB, 5028, XREF), REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_EndPush, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), // Not implemented yet. - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 5788, PATCH), // Not implemented yet. + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), // Not implemented yet. REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5558, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBig, 5028, XREF), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTransform, 5558, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 5344, DISABLED), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetMaterial, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetMaterial, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetMaterial, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetMaterial, 5659, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, DISABLED), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 5233, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3911, DISABLED), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 5120, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 5344, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5558, DISABLED), - REGISTER_OOVPA(D3DVertexBuffer_Lock, 5788, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_Lock2, 5788, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5455, DISABLED), + REGISTER_OOVPA(D3DVertexBuffer_Lock, 4627, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH), REGISTER_OOVPA(D3DDevice_PersistDisplay, 5558, PATCH), - REGISTER_OOVPA(D3D_SetPushBufferSize, 3925, DISABLED), + REGISTER_OOVPA(D3D_SetPushBufferSize, 3911, DISABLED), REGISTER_OOVPA(Direct3D_CheckDeviceMultiSampleType, 3911, DISABLED), - REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH), - REGISTER_OOVPA(D3D_AllocContiguousMemory, 5788, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH - REGISTER_OOVPA(Get2DSurfaceDesc, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 5028, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), + REGISTER_OOVPA(D3D_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), + REGISTER_OOVPA(D3D_AllocContiguousMemory, 5455, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5558, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, ALIAS, D3DDevice_SetVertexShaderConstantNotInlineFast), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetViewport, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetViewport, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3911, DISABLED), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5344, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 5455, XREF), + REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_SampleAlpha, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_IsFencePending, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePalette2, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePalette2, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 4627, PATCH), - REGISTER_OOVPA(MakeRequestedSpace, 5788, XREF), - REGISTER_OOVPA(D3D_Unknown, 5788, XREF), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 5558, XREF), + REGISTER_OOVPA(D3DDevice_MakeSpace, 4134, DISABLED), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5455, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_AddRef, 5788, PATCH), - REGISTER_OOVPA(D3D_ClearStateBlockFlags, 5788, XREF), + REGISTER_OOVPA(D3DDevice_AddRef, 5659, PATCH), + REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3D_RecordStateBlock, 5788, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetScissors, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetScissors, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5659, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_GetTexture2, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 5558, PATCH), REGISTER_OOVPA(D3DDevice_DrawTriPatch, 3911, DISABLED), - REGISTER_OOVPA(D3DDevice_IsBusy, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 5028, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1Fast, 4627, XREF), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH),// Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH),// Just calls Lock3DSurface + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DeletePixelShader, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), REGISTER_OOVPA(D3D_SetFence, 5558, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 5344, PATCH), REGISTER_OOVPA(D3D_BlockOnTime, 5558, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShader, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShader, 5659, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetPixelShader, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetPixelShader, 5659, PATCH), REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5455, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5849.inl index 5ccf6bf0e..322450f09 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5849.inl @@ -51,29 +51,39 @@ OOVPA_END; // * D3D::SetFence // * SOURCE: Spiderman 2 // ****************************************************************** -OOVPA_XREF(D3D_SetFence, 5849, 7, XREF_D3D_SETFENCE, XRefZero) - { 0x0E, 0x05 }, - { 0x17, 0xC7 }, - { 0x3E, 0x40 }, - { 0x5E, 0x00 }, - { 0x87, 0x4E }, - { 0x98, 0x83 }, - { 0xA8, 0x75 }, +OOVPA_XREF(D3D_SetFence, 5849, 7, + + XREF_D3D_SetFence, + XRefZero) + + { 0x0E, 0x05 }, + { 0x17, 0xC7 }, + { 0x3E, 0x40 }, + { 0x5E, 0x00 }, + { 0x87, 0x4E }, + { 0x98, 0x83 }, + { 0xA8, 0x75 }, OOVPA_END; +#if 0 // No longer used, replaced by generic 5558 version // ****************************************************************** // * D3D::BlockOnTime // * Source: Spiderman 2 // ****************************************************************** -OOVPA_XREF(D3D_BlockOnTime, 5849, 6, XREF_D3D_BLOCKONTIME, XRefZero) - { 0x09, 0x30 }, - { 0x27, 0x07 }, - { 0x7E, 0x2B }, - { 0xA5, 0x20 }, - { 0xD9, 0x56 }, - { 0xF8, 0x47 }, -OOVPA_END; +OOVPA_XREF(D3D_BlockOnTime, 5849, 6, + XREF_D3D_BlockOnTime, + XRefZero) + + { 0x09, 0x30 }, + { 0x27, 0x07 }, + { 0x7E, 0x2B }, + { 0xA5, 0x20 }, + { 0xD9, 0x56 }, + { 0xF8, 0x47 }, +OOVPA_END; +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -97,7 +107,7 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 5849, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 5455 version // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset @@ -118,7 +128,7 @@ OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 5849, 8) { 0x47, 0x08 }, OOVPA_END; #endif - +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice8::SetDepthClipPlanes // ****************************************************************** @@ -143,6 +153,7 @@ OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 5849, 11) { 0x88, 0xC2 }, { 0x89, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_StencilFail @@ -164,201 +175,202 @@ OOVPA_END; // ****************************************************************** OOVPATable D3D8_5849[] = { - REGISTER_OOVPA(CMiniport_InitHardware, 5558, PATCH), + REGISTER_OOVPA(CMiniport_InitHardware, 5455, PATCH), REGISTER_OOVPA(CMiniport_CreateCtxDmaObject, 4034, PATCH), REGISTER_OOVPA(D3D_CMiniport_GetDisplayCapabilities, 3911, PATCH), REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH), REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetViewport, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetViewport, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetCreationParameters, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_Swap, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_Clear, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_Swap, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4039, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_End, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_End, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 5659, PATCH), REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4039, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 5233, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_Simple, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 4432, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 5849, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleAntiAlias, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShader, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetIndices, 5558, DISABLED), - REGISTER_OOVPA(D3DDevice_SetTexture, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShader, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetIndices, 4034, DISABLED), + REGISTER_OOVPA(D3DDevice_SetTexture, 4831, PATCH), REGISTER_OOVPA(D3DDevice_LazySetStateVB, 5028, XREF), REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_EndPush, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_EndPush, 4134, PATCH), REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4134, PATCH), // Not implemented yet. - REGISTER_OOVPA(D3DDevice_EndPushBuffer, 5788, PATCH), // Not implemented yet. + REGISTER_OOVPA(D3DDevice_EndPushBuffer, 3911, PATCH), // Not implemented yet. REGISTER_OOVPA(D3DDevice_RunPushBuffer, 5558, PATCH), REGISTER_OOVPA(D3DDevice_Begin, 4039, PATCH), REGISTER_OOVPA(D3DDevice_BeginStateBig, 5028, XREF), - REGISTER_OOVPA(D3DDevice_GetTransform, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetTransform, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetTransform, 5558, PATCH), REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetMaterial, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetMaterial, 5659, PATCH), REGISTER_OOVPA(D3DDevice_SetStreamSource, 4034, PATCH), - REGISTER_OOVPA(D3DResource_Register, 3925, PATCH), - REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH), - REGISTER_OOVPA(D3DResource_Release, 3925, PATCH), + REGISTER_OOVPA(D3DResource_Register, 3911, PATCH), + REGISTER_OOVPA(D3DResource_AddRef, 3911, PATCH), + REGISTER_OOVPA(D3DResource_Release, 3911, PATCH), REGISTER_OOVPA(D3DResource_IsBusy, 4039, PATCH), - REGISTER_OOVPA(D3DSurface_GetDesc, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_CopyRects, 5233, PATCH), + REGISTER_OOVPA(D3DSurface_GetDesc, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_CopyRects, 5120, PATCH), REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH), - REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH), - REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH), + REGISTER_OOVPA(D3DTexture_LockRect, 3911, PATCH), + REGISTER_OOVPA(D3DSurface_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 3911, PATCH), REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetLight, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetLight, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5558, DISABLED), - REGISTER_OOVPA(D3DVertexBuffer_Lock, 5788, PATCH), - REGISTER_OOVPA(D3DVertexBuffer_Lock2, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_GetLight, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetLight, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5455, DISABLED), + REGISTER_OOVPA(D3DVertexBuffer_Lock, 4627, PATCH), + REGISTER_OOVPA(D3DVertexBuffer_Lock2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_LightEnable, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVertices, 3911, PATCH), REGISTER_OOVPA(D3D_SetFence, 5558, XREF), - REGISTER_OOVPA(D3DDevice_InsertFence, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_IsFencePending, 5558, PATCH), - REGISTER_OOVPA(D3D_BlockOnTime, 5849, XREF), - REGISTER_OOVPA(D3DDevice_BlockOnFence, 5233, PATCH), - REGISTER_OOVPA(D3D_AllocContiguousMemory, 5788, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH - REGISTER_OOVPA(Get2DSurfaceDesc, 5849, PATCH), - REGISTER_OOVPA(D3DDevice_CreateTexture2, 5028, PATCH), - REGISTER_OOVPA(Lock2DSurface, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_InsertFence, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, PATCH), + REGISTER_OOVPA(D3D_BlockOnTime, 5558, XREF), + REGISTER_OOVPA(D3DDevice_BlockOnFence, 3911, PATCH), + REGISTER_OOVPA(D3D_AllocContiguousMemory, 5455, DISABLED), // Just calls MmAllocateContiguousMemory. Was PATCH + REGISTER_OOVPA(Get2DSurfaceDesc, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_CreateTexture2, 4831, PATCH), + REGISTER_OOVPA(Lock2DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DCubeTexture_LockRect, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, ALIAS, D3DDevice_SetVertexShaderConstant1Fast), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 4627, ALIAS, D3DDevice_SetVertexShaderConstantNotInlineFast), - REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetViewport, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetViewport, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5659, PATCH), REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetBackMaterial, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_TwoSidedLighting, 5344, PATCH), REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SetTile, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4928, PATCH), - REGISTER_OOVPA(D3DDevice_GetGammaRamp, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5028, PATCH), + REGISTER_OOVPA(D3D_SetTileNoWait, 5455, XREF), + REGISTER_OOVPA(D3DDevice_SetTile, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetGammaRamp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetGammaRamp, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetSwapCallback, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 5849, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_Reset, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_Reset, 3911, PATCH), REGISTER_OOVPA(D3DDevice_Release, 3911, PATCH), REGISTER_OOVPA(D3DDevice_InsertCallback, 5028, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_SampleAlpha, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4034, PATCH), REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5233, PATCH), REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 3911, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPalette, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetPalette, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_GetPushBufferOffset, 4627, PATCH), - REGISTER_OOVPA(MakeRequestedSpace, 5788, XREF), - REGISTER_OOVPA(D3D_Unknown, 5788, XREF), + REGISTER_OOVPA(D3D_MakeRequestedSpace, 5558, XREF), + REGISTER_OOVPA(D3DDevice_MakeSpace, 4134, DISABLED), REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3911, PATCH), REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5455, PATCH), REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_AddRef, 5788, PATCH), - REGISTER_OOVPA(D3D_ClearStateBlockFlags, 5788, XREF), + REGISTER_OOVPA(D3DDevice_AddRef, 5659, PATCH), + REGISTER_OOVPA(D3D_ClearStateBlockFlags, 3911, XREF), REGISTER_OOVPA(D3D_RecordStateBlock, 5788, XREF), REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4134, PATCH), REGISTER_OOVPA(D3DDevice_EndStateBlock, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetTile, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_KickOff, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3925, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4034, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_GetTile, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_KickOff, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4134, PATCH), REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5344, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4831, PATCH), + REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 3911, PATCH), REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 5558, PATCH), + REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetScissors, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetScissors, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_GetScissors, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetBackMaterial, 5659, PATCH), REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 5455, PATCH), - REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4134, PATCH), + REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4034, PATCH), - REGISTER_OOVPA(D3DDevice_GetTexture2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 5849, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_GetTexture2, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_SetRenderTargetFast, 5233, PATCH), + REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4432, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_CreateStateBlock, 3911, PATCH), REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 5344, DISABLED), - REGISTER_OOVPA(D3DDevice_CreatePalette2, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SwitchTexture, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_CreatePalette2, 5455, PATCH), + REGISTER_OOVPA(D3DDevice_SwitchTexture, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DeletePixelShader, 5344, PATCH), REGISTER_OOVPA(D3D_BlockOnResource, 4034, XREF), - REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH), + REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3911, PATCH), REGISTER_OOVPA(D3DDevice_DrawTriPatch, 3911, DISABLED), - REGISTER_OOVPA(D3DDevice_IsBusy, 5344, PATCH), - REGISTER_OOVPA(D3DDevice_GetMaterial, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_IsBusy, 5028, PATCH), + REGISTER_OOVPA(D3DDevice_GetMaterial, 5659, PATCH), REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_CreateCubeTexture, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1Fast, 4627, XREF), REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4034, PATCH), - REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3925, PATCH),// Just calls Lock3DSurface - REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), REGISTER_OOVPA(Lock3DSurface, 3911, PATCH), + REGISTER_OOVPA(D3DVolumeTexture_LockBox, 3911, PATCH),// Just calls Lock3DSurface REGISTER_OOVPA(D3DDevice_PersistDisplay, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH), + REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4134, PATCH), REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH), + REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4134, PATCH), REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 5344, PATCH), REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH), - REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 5788, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShader, 5788, PATCH), + REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 5659, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShader, 5659, PATCH), REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 5558, PATCH), - REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH), - REGISTER_OOVPA(D3DDevice_GetPixelShader, 5788, PATCH), - REGISTER_OOVPA(D3D_LazySetPointParams, 4039, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3911, PATCH), + REGISTER_OOVPA(D3DDevice_GetPixelShader, 5659, PATCH), + REGISTER_OOVPA(D3D_LazySetPointParams, 4034, PATCH), REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4361, PATCH), REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH), REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4361, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl new file mode 100644 index 000000000..d17caacac --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl @@ -0,0 +1,401 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->D3D8.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// Titles which did compiled with full libary version +// [LibV] Title Name | Verify | Comments +//----------------------------------------------------------------------- +// * [3925] Azurik | 100% | Missing D3D_SetPushBufferSize due locate in BINK section, have 182/196 library. +// * [3948] Shikigami no Shiro | 100% | have 178/196 library. +// * [4034] Dark Summit | 100% | have 113/195 library. +// * [4039] New Legends | 100% | have 117/195 library. +// * [4134] Double-S.T.E.A.L | 100% | have 195/202 library. +// * [4242] NFL Blitz 2002 | 100% | have 180/202 library. +// * [4361] Hunter The Reckoning | 100% | have 117/204 library. +// * [4432] RedCard 2003 | 100% | have 184/206 library. +// * [4531] NHL HITZ 2003 | 100% | have 196/206 library. +// * [4627] MLB SlugFest 2003 | 100% | have 216/227 library. +// * [4721] Terminator - Dawn of Fate | 100% | have 202/227 library. +// * [4831] Frogger Beyond | 100% | have 200/227 library. +// * [4928] Drihoo | 100% | have 201/228 library. +// * [5028] Shikigami no Shiro Evolution | 100% | have 201/229 library. +// * [5120] N.U.D.E.@ | 100% | have 211/229 library. +// * [5233] Evil Dead | 100% | have 208/230 library. +// * [5344] Gladius DEMO | 100% | have 202/229 library. +// * [5455] Dinosaur Hunting | 100% | have 207/229 library. +// * [5558] NHL HITZ Pro 2004 | 100% | have 218/229 library. +// * [5659] Midway Arcade Treasures Paperboy | 100% | have 212/229 library. +// * [5788] Digimon Battle Chronicle | 100% | have 210/229 library. +// * [5849] Nickelodeon Tak 2 | 100% | have 210/229 library. + +// TODO: Known D3D8 OOVPA issue list +// * CMiniport_IsFlipPending is XREF in v1 database, any reason for this? +// * Following OOVPA revision are not verified +// * D3DCubeTexture_GetCubeMapSurface (4721, 4928, 5233, 5455) +// * D3DDevice_ApplyStateBlock (4039, 4721, 5028, 5120) +// * D3DDevice_BeginPushBuffer (3948, 4039, 4242, 5028) +// * D3DDevice_BeginStateBlock (4039, 4721, 5028, 5120) +// * D3DDevice_BlockOnFence (4039) +// * D3DDevice_CaptureStateBlock (4039, 4432, 4721, 4831, 5028, 5120) +// * D3DDevice_CreateCubeTexture (4721, 4928, 5028, 5233, 5455) +// * D3DDevice_CreateImageSurface (4721, 4928, 5028, 5120, 5233, 5455) +// * D3DDevice_CreatePalette (4721, 4831, 4928, 5120, 5233, 5455) +// * D3DDevice_CreateStateBlock (3948, 4039, 4242, 4432, 4721, 4928, 5028, 5120) +// * D3DDevice_CreateTexture (4721, 4928, 5233, 5455) +// * D3DDevice_CreateVolumeTexture (4721, 4928, 5028, 5120, 5233, 5455) +// * D3DDevice_DeleteStateBlock (4039, 4721, 4831, 5028, 5120) +// * D3DDevice_DrawRectPatch (3948 and higher, only use by 3925?) +// * D3DDevice_EnableOverlay (4039) +// * D3DDevice_EndPushBuffer (3948, 4039, 4242, 5028) +// * D3DDevice_EndStateBlock (4039, 4721, 4831, 5028, 5120) +// * D3DDevice_FlushVertexCache (4039) +// * D3DDevice_GetBackBuffer (4721, 4831, 4928, 5028, 5120, 5233, 5455) +// * D3DDevice_GetBackMaterial (4039) +// * D3DDevice_GetLightEnable (4039) +// * D3DDevice_GetMaterial (4039) +// * D3DDevice_GetModelView (4039) +// * D3DDevice_GetOverlayUpdateStatus (4039, 4242, 4432) +// * D3DDevice_GetProjectionViewportMatrix (4039) +// * D3DDevice_GetPushBufferOffset (3948, 4039, 4242, 5028) +// * D3DDevice_GetRenderTarget (5028) +// * D3DDevice_GetScissors (4039) +// * D3DDevice_GetShaderConstantMode (4039) +// * D3DDevice_GetTile (4039) +// * D3DDevice_GetVertexShaderFunction (4039) +// * D3DDevice_GetVertexShaderInput (4039) +// * D3DDevice_GetVertexShaderType (4039) +// * D3DDevice_InsertCallback (4039) +// * D3DDevice_IsFencePending (4039) +// * D3DDevice_LoadVertexShaderProgram (4039) +// * D3DDevice_PrimeVertexCache (4039) +// * D3DDevice_RunPushBuffer (5028) +// * D3DDevice_RunVertexStateShader (4039) +// * D3DDevice_SetBackBufferScale (4039) +// * D3DDevice_SetBackMaterial (4039) +// * D3DDevice_SetModelView (4039) +// * D3DDevice_SetPixelShaderProgram (4039) +// * D3DDevice_SetVertexData2s (4039) +// * D3DDevice_SetVertexData4s (4039) +// * D3DDevice_SetVertexData4ub (4039) +// * D3DDevice_SetVertexShaderConstant (4928) +// * D3DDevice_SetVertexShaderInput (4039) +// * D3DDevice_SwitchTexture (4039) +// * D3DDevice_UpdateOverlay (4039) +// * D3DPalette_Lock (4721, 4831, 4928, 5028, 5120, 5233) +// * D3DTexture_GetSurfaceLevel (4928, 5455) +// * D3DVertexBuffer_Lock (4721, 4831, 4928, 5120, 5233, 5455) +// * D3D_ClearStateBlockFlags (4039, 4721, 5028, 5120) +// * D3D_RecordStateBlock (4039, 4721, 5028, 5120) +// * CMiniport_IsFlipPending (4039, 4134) + +#ifndef D3D8_OOVPA_INL +#define D3D8_OOVPA_INL + +#include "../OOVPA.h" + +#include "HLEDataBase/D3D8.1.0.3911.inl" +#include "HLEDataBase/D3D8.1.0.3925.inl" +#include "HLEDataBase/D3D8.1.0.3948.inl" +#include "HLEDataBase/D3D8.1.0.4034.inl" +#include "HLEDataBase/D3D8.1.0.4134.inl" +#include "HLEDataBase/D3D8.1.0.4242.inl" +#include "HLEDataBase/D3D8.1.0.4361.inl" +#include "HLEDataBase/D3D8.1.0.4432.inl" +#include "HLEDataBase/D3D8.1.0.4531.inl" +#include "HLEDataBase/D3D8.1.0.4627.inl" +#include "HLEDataBase/D3D8.1.0.4831.inl" +#include "HLEDataBase/D3D8.1.0.4928.inl" +#include "HLEDataBase/D3D8.1.0.5028.inl" +#include "HLEDataBase/D3D8.1.0.5120.inl" +#include "HLEDataBase/D3D8.1.0.5233.inl" +#include "HLEDataBase/D3D8.1.0.5344.inl" +#include "HLEDataBase/D3D8.1.0.5455.inl" +#include "HLEDataBase/D3D8.1.0.5558.inl" +#include "HLEDataBase/D3D8.1.0.5659.inl" +#include "HLEDataBase/D3D8.1.0.5788.inl" +#include "HLEDataBase/D3D8.1.0.5849.inl" + + +// ****************************************************************** +// * D3D8_OOVPA +// ****************************************************************** +OOVPATable D3D8_OOVPAV2[] = { + + REGISTER_OOVPAS(CMiniport_CreateCtxDmaObject, PATCH, 3911, 4034), + REGISTER_OOVPAS(CMiniport_InitHardware, PATCH, 3911, 4034/*, 4361, 4627*/, 5455), + REGISTER_OOVPAS(CMiniport_IsFlipPending, UNPATCHED, 3911, 4242, 4627, 4928), + REGISTER_OOVPAS(D3DBaseTexture_GetLevelCount, PATCH, 3911), + REGISTER_OOVPAS(D3DCubeTexture_GetCubeMapSurface, PATCH, 3911/*, 4134*/, 4627/*, 5558*/), // Called D3DCubeTexture_GetCubeMapSurface2 (from 4627's comment) NOTE: Use D3DCubeTexture_GetCubeMapSurface2 for 4627 and above + REGISTER_OOVPAS(D3DCubeTexture_GetCubeMapSurface2, PATCH, 4627), + REGISTER_OOVPAS(D3DCubeTexture_LockRect, PATCH, 3911), // Just calls Lock2DSurface (from 4134, 4432's comment) + REGISTER_OOVPAS(D3DDevice_AddRef, PATCH, 3911, 4039, 4134, 4242, 4627, 5028, 5344, 5558, 5659), + REGISTER_OOVPAS(D3DDevice_ApplyStateBlock, PATCH, 3911/*, 4361*/, 4627), + REGISTER_OOVPAS(D3DDevice_Begin, PATCH, 3911, 4039), + REGISTER_OOVPAS(D3DDevice_BeginPush, PATCH, 4134/*, 4432*/, 4627, 5028), + REGISTER_OOVPAS(D3DDevice_BeginPushBuffer, PATCH, 3911, 4134), // Not implemented yet. (from 5788's comment) + REGISTER_OOVPAS(D3DDevice_BeginStateBig, XREF, 5028), + REGISTER_OOVPAS(D3DDevice_BeginStateBlock, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_BeginVisibilityTest, PATCH, 3911, 4034/*, 4361, 4627*/), + REGISTER_OOVPAS(D3DDevice_BlockOnFence, PATCH, 3911/*, 4039, 4134, 5233*/), + REGISTER_OOVPAS(D3DDevice_BlockUntilVerticalBlank, PATCH, 3911, 4034, 4134, 4242, 4432, 4627, 5028, 5233, 5344, 5455, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_CaptureStateBlock, PATCH, 3911, 4134/*, 4627, 5455*/), + REGISTER_OOVPAS(D3DDevice_Clear, PATCH, 3911, 4034/*, 4134, 4627, 5028*/), + REGISTER_OOVPAS(D3DDevice_CopyRects, PATCH, 3911, 4034/*, 4134*/, 4627, 5120), + REGISTER_OOVPAS(D3DDevice_CreateCubeTexture, PATCH, 3911/*, 4361*/, 4627), + REGISTER_OOVPAS(D3DDevice_CreateImageSurface, PATCH, 3911, 4034/*, 4134*/, 4627),//TODO 4721,4928 (from 4627's comment) + REGISTER_OOVPAS(D3DDevice_CreateIndexBuffer, UNPATCHED, 3911, 4627/*, 5558*/), // TODO: This needs to be verified on 4361 + REGISTER_OOVPAS(D3DDevice_CreateIndexBuffer2, UNPATCHED, 4627, 5344), + REGISTER_OOVPAS(D3DDevice_CreatePalette, PATCH, 3911, 4627), // Called D3DDevice_CreatePalette2 (from 4627's comment) NOTE: Use D3DDevice_CreatePalette2 for 4627 and above + REGISTER_OOVPAS(D3DDevice_CreatePalette2, PATCH, 4627, 5344, 5455), + REGISTER_OOVPAS(D3DDevice_CreatePixelShader, PATCH, 3911, 5344/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_CreateStateBlock, PATCH, 3911/*, 4627*/), + REGISTER_OOVPAS(D3DDevice_CreateTexture, PATCH, 3911, 4627),// Called D3DDevice_CreateTexture2 (from 4627's comment) NOTE: Use D3DDevice_CreateTexture2 for 4627 and above + REGISTER_OOVPAS(D3DDevice_CreateTexture2, PATCH, 4627, 4831/*, 5028, 5233*/), // Was 4627 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_CreateVertexBuffer, UNPATCHED, 3911, 4627), + REGISTER_OOVPAS(D3DDevice_CreateVertexBuffer2, UNPATCHED, 4627, 5344, 5455), + REGISTER_OOVPAS(D3DDevice_CreateVertexShader, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_CreateVolumeTexture, PATCH, 3911, 4627), + REGISTER_OOVPAS(D3DDevice_DeletePatch, UNPATCHED, 3911/*, 4039*/), // (TODO) (from 4034's comment) + REGISTER_OOVPAS(D3DDevice_DeletePixelShader, PATCH, 3911, 5344), + REGISTER_OOVPAS(D3DDevice_DeleteStateBlock, PATCH, 3911/*, 4361, 5788*/), + REGISTER_OOVPAS(D3DDevice_DeleteVertexShader, PATCH, 3911, 5344), + REGISTER_OOVPAS(D3DDevice_DrawIndexedVertices, PATCH, 3911, 4034, 4627, 5028), + REGISTER_OOVPAS(D3DDevice_DrawIndexedVerticesUP, PATCH, 3911, 4039/*, 4134, 4627*/, 5028, 5344/*, 5558, 5788*/), + REGISTER_OOVPAS(D3DDevice_DrawRectPatch, PATCH, 3911), // TODO: Unused? (from 4034's comment) + REGISTER_OOVPAS(D3DDevice_DrawTriPatch, UNPATCHED, 3911), + REGISTER_OOVPAS(D3DDevice_DrawVertices, PATCH, 3911/*, 4034, 5028*/), + REGISTER_OOVPAS(D3DDevice_DrawVerticesUP, PATCH, 3911, 4039/*, 4134, 4627*/, 5344/*, 5558, 5788*/), + REGISTER_OOVPAS(D3DDevice_EnableOverlay, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_End, PATCH, 3911, 4039/*, 4627, 5028*/, 5344/*, 5558*/), + REGISTER_OOVPAS(D3DDevice_EndPush, PATCH, 4134/*, 4627*/), // Was 4627 (from 5233's comment) + REGISTER_OOVPAS(D3DDevice_EndPushBuffer, PATCH, 3911/*, 4134*/), // Not implemented yet. (from 5788's comment) + REGISTER_OOVPAS(D3DDevice_EndStateBlock, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_EndVisibilityTest, PATCH, 3911/*, 4034, 4361, 4627, 5788*/), + REGISTER_OOVPAS(D3DDevice_FlushVertexCache, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_GetBackBuffer, PATCH, 3911, 4034, 4134, 4627/*, 5558*/), // Called D3DDevice_GetBackBuffer2 (from 4627's comment) NOTE: Use D3DDevice_GetBackBuffer2 for 4627 and above + REGISTER_OOVPAS(D3DDevice_GetBackBuffer2, PATCH, 4627/*, 5028, 5344, 5455, 5558, 5788*/), // 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_GetBackMaterial, PATCH, 3911, 4134, 4627, 5344/*, 5455*/, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetCreationParameters, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_GetDepthStencilSurface, PATCH, 3911, 4627), // Called D3DDevice_GetDepthStencilSurface2 (from 4627's comment) NOTE: Use D3DDevice_GetDepthStencilSurface2 for 4627 and above + REGISTER_OOVPAS(D3DDevice_GetDepthStencilSurface2, PATCH, 4627/*, 5028, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetDeviceCaps, UNPATCHED, 3911), + REGISTER_OOVPAS(D3DDevice_GetDisplayFieldStatus, PATCH, 3911/*, 4039, 4432, 5233, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetDisplayMode, PATCH, 3911, 4039/*, 4432, 4627*/), + REGISTER_OOVPAS(D3DDevice_GetGammaRamp, PATCH, 3911/*, 3925, 4034*/), + REGISTER_OOVPAS(D3DDevice_GetLight, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_GetLightEnable, PATCH, 3911, 5344), + REGISTER_OOVPAS(D3DDevice_GetMaterial, PATCH, 3911, 4134, 4627, 5344/*, 5455*/, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetModelView, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_GetOverlayUpdateStatus, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_GetPersistedSurface2, PATCH, 4928), // For only on Unreal Championship (from 4627's comment) + REGISTER_OOVPAS(D3DDevice_GetPixelShader, PATCH, 3911, 4039, 4134, 5028, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetProjectionViewportMatrix, PATCH, 3911, 4134/*, 4432*/, 4627, 5344, 5558), // For 5455 (from 5558's comment) + REGISTER_OOVPAS(D3DDevice_GetPushBufferOffset, PATCH, 3911, 4627),//TODO 4831 (from 4627's comment) + REGISTER_OOVPAS(D3DDevice_GetRenderTarget, PATCH, 3911, 4039, 4134/*, 4361, 4432*/, 4627), // Called D3DDevice_GetRenderTarget2 (from 4627's comment) NOTE: Use D3DDevice_GetRenderTarget2 for 4627 and above + REGISTER_OOVPAS(D3DDevice_GetRenderTarget2, PATCH, 4627/*, 5028*/), + REGISTER_OOVPAS(D3DDevice_GetScissors, PATCH, 3911/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetShaderConstantMode, PATCH, 3911, 4134, 4627, 5028, 5344, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetStreamSource2, PATCH, 4627), + REGISTER_OOVPAS(D3DDevice_GetTexture2, PATCH, 3911, 4134, 4627, 5344, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_GetTile, PATCH, 3911/*, 4134, 4627, 5028, 5344*/, 5455), + REGISTER_OOVPAS(D3DDevice_GetTransform, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_GetVertexShader, PATCH, 3911, 4039, 4134, 5028, 5558, 5659/*5788*/), + REGISTER_OOVPAS(D3DDevice_GetVertexShaderConstant, PATCH, 3911, 4039, 5028), + REGISTER_OOVPAS(D3DDevice_GetVertexShaderDeclaration, PATCH, 3911/*, 4134, 4627, 5455*/), + REGISTER_OOVPAS(D3DDevice_GetVertexShaderFunction, PATCH, 3911/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_GetVertexShaderInput, PATCH, 3911/*, 4134, 4627*/), + REGISTER_OOVPAS(D3DDevice_GetVertexShaderSize, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_GetVertexShaderType, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_GetViewport, PATCH, 3911/*, 4034, 4134, 4627, 5344*/, 5455/*, 5788*/), // Was 4627 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_GetViewportOffsetAndScale, PATCH, 4432/*, 5558*/), + REGISTER_OOVPAS(D3DDevice_GetVisibilityTestResult, PATCH, 3911, 5233), + REGISTER_OOVPAS(D3DDevice_InsertCallback, PATCH, 3911, 4134/*, 4627*/, 5028), + REGISTER_OOVPAS(D3DDevice_InsertFence, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_IsBusy, PATCH, 3911/*, 4034*/, 5028/*, 5344*/), + REGISTER_OOVPAS(D3DDevice_IsFencePending, PATCH, 3911, 4039, 5028/*, 5558*/), + REGISTER_OOVPAS(D3DDevice_KickOff, PATCH, 3911, 4034/*, 4134*/, 4531, 5028, 5455/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_KickPushBuffer, PATCH, 3911/*, 4627*/), + REGISTER_OOVPAS(D3DDevice_LazySetStateVB, XREF, 5028), + REGISTER_OOVPAS(D3DDevice_LightEnable, PATCH, 3911/*, 5028*/, 5344), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_LoadVertexShader, PATCH, 3911, 4034, 4627, 5028), + REGISTER_OOVPAS(D3DDevice_LoadVertexShaderProgram, PATCH, 3911/*, 4134, 4627, 5558*/), + REGISTER_OOVPAS(D3DDevice_MakeSpace, UNPATCHED, 4134), + REGISTER_OOVPAS(D3DDevice_PersistDisplay, PATCH, 3911, 4039, 4627, 4831, 5455, 5558), + REGISTER_OOVPAS(D3DDevice_Present, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_PrimeVertexCache, PATCH, 3911, 4134/*, 4361, 4627*/), + REGISTER_OOVPAS(D3DDevice_Release, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_Reset, PATCH, 3911/*, 4039*/), + REGISTER_OOVPAS(D3DDevice_RunPushBuffer, PATCH, 3911, 4039, 4627, 5120, 5558), // for 5455 (from 5558's comment) + REGISTER_OOVPAS(D3DDevice_RunVertexStateShader, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_SelectVertexShader, PATCH, 3911, 4034/*, 4627, 5344*/, 5455), + REGISTER_OOVPAS(D3DDevice_SelectVertexShaderDirect, PATCH, 4361), + REGISTER_OOVPAS(D3DDevice_SetBackBufferScale, PATCH, 4134), + REGISTER_OOVPAS(D3DDevice_SetBackMaterial, PATCH, 3911, 4134, 4627, 5344/*, 5455*/, 5558, 5659/*, 5788*/), + REGISTER_OOVPAS(D3DDevice_SetDepthClipPlanes, PATCH, 4432/*, 4627, 5788, 5849*/), + REGISTER_OOVPAS(D3DDevice_SetFlickerFilter, PATCH, 3911, 4034, 4134), + REGISTER_OOVPAS(D3DDevice_SetGammaRamp, PATCH, 3911, 4627), + REGISTER_OOVPAS(D3DDevice_SetIndices, UNPATCHED, 3911, 4034/*, 4134, 5028, 5558*/), + REGISTER_OOVPAS(D3DDevice_SetLight, PATCH, 3911/*, 4034, 4134, 5028*/, 5344/*, 5558*/), + REGISTER_OOVPAS(D3DDevice_SetMaterial, PATCH, 3911, 4034, 4134, 4627, 5344/*, 5455*/, 5558, 5659/*, 5788*/), // Was 4627 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetModelView, PATCH, 3911, 4134, 4627), + REGISTER_OOVPAS(D3DDevice_SetPalette, PATCH, 3911, 4034/*, 4134, 4432, 4627, 5233, 5344, 5558, 5788*/), + REGISTER_OOVPAS(D3DDevice_SetPixelShader, PATCH, 3911, 4034/*, 4134, 4432*/, 4627), + REGISTER_OOVPAS(D3DDevice_SetPixelShaderConstant, PATCH, 3911/*, 4039*/, 4831/*, 5233, 5558*/), + REGISTER_OOVPAS(D3DDevice_SetPixelShaderProgram, PATCH, 3911/*, 4361, 4627, 5558*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_BackFillMode, PATCH, 3911, 4034/*, 4134, 4531, 5788*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_CullMode, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetRenderState_Deferred, UNPATCHED, 3911), + REGISTER_OOVPAS(D3DDevice_SetRenderState_DoNotCullUncompressed, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_SetRenderState_Dxt1NoiseEnable, PATCH, 3911, 4034/*, 4134*/, 4627/*, 5028, 5344, 5558*/), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetRenderState_EdgeAntiAlias, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_FillMode, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_FogColor, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_FrontFace, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_LineWidth, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetRenderState_LogicOp, PATCH, 3911, 4034/*, 4134, 4627*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleAntiAlias, PATCH, 3911, 4034/*, 4134, 4432*/, 4627), + REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMask, PATCH, 3911, 4034/*, 4134*/, 4627), + REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMode, PATCH, 3925, 4034, 4134, 4627, 5233/*, 5455, 5558, 5788*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, PATCH, 4034, 4134, 4627/*, 5233*/, 5344/*, 5455, 5558, 5788*/), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetRenderState_NormalizeNormals, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_OcclusionCullEnable, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetRenderState_PSTextureModes, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetRenderState_RopZCmpAlwaysRead, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_SetRenderState_RopZRead, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_SetRenderState_SampleAlpha, PATCH, 4627), + REGISTER_OOVPAS(D3DDevice_SetRenderState_ShadowFunc, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_Simple, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilCullEnable, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilEnable, PATCH, 3911, 4034/*, 4134*/, 5849), + REGISTER_OOVPAS(D3DDevice_SetRenderState_StencilFail, PATCH, 3911, 4034/*, 4134*/, 5849), + REGISTER_OOVPAS(D3DDevice_SetRenderState_TextureFactor, PATCH, 3911, 4034/*, 4134, 5028, 5558, 5788*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_TwoSidedLighting, PATCH, 3911, 4034/*, 4134*/, 5344/*, 5558*/), // Beware of the typo... (from 4627's comment) + REGISTER_OOVPAS(D3DDevice_SetRenderState_VertexBlend, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_YuvEnable, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetRenderState_ZBias, PATCH, 3911), + REGISTER_OOVPAS(D3DDevice_SetRenderState_ZEnable, PATCH, 3911, 4034, 4134, 4432/*, 4627, 5028*/), + REGISTER_OOVPAS(D3DDevice_SetRenderTarget, PATCH, 3911, 3948, 4039/*, 4134*/, 4627, 5344, 5455/*, 5558*/), + REGISTER_OOVPAS(D3DDevice_SetRenderTargetFast, PATCH, 5233/*, 5344*/), + REGISTER_OOVPAS(D3DDevice_SetScissors, PATCH, 3911/*, 4039, 4361, 4627, 5233*/, 5344, 5558), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetScreenSpaceOffset, PATCH, 4034/*, 5233, 5344*/, 5455), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetShaderConstantMode, PATCH, 3911, 4034/*, 4134, 4361, 4627, 5028*/), + REGISTER_OOVPAS(D3DDevice_SetSoftDisplayFilter, PATCH, 3911, 4034, 4134), + REGISTER_OOVPAS(D3DDevice_SetStateUP, UNPATCHED, 3911, 4627), + REGISTER_OOVPAS(D3DDevice_SetStateVB, UNPATCHED, 3911, 4627), + REGISTER_OOVPAS(D3DDevice_SetStipple, PATCH, 4627), + REGISTER_OOVPAS(D3DDevice_SetStreamSource, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetSwapCallback, PATCH, 4134, 4242, 4432, 4627, 5028, 5233, 5344, 5455, 5558, 5659), + REGISTER_OOVPAS(D3DDevice_SetTexture, PATCH, 3911, 4034/*, 4627*/, 4831/*, 5344*/), // Was 4928 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetTextureState_BorderColor, PATCH, 3911, 4034/*, 4361*/), + REGISTER_OOVPAS(D3DDevice_SetTextureState_BumpEnv, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3DDevice_SetTextureState_ColorKeyColor, PATCH, 3911, 4034/*, 4134*/), + REGISTER_OOVPAS(D3DDevice_SetTextureState_TexCoordIndex, PATCH, 3911, 4034, 4242, 4627), + REGISTER_OOVPAS(D3DDevice_SetTile, PATCH, 3911, 4034/*, 4134*/, 4627/*, 5028, 5455, 5788*/), // Then it has changed calls ?SetTileNoWait@D3D@@YGXKPBU_D3DTILE@@@Z in XDK 4627 and higher. + REGISTER_OOVPAS(D3DDevice_SetTransform, PATCH, 3911, 4034/*, 4134*/, 5344, 5558), // Was 4134 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetVertexData2f, PATCH, 3911, 4039), // Was 4627 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetVertexData2s, PATCH, 3911, 4134/*, 4361*/), + REGISTER_OOVPAS(D3DDevice_SetVertexData4f, PATCH, 3911, 4039), + REGISTER_OOVPAS(D3DDevice_SetVertexData4s, PATCH, 3911, 4134/*, 4361*/), + REGISTER_OOVPAS(D3DDevice_SetVertexData4ub, PATCH, 3911, 4134), + REGISTER_OOVPAS(D3DDevice_SetVertexDataColor, PATCH, 3911, 4039/*, 4361*/), + REGISTER_OOVPAS(D3DDevice_SetVertexShader, PATCH, 3911, 4034, 4134, 5028, 5455), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant, PATCH, 3911, 4034, 4627), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant1, PATCH, 4627/*, 5558, 5788*/), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant1Fast, PATCH, 4627), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstant4, PATCH, 4627), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstantNotInline, PATCH, 4627, 5028, 5558), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderConstantNotInlineFast, PATCH, 4627), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderInput, PATCH, 3911, 4134/*, 4361*/), + REGISTER_OOVPAS(D3DDevice_SetVertexShaderInputDirect, PATCH, 4361), + REGISTER_OOVPAS(D3DDevice_SetVerticalBlankCallback, PATCH, 3911, 4039, 4134, 4242, 4432, 4627, 5028, 5233, 5344, 5455, 5558, 5659), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_SetViewport, PATCH, 3911, 4034/*, 4627, 5028*/, 5344, 5455), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(D3DDevice_Swap, PATCH, 4034, 4531, 4627/*, 5028, 5233*/), + REGISTER_OOVPAS(D3DDevice_SwitchTexture, PATCH, 3911/*, 4361*/), + REGISTER_OOVPAS(D3DDevice_UpdateOverlay, PATCH, 3911, 4531,/* 5028,*/ 5233/*, 5344, 5558*/), + REGISTER_OOVPAS(D3DPalette_Lock, PATCH, 3911, 4531, 4627/*, 5344*/), // Called D3DPalette_Lock2 (from 4627's comment) NOTE: Use D3DPalette_Lock2 for 4627 and above + REGISTER_OOVPAS(D3DPalette_Lock2, PATCH, 4627), + REGISTER_OOVPAS(D3DResource_AddRef, PATCH, 3911), + REGISTER_OOVPAS(D3DResource_BlockUntilNotBusy, PATCH, 3911), + REGISTER_OOVPAS(D3DResource_GetType, UNPATCHED, 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, PATCH, 3911, 4039), + REGISTER_OOVPAS(D3DResource_Register, PATCH, 3911), + REGISTER_OOVPAS(D3DResource_Release, PATCH, 3911/*, 4361*/), + REGISTER_OOVPAS(D3DSurface_GetDesc, PATCH, 3911), + REGISTER_OOVPAS(D3DSurface_LockRect, PATCH, 3911), + REGISTER_OOVPAS(D3DTexture_GetSurfaceLevel, PATCH, 3911/*, 4432*/, 4627), + REGISTER_OOVPAS(D3DTexture_GetSurfaceLevel2, PATCH, 4627), + REGISTER_OOVPAS(D3DTexture_LockRect, PATCH, 3911), + REGISTER_OOVPAS(D3DVertexBuffer_GetDesc, UNPATCHED, 3911), + REGISTER_OOVPAS(D3DVertexBuffer_Lock, PATCH, 3911, 4034, 4531, 4627/*, 5788*/), + REGISTER_OOVPAS(D3DVertexBuffer_Lock2, PATCH, 4627/*, 5788*/), + REGISTER_OOVPAS(D3DVolumeTexture_LockBox, PATCH, 3911), // Just calls Lock3DSurface (from 4134, 4432's comment) + REGISTER_OOVPAS(D3D_AllocContiguousMemory, UNPATCHED, 3911, 5455/*, 5788*/), // Just calls MmAllocateContiguousMemory. Was PATCH (from 3925, 5788's comment) + REGISTER_OOVPAS(D3D_BlockOnResource, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3D_BlockOnTime, PATCH, 3911, 4034/*, 4361*/, 4627, 5028, 5558/*, 5849*/), + REGISTER_OOVPAS(D3D_CMiniport_GetDisplayCapabilities, PATCH, 3911), + REGISTER_OOVPAS(D3D_CheckDeviceFormat, UNPATCHED, 3911/*, 4134*/), + REGISTER_OOVPAS(D3D_ClearStateBlockFlags, XREF, 3911/*, 5788*/), + REGISTER_OOVPAS(D3D_CommonSetRenderTarget, XREF, 4627, 5028/*, 5233*/), // Used between 4627 to 5233 (from 5344's comment) + REGISTER_OOVPAS(D3D_CommonSetRenderTargetB, XREF, 4627), + REGISTER_OOVPAS(D3D_CreateDeviceX, UNPATCHED, 4627), + REGISTER_OOVPAS(D3D_CreateStandAloneSurface, XREF, 4034), + REGISTER_OOVPAS(D3D_EnumAdapterModes, UNPATCHED, 3911), + REGISTER_OOVPAS(D3D_GetAdapterDisplayMode, UNPATCHED, 3911, 4627), + REGISTER_OOVPAS(D3D_GetAdapterIdentifier, UNPATCHED, 3911), + REGISTER_OOVPAS(D3D_GetAdapterModeCount, UNPATCHED, 3911), + REGISTER_OOVPAS(D3D_GetDeviceCaps, UNPATCHED, 3911), + REGISTER_OOVPAS(D3D_KickOffAndWaitForIdle, PATCH, 3911, 4034, 4627, 5028), + REGISTER_OOVPAS(D3D_KickOffAndWaitForIdle2, PATCH, 4627), + REGISTER_OOVPAS(D3D_LazySetPointParams, PATCH, 3911, 4034), + REGISTER_OOVPAS(D3D_RecordStateBlock, XREF, 3911/*, 5788*/), + REGISTER_OOVPAS(D3D_SetCommonDebugRegisters, PATCH, 3911), + REGISTER_OOVPAS(D3D_SetFence, XREF, 3911, 4034, 4134, 5028, 5558), + REGISTER_OOVPAS(D3D_SetPushBufferSize, UNPATCHED, 3911), + REGISTER_OOVPAS(D3D_SetTileNoWait, XREF, 4627, 5455), + // REGISTER_OOVPAS(D3D_Unknown, XREF, 5788), // This one D3DDevice_MakeSpace + REGISTER_OOVPAS(Direct3D_CheckDeviceMultiSampleType, UNPATCHED, 3911), + REGISTER_OOVPAS(Direct3D_CreateDevice, PATCH, 3911, 5028), + REGISTER_OOVPAS(Get2DSurfaceDesc, PATCH, 3911, 4034/*, 4134, 4627, 5028, 5344, 5558, 5788, 5849*/), // Was 5233 (from 5344's comment) + REGISTER_OOVPAS(Lock2DSurface, PATCH, 3911), + REGISTER_OOVPAS(Lock3DSurface, PATCH, 3911), + REGISTER_OOVPAS(D3D_MakeRequestedSpace, PATCH, 4134, 5028, 5558/*, 5788*/), + REGISTER_OOVPAS(XMETAL_StartPush, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirect3DVertexBuffer8_Lock, UNPATCHED, 4627), +}; + +// ****************************************************************** +// * D3D8_OOVPA_SIZE +// ****************************************************************** +uint32 D3D8_OOVPA_SIZEV2 = sizeof(D3D8_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl new file mode 100644 index 000000000..7dfaf8b08 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl @@ -0,0 +1,5675 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->DSound.1.0.3911.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 RadWolfie +// * +// * All rights reserved +// * +// ****************************************************************** + + +// ****************************************************************** +// * DirectSoundEnterCriticalSection +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(DirectSoundEnterCriticalSection, 3911, 7, + + XREF_DirectSoundEnterCriticalSection, + XRefZero) + + { 0x02, 0xB6 }, + { 0x06, 0x00 }, + { 0x0A, 0x74 }, + { 0x0E, 0xC3 }, + { 0x14, 0xFF }, + { 0x1A, 0x33 }, + { 0x1B, 0xC0 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundCreate +// ****************************************************************** +OOVPA_NO_XREF(DirectSoundCreate, 3911, 9) + + // DirectSoundCreate+0x23 : add eax, 8 + { 0x23, 0x83 }, + { 0x24, 0xC0 }, + { 0x25, 0x08 }, + + // DirectSoundCreate+0x34 : push 0x1C + { 0x34, 0x6A }, + { 0x35, 0x1C }, + + // DirectSoundCreate+0x75 : sbb eax, eax + { 0x75, 0x1B }, + { 0x76, 0xC0 }, + + // DirectSoundCreate+0x9B : retn 0x0C + { 0x9B, 0xC2 }, + { 0x9C, 0x0C }, +OOVPA_END; +// ****************************************************************** +// * CMcpxAPU_ServiceDeferredCommandsLow +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_ServiceDeferredCommandsLow, 3911, 12, + + XREF_CMcpxAPU_ServiceDeferredCommandsLow, + XRefZero) + + // CMcpxAPU_ServiceDeferredCommandsLow+0x06 : lea edi, [ebx+0x664] + { 0x06, 0x8D }, + { 0x07, 0xBB }, + { 0x08, 0x64 }, + { 0x09, 0x06 }, + { 0x0A, 0x00 }, + { 0x0B, 0x00 }, + + // CMcpxAPU_ServiceDeferredCommandsLow+0x20 : mov eax, [ecx] + { 0x20, 0x8B }, + { 0x21, 0x01 }, + + // CMcpxAPU_ServiceDeferredCommandsLow+0x33 : add edi, 4; dec ebp + { 0x33, 0x83 }, + { 0x34, 0xC7 }, + { 0x35, 0x04 }, + { 0x36, 0x4D }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_DoWork +// ****************************************************************** +OOVPA_XREF(CDirectSound_DoWork, 3911, 9, + + XREF_CDirectSound_DoWork, + XRefOne) + + // CDirectSound_DoWork+0x0F : call [CMcpxAPU_ServiceDeferredCommandsLow] + XREF_ENTRY( 0x10, XREF_CMcpxAPU_ServiceDeferredCommandsLow ), + + // CDirectSound_DoWork+0x08 : mov eax, [esp+0x08] + { 0x08, 0x8B }, + { 0x09, 0x44 }, + { 0x0A, 0x24 }, + { 0x0B, 0x08 }, + + // CDirectSound_DoWork+0x17 : jz +0x0B + { 0x17, 0x74 }, + { 0x18, 0x0B }, + + // CDirectSound_DoWork+0x24 : retn 0x04 + { 0x24, 0xC2 }, + { 0x25, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundDoWork +// ****************************************************************** +OOVPA_XREF(DirectSoundDoWork, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // DirectSoundDoWork+0x12 : call [CDirectSound_DoWork] + XREF_ENTRY( 0x13, XREF_CDirectSound_DoWork ), + + // DirectSoundDoWork+0x0D : test eax, eax;jz +0x06 + { 0x0D, 0x85 }, + { 0x0E, 0xC0 }, + { 0x0F, 0x74 }, + { 0x10, 0x06 }, + + // DirectSoundDoWork+0x19 : pop esi; jz +0x0B + { 0x19, 0x5E }, + { 0x1A, 0x74 }, + { 0x1B, 0x0B }, + + // DirectSoundDoWork+0x27 : retn + { 0x27, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::CreateSoundBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSound_CreateSoundBuffer, 3911, 17, + + XREF_CDirectSound_CreateSoundBuffer, + XRefZero) + + // CDirectSound_CreateSoundBuffer+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_CreateSoundBuffer+0x2D : and esi, 0x7FF8FFF2 + { 0x2D, 0x81 }, + { 0x2E, 0xE6 }, + { 0x2F, 0xF2 }, + { 0x30, 0xFF }, + { 0x31, 0xF8 }, + { 0x32, 0x7F }, + + // CDirectSound_CreateSoundBuffer+0x33 : add esi, 0x8007000E + { 0x33, 0x81 }, + { 0x34, 0xC6 }, + { 0x35, 0x0E }, + { 0x36, 0x00 }, + { 0x37, 0x07 }, + { 0x38, 0x80 }, + + // CDirectSound_CreateSoundBuffer+0x3C : js +0x21 + { 0x3C, 0x78 }, + { 0x3D, 0x21 }, + + // CDirectSound_CreateSoundBuffer+0x7D : retn 0x10 + { 0x7D, 0xC2 }, + { 0x7E, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_CreateSoundBuffer +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_CreateSoundBuffer, 3911, 12, + + XREF_IDirectSound_CreateSoundBuffer, + XRefOne) + + // IDirectSound_CreateSoundBuffer+0x1C : call [CDirectSound::CreateSoundBuffer] + XREF_ENTRY( 0x1D, XREF_CDirectSound_CreateSoundBuffer ), + + // IDirectSound_CreateSoundBuffer+0x04 : mov eax, [esp+8] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSound_CreateSoundBuffer+0x12 : add eax, 0xFFFFFFF8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, + + // IDirectSound_CreateSoundBuffer+0x17 : sbb ecx, ecx + { 0x17, 0x1B }, + { 0x18, 0xC9 }, + + // IDirectSound_CreateSoundBuffer+0x21 : retn 0x10 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundCreateBuffer +// ****************************************************************** +OOVPA_XREF(DirectSoundCreateBuffer, 3911, 12, + + XRefNoSaveIndex, + XRefOne) + + // DirectSoundCreateBuffer+0x27 : call [IDirectSound::CreateSoundBuffer] + XREF_ENTRY(0x28, XREF_IDirectSound_CreateSoundBuffer), + + // DirectSoundCreateBuffer+0x04 : and [ebp-0x04], 0 + { 0x04, 0x83 }, + { 0x05, 0x65 }, + { 0x06, 0xFC }, + + { 0x20, 0x0C }, + { 0x23, 0x08 }, + { 0x26, 0xFC }, + + // DirectSoundCreateBuffer+0x2E : lea eax, [ebp-0x04] + { 0x2E, 0x8D }, + { 0x2F, 0x45 }, + { 0x30, 0xFC }, + + // DirectSoundCreateBuffer+0x3B : retn 0x08 + { 0x3B, 0xC2 }, + { 0x3C, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::CreateSoundStream +// ****************************************************************** +OOVPA_XREF(CDirectSound_CreateSoundStream, 3911, 16, + + XREF_CDirectSound_CreateSoundStream, + XRefZero) + + // CDirectSound_CreateSoundStream+0x2D : and esi, 0x7FF8FFF2 + { 0x2D, 0x81 }, + { 0x2E, 0xE6 }, + { 0x2F, 0xF2 }, + { 0x30, 0xFF }, + { 0x31, 0xF8 }, + { 0x32, 0x7F }, + + // CDirectSound_CreateSoundStream+0x33 : add esi, 0x8007000E + { 0x33, 0x81 }, + { 0x34, 0xC6 }, + { 0x35, 0x0E }, + { 0x36, 0x00 }, + { 0x37, 0x07 }, + { 0x38, 0x80 }, + + // CDirectSound_CreateSoundStream+0x3C : js +0x16 + { 0x3C, 0x78 }, + { 0x3D, 0x16 }, + + // CDirectSound_CreateSoundStream+0x72 : retn 0x10 + { 0x72, 0xC2 }, + { 0x73, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_CreateSoundStream +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_CreateSoundStream, 3911, 10, + + XREF_IDirectSound_CreateSoundStream, + XRefOne) + + // IDirectSound_CreateSoundStream+0x1C : call [CDirectSound::CreateSoundStream] + XREF_ENTRY( 0x1D, XREF_CDirectSound_CreateSoundStream ), + + // IDirectSound_CreateSoundStream+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSound_CreateSoundStream+0x12 : and eax, 0xFFFFFFF8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, + + // IDirectSound_CreateSoundStream+0x21 : retn 0x10 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundCreateStream +// ****************************************************************** +OOVPA_XREF(DirectSoundCreateStream, 3911, 12, + + XRefNoSaveIndex, + XRefOne) + + // DirectSoundCreateStream+0x27 : call [IDirectSound::CreateSoundStream] + XREF_ENTRY(0x28, XREF_IDirectSound_CreateSoundStream ), + + // DirectSoundCreateStream+0x04 : and [ebp-0x04], 0 + { 0x04, 0x83 }, + { 0x05, 0x65 }, + { 0x06, 0xFC }, + + { 0x20, 0x0C }, + { 0x23, 0x08 }, + { 0x26, 0xFC }, + + // DirectSoundCreateStream+0x2E : lea eax, [ebp-0x04] + { 0x2E, 0x8D }, + { 0x2F, 0x45 }, + { 0x30, 0xFC }, + + // DirectSoundCreateStream+0x3B : retn 0x08 + { 0x3B, 0xC2 }, + { 0x3C, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_AddRef +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(IDirectSoundBuffer_AddRef, 3911, 11) + + // IDirectSoundBuffer_AddRef+0x04 : lea ecx, [eax-0x1C] + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xE4 }, + + // IDirectSoundBuffer_AddRef+0x07 : neg eax; sbb eax, eax + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, + + // IDirectSoundBuffer_AddRef+0x10 : call dword ptr [ecx+0x04] + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x04 }, + + // IDirectSoundBuffer_AddRef+0x13 : ret 4 + { 0x13, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_Release +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(IDirectSoundBuffer_Release, 3911, 11) + + // IDirectSoundBuffer_Release+0x04 : lea ecx, [eax-0x1C] + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xE4 }, + + // IDirectSoundBuffer_Release+0x07 : neg eax; sbb eax, eax + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, + + // IDirectSoundBuffer_Release+0x10 : call dword ptr [ecx+0x08] + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x08 }, + + // IDirectSoundBuffer_Release+0x13 : ret 4 + { 0x13, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_Unlock +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(IDirectSoundBuffer_Unlock, 3911, 5) + + // IDirectSoundBuffer_Unlock+0x00 : xor eax, eax + { 0x00, 0x33 }, + { 0x01, 0xC0 }, + + // IDirectSoundBuffer_Unlock+0x02 : ret 14h + { 0x02, 0xC2 }, + { 0x03, 0x14 }, + { 0x04, 0x00 } +OOVPA_END; +#if 0 // Cannot be used since this OOVPA does produce false detection. Use it only for as a model understanding. +// ****************************************************************** +// * IDirectSound_SetCooperativeLevel +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(IDirectSound_SetCooperativeLevel, 3911, 5) + + // IDirectSound_SetCooperativeLevel+0x00 : xor eax, eax + { 0x00, 0x33 }, + { 0x01, 0xC0 }, + + // IDirectSound_SetCooperativeLevel+0x02 : ret 0Ch + { 0x02, 0xC2 }, + { 0x03, 0x0C }, + { 0x04, 0x00 } +OOVPA_END; +#endif +// ****************************************************************** +// * CMcpxVoiceClient_SetVolume +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetVolume, 3911, 11, + + XREF_CMcpxVoiceClient_SetVolume, + XRefZero) + + // CMcpxVoiceClient_SetVolume+0x26 : mov ecx, [esi+0xE0] + { 0x26, 0x8B }, + { 0x27, 0x8E }, + { 0x28, 0xE0 }, + { 0x29, 0x00 }, + + // CMcpxVoiceClient_SetVolume+0x2F : movzx ecx, word ptr [ecx+2] + { 0x2F, 0x0F }, + { 0x30, 0xB7 }, + { 0x31, 0x49 }, + { 0x32, 0x02 }, + + // CMcpxVoiceClient_SetVolume+0x35 : dec ecx; sar ecx, 1 + { 0x35, 0x49 }, + { 0x36, 0xD1 }, + { 0x37, 0xF9 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetVolume, 3911, 11, + + XREF_CDirectSoundVoice_SetVolume, + XRefOne) + + XREF_ENTRY( 0x1E, XREF_CMcpxVoiceClient_SetVolume ), + + //CDirectSoundVoice_SetVolume+0x00 : push esi + { 0x00, 0x56 }, + + //CDirectSoundVoice_SetVolume+0x11 : mov eax, dword ptr [ecx+18h] + { 0x11, 0x8B }, + { 0x12, 0x41 }, + { 0x13, 0x18 }, + + //CDirectSoundVoice_SetVolume+0x1A : mov ecx, dword ptr [ecx+14h] + { 0x1A, 0x8B }, + { 0x1B, 0x49 }, + { 0x1C, 0x14 }, + + //CDirectSoundVoice_SetVolume+0x1D : call CMcpxVoiceClient_SetVolume + { 0x1D, 0xE8 }, + + //CDirectSoundVoice_SetVolume+0x37 : ret 8 + { 0x37, 0xC2 }, + { 0x38, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetVolume +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetVolume, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetVolume+0x15 : call [CDirectSoundVoice_SetVolume] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetVolume), + + // IDirectSoundBuffer_SetVolume+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetVolume+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetVolume+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_Stop +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_Stop, 3911, 10, + + XREF_CMcpxBuffer_Stop, + XRefZero) + + // CMcpxBuffer_Stop+0x08 : or eax, dword ptr [esp+10h] + { 0x08, 0x0B }, + { 0x09, 0x44 }, + { 0x0A, 0x24 }, + { 0x0B, 0x10 }, + + // CMcpxBuffer_Stop+0x19 : push 3 + { 0x19, 0x6A }, + { 0x1A, 0x03 }, + + // CMcpxBuffer_Stop+0x24 : test [esp+10h], 2 + { 0x24, 0x8B }, + { 0x25, 0xCE }, + + // CMcpxBuffer_Stop+0x31 : retn 0x08 + { 0x31, 0xC2 }, + { 0x32, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_StopEx +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_StopEx, 3911, 11, + + XREF_CDirectSoundBuffer_StopEx, + XRefOne) + + XREF_ENTRY( 0x39, XREF_CMcpxBuffer_Stop ), + + // CDirectSoundBuffer_StopEx+0x0F : test al, 3 + { 0x0F, 0xA8 }, + { 0x10, 0x03 }, + + + // CDirectSoundBuffer_StopEx+0x15 : and eax, 1 + { 0x15, 0x83 }, + { 0x16, 0xE0 }, + { 0x17, 0x01 }, + + // CDirectSoundBuffer_StopEx+0x32 : push dword ptr [ebp+0Ch] + { 0x32, 0xFF }, + { 0x33, 0x75 }, + { 0x34, 0x0C }, + + // CDirectSoundBuffer_StopEx+0x53 : retn 0x10 + { 0x53, 0xC2 }, + { 0x54, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_StopEx +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_StopEx, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_StopEx+0x1D : call [CDirectSoundBuffer::StopEx] + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_StopEx ), + + { 0x03, 0x10 }, + { 0x08, 0xFF }, + { 0x0D, 0xC8 }, + { 0x12, 0x83 }, + { 0x17, 0x1B }, + { 0x1C, 0xE8 }, + { 0x21, 0xC2 }, + { 0x22, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_Stop +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_Stop, 3911, 13, + + XREF_CDirectSoundBuffer_Stop, + XRefOne) + + XREF_ENTRY( 0x14, XREF_CDirectSoundBuffer_StopEx ), + + // CDirectSoundBuffer_Stop+0x07 : mov eax, 0x80004005 + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x00 }, + { 0x0B, 0x6A }, + { 0x0C, 0x00 }, + + // CDirectSoundBuffer_Stop+0x1A : mov ebx, eax; jz +0x0B + { 0x1A, 0x8B }, + { 0x1B, 0xD8 }, + { 0x1C, 0x74 }, + { 0x1D, 0x0B }, + + // CDirectSoundBuffer_Stop+0x2D : retn 0x04 + { 0x2D, 0xC2 }, + { 0x2E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_Stop +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_Stop, 3911, 12, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_Stop+0x11 : call [CDirectSoundBuffer::Stop] + XREF_ENTRY( 0x11, XREF_CDirectSoundBuffer_Stop ), + + // IDirectSoundBuffer_Stop+0x00 : mov eax, [esp+arg_0] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // IDirectSoundBuffer_Stop+0x04 : mov ecx, eax + { 0x04, 0x8B }, + { 0x05, 0xC8 }, + + // IDirectSoundBuffer_Stop+0x06 : add eax, 0x0FFFFFFE4 + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xE4 }, + + // IDirectSoundBuffer_Stop+0x15 : retn 4 + { 0x16, 0x04 }, + { 0x17, 0x00 }, +OOVPA_END; +// ****************************************************************** +// * CDirectSoundBuffer_SetLoopRegion +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetLoopRegion, 3911, 10, + + XREF_CDirectSoundBuffer_SetLoopRegion, + XRefZero) + + // CDirectSoundBuffer_SetLoopRegion+0x20 : cmp edx, [ecx+0x54] + { 0x20, 0x3B }, + { 0x21, 0x51 }, + { 0x22, 0x54 }, + + // CDirectSoundBuffer_SetLoopRegion+0x2C : mov ecx, [esi+0x20] + { 0x2C, 0x8B }, + { 0x2D, 0x4E }, + { 0x2E, 0x20 }, + + // CDirectSoundBuffer_SetLoopRegion+0x38 : jz +0x0B + { 0x38, 0x74 }, + { 0x39, 0x0B }, + + // CDirectSoundBuffer_SetLoopRegion+0x4A : retn 0x0C + { 0x4A, 0xC2 }, + { 0x4B, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetLoopRegion +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetLoopRegion, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetLoopRegion+0x19 : call [CDirectSoundBuffer_SetLoopRegion] + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetLoopRegion ), + + // IDirectSoundBuffer_SetLoopRegion+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSoundBuffer_SetLoopRegion+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_SetLoopRegion+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_Play +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_Play, 3911, 9, + + XREF_CMcpxBuffer_Play, + XRefZero) + + { 0x06, 0x56 }, + { 0x0E, 0xF1 }, + { 0x18, 0x75 }, + { 0x19, 0x08 }, + { 0x1A, 0x6A }, + { 0x1B, 0x02 }, + { 0x26, 0x75 }, + { 0x2F, 0x8B }, + { 0x36, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_PlayEx +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_PlayEx, 3911, 9, + + XREF_CDirectSoundBuffer_PlayEx, + XRefOne) + + XREF_ENTRY( 0x21, XREF_CMcpxBuffer_Play ), + + { 0x08, 0xF0 }, + + { 0x13, 0x24 }, + { 0x17, 0x24 }, + { 0x1B, 0x24 }, + + { 0x25, 0x85 }, + { 0x27, 0x8B }, + + + { 0x3A, 0xC2 }, + { 0x3B, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_Play +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_Play, 3911, 8, + + XREF_CDirectSoundBuffer_Play, + XRefOne) + + XREF_ENTRY( 0x16, XREF_CDirectSoundBuffer_PlayEx ), + + { 0x07, 0xFF }, + { 0x0C, 0xF0 }, + { 0x13, 0x24 }, + { 0x1A, 0x85 }, + { 0x25, 0xFF }, + { 0x2B, 0x8B }, + { 0x2F, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_Play +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_Play, 3911, 16, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_Play+0x1D : call CDirectSoundBuffer::Play + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_Play ), + + // IDirectSoundBuffer_Play+0x00 : push [esp+0x10] + { 0x00, 0xFF }, + { 0x01, 0x74 }, + { 0x02, 0x24 }, + { 0x03, 0x10 }, + + // IDirectSoundBuffer_Play+0x04 : mov eax, [esp+4+arg_0] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_Play+0x12 : and eax, [0xFFFFFFE4] + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xE4 }, + + // IDirectSoundBuffer_Play+0x17 : sbb ecx, ecx + { 0x17, 0x1B }, + { 0x18, 0xC9 }, + + // IDirectSoundBuffer_Play+0x21 : retn 0x10 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_PlayEx +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_PlayEx, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_PlayEx ), + + { 0x03, 0x10 }, + { 0x08, 0xFF }, + { 0x0D, 0xC8 }, + { 0x12, 0x83 }, + { 0x17, 0x1B }, + { 0x1C, 0xE8 }, + { 0x21, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_GetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_GetCurrentPosition, 3911, 15, + + XREF_CMcpxBuffer_GetCurrentPosition, + XRefZero) + + // CMcpxBuffer_GetCurrentPosition+0x12 : mov eax, [esi+XX] + { 0x12, 0x8B }, + { 0x13, 0x46 }, + //{ 0x14, 0x18 }, //3911 has 0x18 while 3936 has 0x08 + + // CMcpxBuffer_GetCurrentPosition+0x15 : and eax, 3 + { 0x15, 0x83 }, + { 0x16, 0xE0 }, + { 0x17, 0x03 }, + + // CMcpxBuffer_GetCurrentPosition+0x18 : cmp al, 3 + { 0x18, 0x3C }, + { 0x19, 0x03 }, + + // CMcpxBuffer_GetCurrentPosition+0x1A : jnz +0x79 + { 0x1A, 0x75 }, + { 0x1B, 0x79 }, + + // CMcpxBuffer_GetCurrentPosition+0x8E : div dword ptr [ecx+0x4C] + { 0x8E, 0xF7 }, + { 0x8F, 0x71 }, + { 0x90, 0x4C }, + + // CMcpxBuffer_GetCurrentPosition+0xC8 : retn 0x08 + { 0xC8, 0xC2 }, + { 0xC9, 0x08 }, + { 0xCA, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_GetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_GetCurrentPosition, 3911, 9, + + XREF_CDirectSoundBuffer_GetCurrentPosition, + XRefOne) + + // CDirectSoundBuffer_GetCurrentPosition+0x19 : call [CMcpxBuffer::GetCurrentPosition] + XREF_ENTRY( 0x19, XREF_CMcpxBuffer_GetCurrentPosition), + + // CDirectSoundBuffer_GetCurrentPosition+0x0D : mov eax, [esp+0x10] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, + + // CDirectSoundBuffer_GetCurrentPosition+0x21 : jz +0x0B + { 0x21, 0x74 }, + { 0x22, 0x0B }, + + // CDirectSoundBuffer_GetCurrentPosition+0x32 : retn 0x0C + { 0x32, 0xC2 }, + { 0x33, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_GetCurrentPosition +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_GetCurrentPosition, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_GetCurrentPosition+0x19 : call [CDirectSoundBuffer::GetCurrentPosition] + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_GetCurrentPosition), + + // IDirectSoundBuffer_GetCurrentPosition+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_GetCurrentPosition+0x13 : sbb ecx, ecx + { 0x13, 0x1B }, + { 0x14, 0xC9 }, + + // IDirectSoundBuffer_GetCurrentPosition+0x15 : and ecx, eax + { 0x15, 0x23 }, + { 0x16, 0xC8 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_GetStatus +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_GetStatus, 3911, 13, + + XREF_CMcpxBuffer_GetStatus, + XRefZero) + + // CMcpxBuffer_GetStatus+0x10 : mov eax, [ebp+0x08] + { 0x10, 0x8B }, + { 0x11, 0x45 }, + { 0x12, 0x08 }, + + // CMcpxBuffer_GetStatus+0x16 : xor ecx, ecx; inc ecx + { 0x16, 0x33 }, + { 0x17, 0xC9 }, + { 0x18, 0x41 }, + + // CMcpxBuffer_GetStatus+0x1C : jz +0x17 + { 0x1C, 0x74 }, + { 0x1D, 0x17 }, + + // CMcpxBuffer_GetStatus+0x2F : mov [eax], 5 + { 0x2F, 0xC7 }, + { 0x30, 0x00 }, + { 0x31, 0x05 }, + + // CMcpxBuffer_GetStatus+0x48 : retn 0x04 + { 0x48, 0xC2 }, + { 0x49, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_GetStatus +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_GetStatus, 3911, 10, + + XREF_CDirectSoundBuffer_GetStatus, + XRefOne) + + // CDirectSoundBuffer_GetStatus+0x15 : call [CMcpxBuffer::GetStatus] + XREF_ENTRY( 0x15, XREF_CMcpxBuffer_GetStatus), + + // CDirectSoundBuffer_GetStatus+0x07 : push [esp+0x10] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, + + // CDirectSoundBuffer_GetStatus+0x11 : mov ecx, [eax+0x20] + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x13, 0x20 }, + + // CDirectSoundBuffer_GetStatus+0x2E : retn 0x08 + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_GetStatus +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_GetStatus, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_GetStatus+0x15 : call [CDirectSoundBuffer::GetStatus] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_GetStatus ), + + // IDirectSoundBuffer_GetStatus+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_GetStatus+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_GetStatus+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetFilter +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetFilter, 3911, 12, + + XREF_CMcpxVoiceClient_SetFilter, + XRefZero) + + { 0x0E, 0xE8 }, + { 0x1F, 0x6A }, + + { 0x73, 0x00 }, + { 0x74, 0xF6 }, + { 0x75, 0x47 }, + { 0x76, 0x0C }, + { 0x77, 0x10 }, + { 0x78, 0x8B }, + { 0x79, 0x7D }, + { 0x7A, 0xE0 }, + + { 0xA6, 0x8B }, + { 0xA7, 0xE0 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetFilter +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetFilter, 3911, 10, + + XREF_CDirectSoundVoice_SetFilter, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetFilter ), + + { 0x01, 0x57 }, + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetFilter +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetFilter, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetFilter+0x15 : call [CDirectSoundVoice_SetFilter] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetFilter), + + // IDirectSoundBuffer_SetFilter+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetFilter+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetFilter+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetLFO +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetLFO, 3911, 12, + + XREF_CMcpxVoiceClient_SetLFO, + XRefZero) + + { 0x10, 0x8B }, + { 0x21, 0xEB }, + + { 0x7D, 0x75 }, + { 0x7E, 0x28 }, + { 0x7F, 0x39 }, + { 0x80, 0x05 }, + { 0x81, 0x10 }, + { 0x82, 0x00 }, + { 0x83, 0x82 }, + { 0x84, 0xFE }, + + { 0xA1, 0x89 }, + { 0xB7, 0x6C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetLFO +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetLFO, 3911, 10, + + XREF_CDirectSoundVoice_SetLFO, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetLFO ), + + { 0x01, 0x57 }, + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetLFO +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetLFO, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetLFO ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetEG +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetEG, 3911, 12, + + XREF_CMcpxVoiceClient_SetEG, + XRefZero) + + { 0x10, 0x8B }, + { 0x21, 0xEB }, + + { 0x6B, 0x82 }, + { 0x6C, 0xFE }, + + { 0x95, 0x8B }, + { 0x96, 0x96 }, + { 0x97, 0x8C }, + { 0x98, 0x00 }, + { 0x99, 0x00 }, + { 0x9A, 0x00 }, + { 0x9B, 0x89 }, + { 0x9C, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetEG +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetEG, 3911, 10, + + XREF_CDirectSoundVoice_SetEG, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetEG ), + + { 0x01, 0x57 }, + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetEG +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetEG, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetEG ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; +#if 0 // Disabled due to both functions are not unique and unable to identify the difference. +// ****************************************************************** +// * IDirectSoundStream_SetEG & CDirectSoundStream_SetEG +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetEG, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0xD, XREF_CDirectSoundVoice_SetEG ), + + { 0x02, 0x24 }, + { 0x03, 0x08 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + { 0x08, 0x83 }, + { 0x0C, 0xE8 }, + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; +#endif +// ****************************************************************** +// * IDirectSoundBuffer_SetOutputBuffer +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSoundBuffer_SetOutputBuffer, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetOutputBuffer ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMixBinVolumes +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMixBinVolumes, 3911, 8, + + XREF_CDirectSoundVoice_SetMixBinVolumes, + XRefOne) + + XREF_ENTRY( 0x54, XREF_CMcpxVoiceClient_SetVolume ), + + { 0x0D, 0x65 }, + { 0x1C, 0x53 }, + { 0x2B, 0xC0 }, + { 0x3A, 0xC7 }, + { 0x49, 0xFC }, + { 0x58, 0x83 }, + { 0x67, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMixBinVolumes_12 +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes_12, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSoundVoice_SetMixBinVolumes ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0xFF }, + { 0x0E, 0x83 }, + { 0x12, 0xD9 }, + { 0x16, 0xC8 }, + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetMixBinVolumes +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes_12, 3911, 9, + + XREF_CDirectSoundStream_SetMixBinVolumes_12, + XRefOne) + + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMixBinVolumes ), + + { 0x01, 0x74 }, + { 0x04, 0x8B }, + { 0x07, 0x08 }, + { 0x0A, 0x24 }, + { 0x0D, 0xC0 }, + { 0x10, 0xE8 }, + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU_Commit3dSettings +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Commit3dSettings, 3911, 11, + + XREF_CMcpxAPU_Commit3dSettings, + XRefZero) + + // CMcpxAPU_Commit3dSettings+0x56 : fld dword ptr [eax+0x174] + { 0x56, 0xD9 }, + { 0x57, 0x80 }, + { 0x58, 0x74 }, + { 0x59, 0x01 }, + { 0x5A, 0x00 }, + { 0x5B, 0x00 }, + + // CMcpxAPU_Commit3dSettings+0xA8 : fsubp st(1), st + { 0xA8, 0xDE }, + { 0xA9, 0xE9 }, + + // CMcpxAPU_Commit3dSettings+0xD4 : mov esi, 0x118 + { 0xD4, 0xBE }, + { 0xD5, 0x18 }, + { 0xD6, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_CommitDeferredSettings +// ****************************************************************** +OOVPA_XREF(CDirectSound_CommitDeferredSettings, 3911, 10, + + XREF_CDirectSound_CommitDeferredSettings, + XRefOne) + + // CDirectSound_CommitDeferredSettings+0x12 : call [CMcpxAPU_Commit3dSettings] + XREF_ENTRY( 0x12, XREF_CMcpxAPU_Commit3dSettings ), + + // CDirectSound_CommitDeferredSettings+0x0C : mov ecx, [eax+0x0C] + { 0x0C, 0x8B }, + { 0x0D, 0x48 }, + { 0x0E, 0x0C }, + + // CDirectSound_CommitDeferredSettings+0x0F : push 0 + { 0x0F, 0x6A }, + { 0x10, 0x00 }, + + // CDirectSound_CommitDeferredSettings+0x19 : jz +0x0B + { 0x19, 0x74 }, + { 0x1A, 0x0B }, + + // CDirectSound_CommitDeferredSettings+0x28 : retn 0x04 + { 0x28, 0xC2 }, + { 0x29, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_CommitDeferredSettings +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSound_CommitDeferredSettings, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_CommitDeferredSettings+0x11 : call [CDirectSound_CommitDeferredSettings] + XREF_ENTRY( 0x11, XREF_CDirectSound_CommitDeferredSettings ), + + // IDirectSound_CommitDeferredSettings+0x06 : and eax, 0xFFFFFFF8 + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xF8 }, + + // IDirectSound_CommitDeferredSettings+0x09 : neg ecx + { 0x09, 0xF7 }, + { 0x0A, 0xD9 }, + + // IDirectSound_CommitDeferredSettings+0x15 : retn 0x04 + { 0x15, 0xC2 }, + { 0x16, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetOrientation, 3911, 13, + + XREF_CDirectSound_SetOrientation, + XRefZero) + + // CDirectSound_SetOrientation+0x00 : push ebp + { 0x00 , 0x55 }, + + { 0x0F , 0x8B }, + { 0x11 , 0x0C }, + { 0x15 , 0x8B }, + { 0x17 , 0x10 }, + { 0x1B , 0x8B }, + { 0x1D , 0x14 }, + { 0x21 , 0x8B }, + { 0x23 , 0x18 }, + { 0x27 , 0x8B }, + { 0x29 , 0x1C }, + { 0x2D , 0x8B }, + { 0x2F , 0x20 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetOrientation +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSound_SetOrientation, 3911, 15, + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_CommitDeferredSettings+0x11 : call [CDirectSound_CommitDeferredSettings] + XREF_ENTRY( 0x42, XREF_CDirectSound_SetOrientation ), + + // IDirectSound_SetOrientation+0x00 : push ebp + { 0x00 , 0x55 }, + + // IDirectSound_SetOrientation+0x06 : fld [ebp+0x20] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x20 }, + + // IDirectSound_SetOrientation+0x0C : sub esp, 0x18 + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x18 }, + + // IDirectSound_SetOrientation+0x18 : add eax, 0xFFFFFFF8 + { 0x18, 0x83 }, + { 0x19, 0xC0 }, + { 0x1A, 0xF8 }, + + // IDirectSound_SetOrientation+0x1F : neg ecx + { 0x1F, 0xF7 }, + { 0x20, 0xD9 }, + + // IDirectSound_SetOrientation+0x47 : retn 0x20 + { 0x47, 0xC2 }, + { 0x48, 0x20 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_AddRef +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_NO_XREF(IDirectSound_AddRef, 3911, 12) + + // IDirectSound_AddRef+0x04 : lea ecx, [eax-8] + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xF8 }, + + // IDirectSound_AddRef+0x07 : neg eax + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, + + // IDirectSound_AddRef+0x09 : sbb eax, eax + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, + + // IDirectSound_AddRef+0x0D : mov ecx, [eax] + { 0x0D, 0x8B }, + { 0x0E, 0x08 }, + + // IDirectSound_AddRef+0x10 : call dword ptr [ecx+4] + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_Release +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_NO_XREF(IDirectSound_Release, 3911, 10) + + // IDirectSound_Release+0x04 : lea ecx, [eax-8] + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xF8 }, + + // IDirectSound_Release+0x07 : neg eax + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, + + // IDirectSound_Release+0x10 : call dword ptr [ecx+8] + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x08 }, + + // IDirectSound_Release+0x13 : retn 0x04 + { 0x13, 0xC2 }, + { 0x14, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_SetPitch +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetPitch, 3911, 11, + + XREF_CMcpxVoiceClient_SetPitch, + XRefZero) + // CMcpxVoiceClient_SetPitch+0x21 : lea edi, [esi+0xB4] + { 0x21, 0x8D }, + { 0x22, 0xBE }, + { 0x23, 0xB4 }, + { 0x24, 0x00 }, + + // CMcpxVoiceClient_SetPitch+0x58 : movzx eax, word ptr [eax+2] + { 0x58, 0x0F }, + { 0x59, 0xB7 }, + { 0x5A, 0x40 }, + { 0x5B, 0x02 }, + + // CMcpxVoiceClient_SetPitch+0x5E : dec eax; sar eax, 1 + { 0x5E, 0x48 }, + { 0x5F, 0xD1 }, + { 0x60, 0xF8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetPitch +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetPitch, 3911, 12, + + XREF_CDirectSoundVoice_SetPitch, + XRefOne) + + // CDirectSoundVoice_SetPitch+0x1B : call [CMcpxVoiceClient_SetPitch] + XREF_ENTRY( 0x1B, XREF_CMcpxVoiceClient_SetPitch ), + + // CDirectSoundVoice_SetPitch+0x07 : mov edx, [esp+0x10] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, + + // CDirectSoundVoice_SetPitch+0x11 : mov ecx, [eax+0x18] + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x13, 0x18 }, + + // CDirectSoundVoice_SetPitch+0x23 : jz +0x0B + { 0x23, 0x74 }, + { 0x24, 0x0B }, + + // CDirectSoundVoice_SetPitch+0x34 : retn 0x08 + { 0x34, 0xC2 }, + { 0x35, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetPitch +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetPitch, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetPitch+0x15 : call [CDirectSoundVoice_SetPitch] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetPitch ), + + // IDirectSoundBuffer_SetPitch+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetPitch+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetPitch+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XAudioCalculatePitch +// ****************************************************************** +OOVPA_XREF(XAudioCalculatePitch, 3911, 11, + + XREF_XAudioCalculatePitch, + XRefZero) + + // XAudioCalculatePitch+0x08 : cmp esi, 0xBB80 + { 0x08, 0x81 }, + { 0x09, 0xFE }, + { 0x0A, 0x80 }, + { 0x0B, 0xBB }, + + // XAudioCalculatePitch+0x1D : jmp +0x2B + { 0x1D, 0xEB }, + { 0x1E, 0x2B }, + + // XAudioCalculatePitch+0x1F : lea ecx, [ebp+0x08] + { 0x1F, 0x8D }, + { 0x20, 0x4D }, + { 0x21, 0x08 }, + + // XAudioCalculatePitch+0x4E : retn 0x08 + { 0x4E, 0xC2 }, + { 0x4F, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundGetSampleTime +// ****************************************************************** +OOVPA_NO_XREF(DirectSoundGetSampleTime, 3911, 6) + + { 0x00, 0xA1 }, + { 0x01, 0x0C }, + { 0x02, 0x20 }, + { 0x03, 0x80 }, + { 0x04, 0xFE }, + { 0x05, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CSensaura3d::GetFullHRTFFilterPair +// ****************************************************************** +OOVPA_XREF(CSensaura3d_GetFullHRTFFilterPair, 3911, 7, + + XREF_CSensaura3d_GetFullHRTFFilterPair, + XRefZero) + + { 0x1E, 0xEB }, + { 0x2E, 0x6A }, + { 0x3E, 0x40 }, + { 0x5E, 0x7E }, + { 0x7E, 0x1E }, + { 0xA2, 0xD9 }, + { 0xBE, 0x09 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundUseFullHRTF +// ****************************************************************** +OOVPA_XREF(DirectSoundUseFullHRTF, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0D, XREF_CSensaura3d_GetFullHRTFFilterPair ), + + { 0x05, 0x85 }, + { 0x06, 0xC0 }, + { 0x11, 0x74 }, + { 0x12, 0x0B }, + { 0x13, 0x68 }, + { 0x18, 0xFF }, + { 0x1E, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CSensaura3d_GetLiteHRTFFilterPair +// ****************************************************************** +OOVPA_XREF(CSensaura3d_GetLiteHRTFFilterPair, 3911, 10, + + XREF_CSensaura3d_GetLiteHRTFFilterPair, + XRefZero) + + //CSensaura3d_GetLiteHRTFFilterPair+0x00 : push ebp + { 0x00, 0x55 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x14 : push ecx + { 0x15, 0x51 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x22 : push 3 + { 0x1F, 0x6A }, + { 0x20, 0x03 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x22 : idiv eax, ecx + { 0x22, 0xF7 }, + { 0x23, 0xF9 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x24 : cmp dword ptr [ebp+10h], 0 + { 0x24, 0x83 }, + { 0x25, 0x7D }, + { 0x26, 0x10 }, + { 0x27, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundUseLightHRTF +// ****************************************************************** +OOVPA_XREF(DirectSoundUseLightHRTF, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0D, XREF_CSensaura3d_GetLiteHRTFFilterPair ), + + { 0x05, 0x85 }, + { 0x06, 0xC0 }, + { 0x11, 0x74 }, + { 0x12, 0x0B }, + { 0x13, 0x68 }, + { 0x18, 0xFF }, + { 0x1E, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetFrequency +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetFrequency, 3911, 9, + + XREF_CDirectSoundVoice_SetFrequency, + XRefOne) + + // CDirectSoundVoice_SetFrequency+0x1F : call [XAudioCalculatePitch] + XREF_ENTRY( 0x20, XREF_XAudioCalculatePitch ), + + // CDirectSoundVoice_SetFrequency+0x15 : mov eax, [esi+0x18] + { 0x15, 0x8B }, + { 0x16, 0x46 }, + { 0x17, 0x18 }, + + // CDirectSoundVoice_SetFrequency+0x18 : mov eax, [eax+0x10] + { 0x18, 0x8B }, + { 0x19, 0x40 }, + { 0x1A, 0x10 }, + + // CDirectSoundVoice_SetFrequency+0x40 : retn 0x08 + { 0x40, 0xC2 }, + { 0x41, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetFrequency +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetFrequency, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetFrequency+0x14 : call [CDirectSoundVoice_SetFrequency] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetFrequency ), + + // IDirectSoundBuffer_SetFrequency+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetFrequency+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, + + // IDirectSoundBuffer_SetFrequency+0x11 : and ecx, eax + { 0x11, 0x23 }, + { 0x12, 0xC8 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetMixBins +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetMixBins, 3911, 15, + + XREF_CMcpxVoiceClient_SetMixBins, + XRefZero) + + // CMcpxVoiceClient_SetMixBins+0x1D : lea eax, [esi+0x84] + { 0x1D, 0x86 }, + { 0x1E, 0x84 }, + { 0x21, 0x00 }, + + // CMcpxVoiceClient_SetMixBins+0x2E : mov eax, [esi+0xE0] + { 0x2E, 0x8B }, + { 0x30, 0xE0 }, + { 0x31, 0x00 }, + + // CMcpxVoiceClient_SetMixBins+0x41 : jz +0x7F + { 0x41, 0x74 }, + { 0x42, 0x7F }, + + // CMcpxVoiceClient_SetMixBins+0x5A : mov ds:[0xFE8202F8], eax + { 0x5A, 0xA3 }, + { 0x5B, 0xF8 }, + { 0x5C, 0x02 }, + { 0x5D, 0x82 }, + + // CMcpxVoiceClient_SetMixBins+0xBF : jb +0x8C + { 0xBF, 0x72 }, + { 0xC0, 0x8C }, + + // CMcpxVoiceClient_SetMixBins+0xD6 : retn + { 0xD6, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMixBins +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMixBins, 3911, 9, + + XREF_CDirectSoundVoice_SetMixBins, + XRefOne) + + // CDirectSoundVoice_SetMixBins+0x28 : call [CMcpxVoiceClient::SetMixBins] + XREF_ENTRY( 0x29, XREF_CMcpxVoiceClient_SetMixBins ), + + // CDirectSoundVoice_SetMixBins+0x11 : mov ecx, [esi+0x18] + { 0x11, 0x8B }, + { 0x12, 0x4E }, + { 0x13, 0x18 }, + + // CDirectSoundVoice_SetMixBins+0x25 : mov ecx, [esi+0x14] + { 0x25, 0x8B }, + { 0x26, 0x4E }, + { 0x27, 0x14 }, + + // CDirectSoundVoice_SetMixBins+0x55 : retn 0x08 + { 0x55, 0xC2 }, + { 0x56, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMixBins +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetMixBins, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetMixBins+0x14 : call [CDirectSoundVoice::SetMixBins] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetMixBins ), + + // IDirectSoundBuffer_SetMixBins+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetMixBins+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, + + // IDirectSoundBuffer_SetMixBins+0x11 : and ecx, eax + { 0x11, 0x23 }, + { 0x12, 0xC8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetOutputBuffer, 3911, 7, + + XREF_CDirectSoundVoice_SetOutputBuffer, + XRefZero) + + { 0x0B, 0xF7 }, + { 0x19, 0x8B }, + { 0x25, 0x3B }, + { 0x30, 0xE8 }, + { 0x35, 0x8B }, + { 0x46, 0x74 }, + { 0x51, 0xD8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetOutputBuffer, 3911, 13, + + XREF_CDirectSoundBuffer_SetOutputBuffer, + XRefOne) + + // CDirectSoundBuffer_SetOutputBuffer+0x11 : call [XREF_CDirectSoundVoice_SetOutputBuffer] + XREF_ENTRY( 0x12, XREF_CDirectSoundVoice_SetOutputBuffer), + + // CDirectSoundBuffer_SetOutputBuffer+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x07 : push [esp+0x10] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x0D : push [esp+0x10] + { 0x0D, 0xFF }, + { 0x0E, 0x74 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x29 : pop edi + { 0x29, 0x5F }, + + // CDirectSoundBuffer_SetOutputBuffer+0x2B : retn 0x08 + { 0x2B, 0xC2 }, + { 0x2C, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetBufferData +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetBufferData, 3911, 9, + + XREF_DSSETBUFFERDATA, + XRefZero) + + // CDirectSoundBuffer_SetBufferData+0x22 : cmp ecx, [eax+0x4C] + { 0x22, 0x3B }, + { 0x23, 0x48 }, + { 0x24, 0x4C }, + + // CDirectSoundBuffer_SetBufferData+0x38 : mov ecx, [esi+0x1C] + { 0x38, 0x8B }, + { 0x39, 0x4E }, + { 0x3A, 0x1C }, + + // CDirectSoundBuffer_SetBufferData+0x71 : leave; retn 0x0C + { 0x71, 0xC9 }, + { 0x72, 0xC2 }, + { 0x73, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetBufferData +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetBufferData, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetBufferData+0x18 : call [CDirectSoundBuffer_SetBufferData] + XREF_ENTRY( 0x19, XREF_DSSETBUFFERDATA ), + + // IDirectSoundBuffer_SetBufferData+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSoundBuffer_SetBufferData+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_SetBufferData+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetNotificationPositions +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetNotificationPositions, 3911, 7, + + XREF_CDirectSoundBuffer_SetNotificationPositions, + XRefZero) + + { 0x09, 0x24 }, + { 0x14, 0x24 }, + { 0x1F, 0x74 }, + { 0x2A, 0x50 }, + { 0x35, 0xF6 }, + { 0x40, 0x07 }, + { 0x4D, 0x5F }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetNotificationPositions +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSoundBuffer_SetNotificationPositions, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetNotificationPositions ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0xFF }, + { 0x0E, 0x83 }, + { 0x12, 0xD9 }, + { 0x16, 0xC8 }, + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetHeadroom +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 3911, 12, + + XREF_CDirectSoundVoice_SetHeadroom, + XRefOne) + + // WARNING: I am unsure if this is SetHeadroom + + // CDirectSoundVoice_SetHeadroom+0x23 : call [CMcpxVoiceClient_SetVolume] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_SetVolume ), + + // CDirectSoundVoice_SetHeadroom+0x07 : mov edx, [esp+0x0C] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x0C }, + + // CDirectSoundVoice_SetHeadroom+0x11 : mov eax, [edx+0x18] + { 0x11, 0x8B }, + { 0x12, 0x42 }, + { 0x13, 0x18 }, + + // CDirectSoundVoice_SetHeadroom+0x2B : jz +0x0B + { 0x2B, 0x74 }, + { 0x2C, 0x0B }, + + // CDirectSoundVoice_SetHeadroom+0x3C : retn 0x08 + { 0x3C, 0xC2 }, + { 0x3D, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetHeadroom +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetHeadroom, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetHeadroom+0x15 : call [CDirectSoundVoice_SetHeadroom] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetHeadroom ), + + // IDirectSoundBuffer_SetHeadroom+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetHeadroom+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetHeadroom+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Pause +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Pause, 3911, 7, + + XREF_CDirectSoundStream_Pause, + XRefOne) + + XREF_ENTRY(0x0C, XREF_CMcpxStream_Pause ), + + { 0x01, 0x44 }, + { 0x04, 0xFF }, + { 0x07, 0x08 }, + { 0x0A, 0x24 }, + { 0x10, 0xC2 }, + { 0x11, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Process +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_Process, 3911, 16) + + { 0x01, 0x8B }, + { 0x04, 0x08 }, + + { 0x05, 0x8B }, + { 0x07, 0x24 }, + + { 0x0D, 0x85 }, + { 0x0E, 0xC0 }, + + //CDirectSoundStream_Process+0x11 : mov eax, 88780032h + { 0x12, 0x32 }, + { 0x13, 0x00 }, + { 0x14, 0x78 }, + { 0x15, 0x88 }, + + { 0x18, 0xFF }, + { 0x1B, 0x0C }, + + { 0x1C, 0x8B }, + { 0x1E, 0x24 }, + + { 0x25, 0xC2 }, + { 0x26, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetStatus +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_GetStatus, 3911, 14) + + { 0x00, 0x56 }, //Prevent false detection & check if is at beginning of function. + + { 0x08, 0x8B }, + { 0x0B, 0x08 }, + + { 0x0C, 0x8B }, + { 0x0E, 0x24 }, + + { 0x14, 0x8B }, + { 0x17, 0x0C }, + + { 0x18, 0xF7 }, + { 0x1A, 0x1B }, + { 0x1C, 0xF7 }, + + //CDirectSoundStream_GetStatus+0x20 : mov dword ptr [ecx], eax + { 0x20, 0x89 }, + { 0x21, 0x01 }, + + { 0x32, 0xC2 }, + { 0x33, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Flush, 3911, 15, + XREF_CMcpxStream_Flush, + XRefZero) + + { 0x0D, 0x03 }, + { 0x0F, 0x03 }, + + { 0x20, 0x33 }, + { 0x22, 0x33 }, + + { 0x2D, 0x83 }, + { 0x2E, 0xFF }, + { 0x2F, 0x03 }, + + { 0x4B, 0xE8 }, + + //CMcpxStream_Flush+0x57 : e__,0x80004004 (unique value) + { 0x58, 0x04 }, + { 0x59, 0x40 }, + { 0x5A, 0x00 }, + { 0x5B, 0x80 }, + + { 0x62, 0xE8 }, + + + { 0x9D, 0xC9 }, + { 0x9E, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Flush +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Flush, 3911, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Flush+0x10 : call [CMcpxStream_Flush] + XREF_ENTRY( 0x11, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x09, 0x8B }, + { 0x0C, 0x0C }, + + { 0x0D, 0x8B }, + { 0x0F, 0x24 }, + + { 0x10, 0xE8 }, + + //CDirectSoundStream_Flush+0x2A : ret 4 + { 0x2A, 0xC2 }, + { 0x2B, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Discontinuity, 3911, 12, + XREF_CMcpxStream_Discontinuity, + XRefOne) + + //CMcpxStream_Discontinuity+0x66 : call [CMcpxStream_Flush] + XREF_ENTRY ( 0x67, XREF_CMcpxStream_Flush ), + + { 0x0D, 0x03 }, + { 0x0F, 0x03 }, + + { 0x1B, 0x33 }, + { 0x1D, 0x8D }, + + { 0x25, 0x0F }, + { 0x26, 0x94 }, + { 0x27, 0xC1 }, + + { 0x64, 0x8B }, + + { 0x66, 0xE8 }, + + + { 0x6E, 0xC9 }, + { 0x6F, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Discontinuity, 3911, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Discontinuity+0x10 : call [CMcpxStream_Discontinuity] + XREF_ENTRY( 0x11, XREF_CMcpxStream_Discontinuity ), + + { 0x00, 0x56 }, + + { 0x09, 0x8B }, + { 0x0C, 0x0C }, + + { 0x0D, 0x8B }, + { 0x0F, 0x24 }, + + { 0x10, 0xE8 }, + + //CDirectSoundStream_Discontinuity+0x2A : ret 4 + { 0x2A, 0xC2 }, + { 0x2B, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetInfo +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_GetInfo, 3911, 17) + + //CDirectSoundStream_GetInfo+0x00 : push ebx + { 0x00, 0x53 }, + + //CDirectSoundStream_GetInfo+0x0C : mov edi, dword ptr [esp + 10h] + { 0x0C, 0x8B }, + { 0x0D, 0x7C }, + { 0x0E, 0x24 }, + { 0x0F, 0x10 }, + + //CDirectSoundStream_GetInfo+0x16 : mov, dword ptr [edi + 24h] + { 0x16, 0x8B }, + { 0x17, 0x4F }, + { 0x18, 0x24 }, + + //CDirectSoundStream_GetInfo+0x23 : mov eax, dword ptr [edi + 20h] + { 0x23, 0x8B }, + { 0x24, 0x47 }, + { 0x25, 0x20 }, + + //CDirectSoundStream_GetInfo+0x2D : and dword ptr [esi + 8], 0 + { 0x2D, 0x83 }, + { 0x2E, 0x66 }, + { 0x2F, 0x08 }, + { 0x30, 0x00 }, + + //CDirectSoundStream_GetInfo+0x48 : ret 8 + { 0x48, 0xC2 }, + { 0x49, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_Set3dMaxDistance +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dMaxDistance, 3911, 12, + + XREF_CMcpxVoiceClient_Set3dMaxDistance, + XRefZero) + + // CMcpxVoiceClient_Set3dMaxDistance+0x04 : or byte ptr [ecx+0x80], 0x04 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x04 }, + + // CMcpxVoiceClient_Set3dMaxDistance+0x10 : mov [ecx+0x54], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x54 }, + + // CMcpxVoiceClient_Set3dMaxDistance+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 3911, 15, + + XREF_CDirectSoundVoice_SetMaxDistance, + XRefOne) + + // CDirectSoundVoice_SetMaxDistance+0x23 : call [CMcpxVoiceClient_Set3dMaxDistance] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_Set3dMaxDistance ), + + // CDirectSoundVoice_SetMaxDistance+0x0D : mov eax, [esp+0x14] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x14 }, + + // CDirectSoundVoice_SetMaxDistance+0x11 : not eax + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, + + // CDirectSoundVoice_SetMaxDistance+0x13 : and eax, 1 + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, + + // CDirectSoundVoice_SetMaxDistance+0x1C : mov ecx, [eax+0x14] + { 0x1C, 0x8B }, + { 0x1D, 0x48 }, + { 0x1E, 0x14 }, + + // CDirectSoundVoice_SetMaxDistance+0x3C : retn 0x0C + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, +OOVPA_END; +// ****************************************************************** +// * CDirectSoundBuffer::SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 3911, 9, + + XREF_CDirectSoundBuffer_SetMaxDistance, + XRefOne) + + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMaxDistance ), + + { 0x01, 0x74 }, + { 0x04, 0xD9 }, + { 0x07, 0x0C }, + { 0x0A, 0x1C }, + { 0x0D, 0x74 }, + { 0x10, 0xE8 }, + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMaxDistance +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMaxDistance ), + + { 0x03, 0x0C }, + { 0x08, 0x8B }, + { 0x0D, 0x8B }, + { 0x12, 0x83 }, + { 0x17, 0x1B }, + { 0x1C, 0xE8 }, + { 0x21, 0xC2 }, +OOVPA_END; +// ****************************************************************** +// * CDirectSoundStream_SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 3911, 10, + + XREF_CDirectSoundStream_SetMaxDistance, + XRefOne) + + // CDirectSoundStream_SetMaxDistance+0x15 : call [CDirectSoundVoice_SetMaxDistance] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetMaxDistance ), + + // CDirectSoundStream_SetMaxDistance+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // CDirectSoundStream_SetMaxDistance+0x0D : add eax, 0x04 + { 0x0D, 0x83 }, + { 0x0E, 0xC0 }, + { 0x0F, 0x04 }, + + // CDirectSoundStream_SetMaxDistance+0x19 : retn 0x0C + { 0x19, 0xC2 }, + { 0x1A, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMaxDistance +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundStream_SetMaxDistance, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetMaxDistance+0x11 : call [CDirectSoundStream_SetMaxDistance] + XREF_ENTRY( 0x11, XREF_CDirectSoundStream_SetMaxDistance ), + + // CDirectSoundStream_SetMaxDistance+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // CDirectSoundStream_SetMaxDistance+0x0C : push [esp+0x0C] + { 0x0C, 0xFF }, + { 0x0D, 0x74 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0C }, + + // CDirectSoundStream_SetMaxDistance+0x15 : retn 0x0C + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_Set3dMinDistance +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dMinDistance, 3911, 12, + + XREF_CMcpxVoiceClient_Set3dMinDistance, + XRefZero) + + // CMcpxVoiceClient_Set3dMinDistance+0x04 : or byte ptr [ecx+0x80], 0x04 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x04 }, + + // CMcpxVoiceClient_Set3dMinDistance+0x10 : mov [ecx+0x50], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x50 }, + + // CMcpxVoiceClient_Set3dMinDistance+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 3911, 15, + + XREF_CDirectSoundVoice_SetMinDistance, + XRefOne) + + // CDirectSoundVoice_SetMinDistance+0x23 : call [CMcpxVoiceClient_Set3dMinDistance] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_Set3dMinDistance ), + + // CDirectSoundVoice_SetMinDistance+0x0D : mov eax, [esp+0x14] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x14 }, + + // CDirectSoundVoice_SetMinDistance+0x11 : not eax + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, + + // CDirectSoundVoice_SetMinDistance+0x13 : and eax, 1 + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, + + // CDirectSoundVoice_SetMinDistance+0x1C : mov ecx, [eax+0x14] + { 0x1C, 0x8B }, + { 0x1D, 0x48 }, + { 0x1E, 0x14 }, + + // CDirectSoundVoice_SetMinDistance+0x3C : retn 0x0C + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 3911, 9, + + XREF_CDirectSoundBuffer_SetMinDistance, + XRefOne) + + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMinDistance ), + + { 0x01, 0x74 }, + { 0x04, 0xD9 }, + { 0x07, 0x0C }, + { 0x0A, 0x1C }, + { 0x0D, 0x74 }, + { 0x10, 0xE8 }, + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMinDistance +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMinDistance ), + + { 0x03, 0x0C }, + { 0x08, 0x8B }, + { 0x0D, 0x8B }, + { 0x12, 0x83 }, + { 0x17, 0x1B }, + { 0x1C, 0xE8 }, + { 0x21, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMinDistance, 3911, 10, + + XREF_CDirectSoundStream_SetMinDistance, + XRefOne) + + // CDirectSoundStream_SetMinDistance+0x15 : call [CDirectSoundVoice_SetMinDistance] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetMinDistance ), + + // CDirectSoundStream_SetMinDistance+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // CDirectSoundStream_SetMinDistance+0x0D : add eax, 0x04 + { 0x0D, 0x83 }, + { 0x0E, 0xC0 }, + { 0x0F, 0x04 }, + + // CDirectSoundStream_SetMinDistance+0x19 : retn 0x0C + { 0x19, 0xC2 }, + { 0x1A, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMinDistance +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundStream_SetMinDistance, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetMinDistance+0x11 : call [CDirectSoundStream_SetMinDistance] + XREF_ENTRY( 0x11, XREF_CDirectSoundStream_SetMinDistance ), + + // CDirectSoundStream_SetMinDistance+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // CDirectSoundStream_SetMinDistance+0x0C : push [esp+0x0C] + { 0x0C, 0xFF }, + { 0x0D, 0x74 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0C }, + + // CDirectSoundStream_SetMinDistance+0x15 : retn 0x0C + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_Set3dConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dConeOutsideVolume, 3911, 12, + + XREF_CMcpxVoiceClient_Set3dConeOutsideVolume, + XRefZero) + + // CMcpxVoiceClient_Set3dConeOutsideVolume+0x04 : or dword ptr [eax+0x80], 0x10 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x10 }, + + // CMcpxVoiceClient_Set3dConeOutsideVolume+0x10 : mov [ecx+0x4C], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x4C }, + + // CMcpxVoiceClient_Set3dConeOutsideVolume+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 3911, 12, + + XREF_CDirectSoundVoice_SetConeOutsideVolume, + XRefOne) + + // CDirectSoundVoice_SetConeOutsideVolume+0x1F : call [CMcpxVoiceClient_Set3dConeOutsideVolume] + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_Set3dConeOutsideVolume ), + + // CDirectSoundVoice_SetConeOutsideVolume+0x09 : mov eax, [esp+0x14] + { 0x09, 0x8B }, + { 0x0A, 0x44 }, + { 0x0B, 0x24 }, + { 0x0C, 0x14 }, + + // CDirectSoundVoice_SetConeOutsideVolume+0x0D : not eax; and eax, 1 + { 0x0D, 0xF7 }, + { 0x0E, 0xD0 }, + { 0x0F, 0x83 }, + { 0x10, 0xE0 }, + { 0x11, 0x01 }, + + // CDirectSoundVoice_SetConeOutsideVolume+0x38 : retn 0x0C + { 0x38, 0xC2 }, + { 0x39, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetConeOutsideVolume, 3911, 2, + + XREF_CDirectSoundBuffer_SetConeOutsideVolume, + XRefOne) + + // CDirectSoundBuffer_SetConeOutsideVolume+0x00 : jmp CDirectSoundVoice_SetConeOutsideVolume + XREF_ENTRY( 0x1, XREF_CDirectSoundVoice_SetConeOutsideVolume ), + + // CDirectSoundBuffer_SetConeOutsideVolume+0x00 : jmp + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetConeOutsideVolume, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetConeOutsideVolume+0x18 : call [CDirectSoundVoice_SetConeOutsideVolume] + XREF_ENTRY(0x19, XREF_CDirectSoundVoice_SetConeOutsideVolume ), + + // IDirectSoundBuffer_SetConeOutsideVolume+0x0A : push [esp+4+arg_4] + { 0x0A, 0xFF }, + { 0x0B, 0x74 }, + { 0x0C, 0x24 }, + { 0x0D, 0x0C }, + + // IDirectSoundBuffer_SetConeOutsideVolume+0x15 : and ecx, eax + { 0x15, 0x23 }, + { 0x16, 0xC8 }, + + // IDirectSoundBuffer_SetConeOutsideVolume+0x1D : retn 0Ch + { 0x1E, 0x0C }, + { 0x1F, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetConeOutsideVolume, 3911, 10, + + XREF_CDirectSoundStream_SetConeOutsideVolume, + XRefOne) + + // CDirectSoundStream_SetConeOutsideVolume+0x11 : call [CDirectSoundVoice_SetConeOutsideVolume] + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetConeOutsideVolume ), + + // CDirectSoundStream_SetConeOutsideVolume+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetConeOutsideVolume+0x0C : add eax, 0x04 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, + + // CDirectSoundStream_SetConeOutsideVolume+0x15 : retn 0x0C + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::Commit3dSettings +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Commit3dSettings, 3911, 10, + + XREF_CMcpxVoiceClient_Commit3dSettings, + XRefZero) + + // CMcpxVoiceClient::Commit3dSettings+0x17 : or [eax+0x80], ecx + { 0x17, 0x09 }, + { 0x18, 0x88 }, + { 0x19, 0x80 }, + { 0x1A, 0x00 }, + // CMcpxVoiceClient::Commit3dSettings+0x2B : add eax, 0x80 + { 0x2B, 0x05 }, + { 0x2C, 0x80 }, + { 0x2D, 0x00 }, + // CMcpxVoiceClient::Commit3dSettings+0x3D : cmpxchg [ecx], edx + { 0x3D, 0x0F }, + { 0x3E, 0xB1 }, + { 0x3F, 0x11 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_Set3dParameters +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dParameters, 3911, 12, + + XREF_CMcpxVoiceClient_Set3dParameters, + XRefOne) + + XREF_ENTRY( 0x25, XREF_CMcpxVoiceClient_Commit3dSettings ), + + { 0x02, 0x74 }, + { 0x08, 0x6A }, + { 0x09, 0x10 }, + { 0x0A, 0x59 }, + { 0x0B, 0x8D }, + { 0x0C, 0x78 }, + { 0x0D, 0x1C }, + { 0x0E, 0xF3 }, + { 0x14, 0x00 }, + { 0x18, 0x7C }, + { 0x1F, 0x09 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetAllParameters, 3911, 12, + + XREF_CDirectSoundVoice_SetAllParameters, + XRefOne) + + // TODO: re-use for CDirectSoundBuffer_SetAllParametersA!? + + // CDirectSoundVoice_SetAllParameters+0x25 : call [CMcpxVoiceClient_Set3dParameters] + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_Set3dParameters ), + + // CDirectSoundVoice_SetAllParameters+0x09 : mov eax, [esp+0x14] + { 0x09, 0x8B }, + { 0x0A, 0x44 }, + { 0x0B, 0x24 }, + { 0x0C, 0x14 }, + + // CDirectSoundVoice_SetAllParameters+0x0D : not eax; and eax, 1 + { 0x0D, 0xF7 }, + { 0x0E, 0xD0 }, + { 0x0F, 0x83 }, + { 0x10, 0xE0 }, + { 0x11, 0x01 }, + + // CDirectSoundVoice_SetAllParameters+0x38 : retn 0x0C + { 0x38, 0xC2 }, + { 0x39, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetAllParameters, 3911, 10, + + XREF_CDirectSoundStream_SetAllParameters, + XRefOne) + + // CDirectSoundStream_SetAllParameters+0x11 : call [CDirectSoundVoice_SetAllParameters] + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetAllParameters ), + + // CDirectSoundStream_SetAllParameters+0x04 : push eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetAllParameters+0x0C : add eax, 0x04 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, + + // CDirectSoundStream_SetAllParameters+0x15 : retn 0x0C + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetAllParameters +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetAllParameters, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSoundVoice_SetAllParameters ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0xFF }, + { 0x0E, 0x83 }, + { 0x12, 0xD9 }, + { 0x16, 0xC8 }, + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetConeAngles +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 3911, 8, + + XREF_CDirectSoundVoice_SetConeAngles, + XRefZero) + + { 0x07, 0x8B }, + { 0x0E, 0xD0 }, + { 0x16, 0x18 }, + { 0x1E, 0x18 }, + { 0x27, 0x85 }, + { 0x32, 0xFF }, + { 0x38, 0x8B }, + { 0x3E, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetConeAngles +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetConeAngles, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1D, XREF_CDirectSoundVoice_SetConeAngles ), + + { 0x03, 0x10 }, + { 0x08, 0xFF }, + { 0x0D, 0xC8 }, + { 0x12, 0x83 }, + { 0x17, 0x1B }, + { 0x1C, 0xE8 }, + { 0x21, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetConeAngles +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetConeAngles, 3911, 10, + + XREF_CDirectSoundStream_SetConeAngles, + XRefOne) + + // CDirectSoundStream_SetConeAngles+0x15 : call [CDirectSoundVoice_SetConeAngles] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetConeAngles ), + + // CDirectSoundStream_SetConeAngles+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetConeAngles+0x0C : add eax, 0x04 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, + + // CDirectSoundStream_SetConeAngles+0x19 : retn 0x10 + { 0x19, 0xC2 }, + { 0x1A, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_Set3dConeOrientation +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dConeOrientation, 3911, 11, + + XREF_CMcpxVoiceClient_Set3dConeOrientation, + XRefZero) + + // CMcpxVoiceClient_Set3dConeOrientation+0x0C : or byte ptr [ecx+0x80], 0x18 + { 0x0C, 0x83 }, + { 0x0D, 0x89 }, + { 0x0E, 0x80 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x18 }, + + // CMcpxVoiceClient_Set3dConeOrientation+0x1A : jz +0x07 + { 0x1A, 0x74 }, + { 0x1B, 0x07 }, + + // CMcpxVoiceClient_Set3dConeOrientation+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeOrientation, 3911, 14, + + XREF_CDirectSoundVoice_SetConeOrientation, + XRefOne) + + // CDirectSoundVoice_SetConeOrientation+0x34 : call [CMcpxVoiceClient_Set3dConeOrientation] + XREF_ENTRY( 0x35, XREF_CMcpxVoiceClient_Set3dConeOrientation ), + + // CDirectSoundVoice_SetConeOrientation+0x21 : mov eax, [ebp+0x18] + { 0x21, 0x8B }, + { 0x22, 0x45 }, + { 0x23, 0x18 }, + + // CDirectSoundVoice_SetConeOrientation+0x24 : not eax + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + + // CDirectSoundVoice_SetConeOrientation+0x26 : and eax, 1 + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, + + // CDirectSoundVoice_SetConeOrientation+0x31 : mov ecx, [eax+0x14] + { 0x31, 0x8B }, + { 0x32, 0x48 }, + { 0x33, 0x14 }, + + // CDirectSoundVoice_SetConeOrientation+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetConeOrientation, 3911, 11, + + XREF_CDirectSoundBuffer_SetConeOrientation, + XRefOne) + + XREF_ENTRY( 0x21, XREF_CDirectSoundVoice_SetConeOrientation ), + + // CDirectSoundBuffer_SetConeOrientation+0x1A : fstp [esp+8h] + { 0x0C, 0xD9 }, + { 0x0D, 0x5C }, + { 0x0E, 0x24 }, + { 0x0F, 0x08 }, + + // CDirectSoundBuffer_SetConeOrientation+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // CDirectSoundBuffer_SetConeOrientation+0x26 : ret 14h + { 0x26, 0xC2 }, + { 0x27, 0x14 }, + { 0x28, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetConeOrientation +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetConeOrientation, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetConeOrientation+0x2C : call [CDirectSoundBuffer::SetConeOrientation] + XREF_ENTRY(0x2D, XREF_CDirectSoundBuffer_SetConeOrientation), + + // IDirectSoundBuffer_SetConeOrientation+0x06 : fld [ebp+arg_C] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // IDirectSoundBuffer_SetConeOrientation+0x28 : fstp [esp+10h+var_10] + { 0x28, 0xD9 }, + { 0x29, 0x1C }, + { 0x2A, 0x24 }, + + // IDirectSoundBuffer_SetConeOrientation+0x32 : retn 14h + { 0x33, 0x14 }, + { 0x34, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetConeOrientation, 3911, 9, + + XREF_CDirectSoundStream_SetConeOrientation, + XRefOne) + + // TODO: re-use for CDirectSoundBuffer_SetConeOrientationA!? + + // CDirectSoundStream_SetConeOrientation+0x25 : call [CDirectSoundVoice_SetConeOrientation] + XREF_ENTRY( 0x25, XREF_CDirectSoundVoice_SetConeOrientation ), + + // CDirectSoundStream_SetConeOrientation+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetConeOrientation+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // CDirectSoundStream_SetConeOrientation+0x2A : retn 0x14 + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetConeOrientation +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetConeOrientation, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetConeOrientation+0x21 : call [CDirectSoundStream_SetConeOrientation] + XREF_ENTRY( 0x21, XREF_CDirectSoundStream_SetConeOrientation ), + + // IDirectSoundStream_SetConeOrientation+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // IDirectSoundStream_SetConeOrientation+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // IDirectSoundStream_SetConeOrientation+0x26 : retn 0x14 + { 0x26, 0xC2 }, + { 0x27, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::Set3dMode +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dMode, 3911, 12, + + XREF_CMcpxVoiceClient_Set3dMode, + XRefZero) + + // CMcpxVoiceClient_Set3dMode+0x04 : or byte ptr [ecx+0x80], 0xFF + { 0x04, 0x80 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0xFF }, + + // CMcpxVoiceClient_Set3dMode+0x10 : cmp [ecx+0x58], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x58 }, + + // CMcpxVoiceClient_Set3dMode+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMode +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMode, 3911, 10, + + XREF_CDirectSoundVoice_SetMode, + XRefOne) + + // CDirectSoundVoice_SetMode+0x1E : call [CMcpxVoiceClient::Set3dMode] + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_Set3dMode), + + // CDirectSoundVoice_SetMode+0x17 : push [esp+0x14] + { 0x17, 0xFF }, + { 0x18, 0x74 }, + { 0x19, 0x24 }, + { 0x1A, 0x14 }, + + // CDirectSoundVoice_SetMode+0x1B : mov ecx, [eax+0x14] + { 0x1B, 0x8B }, + { 0x1C, 0x48 }, + { 0x1D, 0x14 }, + + // CDirectSoundVoice_SetMode+0x38 : retn 0x0C + { 0x38, 0xC2 }, + { 0x39, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMode +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetMode, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetMode+0x18 : call [CDirectSoundVoice::SetMode] + XREF_ENTRY( 0x19, XREF_CDirectSoundVoice_SetMode ), + + // IDirectSoundBuffer_SetMode+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSoundBuffer_SetMode+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_SetMode+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMode +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMode, 3911, 7, + + XREF_CDirectSoundStream_SetMode, + XRefOne) + + // CDirectSoundStream_SetMode+0x10 : call [CDirectSoundVoice::SetMode] + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMode ), + + // CDirectSoundStream_SetMode+0x0C : add eax, 4 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, + + // CDirectSoundStream_SetMode+0x0F : push eax + { 0x0F, 0x50 }, + + // CDirectSoundBuffer8_SetMode+0x15 : retn 0x0C + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; +// ****************************************************************** +// * CMcpxVoiceClient_Set3dPosition +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dPosition, 3911, 11, + + XREF_CMcpxVoiceClient_Set3dPosition, + XRefZero) + + // CMcpxVoiceClient_Set3dPosition+0x0C : or byte ptr [ecx+0x80], 0xFF + { 0x0C, 0x80 }, + { 0x0D, 0x89 }, + { 0x0E, 0x80 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0xFF }, + + // CMcpxVoiceClient_Set3dPosition+0x1A : jz +0x07 + { 0x1A, 0x74 }, + { 0x1B, 0x07 }, + + // CMcpxVoiceClient_Set3dPosition+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetPosition, 3911, 14, + + XREF_CDirectSoundVoice_SetPosition, + XRefOne) + + // CDirectSoundVoice_SetPosition+0x35 : call [CMcpxVoiceClient_Set3dPosition] + XREF_ENTRY( 0x35, XREF_CMcpxVoiceClient_Set3dPosition ), + + // CDirectSoundVoice_SetPosition+0x21 : mov eax, [ebp+0x18] + { 0x21, 0x8B }, + { 0x22, 0x45 }, + { 0x23, 0x18 }, + + // CDirectSoundVoice_SetPosition+0x24 : not eax + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + + // CDirectSoundVoice_SetPosition+0x26 : and eax, 1 + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, + + // CDirectSoundVoice_SetPosition+0x31 : mov ecx, [eax+0x14] + { 0x31, 0x8B }, + { 0x32, 0x48 }, + { 0x33, 0x14 }, + + // CDirectSoundVoice_SetPosition+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetPosition, 3911, 9, + + XREF_CDirectSoundStream_SetPosition, + XRefOne) + + // CDirectSoundStream_SetPosition+0x25 : call [CDirectSoundVoice_SetPosition] + XREF_ENTRY( 0x25, XREF_CDirectSoundVoice_SetPosition ), + + // CDirectSoundStream_SetPosition+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetPosition+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // CDirectSoundStream_SetPosition+0x2A : retn 0x14 + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetPosition +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetPosition, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetPosition+0x21 : call [CDirectSoundStream_SetPosition] + XREF_ENTRY( 0x21, XREF_CDirectSoundStream_SetPosition ), + + // IDirectSoundStream_SetPosition+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // IDirectSoundStream_SetPosition+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // IDirectSoundStream_SetPosition+0x26 : retn 0x14 + { 0x26, 0xC2 }, + { 0x27, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetPosition, 3911, 9, + + XREF_CDirectSoundBuffer_SetPosition, + XRefOne) + + // CDirectSoundBuffer_SetPosition+0x20 : call [CDirectSoundVoice_SetPosition] + XREF_ENTRY( 0x21, XREF_CDirectSoundVoice_SetPosition ), + + // CDirectSoundBuffer_SetPosition+0x06 : fld [ebp+arg_C] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundBuffer_SetPosition+0x1A : fstp [esp+0x10+var_10] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // CDirectSoundBuffer_SetPosition+0x26 : retn 0x14 + { 0x27, 0x14 }, + { 0x28, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetPosition +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetPosition, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetPosition+0x2C : call [CDirectSoundBuffer::SetPosition] + XREF_ENTRY( 0x2D, XREF_CDirectSoundBuffer_SetPosition ), + + // IDirectSoundBuffer_SetPosition+0x09 : mov eax, [ebp+arg_0] + { 0x09, 0x8B }, + { 0x0A, 0x45 }, + { 0x0B, 0x08 }, + + // IDirectSoundBuffer_SetPosition+0x28 : fstp [esp+0x10+var_10] + { 0x28, 0xD9 }, + { 0x29, 0x1C }, + { 0x2A, 0x24 }, + + // IDirectSoundBuffer_SetPosition+0x32 : retn 0x14 + { 0x33, 0x14 }, + { 0x34, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU_Set3dPosition +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Set3dPosition, 3911, 12, + + XREF_CMcpxAPU_Set3dPosition, + XRefZero) + + // CMcpxAPU_Set3dPosition+0x0C : movsd; movsd; movsd + { 0x0C, 0xA5 }, + { 0x0D, 0xA5 }, + { 0x0E, 0xA5 }, + + // CMcpxAPU_Set3dPosition+0x0F : or byte ptr [ecx+0x01B4], 0xFF + { 0x0F, 0x80 }, + { 0x10, 0x89 }, + { 0x11, 0xB4 }, + { 0x12, 0x01 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0xFF }, + + // CMcpxAPU_Set3dPosition+0x28 : retn 0x08 + { 0x28, 0xC2 }, + { 0x29, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetPosition, 3911, 10, + + XREF_CDirectSound_SetPosition, + XRefOne) + + // CDirectSound_SetPosition+0x35 : call [CMcpxAPU_Set3dPosition] + XREF_ENTRY( 0x35, XREF_CMcpxAPU_Set3dPosition ), + + // CDirectSound_SetPosition+0x06 : push esi; push edi + { 0x06, 0x56 }, + { 0x07, 0x57 }, + + // CDirectSound_SetPosition+0x24 : not eax; and eax, 1 + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, + + // CDirectSound_SetPosition+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetPosition +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetPosition, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_SetPosition+0x2D : call [CDirectSound_SetPosition] + XREF_ENTRY( 0x2D, XREF_CDirectSound_SetPosition ), + + // IDirectSound_SetPosition+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // IDirectSound_SetPosition+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // IDirectSound_SetPosition+0x1B : neg ecx + { 0x1B, 0xF7 }, + { 0x1C, 0xD9 }, + + // IDirectSound_SetPosition+0x32 : retn 0x14 + { 0x32, 0xC2 }, + { 0x33, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_Set3dVelocity +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_Set3dVelocity, 3911, 12, + + XREF_CMcpxVoiceClient_Set3dVelocity, + XRefZero) + + // CMcpxVoiceClient_Set3dVelocity+0x09 : movsd; movsd; movsd + { 0x09, 0xA5 }, + { 0x0A, 0xA5 }, + { 0x0B, 0xA5 }, + + // CMcpxVoiceClient_Set3dVelocity+0x0C : or byte ptr [ecx+0x80], 0x40 + { 0x0C, 0x83 }, + { 0x0D, 0x89 }, + { 0x0E, 0x80 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x40 }, + + // CMcpxVoiceClient_Set3dVelocity+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetVelocity, 3911, 14, + + XREF_CDirectSoundVoice_SetVelocity, + XRefOne) + + // CDirectSoundVoice_SetVelocity+0x35 : call [CMcpxVoiceClient_Set3dVelocity] + XREF_ENTRY( 0x35, XREF_CMcpxVoiceClient_Set3dVelocity ), + + // CDirectSoundVoice_SetVelocity+0x21 : mov eax, [ebp+0x18] + { 0x21, 0x8B }, + { 0x22, 0x45 }, + { 0x23, 0x18 }, + + // CDirectSoundVoice_SetVelocity+0x24 : not eax + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + + // CDirectSoundVoice_SetVelocity+0x26 : and eax, 1 + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, + + // CDirectSoundVoice_SetVelocity+0x31 : mov ecx, [eax+0x14] + { 0x31, 0x8B }, + { 0x32, 0x48 }, + { 0x33, 0x14 }, + + // CDirectSoundVoice_SetVelocity+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetVelocity, 3911, 9, + + XREF_CDirectSoundStream_SetVelocity, + XRefOne) + + // CDirectSoundStream_SetVelocity+0x25 : call [CDirectSoundVoice_SetVelocity] + XREF_ENTRY( 0x25, XREF_CDirectSoundVoice_SetVelocity ), + + // CDirectSoundStream_SetVelocity+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetVelocity+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // CDirectSoundStream_SetVelocity+0x2A : retn 0x14 + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetVelocity +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetVelocity, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetVelocity+0x21 : call [CDirectSoundStream_SetVelocity] + XREF_ENTRY( 0x21, XREF_CDirectSoundStream_SetVelocity ), + + // CDirectSoundStream_SetVelocity+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetVelocity+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // CDirectSoundStream_SetVelocity+0x26 : retn 0x14 + { 0x26, 0xC2 }, + { 0x27, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetVelocity, 3911, 9, + + XREF_CDirectSoundBuffer_SetVelocity, + XRefOne) + + // CDirectSoundBuffer_SetVelocity+0x20 : call [CDirectSoundVoice_SetVelocity] + XREF_ENTRY( 0x21, XREF_CDirectSoundVoice_SetVelocity ), + + // CDirectSoundBuffer_SetVelocity+0x06 : fld [ebp+arg_C] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundBuffer_SetVelocity+0x1A : fstp [esp+0x10+var_10] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // CDirectSoundBuffer_SetVelocity+0x26 : retn 0x14 + { 0x27, 0x14 }, + { 0x28, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetVelocity +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetVelocity, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetVelocity+0x2C : call [CDirectSoundBuffer::SetVelocity] + XREF_ENTRY( 0x2D, XREF_CDirectSoundBuffer_SetVelocity ), + + // IDirectSoundBuffer_SetVelocity+0x09 : mov eax, [ebp+arg_0] + { 0x09, 0x8B }, + { 0x0A, 0x45 }, + { 0x0B, 0x08 }, + + // IDirectSoundBuffer_SetVelocity+0x28 : fstp [esp+0x10+var_10] + { 0x28, 0xD9 }, + { 0x29, 0x1C }, + { 0x2A, 0x24 }, + + // IDirectSoundBuffer_SetVelocity+0x32 : retn 0x14 + { 0x33, 0x14 }, + { 0x34, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetOutputBuffer, 3911, 12, + + XREF_CDirectSoundStream_SetOutputBuffer, + XRefOne) + + // CDirectSoundStream_SetOutputBuffer+0x22 : call [CDirectSoundVoice_SetOutputBuffer] + XREF_ENTRY( 0x23, XREF_CDirectSoundVoice_SetOutputBuffer ), + + // CDirectSoundStream_SetOutputBuffer+0x00 : push ebx + { 0x00, 0x53 }, + + // CDirectSoundStream_SetOutputBuffer+0x08 : mov esi, dword ptr[esp+10h] + { 0x08, 0x8B }, + { 0x09, 0x74 }, + { 0x0A, 0x24 }, + { 0x0B, 0x10 }, + + // CDirectSoundStream_SetOutputBuffer+0x1A : push dword ptr[esp+14h] + { 0x1A, 0xFF }, + { 0x1B, 0x74 }, + { 0x1C, 0x24 }, + { 0x1D, 0x14 }, + + // CDirectSoundStream_SetOutputBuffer+0x3D : retn 0x14 + { 0x3D, 0xC2 }, + { 0x3E, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetI3DL2Source, 3911, 7, + + XREF_CMcpxVoiceClient_SetI3DL2Source, + XRefZero) + + { 0x04, 0x08 }, + { 0x0A, 0x59 }, + { 0x10, 0x80 }, + { 0x16, 0x80 }, + { 0x1C, 0x5F }, + { 0x22, 0x8B }, + { 0x29, 0x33 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetI3DL2Source, 3911, 9, + + XREF_CDirectSoundVoice_SetI3DL2Source, + XRefOne) + + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_SetI3DL2Source ), + + { 0x00, 0x56 }, + { 0x07, 0x8B }, + { 0x0E, 0xD0 }, + { 0x16, 0x10 }, + { 0x1E, 0xE8 }, + { 0x26, 0xF8 }, + { 0x2E, 0xFF }, + { 0x36, 0x5F }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSoundVoice_SetI3DL2Source ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0xFF }, + { 0x0E, 0x83 }, + { 0x12, 0xD9 }, + { 0x16, 0xC8 }, + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetI3DL2Source, 3911, 9, + + XREF_CDirectSoundStream_SetI3DL2Source, + XRefOne) + + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetI3DL2Source ), + + { 0x01, 0x74 }, + { 0x04, 0x8B }, + { 0x07, 0x08 }, + { 0x0A, 0x24 }, + { 0x0D, 0xC0 }, + { 0x10, 0xE8 }, + { 0x15, 0xC2 }, + { 0x16, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_Lock +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_Lock, 3911, 10, + + XREF_CDirectSoundBuffer_Lock, + XRefZero) + + // CDirectSoundBuffer_Lock+0x37 : mov eax, [eax+0x4C] + { 0x37, 0x8B }, + { 0x38, 0x40 }, + { 0x39, 0x4C }, + + // CDirectSoundBuffer_Lock+0x68 : mov [edi], ebx; jz +0x1F + { 0x68, 0x89 }, + { 0x69, 0x1F }, + { 0x6A, 0x74 }, + { 0x6B, 0x1F }, + + // CDirectSoundBuffer_Lock+0x85 : and dword ptr [edx], 0 + { 0x85, 0x83 }, + { 0x86, 0x22 }, + { 0x87, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_Lock +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_Lock, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_Lock+0x28 : call [CDirectSoundBuffer_Lock] + XREF_ENTRY( 0x28, XREF_CDirectSoundBuffer_Lock ), + + // IDirectSoundBuffer_Lock+0x03 : push [esp+0x24] + { 0x03, 0xFF }, + { 0x04, 0x75 }, + { 0x05, 0x24 }, + + // IDirectSoundBuffer_Lock+0x11 : add eax, 0xFFFFFFE4 + { 0x11, 0x83 }, + { 0x12, 0xC0 }, + { 0x13, 0xE4 }, + + // IDirectSoundBuffer_Lock+0x2D : retn 0x20 + { 0x2D, 0xC2 }, + { 0x2E, 0x20 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_SetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_SetCurrentPosition, 3911, 11, + + XREF_CMcpxBuffer_SetCurrentPosition, + XRefZero) + + // CMcpxBuffer_SetCurrentPosition+0x25 : mov eax, [esi+0x148] + { 0x25, 0x8B }, + { 0x26, 0x86 }, + { 0x27, 0x48 }, + { 0x28, 0x01 }, + + // CMcpxBuffer_SetCurrentPosition+0x4A : push edi; push 4 + { 0x4A, 0x57 }, + { 0x4B, 0x6A }, + { 0x4C, 0x04 }, + + // CMcpxBuffer_SetCurrentPosition+0x71 : movzx eax, word ptr [eax+2] + { 0x71, 0x0F }, + { 0x72, 0xB7 }, + { 0x73, 0x40 }, + { 0x74, 0x02 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 3911, 12, + + XREF_CDirectSoundBuffer_SetCurrentPosition, + XRefOne) + + // CDirectSoundBuffer_SetCurrentPosition+0x15 : call [CMcpxBuffer_SetCurrentPosition] + XREF_ENTRY( 0x15, XREF_CMcpxBuffer_SetCurrentPosition ), + + // CDirectSoundBuffer_SetCurrentPosition+0x0D : mov eax, [esp+0x10] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, + + // CDirectSoundBuffer_SetCurrentPosition+0x11 : mov ecx, [eax+0x20] + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x13, 0x20 }, + + // CDirectSoundBuffer_SetCurrentPosition+0x1D : jz +0x0B + { 0x1D, 0x74 }, + { 0x1E, 0x0B }, + + // CDirectSoundBuffer_SetCurrentPosition+0x2E : retn 0x08 + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetCurrentPosition +// ****************************************************************** +// Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSoundBuffer_SetCurrentPosition, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetCurrentPosition+0x15 : call [CDirectSoundBuffer_SetCurrentPosition] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetCurrentPosition ), + + // IDirectSoundBuffer_SetCurrentPosition+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetCurrentPosition+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetCurrentPosition+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * DS_CRefCount_AddRef +// ****************************************************************** +OOVPA_XREF(DS_CRefCount_AddRef, 3911, 11, + + XREF_DS_CRefCount_AddRef, + XRefZero) + + // DS_CRefCount_AddRef+0x04 : add eax, 4 + { 0x00, 0x56 }, + + + // DS_CRefCount_AddRef+0x0A : inc dword ptr [ecx+4] + { 0x0A, 0xFF }, + { 0x0B, 0x41 }, + { 0x0C, 0x04 }, + + // DS_CRefCount_AddRef+0x0A : mov, dword ptr [ecx+4] + { 0x0F, 0x8B }, + { 0x10, 0x71 }, + { 0x11, 0x04 }, + + { 0x19, 0xFF }, + { 0x1A, 0x15 }, + + // DS_CRefCount_AddRef+0x22 : retn 0x04 + { 0x22, 0xC2 }, + { 0x23, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_AddRef +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_AddRef, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_AddRef+0x08 : call [CRefCount_AddRef] + XREF_ENTRY( 0x09, XREF_DS_CRefCount_AddRef ), + + // CDirectSoundStream_AddRef+0x04 : add eax, 4 + { 0x04, 0x83 }, + { 0x05, 0xC0 }, + { 0x06, 0x04 }, + + // CDirectSoundStream_AddRef+0x0A : push eax + { 0x07, 0x50 }, + + // CDirectSoundStream_AddRef+0x08 : call [CRefCount_AddRef] + { 0x08, 0xE8 }, + + // CDirectSoundStream_AddRef+0x0D : retn 0x04 + { 0x0D, 0xC2 }, + { 0x0E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DS_CRefCount_Release +// ****************************************************************** +OOVPA_XREF(DS_CRefCount_Release, 3911, 11, + + XREF_DS_CRefCount_Release, + XRefZero) + + // DS_CRefCount_Release+0x04 : add eax, 4 + { 0x00, 0x56 }, + + + // DS_CRefCount_Release+0x0A : dec dword ptr [ecx+4] + { 0x0B, 0xFF }, + { 0x0C, 0x49 }, + { 0x0D, 0x04 }, + + // DS_CRefCount_Release+0x0A : mov, dword ptr [ecx+4] + { 0x0E, 0x8B }, + { 0x0F, 0x71 }, + { 0x10, 0x04 }, + + { 0x26, 0xFF }, + { 0x27, 0x15 }, + + // DS_CRefCount_Release+0x30 : retn 0x04 + { 0x30, 0xC2 }, + { 0x31, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Release +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Release, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_Release+0x08 : call [CRefCount_Release] + XREF_ENTRY( 0x09, XREF_DS_CRefCount_Release ), + + // CDirectSoundStream_Release+0x04 : add eax, 4 + { 0x04, 0x83 }, + { 0x05, 0xC0 }, + { 0x06, 0x04 }, + + // CDirectSoundStream_Release+0x0A : push eax + { 0x07, 0x50 }, + + // CDirectSoundStream_Release+0x08 : call [CRefCount_Release] + { 0x08, 0xE8 }, + + // CDirectSoundStream_Release+0x0D : retn 0x04 + { 0x0D, 0xC2 }, + { 0x0E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::GetCaps +// ****************************************************************** +OOVPA_XREF(CDirectSound_GetCaps, 3911, 8, + + XREF_CDirectSound_GetCaps, + XRefZero) + + { 0x08, 0x8B }, + { 0x12, 0x8D }, + { 0x1C, 0x0C }, + { 0x26, 0xFF }, + { 0x34, 0x03 }, + { 0x3A, 0xDB }, + { 0x48, 0x8B }, + { 0x4E, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_GetCaps +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_GetCaps, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSound_GetCaps ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_GetSpeakerConfig +// ****************************************************************** +OOVPA_XREF(CDirectSound_GetSpeakerConfig, 3911, 15, + + XREF_CDirectSound_GetSpeakerConfig, + XRefZero) + + { 0x00, 0x8B }, + { 0x03, 0x04 }, + + { 0x04, 0x8B }, + { 0x06, 0x08 }, + + { 0x07, 0x8B }, + { 0x09, 0x08 }, + + { 0x0A, 0x8B }, + { 0x0D, 0x08 }, + + // CDirectSound_GetSpeakerConfig+0x0E : and eax, 7FFFFFFFh + { 0x0E, 0x25 }, + { 0x0F, 0xFF }, + { 0x10, 0xFF }, + { 0x11, 0xFF }, + { 0x12, 0x7F }, + + // CDirectSound_GetSpeakerConfig+0x17 : ret 8 + { 0x17, 0xC2 }, + { 0x18, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_GetSpeakerConfig +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_GetSpeakerConfig, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSound_GetSpeakerConfig ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_DownloadEffectsImage +// ****************************************************************** +OOVPA_XREF(CDirectSound_DownloadEffectsImage, 3911, 18, + + XREF_CDirectSound_DownloadEffectsImage, + XRefZero) + + // CDirectSound_DownloadEffectsImage+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_DownloadEffectsImage+0x0A : mov esi,dword ptr [ebp+8] + { 0x0A, 0x8B }, + { 0x0B, 0x75 }, + { 0x0C, 0x08 }, + + // CDirectSound_DownloadEffectsImage+0x0D : push dword ptr [ebp+14h] + { 0x0D, 0xFF }, + { 0x0E, 0x75 }, + { 0x0F, 0x14 }, + + // CDirectSound_DownloadEffectsImage+0x10 : mov ecx,dword ptr [esi+8] + { 0x10, 0x8B }, + { 0x11, 0x4E }, + { 0x12, 0x08 }, + + // CDirectSound_DownloadEffectsImage+0x1A : push dword ptr [ebp+18h] + { 0x1A, 0xFF }, + //{ 0x1B, 0x75 }, + { 0x1C, 0x18 }, + + // CDirectSound_DownloadEffectsImage+0x20 : push dword ptr [ebp+10h] + { 0x20, 0xFF }, + //{ 0x21, 0x75 }, + { 0x22, 0x10 }, + + // CDirectSound_DownloadEffectsImage+0x23 : push dword ptr [ebp+0Ch] + { 0x23, 0xFF }, + //{ 0x24, 0x75 }, + { 0x25, 0x0C }, + + // CDirectSound_DownloadEffectsImage+0x41 : ret 14h + { 0x41, 0xC2 }, + { 0x42, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_DownloadEffectsImage +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_DownloadEffectsImage, 3911, 12, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1F, XREF_CDirectSound_DownloadEffectsImage ), + + // IDirectSound_DownloadEffectsImage+0x03 : push [ebp+0x18] + { 0x03, 0xFF }, + { 0x04, 0x75 }, + { 0x05, 0x18 }, + + // IDirectSound_DownloadEffectsImage+0x06 : mov eax, [ebp+0x08] + { 0x06, 0x8B }, + { 0x07, 0x45 }, + { 0x08, 0x08 }, + + // IDirectSound_DownloadEffectsImage+0x11 : add eax, 0xFFFFFFF8 + { 0x11, 0x83 }, + { 0x12, 0xC0 }, + { 0x13, 0xF8 }, + + // IDirectSound_DownloadEffectsImage+0x24 : retn 0x14 + { 0x24, 0xC2 }, + { 0x25, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_GetEffectData +// ****************************************************************** +OOVPA_XREF(CDirectSound_GetEffectData, 3911, 18, + + XREF_CDirectSound_GetEffectData, + XRefZero) + + // CDirectSound_GetEffectData+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_GetEffectData+0x0A : push dword ptr [ebp+18h] + { 0x0A, 0xFF }, + { 0x0B, 0x75 }, + { 0x0C, 0x18 }, + + // CDirectSound_GetEffectData+0x0F : push dword ptr [ebp+14h] + { 0x0F, 0xFF }, + { 0x10, 0x75 }, + { 0x11, 0x14 }, + + // CDirectSound_GetEffectData+0x12 : mov eax, dword ptr [ebp+8] + { 0x12, 0x8B }, + { 0x13, 0x45 }, + { 0x14, 0x08 }, + + // CDirectSound_GetEffectData+0x15 : push dword ptr [ebp+10h] + { 0x15, 0xFF }, + //{ 0x16, 0x75 }, + { 0x17, 0x10 }, + + // CDirectSound_GetEffectData+0x18 : mov eax, dword ptr [eax+0Ch] + { 0x18, 0x8B }, + //{ 0x19, 0x40 }, + { 0x1A, 0x0C }, + + // CDirectSound_GetEffectData+0x1B : push dword ptr [ebp+0Ch] + { 0x1B, 0xFF }, + //{ 0x1C, 0x75 }, + { 0x1D, 0x0C }, + + // CDirectSound_GetEffectData+0x3F : ret 14h + { 0x3F, 0xC2 }, + { 0x40, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_GetEffectData +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_GetEffectData, 3911, 12, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1F, XREF_CDirectSound_GetEffectData ), + + // IDirectSound_GetEffectData+0x03 : push [ebp+0x18] + { 0x03, 0xFF }, + { 0x04, 0x75 }, + { 0x05, 0x18 }, + + // IDirectSound_GetEffectData+0x06 : mov eax, [ebp+0x08] + { 0x06, 0x8B }, + { 0x07, 0x45 }, + { 0x08, 0x08 }, + + // IDirectSound_GetEffectData+0x11 : add eax, 0xFFFFFFF8 + { 0x11, 0x83 }, + { 0x12, 0xC0 }, + { 0x13, 0xF8 }, + + // IDirectSound_GetEffectData+0x24 : retn 0x14 + { 0x24, 0xC2 }, + { 0x25, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetEffectData +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetEffectData, 3911, 21, + + XREF_CDirectSound_SetEffectData, + XRefZero) + + // CDirectSound_GetEffectData+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_GetEffectData+0x0A : mov ecx,dword ptr [ebp+1Ch] + { 0x0A, 0x8B }, + { 0x0B, 0x4D }, + { 0x0C, 0x1C }, + + // CDirectSound_GetEffectData+0x0A : push dword ptr [ebp+18h] + { 0x13, 0xFF }, + { 0x14, 0x75 }, + { 0x15, 0x18 }, + + // CDirectSound_GetEffectData+0x0F : push dword ptr [ebp+14h] + { 0x18, 0xFF }, + { 0x19, 0x75 }, + { 0x1A, 0x14 }, + + // CDirectSound_GetEffectData+0x12 : mov eax, dword ptr [ebp+8] + { 0x1B, 0x8B }, + { 0x1C, 0x45 }, + { 0x1D, 0x08 }, + + // CDirectSound_GetEffectData+0x15 : push dword ptr [ebp+10h] + { 0x1E, 0xFF }, + //{ 0x1F, 0x75 }, + { 0x20, 0x10 }, + + // CDirectSound_GetEffectData+0x18 : mov eax, dword ptr [eax+0Ch] + { 0x21, 0x8B }, + //{ 0x22, 0x40 }, + { 0x23, 0x0C }, + + // CDirectSound_GetEffectData+0x1B : push dword ptr [ebp+0Ch] + { 0x24, 0xFF }, + //{ 0x25, 0x75 }, + { 0x26, 0x0C }, + + // CDirectSound_GetEffectData+0x3F : ret 18h + { 0x48, 0xC2 }, + { 0x49, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetEffectData +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetEffectData, 3911, 12, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x22, XREF_CDirectSound_SetEffectData ), + + // IDirectSound_SetEffectData+0x03 : push [ebp+0x1C] + { 0x03, 0xFF }, + { 0x04, 0x75 }, + { 0x05, 0x1C }, + + // IDirectSound_SetEffectData+0x06 : mov eax, [ebp+0x08] + { 0x06, 0x8B }, + { 0x07, 0x45 }, + { 0x08, 0x08 }, + + // IDirectSound_SetEffectData+0x11 : add eax, 0xFFFFFFF8 + { 0x11, 0x83 }, + { 0x12, 0xC0 }, + { 0x13, 0xF8 }, + + // IDirectSound_SetEffectData+0x27 : retn 0x18 + { 0x27, 0xC2 }, + { 0x28, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_CommitEffectData +// ****************************************************************** +OOVPA_XREF(CDirectSound_CommitEffectData, 3911, 12, + XREF_CDirectSound_CommitEffectData, + XRefZero) + + // CDirectSound_CommitEffectData+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSound_CommitEffectData+0x08 : mov eax, dword ptr [esp+8] + { 0x08, 0x8B }, + { 0x0B, 0x08 }, + + // CDirectSound_CommitEffectData+0x0C : mov eax, dword ptr [esp+0Ch] + { 0x0C, 0x8B }, + { 0x0E, 0x0C }, + + // CDirectSound_CommitEffectData+0x15 : push 0; push 0 + { 0x15, 0x6A }, + { 0x16, 0x00 }, + { 0x17, 0x6A }, + { 0x18, 0x00 }, + + // CDirectSound_CommitEffectData+0x20 : pop esi + { 0x20, 0x5E }, + + // CDirectSound_CommitEffectData+0x30 : retn 0x04 + { 0x30, 0xC2 }, + { 0x31, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_CommitEffectData +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_CommitEffectData, 3911, 8, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x11, XREF_CDirectSound_CommitEffectData ), + + // IDirectSound_CommitEffectData+0x04 : mov ecx, eax + { 0x04, 0x8B }, + { 0x05, 0xC8 }, + + // IDirectSound_CommitEffectData+0x06 : add eax, 0xFFFFFFF8 + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xF8 }, + + // IDirectSound_CommitEffectData+0x15 : retn 0x04 + { 0x15, 0xC2 }, + { 0x16, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::EnableHeadphones +// ****************************************************************** +OOVPA_XREF(CDirectSound_EnableHeadphones, 3911, 18, + + XREF_CDirectSound_EnableHeadphones, + XRefZero) + + { 0x00, 0x55 }, + + { 0x25, 0x0F }, + { 0x26, 0x95 }, + { 0x27, 0xC2 }, + + { 0x38, 0x81 }, + { 0x39, 0xCB }, + { 0x3A, 0x00 }, + { 0x3B, 0x00 }, + { 0x3C, 0x00 }, + { 0x3D, 0x80 }, + + { 0x40, 0x81 }, + { 0x41, 0xE3 }, + { 0x42, 0xFF }, + { 0x43, 0xFF }, + { 0x44, 0xFF }, + { 0x45, 0x7F }, + + { 0xCB, 0xC2 }, + { 0xCC, 0x08 }, +OOVPA_END; +#if 0 // Replaced with better OOVPA 3911 (See above) +// ****************************************************************** +// * CDirectSound::EnableHeadphones +// ****************************************************************** +OOVPA_XREF(CDirectSound_EnableHeadphones, 3911, 7, + + XREF_CDirectSound_EnableHeadphones, + XRefZero) + { 0x18, 0x8B }, + { 0x32, 0x0C }, + { 0x4F, 0x8B }, + { 0x66, 0x8B }, + { 0x80, 0xFF }, + { 0x9A, 0x76 }, + { 0xB4, 0x5B }, +OOVPA_END; +#endif +// ****************************************************************** +// * IDirectSound_EnableHeadphones +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_EnableHeadphones, 3911, 10, + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSound_EnableHeadphones ), + + // IDirectSound_EnableHeadphones+0x04 : push dword ptr [esp+8] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSound_EnableHeadphones+0x0A : add eax, 0xFFFFFFF8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xF8 }, + + // IDirectSound_EnableHeadphones+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU_SetMixBinHeadroom +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_SetMixBinHeadroom, 3911, 12, + + XREF_CMcpxAPU_SetMixBinHeadroom, + XRefZero) + + // CMcpxAPU_SetMixBinHeadroom+0x04 : cmp dword ptr ds:[0xFE820010], 4 + { 0x12, 0x83 }, + { 0x13, 0x3D }, + { 0x14, 0x10 }, + { 0x15, 0x00 }, + { 0x16, 0x82 }, + { 0x17, 0xFE }, + { 0x18, 0x04 }, + + // CMcpxAPU_SetMixBinHeadroom+0x1F : and edx, 7 + { 0x1F, 0x83 }, + { 0x20, 0xE2 }, + { 0x21, 0x07 }, + + // CMcpxAPU_SetMixBinHeadroom+0x2D : jl +0xD8 + { 0x2D, 0x7C }, + { 0x2E, 0xD8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetMixBinHeadroom +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetMixBinHeadroom, 3911, 9, + + XREF_CDirectSound_SetMixBinHeadroom, + XRefOne) + + // CDirectSound_SetMixBinHeadroom+0x19 : call [CMcpxAPU_SetMixBinHeadroom] + XREF_ENTRY( 0x19, XREF_CMcpxAPU_SetMixBinHeadroom ), + + // CDirectSound_SetMixBinHeadroom+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, + + // CDirectSound_SetMixBinHeadroom+0x07 : push [esp+0x14] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x14 }, + + // CDirectSound_SetMixBinHeadroom+0x21 : jz +0x0B + { 0x21, 0x74 }, + { 0x22, 0x0B }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetMixBinHeadroom +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetMixBinHeadroom, 3911, 12, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_SetMixBinHeadroom+0x19 : call [CDirectSound_SetMixBinHeadroom] + XREF_ENTRY( 0x19, XREF_CDirectSound_SetMixBinHeadroom ), + + // IDirectSound_SetMixBinHeadroom+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSound_SetMixBinHeadroom+0x08 : mov ecx, eax + { 0x08, 0x8B }, + { 0x09, 0xC8 }, + + // IDirectSound_SetMixBinHeadroom+0x0E : add eax, 0xFFFFFFF8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xF8 }, + + // IDirectSound_SetMixBinHeadroom+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU::Set3dParameters +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Set3dParameters, 3911, 7, + + XREF_CMcpxAPU_Set3dParameters, + XRefZero) + + { 0x05, 0x57 }, + { 0x0C, 0xB8 }, + { 0x13, 0x80 }, + { 0x1A, 0x83 }, + { 0x21, 0x74 }, + { 0x2C, 0x33 }, + { 0x2F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetAllParameters, 3911, 9, + + XREF_CDirectSound_SetAllParameters, + XRefOne) + + XREF_ENTRY( 0x1F, XREF_CMcpxAPU_Set3dParameters ), + + { 0x00, 0x56 }, + { 0x07, 0x8B }, + { 0x0E, 0xD0 }, + { 0x16, 0x10 }, + { 0x1E, 0xE8 }, + { 0x26, 0xF8 }, + { 0x2E, 0xFF }, + { 0x36, 0x5F }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetAllParameters +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetAllParameters, 3911, 12, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSound_SetAllParameters ), + + // IDirectSound_SetAllParameters+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSound_SetAllParameters+0x08 : mov ecx, eax + { 0x08, 0x8B }, + { 0x09, 0xC8 }, + + // IDirectSound_SetAllParameters+0x0E : add eax, 0xFFFFFFF8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xF8 }, + + // IDirectSound_SetAllParameters+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU_Set3dDistanceFactor +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Set3dDistanceFactor, 3911, 13, + + XREF_CMcpxAPU_Set3dDistanceFactor, + XRefZero) + + // Unique value difference against CMcpxAPU_Set3dDopperFactor's unique value. + // CMcpxAPU_Set3dDistanceFactor+0x04 : or dword ptr [ecx+0x01B4], 0x60 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0xB4 }, + { 0x07, 0x01 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x60 }, + + // CMcpxAPU_Set3dDistanceFactor+0x0B : cmp [esp+0x08], 0 + { 0x0B, 0x83 }, + { 0x0C, 0x7C }, + { 0x0D, 0x24 }, + { 0x0E, 0x08 }, + + // Unique value difference against CMcpxAPU_Set3dDopperFactor's unique value. + // CMcpxAPU_Set3dDistanceFactor+0x12 : mov [ecx+0x0178], eax + { 0x12, 0x78 }, + { 0x13, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetDistanceFactor +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetDistanceFactor, 3911, 12, + + XREF_CDirectSound_SetDistanceFactor, + XRefOne) + + // CDirectSound_SetDistanceFactor+0x23 : call [CMcpxAPU_Set3dDistanceFactor] + XREF_ENTRY( 0x23, XREF_CMcpxAPU_Set3dDistanceFactor ), + + // CDirectSound_SetDistanceFactor+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, + + // CDirectSound_SetDistanceFactor+0x07 : fld [esp+0x10] + { 0x07, 0xD9 }, + { 0x08, 0x44 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, + + // CDirectSound_SetDistanceFactor+0x11 : not eax; and eax, 1 + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetDistanceFactor +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetDistanceFactor, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_SetDistanceFactor+0x1D : call [CDirectSound_SetDistanceFactor] + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetDistanceFactor ), + + // IDirectSound_SetDistanceFactor+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSound_SetDistanceFactor+0x0C : push ecx + { 0x0C, 0x51 }, + + // IDirectSound_SetDistanceFactor+0x12 : add eax, 0xFFFFFFF8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, + + // IDirectSound_SetDistanceFactor+0x21 : retn 0x0C + { 0x21, 0xC2 }, + { 0x22, 0x0C }, +OOVPA_END; +// ****************************************************************** +// * CMcpxAPU::Set3dDopplerFactor +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Set3dDopplerFactor, 3911, 13, + + XREF_CMcpxAPU_Set3dDopplerFactor, + XRefZero) + + // Unique value difference against CMcpxAPU_Set3dDistanceFactor's unique value. + // CMcpxAPU_Set3dDopplerFactor+0x04 : or dword ptr [ecx+0x01B4], 0x40 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0xB4 }, + { 0x07, 0x01 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x40 }, + + // CMcpxAPU_Set3dDopplerFactor+0x0B : cmp [esp+0x08], 0 + { 0x0B, 0x83 }, + { 0x0C, 0x7C }, + { 0x0D, 0x24 }, + { 0x0E, 0x08 }, + + // Unique value difference against CMcpxAPU_Set3dDistanceFactor's unique value. + // CMcpxAPU_Set3dDopplerFactor+0x12 : mov [ecx+0x0180], eax + { 0x12, 0x80 }, + { 0x13, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetDopplerFactor +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetDopplerFactor, 3911, 9, + + XREF_CDirectSound_SetDopplerFactor, + XRefOne) + + XREF_ENTRY( 0x23, XREF_CMcpxAPU_Set3dDopplerFactor ), + + { 0x07, 0xD9 }, + { 0x0E, 0x44 }, + { 0x16, 0x50 }, + { 0x1E, 0x0C }, + { 0x27, 0x85 }, + { 0x32, 0xFF }, + { 0x38, 0x8B }, + { 0x3E, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetDopplerFactor +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetDopplerFactor, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetDopplerFactor ), + + // IDirectSound_SetDopplerFactor+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSound_SetDopplerFactor+0x0C : push ecx + { 0x0C, 0x51 }, + + // IDirectSound_SetDopplerFactor+0x12 : add eax, 0xFFFFFFF8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, + + // IDirectSound_SetDopplerFactor+0x21 : retn 0x0C + { 0x21, 0xC2 }, + { 0x22, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU_Set3dVelocity +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Set3dVelocity, 3911, 12, + + XREF_CMcpxAPU_Set3dVelocity, + XRefZero) + + // CMcpxAPU_Set3dVelocity+0x0C : movsd; movsd; movsd + { 0x0C, 0xA5 }, + { 0x0D, 0xA5 }, + { 0x0E, 0xA5 }, + + // CMcpxAPU_Set3dVelocity+0x0F : or dword ptr [ecx+0x01B4], 0x40 + { 0x0F, 0x83 }, + { 0x10, 0x89 }, + { 0x11, 0xB4 }, + { 0x12, 0x01 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x40 }, + + // CMcpxAPU_Set3dVelocity+0x28 : retn 0x08 + { 0x28, 0xC2 }, + { 0x29, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetVelocity, 3911, 10, + + XREF_CDirectSound_SetVelocity, + XRefOne) + + // CDirectSound_SetVelocity+0x35 : call [CMcpxAPU_Set3dVelocity] + XREF_ENTRY( 0x35, XREF_CMcpxAPU_Set3dVelocity ), + + // CDirectSound_SetVelocity+0x06 : push esi; push edi + { 0x06, 0x56 }, + { 0x07, 0x57 }, + + // CDirectSound_SetVelocity+0x24 : not eax; and eax, 1 + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, + + // CDirectSound_SetVelocity+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetVelocity +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_XREF(IDirectSound_SetVelocity, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_SetVelocity+0x2D : call [CDirectSound_SetVelocity] + XREF_ENTRY( 0x2D, XREF_CDirectSound_SetVelocity ), + + // IDirectSound_SetVelocity+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // IDirectSound_SetVelocity+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // IDirectSound_SetVelocity+0x1B : neg ecx + { 0x1B, 0xF7 }, + { 0x1C, 0xD9 }, + + // IDirectSound_SetVelocity+0x32 : retn 0x14 + { 0x32, 0xC2 }, + { 0x33, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_GetTime +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_XREF(CDirectSound_GetTime, 3911, 8, + + XREF_CDirectSound_GetTime, + XRefZero) + + // CDirectSound_GetTime+0x00 : push dword ptr [esp+8] + { 0x00, 0xFF }, + { 0x02, 0x24 }, + + // CDirectSound_GetTime+0x04 : call dword ptr [KeQuerySystemTime] + { 0x04, 0xFF }, + { 0x05, 0x15 }, + + // CDirectSound_GetTime+0x0A : xor eax,eax + { 0x0A, 0x33 }, + { 0x0B, 0xC0 }, + + // CDirectSound_GetTime+0x0C : retn 0x08 + { 0x0C, 0xC2 }, + { 0x0D, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_GetTime +// ****************************************************************** +//Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSound_GetTime, 3911, 8, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_GetTime+0x10 : call [CDirectSound_GetTime] + XREF_ENTRY( 0x15, XREF_CDirectSound_GetTime ), + + // IDirectSound_GetTime+0x0A : and eax, 0xFFFFFFF8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xF8 }, + + // IDirectSound_GetTime+0x0D : neg ecx + { 0x0D, 0xF7 }, + { 0x0E, 0xD9 }, + + // IDirectSound_GetTime+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU_Set3dRolloffFactor +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_Set3dRolloffFactor, 3911, 13, + + XREF_CMcpxAPU_Set3dRolloffFactor, + XRefZero) + + // CMcpxAPU_Set3dRolloffFactor+0x04 : or dword ptr [ecx+0x01B4], 0x04 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0xB4 }, + { 0x07, 0x01 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x04 }, + + // CMcpxAPU_Set3dRolloffFactor+0x0B : cmp [esp+0x08], 0 + { 0x0B, 0x83 }, + { 0x0C, 0x7C }, + { 0x0D, 0x24 }, + { 0x0E, 0x08 }, + + // CMcpxAPU_Set3dRolloffFactor+0x12 : mov [ecx+0x017C], eax + { 0x12, 0x7C }, + { 0x13, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetRolloffFactor +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetRolloffFactor, 3911, 12, + + XREF_CDirectSound_SetRolloffFactor, + XRefOne) + + // CDirectSound_SetRolloffFactor+0x23 : call [CMcpxAPU_Set3dRolloffFactor] + XREF_ENTRY( 0x23, XREF_CMcpxAPU_Set3dRolloffFactor ), + + // CDirectSound_SetRolloffFactor+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, + + // CDirectSound_SetRolloffFactor+0x07 : fld [esp+0x10] + { 0x07, 0xD9 }, + { 0x08, 0x44 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, + + // CDirectSound_SetRolloffFactor+0x11 : not eax; and eax, 1 + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetRolloffFactor +// ****************************************************************** +// Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSound_SetRolloffFactor, 3911, 11, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSound_SetRolloffFactor+0x1D : call [CDirectSound_SetRolloffFactor] + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetRolloffFactor ), + + // IDirectSound_SetRolloffFactor+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSound_SetRolloffFactor+0x0C : push ecx + { 0x0C, 0x51 }, + + // IDirectSound_SetRolloffFactor+0x12 : add eax, 0xFFFFFFF8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, + + // IDirectSound_SetRolloffFactor+0x21 : retn 0x0C + { 0x21, 0xC2 }, + { 0x22, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxAPU::SetI3DL2Listener +// ****************************************************************** +OOVPA_XREF(CMcpxAPU_SetI3DL2Listener, 3911, 13, + + XREF_CMcpxAPU_SetI3DL2Listener, + XRefZero) + + // CMcpxAPU_SetI3DL2Listener+0x08 : push 0x0C; pop ecx + { 0x08, 0x6A }, + { 0x09, 0x0C }, + { 0x0A, 0x59 }, + + // CMcpxAPU_SetI3DL2Listener+0x13 : or word ptr [ecx+0x01B4], 0x0180 + { 0x13, 0x66 }, + { 0x14, 0x81 }, + { 0x15, 0x88 }, + { 0x16, 0xB4 }, + { 0x17, 0x01 }, + { 0x18, 0x00 }, + { 0x1A, 0x80 }, + { 0x1B, 0x01 }, + + // CMcpxAPU_SetI3DL2Listener+0x30 : retn 0x08 + { 0x30, 0xC2 }, + { 0x31, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetI3DL2Listener +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetI3DL2Listener, 3911, 8, + + XREF_CDirectSound_SetI3DL2Listener, + XRefOne) + + XREF_ENTRY( 0x2F, XREF_CMcpxAPU_SetI3DL2Listener ), + + { 0x08, 0xF8 }, + { 0x12, 0x0C }, + { 0x1C, 0x18 }, + { 0x26, 0x51 }, + { 0x33, 0x8B }, + { 0x3E, 0xFF }, + { 0x44, 0x5F }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSound_SetI3DL2Listener +// ****************************************************************** +OOVPA_XREF(IDirectSound_SetI3DL2Listener, 3911, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSound_SetI3DL2Listener ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0xFF }, + { 0x0E, 0x83 }, + { 0x12, 0xD9 }, + { 0x16, 0xC8 }, + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetVolume +// ****************************************************************** +// NOTE: IDirectSoundStream_SetVolume has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetVolume, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetVolume+0x0C : call [CMcpxVoiceClient_SetVolume] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetVolume ), + + // CDirectSoundStream_SetVolume+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetVolume+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetVolume+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetVolume +// ****************************************************************** +// NOTE: CDirectSoundStream_SetVolume has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetVolume, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetVolume+0x0C : call [CMcpxVoiceClient_SetVolume] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetVolume ), + + // IDirectSoundStream_SetVolume+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetVolume+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetVolume+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetPitch +// ****************************************************************** +// NOTE: IDirectSoundStream_SetPitch has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetPitch, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetPitch+0x0C : call [CMcpxVoiceClient_SetPitch] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetPitch ), + + // CDirectSoundStream_SetPitch+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetPitch+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetPitch+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetPitch +// ****************************************************************** +// NOTE: CDirectSoundStream_SetPitch has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetPitch, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetPitch+0x0C : call [CMcpxVoiceClient_SetPitch] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetPitch ), + + // IDirectSoundStream_SetPitch+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetPitch+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetPitch+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetLFO +// ****************************************************************** +// NOTE: IDirectSoundStream_SetLFO has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetLFO, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetLFO+0x0C : call [CMcpxVoiceClient_SetLFO] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetLFO ), + + // CDirectSoundStream_SetLFO+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetLFO+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetLFO+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetLFO +// ****************************************************************** +// NOTE: CDirectSoundStream_SetLFO has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetLFO, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetLFO+0x0C : call [CMcpxVoiceClient_SetLFO] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetLFO ), + + // IDirectSoundStream_SetLFO+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetLFO+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetLFO+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetEG +// ****************************************************************** +// NOTE: IDirectSoundStream_SetEG has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetEG, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetEG+0x0C : call [CMcpxVoiceClient_SetEG] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetEG ), + + // CDirectSoundStream_SetEG+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetEG+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetEG+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetEG +// ****************************************************************** +// NOTE: CDirectSoundStream_SetEG has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetEG, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetEG+0x0C : call [CMcpxVoiceClient_SetEG] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetEG ), + + // IDirectSoundStream_SetEG+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetEG+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetEG+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetFilter +// ****************************************************************** +// NOTE: IDirectSoundStream_SetFilter has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetFilter, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetFilter+0x0C : call [CMcpxVoiceClient_SetFilter] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetFilter ), + + // CDirectSoundStream_SetFilter+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetFilter+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetFilter+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetFilter +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetFilter, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetFilter+0x0C : call [CMcpxVoiceClient_SetFilter] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetFilter ), + + // IDirectSoundStream_SetFilter+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetFilter+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetFilter+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetHeadroom +// ****************************************************************** +// NOTE: IDirectSoundStream_SetHeadroom has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetHeadroom, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetHeadroom+0x0C : call [CDirectSoundVoice_SetHeadroom] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetHeadroom ), + + // CDirectSoundStream_SetHeadroom+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetHeadroom+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetHeadroom+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetHeadroom +// ****************************************************************** +// NOTE: CDirectSoundStream_SetHeadroom has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetHeadroom, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetHeadroom+0x0C : call [CDirectSoundVoice_SetHeadroom] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetHeadroom ), + + // IDirectSoundStream_SetHeadroom+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetHeadroom+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetHeadroom+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetFrequency +// ****************************************************************** +// NOTE: IDirectSoundStream_SetFrequency has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetFrequency, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetFrequency+0x0C : call [CDirectSoundVoice_SetFrequency] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetFrequency ), + + // CDirectSoundStream_SetFrequency+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetFrequency+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetFrequency+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetFrequency +// ****************************************************************** +// NOTE: CDirectSoundStream_SetFrequency has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetFrequency, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetFrequency+0x0C : call [CDirectSoundVoice_SetFrequency] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetFrequency ), + + // IDirectSoundStream_SetFrequency+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetFrequency+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetFrequency+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMixBins +// ****************************************************************** +// NOTE: IDirectSoundStream_SetMixBins has the same asm code as this function. +OOVPA_XREF(CDirectSoundStream_SetMixBins, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_SetMixBins+0x0C : call [CDirectSoundVoice_SetMixBins] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetMixBins ), + + // CDirectSoundStream_SetMixBins+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // CDirectSoundStream_SetMixBins+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // CDirectSoundStream_SetMixBins+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMixBins +// ****************************************************************** +// NOTE: CDirectSoundStream_SetMixBins has the same asm code as this function. +OOVPA_XREF(IDirectSoundStream_SetMixBins, 3911, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetMixBins+0x0C : call [CDirectSoundVoice_SetMixBins] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetMixBins ), + + // IDirectSoundStream_SetMixBins+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundStream_SetMixBins+0x08 : add eax, 0x04 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, + + // IDirectSoundStream_SetMixBins+0x11 : retn 0x08 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetOutputBuffer, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetOutputBuffer+0x00 : jmp [CDirectSoundStream_SetOutputBuffer] + XREF_ENTRY( 0x01, XREF_CDirectSoundStream_SetOutputBuffer ), + + // IDirectSoundStream_SetOutputBuffer+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMixBinVolumes +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetMixBinVolumes_12, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetMixBinVolumes_12+0x00 : jmp [CDirectSoundStream_SetMixBinVolumes_12] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetMixBinVolumes_12), + + // IDirectSoundStream_SetMixBinVolumes_12+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetAllParameters +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetAllParameters, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetAllParameters+0x00 : jmp [CDirectSoundStream_SetAllParameters] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetAllParameters), + + // IDirectSoundStream_SetAllParameters+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetConeAngles +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetConeAngles, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetConeAngles+0x00 : jmp [CDirectSoundStream_SetConeAngles] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetConeAngles), + + // IDirectSoundStream_SetConeAngles+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetConeOutsideVolume, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetConeOutsideVolume+0x00 : jmp [CDirectSoundStream_SetConeOutsideVolume] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetConeOutsideVolume), + + // IDirectSoundStream_SetConeOutsideVolume+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMode +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetMode, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetMode+0x00 : jmp [CDirectSoundStream_SetMode] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetMode), + + // IDirectSoundStream_SetMode+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetI3DL2Source +// ****************************************************************** +// Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSoundStream_SetI3DL2Source, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetI3DL2Source+0x00 : jmp [CDirectSoundStream_SetI3DL2Source] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetI3DL2Source), + + // IDirectSoundStream_SetI3DL2Source+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_Pause +// ****************************************************************** +// Generic OOVPA as of 3911 and newer +OOVPA_XREF(IDirectSoundStream_Pause, 3911, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_Pause+0x00 : jmp [CDirectSoundStream_Pause] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_Pause), + + // IDirectSoundStream_Pause+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Pause +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Pause, 3911, 12, + + XREF_CMcpxStream_Pause, + XRefZero) + + { 0x00, 0x55 }, + + { 0x16, 0x8B }, + { 0x17, 0x46 }, + + { 0x19, 0x83 }, + { 0x1A, 0xC8 }, + { 0x1B, 0x04 }, + + { 0x27, 0x83 }, + { 0x28, 0xE0 }, + { 0x29, 0xFB }, + + { 0x44, 0xC9 }, + + { 0x45, 0xC2 }, + { 0x46, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * XAudioCreatePcmFormat +// ****************************************************************** +OOVPA_NO_XREF(XAudioCreatePcmFormat, 3911, 11) + + { 0x00, 0x8B }, + + { 0x11, 0x02 }, + { 0x18, 0x0E }, + { 0x2E, 0x10 }, + + + //XAudioCreatePcmFormat+0x10 : mov word ptr [ecx],1 + { 0x34, 0x66 }, + { 0x35, 0xC7 }, + { 0x36, 0x01 }, + { 0x37, 0x01 }, + { 0x38, 0x00 }, + + { 0x47, 0xC2 }, + { 0x48, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * XAudioCreateAdpcmFormat +// ****************************************************************** +OOVPA_NO_XREF(XAudioCreateAdpcmFormat, 3911, 14) + + { 0x00, 0x8B }, + { 0x04, 0x8B }, + { 0x09, 0x8B }, + + //XAudioCreateAdpcmFormat+0x10 : mov word ptr [edx],69h + { 0x10, 0x66 }, + { 0x11, 0xC7 }, + { 0x12, 0x02 }, + { 0x13, 0x69 }, + { 0x14, 0x00 }, + + { 0x20, 0x04 }, + + { 0x22, 0xE8 }, + + { 0x38, 0x02 }, + + { 0x3E, 0x40 }, + + { 0x41, 0xC2 }, + { 0x42, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IsValidFormat +// ****************************************************************** +OOVPA_NO_XREF(IsValidFormat, 3911, 10) + + { 0x00, 0x8B }, + { 0x04, 0x0F }, + { 0x07, 0x48 }, + + //IsValidFormat+0x10 : sub eax,68h + { 0x0A, 0x83 }, + { 0x0B, 0xE8 }, + { 0x0C, 0x68 }, + + { 0x14, 0xE8 }, + + { 0x1C, 0xE8 }, + + { 0x21, 0xC2 }, + { 0x22, 0x04 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl index 6eab27040..f8a5f1398 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl @@ -31,83 +31,86 @@ // * All rights reserved // * // ****************************************************************** - +#if 0 // Moved to 3911 // ****************************************************************** // * DirectSoundCreate // ****************************************************************** OOVPA_NO_XREF(DirectSoundCreate, 3936, 9) // DirectSoundCreate+0x23 : add eax, 8 - { 0x23, 0x83 }, // (Offset,Value)-Pair #1 - { 0x24, 0xC0 }, // (Offset,Value)-Pair #2 - { 0x25, 0x08 }, // (Offset,Value)-Pair #3 + { 0x23, 0x83 }, + { 0x24, 0xC0 }, + { 0x25, 0x08 }, // DirectSoundCreate+0x34 : push 0x1C - { 0x34, 0x6A }, // (Offset,Value)-Pair #4 - { 0x35, 0x1C }, // (Offset,Value)-Pair #5 + { 0x34, 0x6A }, + { 0x35, 0x1C }, // DirectSoundCreate+0x75 : sbb eax, eax - { 0x75, 0x1B }, // (Offset,Value)-Pair #6 - { 0x76, 0xC0 }, // (Offset,Value)-Pair #7 + { 0x75, 0x1B }, + { 0x76, 0xC0 }, // DirectSoundCreate+0x9B : retn 0x0C - { 0x9B, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x9C, 0x0C }, // (Offset,Value)-Pair #9 + { 0x9B, 0xC2 }, + { 0x9C, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * DirectSoundDoWorkB +// * CMcpxAPU_ServiceDeferredCommandsLow // ****************************************************************** -OOVPA_XREF(DirectSoundDoWorkB, 3936, 12, +OOVPA_XREF(CMcpxAPU_ServiceDeferredCommandsLow, 3936, 12, - XREF_DSDOWORKB, + XREF_CMcpxAPU_ServiceDeferredCommandsLow, XRefZero) - // DirectSoundDoWorkB+0x06 : lea edi, [ebx+0x664] - { 0x06, 0x8D }, // (Offset,Value)-Pair #1 - { 0x07, 0xBB }, // (Offset,Value)-Pair #2 - { 0x08, 0x64 }, // (Offset,Value)-Pair #3 - { 0x09, 0x06 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x00 }, // (Offset,Value)-Pair #5 - { 0x0B, 0x00 }, // (Offset,Value)-Pair #6 + // CMcpxAPU_ServiceDeferredCommandsLow+0x06 : lea edi, [ebx+0x664] + { 0x06, 0x8D }, + { 0x07, 0xBB }, + { 0x08, 0x64 }, + { 0x09, 0x06 }, + { 0x0A, 0x00 }, + { 0x0B, 0x00 }, - // DirectSoundDoWorkB+0x20 : mov eax, [ecx] - { 0x20, 0x8B }, // (Offset,Value)-Pair #7 - { 0x21, 0x01 }, // (Offset,Value)-Pair #8 + // CMcpxAPU_ServiceDeferredCommandsLow+0x20 : mov eax, [ecx] + { 0x20, 0x8B }, + { 0x21, 0x01 }, - // DirectSoundDoWorkB+0x33 : add edi, 4; dec ebp - { 0x33, 0x83 }, // (Offset,Value)-Pair #9 - { 0x34, 0xC7 }, // (Offset,Value)-Pair #10 - { 0x35, 0x04 }, // (Offset,Value)-Pair #11 - { 0x36, 0x4D }, // (Offset,Value)-Pair #12 + // CMcpxAPU_ServiceDeferredCommandsLow+0x33 : add edi, 4; dec ebp + { 0x33, 0x83 }, + { 0x34, 0xC7 }, + { 0x35, 0x04 }, + { 0x36, 0x4D }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * DirectSoundDoWorkA +// * CDirectSound_DoWork // ****************************************************************** -OOVPA_XREF(DirectSoundDoWorkA, 3936, 9, +OOVPA_XREF(CDirectSound_DoWork, 3936, 9, - XREF_DSDOWORKA, + XREF_CDirectSound_DoWork, XRefOne) - // DirectSoundDoWorkA+0x10 : call [DirectSoundDoWorkB] - XREF_ENTRY( 0x10, XREF_DSDOWORKB ), // (Offset,Value)-Pair #1 + // CDirectSound_DoWork+0x10 : call [CMcpxAPU_ServiceDeferredCommandsLow] + XREF_ENTRY( 0x10, XREF_CMcpxAPU_ServiceDeferredCommandsLow ), - // DirectSoundDoWorkA+0x08 : mov eax, [esp+0x08] - { 0x08, 0x8B }, // (Offset,Value)-Pair #2 - { 0x09, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0A, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0B, 0x08 }, // (Offset,Value)-Pair #5 + // CDirectSound_DoWork+0x08 : mov eax, [esp+0x08] + { 0x08, 0x8B }, + { 0x09, 0x44 }, + { 0x0A, 0x24 }, + { 0x0B, 0x08 }, - // DirectSoundDoWorkA+0x17 : jz +0x0B - { 0x17, 0x74 }, // (Offset,Value)-Pair #6 - { 0x18, 0x0B }, // (Offset,Value)-Pair #7 + // CDirectSound_DoWork+0x17 : jz +0x0B + { 0x17, 0x74 }, + { 0x18, 0x0B }, - // DirectSoundDoWorkA+0x24 : retn 0x04 - { 0x24, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x25, 0x04 }, // (Offset,Value)-Pair #9 + // CDirectSound_DoWork+0x24 : retn 0x04 + { 0x24, 0xC2 }, + { 0x25, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * DirectSoundDoWork // ****************************************************************** @@ -116,57 +119,59 @@ OOVPA_XREF(DirectSoundDoWork, 3936, 9, XRefNoSaveIndex, XRefOne) - // DirectSoundDoWork+0x13 : call [XREF_DSDOWORKA] - XREF_ENTRY( 0x13, XREF_DSDOWORKA ), // (Offset,Value)-Pair #1 + // DirectSoundDoWork+0x13 : call [CDirectSound_DoWork] + XREF_ENTRY( 0x13, XREF_CDirectSound_DoWork ), // DirectSoundDoWork+0x0D : test eax, eax;jz +0x06 - { 0x0D, 0x85 }, // (Offset,Value)-Pair #2 - { 0x0E, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x74 }, // (Offset,Value)-Pair #4 - { 0x10, 0x06 }, // (Offset,Value)-Pair #5 + { 0x0D, 0x85 }, + { 0x0E, 0xC0 }, + { 0x0F, 0x74 }, + { 0x10, 0x06 }, // DirectSoundDoWork+0x19 : pop esi; jz +0x0B - { 0x19, 0x5E }, // (Offset,Value)-Pair #6 - { 0x1A, 0x74 }, // (Offset,Value)-Pair #7 - { 0x1B, 0x0B }, // (Offset,Value)-Pair #8 + { 0x19, 0x5E }, + { 0x1A, 0x74 }, + { 0x1B, 0x0B }, // DirectSoundDoWork+0x27 : retn - { 0x27, 0xC3 }, // (Offset,Value)-Pair #9 + { 0x27, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::CreateSoundStream // ****************************************************************** OOVPA_XREF(CDirectSound_CreateSoundStream, 3936, 16, - XREF_DSCREATESOUNDSTREAM, + XREF_CDirectSound_CreateSoundStream, XRefZero) // CDirectSound_CreateSoundStream+0x2D : and esi, 0x7FF8FFF2 - { 0x2D, 0x81 }, // (Offset,Value)-Pair #1 - { 0x2E, 0xE6 }, // (Offset,Value)-Pair #2 - { 0x2F, 0xF2 }, // (Offset,Value)-Pair #3 - { 0x30, 0xFF }, // (Offset,Value)-Pair #4 - { 0x31, 0xF8 }, // (Offset,Value)-Pair #5 - { 0x32, 0x7F }, // (Offset,Value)-Pair #6 + { 0x2D, 0x81 }, + { 0x2E, 0xE6 }, + { 0x2F, 0xF2 }, + { 0x30, 0xFF }, + { 0x31, 0xF8 }, + { 0x32, 0x7F }, // CDirectSound_CreateSoundStream+0x33 : add esi, 0x8007000E - { 0x33, 0x81 }, // (Offset,Value)-Pair #7 - { 0x34, 0xC6 }, // (Offset,Value)-Pair #8 - { 0x35, 0x0E }, // (Offset,Value)-Pair #9 - { 0x36, 0x00 }, // (Offset,Value)-Pair #10 - { 0x37, 0x07 }, // (Offset,Value)-Pair #11 - { 0x38, 0x80 }, // (Offset,Value)-Pair #12 + { 0x33, 0x81 }, + { 0x34, 0xC6 }, + { 0x35, 0x0E }, + { 0x36, 0x00 }, + { 0x37, 0x07 }, + { 0x38, 0x80 }, // CDirectSound_CreateSoundStream+0x3C : js +0x16 - { 0x3C, 0x78 }, // (Offset,Value)-Pair #13 - { 0x3D, 0x16 }, // (Offset,Value)-Pair #14 + { 0x3C, 0x78 }, + { 0x3D, 0x16 }, // CDirectSound_CreateSoundStream+0x72 : retn 0x10 - { 0x72, 0xC2 }, // (Offset,Value)-Pair #15 - { 0x73, 0x10 }, // (Offset,Value)-Pair #16 + { 0x72, 0xC2 }, + { 0x73, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_CreateSoundStream // ****************************************************************** @@ -178,164 +183,175 @@ OOVPA_XREF(IDirectSound_CreateSoundStream, 3936, 10, // TODO: tidy up the xref names (are probably not accurate) // IDirectSound_CreateSoundStream+0x1D : call [CDirectSound::CreateSoundStream] - XREF_ENTRY( 0x1D, XREF_DSCREATESOUNDSTREAM ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1D, XREF_CDirectSound_CreateSoundStream ), // IDirectSound_CreateSoundStream+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSound_CreateSoundStream+0x12 : and eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #6 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_CreateSoundStream+0x21 : retn 0x10 - { 0x21, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x22, 0x10 }, // (Offset,Value)-Pair #10 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::CreateSoundBuffer // ****************************************************************** OOVPA_XREF(CDirectSound_CreateSoundBuffer, 3936, 16, - XREF_DSCREATESOUNDBUFFER, + XREF_CDirectSound_CreateSoundBuffer, XRefZero) + /*TODO: Need verification offset 0x00 is push ebp or different op code. + This is needed to avoid false detection for 4039 and later XDK version. + // CDirectSound_CreateSoundBuffer+0x00 : push ebp + { 0x00, 0x55 }, + */ // CDirectSound_CreateSoundBuffer+0x2D : and esi, 0x7FF8FFF2 - { 0x2D, 0x81 }, // (Offset,Value)-Pair #1 - { 0x2E, 0xE6 }, // (Offset,Value)-Pair #2 - { 0x2F, 0xF2 }, // (Offset,Value)-Pair #3 - { 0x30, 0xFF }, // (Offset,Value)-Pair #4 - { 0x31, 0xF8 }, // (Offset,Value)-Pair #5 - { 0x32, 0x7F }, // (Offset,Value)-Pair #6 + { 0x2D, 0x81 }, + { 0x2E, 0xE6 }, + { 0x2F, 0xF2 }, + { 0x30, 0xFF }, + { 0x31, 0xF8 }, + { 0x32, 0x7F }, // CDirectSound_CreateSoundBuffer+0x33 : add esi, 0x8007000E - { 0x33, 0x81 }, // (Offset,Value)-Pair #7 - { 0x34, 0xC6 }, // (Offset,Value)-Pair #8 - { 0x35, 0x0E }, // (Offset,Value)-Pair #9 - { 0x36, 0x00 }, // (Offset,Value)-Pair #10 - { 0x37, 0x07 }, // (Offset,Value)-Pair #11 - { 0x38, 0x80 }, // (Offset,Value)-Pair #12 + { 0x33, 0x81 }, + { 0x34, 0xC6 }, + { 0x35, 0x0E }, + { 0x36, 0x00 }, + { 0x37, 0x07 }, + { 0x38, 0x80 }, // CDirectSound_CreateSoundBuffer+0x3C : js +0x21 - { 0x3C, 0x78 }, // (Offset,Value)-Pair #13 - { 0x3D, 0x21 }, // (Offset,Value)-Pair #14 + { 0x3C, 0x78 }, + { 0x3D, 0x21 }, // CDirectSound_CreateSoundBuffer+0x7D : retn 0x10 - { 0x7D, 0xC2 }, // (Offset,Value)-Pair #15 - { 0x7E, 0x10 }, // (Offset,Value)-Pair #16 + { 0x7D, 0xC2 }, + { 0x7E, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSound_CreateBuffer +// * IDirectSound_CreateSoundBuffer // ****************************************************************** -OOVPA_XREF(IDirectSound_CreateBuffer, 3936, 10, +OOVPA_XREF(IDirectSound_CreateSoundBuffer, 3936, 10, XRefNoSaveIndex, XRefOne) // TODO: tidy up the xref names (are probably not accurate) - // IDirectSound_CreateBuffer+0x1D : call [CDirectSound::CreateSoundStream] - XREF_ENTRY( 0x1D, XREF_DSCREATESOUNDBUFFER ), // (Offset,Value)-Pair #1 + // IDirectSound_CreateSoundBuffer+0x1D : call [CDirectSound::CreateSoundBuffer] + XREF_ENTRY( 0x1D, XREF_CDirectSound_CreateSoundBuffer ), - // IDirectSound_CreateBuffer+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + // IDirectSound_CreateSoundBuffer+0x04 : mov eax, [esp+0x08] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, - // IDirectSound_CreateBuffer+0x12 : and eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #6 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #8 + // IDirectSound_CreateSoundBuffer+0x12 : and eax, 0xFFFFFFF8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, - // IDirectSound_CreateBuffer+0x21 : retn 0x10 - { 0x21, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x22, 0x10 }, // (Offset,Value)-Pair #10 + // IDirectSound_CreateSoundBuffer+0x21 : retn 0x10 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_Release // ****************************************************************** OOVPA_NO_XREF(IDirectSoundBuffer_Release, 3936, 10) // IDirectSoundBuffer_Release+0x04 : lea ecx, [eax-0x1C] - { 0x04, 0x8D }, // (Offset,Value)-Pair #1 - { 0x05, 0x48 }, // (Offset,Value)-Pair #2 - { 0x06, 0xE4 }, // (Offset,Value)-Pair #3 + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xE4 }, // IDirectSoundBuffer_Release+0x07 : neg eax; sbb eax, eax - { 0x07, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x08, 0xD8 }, // (Offset,Value)-Pair #5 - { 0x09, 0x1B }, // (Offset,Value)-Pair #6 - { 0x0A, 0xC0 }, // (Offset,Value)-Pair #7 + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, // IDirectSoundBuffer_Release+0x10 : call dword ptr [ecx+0x08] - { 0x10, 0xFF }, // (Offset,Value)-Pair #8 - { 0x11, 0x51 }, // (Offset,Value)-Pair #9 - { 0x12, 0x08 }, // (Offset,Value)-Pair #10 + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetPitchB +// * CMcpxVoiceClient_SetPitch // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetPitchB, 3936, 11, +OOVPA_XREF(CMcpxVoiceClient_SetPitch, 3936, 11, XREF_DSBUFFERSETPITCHB, XRefZero) - // IDirectSoundBuffer_SetPitchB+0x21 : lea edi, [esi+0xB4] - { 0x21, 0x8D }, // (Offset,Value)-Pair #1 - { 0x22, 0xBE }, // (Offset,Value)-Pair #2 - { 0x23, 0xB4 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 + // CMcpxVoiceClient_SetPitch+0x21 : lea edi, [esi+0xB4] + { 0x21, 0x8D }, + { 0x22, 0xBE }, + { 0x23, 0xB4 }, + { 0x24, 0x00 }, - // IDirectSoundBuffer_SetPitchB+0x58 : movzx eax, word ptr [eax+2] - { 0x58, 0x0F }, // (Offset,Value)-Pair #5 - { 0x59, 0xB7 }, // (Offset,Value)-Pair #6 - { 0x5A, 0x40 }, // (Offset,Value)-Pair #7 - { 0x5B, 0x02 }, // (Offset,Value)-Pair #8 + // CMcpxVoiceClient_SetPitch+0x58 : movzx eax, word ptr [eax+2] + { 0x58, 0x0F }, + { 0x59, 0xB7 }, + { 0x5A, 0x40 }, + { 0x5B, 0x02 }, - // IDirectSoundBuffer_SetPitchB+0x5E : dec eax; sar eax, 1 - { 0x5E, 0x48 }, // (Offset,Value)-Pair #9 - { 0x5F, 0xD1 }, // (Offset,Value)-Pair #10 - { 0x60, 0xF8 }, // (Offset,Value)-Pair #11 + // CMcpxVoiceClient_SetPitch+0x5E : dec eax; sar eax, 1 + { 0x5E, 0x48 }, + { 0x5F, 0xD1 }, + { 0x60, 0xF8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetPitchA +// * CDirectSoundVoice_SetPitch // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetPitchA, 3936, 12, +OOVPA_XREF(CDirectSoundVoice_SetPitch, 3936, 12, XREF_DSBUFFERSETPITCHA, XRefOne) - // IDirectSoundBuffer_SetPitchA+0x1B : call [IDirectSoundBuffer_SetPitchB] - XREF_ENTRY( 0x1B, XREF_DSBUFFERSETPITCHB ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetPitch+0x1B : call [CMcpxVoiceClient_SetPitch] + XREF_ENTRY( 0x1B, XREF_DSBUFFERSETPITCHB ), - // IDirectSoundBuffer_SetPitchA+0x07 : mov edx, [esp+0x10] - { 0x07, 0x8B }, // (Offset,Value)-Pair #2 - { 0x08, 0x54 }, // (Offset,Value)-Pair #3 - { 0x09, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x10 }, // (Offset,Value)-Pair #5 + // CDirectSoundVoice_SetPitch+0x07 : mov edx, [esp+0x10] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, - // IDirectSoundBuffer_SetPitchA+0x11 : mov ecx, [eax+0x18] - { 0x11, 0x8B }, // (Offset,Value)-Pair #6 - { 0x12, 0x48 }, // (Offset,Value)-Pair #7 - { 0x13, 0x18 }, // (Offset,Value)-Pair #8 + // CDirectSoundVoice_SetPitch+0x11 : mov ecx, [eax+0x18] + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x13, 0x18 }, - // IDirectSoundBuffer_SetPitchA+0x23 : jz +0x0B - { 0x23, 0x74 }, // (Offset,Value)-Pair #9 - { 0x24, 0x0B }, // (Offset,Value)-Pair #10 + // CDirectSoundVoice_SetPitch+0x23 : jz +0x0B + { 0x23, 0x74 }, + { 0x24, 0x0B }, - // IDirectSoundBuffer_SetPitchA+0x34 : retn 0x08 - { 0x34, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x35, 0x08 }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetPitch+0x34 : retn 0x08 + { 0x34, 0xC2 }, + { 0x35, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetPitch // ****************************************************************** @@ -344,25 +360,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetPitch, 3936, 10, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetPitch+0x15 : call [IDirectSoundBuffer_SetPitchA] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETPITCHA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetPitch+0x15 : call [CDirectSoundVoice_SetPitch] + XREF_ENTRY( 0x15, XREF_DSBUFFERSETPITCHA ), // IDirectSoundBuffer_SetPitch+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_SetPitch+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetPitch+0x19 : retn 0x08 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x08 }, // (Offset,Value)-Pair #10 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxBuffer::GetStatus // ****************************************************************** @@ -372,29 +389,30 @@ OOVPA_XREF(CMcpxBuffer_GetStatus, 3936, 13, XRefZero) // CMcpxBuffer_GetStatus+0x10 : mov eax, [ebp+0x08] - { 0x10, 0x8B }, // (Offset,Value)-Pair #1 - { 0x11, 0x45 }, // (Offset,Value)-Pair #2 - { 0x12, 0x08 }, // (Offset,Value)-Pair #3 + { 0x10, 0x8B }, + { 0x11, 0x45 }, + { 0x12, 0x08 }, // CMcpxBuffer_GetStatus+0x16 : xor ecx, ecx; inc ecx - { 0x16, 0x33 }, // (Offset,Value)-Pair #4 - { 0x17, 0xC9 }, // (Offset,Value)-Pair #5 - { 0x18, 0x41 }, // (Offset,Value)-Pair #6 + { 0x16, 0x33 }, + { 0x17, 0xC9 }, + { 0x18, 0x41 }, // CMcpxBuffer_GetStatus+0x1C : jz +0x17 - { 0x1C, 0x74 }, // (Offset,Value)-Pair #7 - { 0x1D, 0x17 }, // (Offset,Value)-Pair #8 + { 0x1C, 0x74 }, + { 0x1D, 0x17 }, // CMcpxBuffer_GetStatus+0x2F : mov [eax], 5 - { 0x2F, 0xC7 }, // (Offset,Value)-Pair #9 - { 0x30, 0x00 }, // (Offset,Value)-Pair #10 - { 0x31, 0x05 }, // (Offset,Value)-Pair #11 + { 0x2F, 0xC7 }, + { 0x30, 0x00 }, + { 0x31, 0x05 }, // CMcpxBuffer_GetStatus+0x48 : retn 0x04 - { 0x48, 0xC2 }, // (Offset,Value)-Pair #12 - { 0x49, 0x04 }, // (Offset,Value)-Pair #13 + { 0x48, 0xC2 }, + { 0x49, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::GetStatus // ****************************************************************** @@ -404,24 +422,25 @@ OOVPA_XREF(CDirectSoundBuffer_GetStatus, 3936, 10, XRefOne) // CDirectSoundBuffer_GetStatus+0x14 : call [CMcpxBuffer::GetStatus] - XREF_ENTRY( 0x15, XREF_CMcpxBuffer_GetStatus), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CMcpxBuffer_GetStatus), // CDirectSoundBuffer_GetStatus+0x07 : push [esp+0x10] - { 0x07, 0xFF }, // (Offset,Value)-Pair #2 - { 0x08, 0x74 }, // (Offset,Value)-Pair #3 - { 0x09, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x10 }, // (Offset,Value)-Pair #5 + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, // CDirectSoundBuffer_GetStatus+0x11 : mov ecx, [eax+0x20] - { 0x11, 0x8B }, // (Offset,Value)-Pair #6 - { 0x12, 0x48 }, // (Offset,Value)-Pair #7 - { 0x13, 0x20 }, // (Offset,Value)-Pair #8 + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x13, 0x20 }, // CDirectSoundBuffer_GetStatus+0x2E : retn 0x08 - { 0x2E, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x2F, 0x08 }, // (Offset,Value)-Pair #10 + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_GetStatus // ****************************************************************** @@ -431,81 +450,84 @@ OOVPA_XREF(IDirectSoundBuffer_GetStatus, 3936, 10, XRefOne) // IDirectSoundBuffer_GetStatus+0x15 : call [CDirectSoundBuffer::GetStatus] - XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_GetStatus ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_GetStatus ), // IDirectSoundBuffer_GetStatus+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_GetStatus+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_GetStatus+0x19 : retn 0x08 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x08 }, // (Offset,Value)-Pair #10 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetVolumeB +// * CMcpxVoiceClient_SetVolume // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetVolumeB, 3936, 11, +OOVPA_XREF(CMcpxVoiceClient_SetVolume, 3936, 11, - XREF_DSBUFFERSETVOLUMEB, + XREF_CMcpxVoiceClient_SetVolume, XRefZero) - // IDirectSoundBuffer_SetVolumeB+0x26 : mov ecx, [esi+0xE0] - { 0x26, 0x8B }, // (Offset,Value)-Pair #1 - { 0x27, 0x8E }, // (Offset,Value)-Pair #2 - { 0x28, 0xE0 }, // (Offset,Value)-Pair #3 - { 0x29, 0x00 }, // (Offset,Value)-Pair #4 + // CMcpxVoiceClient_SetVolume+0x26 : mov ecx, [esi+0xE0] + { 0x26, 0x8B }, + { 0x27, 0x8E }, + { 0x28, 0xE0 }, + { 0x29, 0x00 }, - // IDirectSoundBuffer_SetVolumeB+0x2F : movzx ecx, word ptr [ecx+2] - { 0x2F, 0x0F }, // (Offset,Value)-Pair #5 - { 0x30, 0xB7 }, // (Offset,Value)-Pair #6 - { 0x31, 0x49 }, // (Offset,Value)-Pair #7 - { 0x32, 0x02 }, // (Offset,Value)-Pair #8 + // CMcpxVoiceClient_SetVolume+0x2F : movzx ecx, word ptr [ecx+2] + { 0x2F, 0x0F }, + { 0x30, 0xB7 }, + { 0x31, 0x49 }, + { 0x32, 0x02 }, - // IDirectSoundBuffer_SetVolumeB+0x35 : dec ecx; sar ecx, 1 - { 0x35, 0x49 }, // (Offset,Value)-Pair #9 - { 0x36, 0xD1 }, // (Offset,Value)-Pair #10 - { 0x37, 0xF9 }, // (Offset,Value)-Pair #11 + // CMcpxVoiceClient_SetVolume+0x35 : dec ecx; sar ecx, 1 + { 0x35, 0x49 }, + { 0x36, 0xD1 }, + { 0x37, 0xF9 }, OOVPA_END; - +#endif +#if 0 // Replaced with accurate OOVPA 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetVolumeA +// * CDirectSoundVoice_SetVolume // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetVolumeA, 3936, 12, +OOVPA_XREF(CDirectSoundVoice_SetVolume, 3936, 12, - XREF_DSBUFFERSETVOLUMEA, + XREF_CDirectSoundVoice_SetVolume, XRefOne) - // IDirectSoundBuffer_SetVolumeA+0x1E : call [IDirectSoundBuffer_SetVolumeB] - XREF_ENTRY( 0x1E, XREF_DSBUFFERSETVOLUMEB ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetVolume+0x1E : call [CMcpxVoiceClient_SetVolume] + XREF_ENTRY( 0x1E, XREF_CMcpxVoiceClient_SetVolume ), // IDirectSoundBuffer_SetVolumeA+0x07 : mov ecx, [esp+0x0C] - { 0x07, 0x8B }, // (Offset,Value)-Pair #2 - { 0x08, 0x4C }, // (Offset,Value)-Pair #3 - { 0x09, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x0C }, // (Offset,Value)-Pair #5 + { 0x07, 0x8B }, + { 0x08, 0x4C }, + { 0x09, 0x24 }, + { 0x0A, 0x0C }, - // IDirectSoundBuffer_SetVolumeA+0x11 : mov eax, [ecx+0x18] - { 0x11, 0x8B }, // (Offset,Value)-Pair #6 - { 0x12, 0x41 }, // (Offset,Value)-Pair #7 - { 0x13, 0x18 }, // (Offset,Value)-Pair #8 + // CDirectSoundVoice_SetVolume+0x11 : mov eax, [ecx+0x18] + { 0x11, 0x8B }, + { 0x12, 0x41 }, + { 0x13, 0x18 }, - // IDirectSoundBuffer_SetVolumeA+0x26 : jz +0x0B - { 0x26, 0x74 }, // (Offset,Value)-Pair #9 - { 0x27, 0x0B }, // (Offset,Value)-Pair #10 + // CDirectSoundVoice_SetVolume+0x26 : jz +0x0B + { 0x26, 0x74 }, + { 0x27, 0x0B }, - // IDirectSoundBuffer_SetVolumeA+0x37 : retn 0x08 - { 0x37, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x38, 0x08 }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetVolume+0x37 : retn 0x08 + { 0x37, 0xC2 }, + { 0x38, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetVolume // ****************************************************************** @@ -514,82 +536,85 @@ OOVPA_XREF(IDirectSoundBuffer_SetVolume, 3936, 10, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetVolume+0x15 : call [IDirectSoundBuffer_SetVolumeA] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETVOLUMEA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetVolume+0x15 : call [CDirectSoundVoice_SetVolume] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetVolume ), // IDirectSoundBuffer_SetVolume+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_SetVolume+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetVolume+0x19 : retn 0x08 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x08 }, // (Offset,Value)-Pair #10 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetCurrentPositionB +// * CMcpxBuffer_SetCurrentPosition // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetCurrentPositionB, 3936, 11, +OOVPA_XREF(CMcpxBuffer_SetCurrentPosition, 3936, 11, - XREF_DSBUFFERSETCURRENTPOSITIONB, + XREF_CMcpxBuffer_SetCurrentPosition, XRefZero) - // IDirectSoundBuffer_SetCurrentPositionB+0x25 : mov eax, [esi+0x148] - { 0x25, 0x8B }, // (Offset,Value)-Pair #1 - { 0x26, 0x86 }, // (Offset,Value)-Pair #2 - { 0x27, 0x48 }, // (Offset,Value)-Pair #3 - { 0x28, 0x01 }, // (Offset,Value)-Pair #4 + // CMcpxBuffer_SetCurrentPosition+0x25 : mov eax, [esi+0x148] + { 0x25, 0x8B }, + { 0x26, 0x86 }, + { 0x27, 0x48 }, + { 0x28, 0x01 }, - // IDirectSoundBuffer_SetCurrentPositionB+0x4A : push edi; push 4 - { 0x4A, 0x57 }, // (Offset,Value)-Pair #5 - { 0x4B, 0x6A }, // (Offset,Value)-Pair #6 - { 0x4C, 0x04 }, // (Offset,Value)-Pair #7 + // CMcpxBuffer_SetCurrentPosition+0x4A : push edi; push 4 + { 0x4A, 0x57 }, + { 0x4B, 0x6A }, + { 0x4C, 0x04 }, - // IDirectSoundBuffer_SetCurrentPositionB+0x71 : movzx eax, word ptr [eax+2] - { 0x71, 0x0F }, // (Offset,Value)-Pair #8 - { 0x72, 0xB7 }, // (Offset,Value)-Pair #9 - { 0x73, 0x40 }, // (Offset,Value)-Pair #10 - { 0x74, 0x02 }, // (Offset,Value)-Pair #11 + // CMcpxBuffer_SetCurrentPosition+0x71 : movzx eax, word ptr [eax+2] + { 0x71, 0x0F }, + { 0x72, 0xB7 }, + { 0x73, 0x40 }, + { 0x74, 0x02 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetCurrentPositionA +// * CDirectSoundBuffer_SetCurrentPosition // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetCurrentPositionA, 3936, 12, +OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 3936, 12, - XREF_DSBUFFERSETCURRENTPOSITIONA, + XREF_CDirectSoundBuffer_SetCurrentPosition, XRefOne) - // IDirectSoundBuffer_SetCurrentPositionA+0x15 : call [IDirectSoundBuffer_SetCurrentPositionB] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETCURRENTPOSITIONB ), // (Offset,Value)-Pair #1 + // CDirectSoundBuffer_SetCurrentPosition+0x15 : call [CMcpxBuffer_SetCurrentPosition] + XREF_ENTRY( 0x15, XREF_CMcpxBuffer_SetCurrentPosition ), - // IDirectSoundBuffer_SetCurrentPositionA+0x0D : mov eax, [esp+0x10] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0E, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x24 }, // (Offset,Value)-Pair #4 - { 0x10, 0x10 }, // (Offset,Value)-Pair #5 + // CDirectSoundBuffer_SetCurrentPosition+0x0D : mov eax, [esp+0x10] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, - // IDirectSoundBuffer_SetCurrentPositionA+0x11 : mov ecx, [eax+0x20] - { 0x11, 0x8B }, // (Offset,Value)-Pair #6 - { 0x12, 0x48 }, // (Offset,Value)-Pair #7 - { 0x13, 0x20 }, // (Offset,Value)-Pair #8 + // CDirectSoundBuffer_SetCurrentPosition+0x11 : mov ecx, [eax+0x20] + { 0x11, 0x8B }, + { 0x12, 0x48 }, + { 0x13, 0x20 }, - // IDirectSoundBuffer_SetCurrentPositionA+0x1D : jz +0x0B - { 0x1D, 0x74 }, // (Offset,Value)-Pair #9 - { 0x1E, 0x0B }, // (Offset,Value)-Pair #10 + // CDirectSoundBuffer_SetCurrentPosition+0x1D : jz +0x0B + { 0x1D, 0x74 }, + { 0x1E, 0x0B }, - // IDirectSoundBuffer_SetCurrentPositionA+0x2E : retn 0x08 - { 0x2E, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x2F, 0x08 }, // (Offset,Value)-Pair #12 + // CDirectSoundBuffer_SetCurrentPosition+0x2E : retn 0x08 + { 0x2E, 0xC2 }, + { 0x2F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetCurrentPosition // ****************************************************************** @@ -598,104 +623,109 @@ OOVPA_XREF(IDirectSoundBuffer_SetCurrentPosition, 3936, 10, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetCurrentPosition+0x15 : call [IDirectSoundBuffer_SetCurrentPositionA] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETCURRENTPOSITIONA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetCurrentPosition+0x15 : call [CDirectSoundBuffer_SetCurrentPosition] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetCurrentPosition ), // IDirectSoundBuffer_SetCurrentPosition+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_SetCurrentPosition+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetCurrentPosition+0x19 : retn 0x08 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x08 }, // (Offset,Value)-Pair #10 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetPlayRegionA +// * CDirectSoundBuffer_SetLoopRegion // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetPlayRegionA, 3936, 10, +// NOTICE: This OOVPA does not belong to CDirectSoundBuffer_SetPlayRegion period. +OOVPA_XREF(CDirectSoundBuffer_SetLoopRegion, 3925, 10, - XREF_DSBUFFERSETPLAYREGIONA, + XREF_CDirectSoundBuffer_SetLoopRegion, XRefZero) - // IDirectSoundBuffer_SetPlayRegionA+0x20 : cmp edx, [ecx+0x54] - { 0x20, 0x3B }, // (Offset,Value)-Pair #1 - { 0x21, 0x51 }, // (Offset,Value)-Pair #2 - { 0x22, 0x54 }, // (Offset,Value)-Pair #3 + // CDirectSoundBuffer_SetLoopRegion+0x20 : cmp edx, [ecx+0x54] + { 0x20, 0x3B }, + { 0x21, 0x51 }, + { 0x22, 0x54 }, - // IDirectSoundBuffer_SetPlayRegionA+0x2C : mov ecx, [esi+0x20] - { 0x2C, 0x8B }, // (Offset,Value)-Pair #4 - { 0x2D, 0x4E }, // (Offset,Value)-Pair #5 - { 0x2E, 0x20 }, // (Offset,Value)-Pair #6 + // CDirectSoundBuffer_SetLoopRegion+0x2C : mov ecx, [esi+0x20] + { 0x2C, 0x8B }, + { 0x2D, 0x4E }, + { 0x2E, 0x20 }, - // IDirectSoundBuffer_SetPlayRegionA+0x38 : jz +0x0B - { 0x38, 0x74 }, // (Offset,Value)-Pair #7 - { 0x39, 0x0B }, // (Offset,Value)-Pair #8 + // CDirectSoundBuffer_SetLoopRegion+0x38 : jz +0x0B + { 0x38, 0x74 }, + { 0x39, 0x0B }, - // IDirectSoundBuffer_SetPlayRegionA+0x4A : retn 0x0C - { 0x4A, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x4B, 0x0C }, // (Offset,Value)-Pair #10 + // CDirectSoundBuffer_SetLoopRegion+0x4A : retn 0x0C + { 0x4A, 0xC2 }, + { 0x4B, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetPlayRegion +// * IDirectSoundBuffer_SetLoopRegion // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetPlayRegion, 3936, 10, +OOVPA_XREF(IDirectSoundBuffer_SetLoopRegion, 3925, 10, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetPlayRegion+0x19 : call [IDirectSoundBuffer_SetPlayRegionA] - XREF_ENTRY( 0x19, XREF_DSBUFFERSETPLAYREGIONA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetPlayRegion+0x19 : call [CDirectSoundBuffer_SetLoopRegion] + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetLoopRegion ), // IDirectSoundBuffer_SetPlayRegion+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSoundBuffer_SetPlayRegion+0x0E : add eax, 0xFFFFFFE4 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x10, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, // IDirectSoundBuffer_SetPlayRegion+0x1D : retn 0x0C - { 0x1D, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1E, 0x0C }, // (Offset,Value)-Pair #10 + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_LockA +// * CDirectSoundBuffer_Lock // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_LockA, 3936, 10, +OOVPA_XREF(CDirectSoundBuffer_Lock, 3936, 10, - XREF_DSBUFFERLOCKA, + XREF_CDirectSoundBuffer_Lock, XRefZero) - // IDirectSoundBuffer_LockA+0x37 : mov eax, [eax+0x4C] - { 0x37, 0x8B }, // (Offset,Value)-Pair #1 - { 0x38, 0x40 }, // (Offset,Value)-Pair #2 - { 0x39, 0x4C }, // (Offset,Value)-Pair #3 + // CDirectSoundBuffer_Lock+0x37 : mov eax, [eax+0x4C] + { 0x37, 0x8B }, + { 0x38, 0x40 }, + { 0x39, 0x4C }, - // IDirectSoundBuffer_LockA+0x68 : mov [edi], ebx; jz +0x1F - { 0x68, 0x89 }, // (Offset,Value)-Pair #4 - { 0x69, 0x1F }, // (Offset,Value)-Pair #5 - { 0x6A, 0x74 }, // (Offset,Value)-Pair #6 - { 0x6B, 0x1F }, // (Offset,Value)-Pair #7 + // CDirectSoundBuffer_Lock+0x68 : mov [edi], ebx; jz +0x1F + { 0x68, 0x89 }, + { 0x69, 0x1F }, + { 0x6A, 0x74 }, + { 0x6B, 0x1F }, - // IDirectSoundBuffer_LockA+0x85 : and dword ptr [edx], 0 - { 0x85, 0x83 }, // (Offset,Value)-Pair #8 - { 0x86, 0x22 }, // (Offset,Value)-Pair #9 - { 0x87, 0x00 }, // (Offset,Value)-Pair #10 + // CDirectSoundBuffer_Lock+0x85 : and dword ptr [edx], 0 + { 0x85, 0x83 }, + { 0x86, 0x22 }, + { 0x87, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_Lock // ****************************************************************** @@ -704,57 +734,59 @@ OOVPA_XREF(IDirectSoundBuffer_Lock, 3936, 9, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_Lock+0x28 : call [IDirectSoundBuffer_LockA] - XREF_ENTRY( 0x28, XREF_DSBUFFERLOCKA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_Lock+0x28 : call [CDirectSoundBuffer_Lock] + XREF_ENTRY( 0x28, XREF_CDirectSoundBuffer_Lock ), // IDirectSoundBuffer_Lock+0x03 : push [esp+0x24] - { 0x03, 0xFF }, // (Offset,Value)-Pair #2 - { 0x04, 0x75 }, // (Offset,Value)-Pair #3 - { 0x05, 0x24 }, // (Offset,Value)-Pair #4 + { 0x03, 0xFF }, + { 0x04, 0x75 }, + { 0x05, 0x24 }, // IDirectSoundBuffer_Lock+0x11 : add eax, 0xFFFFFFE4 - { 0x11, 0x83 }, // (Offset,Value)-Pair #5 - { 0x12, 0xC0 }, // (Offset,Value)-Pair #6 - { 0x13, 0xE4 }, // (Offset,Value)-Pair #7 + { 0x11, 0x83 }, + { 0x12, 0xC0 }, + { 0x13, 0xE4 }, // IDirectSoundBuffer_Lock+0x2D : retn 0x20 - { 0x2D, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x2E, 0x20 }, // (Offset,Value)-Pair #9 + { 0x2D, 0xC2 }, + { 0x2E, 0x20 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetHeadroomA +// * CDirectSoundVoice_SetHeadroom // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetHeadroomA, 3936, 12, +OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 3936, 12, - XREF_DSBUFFERSETHEADROOMA, + XREF_CDirectSoundVoice_SetHeadroom, XRefOne) // WARNING: I am unsure if this is SetHeadroom - // IDirectSoundBuffer_SetHeadroomA+0x23 : call [IDirectSoundBuffer_SetVolumeB] - XREF_ENTRY( 0x23, XREF_DSBUFFERSETVOLUMEB ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetHeadroom+0x23 : call [CMcpxVoiceClient_SetVolume] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_SetVolume ), - // IDirectSoundBuffer_SetHeadroomA+0x07 : mov edx, [esp+0x0C] - { 0x07, 0x8B }, // (Offset,Value)-Pair #2 - { 0x08, 0x54 }, // (Offset,Value)-Pair #3 - { 0x09, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x0C }, // (Offset,Value)-Pair #5 + // CDirectSoundVoice_SetHeadroom+0x07 : mov edx, [esp+0x0C] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x0C }, - // IDirectSoundBuffer_SetHeadroomA+0x11 : mov eax, [edx+0x18] - { 0x11, 0x8B }, // (Offset,Value)-Pair #6 - { 0x12, 0x42 }, // (Offset,Value)-Pair #7 - { 0x13, 0x18 }, // (Offset,Value)-Pair #8 + // CDirectSoundVoice_SetHeadroom+0x11 : mov eax, [edx+0x18] + { 0x11, 0x8B }, + { 0x12, 0x42 }, + { 0x13, 0x18 }, - // IDirectSoundBuffer_SetHeadroomA+0x2B : jz +0x0B - { 0x2B, 0x74 }, // (Offset,Value)-Pair #9 - { 0x2C, 0x0B }, // (Offset,Value)-Pair #10 + // CDirectSoundVoice_SetHeadroom+0x2B : jz +0x0B + { 0x2B, 0x74 }, + { 0x2C, 0x0B }, - // IDirectSoundBuffer_SetHeadroomA+0x3C : retn 0x08 - { 0x3C, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x3D, 0x08 }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetHeadroom+0x3C : retn 0x08 + { 0x3C, 0xC2 }, + { 0x3D, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetHeadroom // ****************************************************************** @@ -763,49 +795,51 @@ OOVPA_XREF(IDirectSoundBuffer_SetHeadroom, 3936, 10, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetHeadroom+0x15 : call [IDirectSoundBuffer_SetHeadroomA] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETHEADROOMA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetHeadroom+0x15 : call [CDirectSoundVoice_SetHeadroom] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetHeadroom ), // IDirectSoundBuffer_SetHeadroom+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_SetHeadroom+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetHeadroom+0x19 : retn 0x08 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x08 }, // (Offset,Value)-Pair #10 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetBufferDataA +// * CDirectSoundBuffer_SetBufferData // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetBufferDataA, 3936, 9, +OOVPA_XREF(CDirectSoundBuffer_SetBufferData, 3936, 9, XREF_DSSETBUFFERDATA, XRefZero) - // IDirectSoundBuffer_SetBufferDataA+0x22 : cmp ecx, [eax+0x4C] - { 0x22, 0x3B }, // (Offset,Value)-Pair #1 - { 0x23, 0x48 }, // (Offset,Value)-Pair #2 - { 0x24, 0x4C }, // (Offset,Value)-Pair #3 + // CDirectSoundBuffer_SetBufferData+0x22 : cmp ecx, [eax+0x4C] + { 0x22, 0x3B }, + { 0x23, 0x48 }, + { 0x24, 0x4C }, - // IDirectSoundBuffer_SetBufferDataA+0x38 : mov ecx, [esi+0x1C] - { 0x38, 0x8B }, // (Offset,Value)-Pair #4 - { 0x39, 0x4E }, // (Offset,Value)-Pair #5 - { 0x3A, 0x1C }, // (Offset,Value)-Pair #6 + // CDirectSoundBuffer_SetBufferData+0x38 : mov ecx, [esi+0x1C] + { 0x38, 0x8B }, + { 0x39, 0x4E }, + { 0x3A, 0x1C }, - // IDirectSoundBuffer_SetBufferDataA+0x71 : leave; retn 0x0C - { 0x71, 0xC9 }, // (Offset,Value)-Pair #7 - { 0x72, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x73, 0x0C }, // (Offset,Value)-Pair #9 + // CDirectSoundBuffer_SetBufferData+0x71 : leave; retn 0x0C + { 0x71, 0xC9 }, + { 0x72, 0xC2 }, + { 0x73, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetBufferData // ****************************************************************** @@ -814,87 +848,90 @@ OOVPA_XREF(IDirectSoundBuffer_SetBufferData, 3936, 10, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetBufferData+0x18 : call [IDirectSoundBuffer_SetBufferDataA] - XREF_ENTRY( 0x19, XREF_DSSETBUFFERDATA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetBufferData+0x18 : call [CDirectSoundBuffer_SetBufferData] + XREF_ENTRY( 0x19, XREF_DSSETBUFFERDATA ), // IDirectSoundBuffer_SetBufferData+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSoundBuffer_SetBufferData+0x0E : add eax, 0xFFFFFFE4 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x10, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, // IDirectSoundBuffer_SetBufferData+0x1D : retn 0x0C - { 0x1D, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1E, 0x0C }, // (Offset,Value)-Pair #10 + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxVoiceClient::SetMixBins // ****************************************************************** OOVPA_XREF(CMcpxVoiceClient_SetMixBins, 3936, 15, - XREF_DSSETMIXBINSB, + XREF_CMcpxVoiceClient_SetMixBins, XRefZero) // CMcpxVoiceClient_SetMixBins+0x1C : lea eax, [esi+0x84] - { 0x1D, 0x86 }, // (Offset,Value)-Pair #1 - { 0x1E, 0x84 }, // (Offset,Value)-Pair #2 - { 0x21, 0x00 }, // (Offset,Value)-Pair #3 + { 0x1D, 0x86 }, + { 0x1E, 0x84 }, + { 0x21, 0x00 }, // CMcpxVoiceClient_SetMixBins+0x2E : mov eax, [esi+0xE0] - { 0x2E, 0x8B }, // (Offset,Value)-Pair #4 - { 0x30, 0xE0 }, // (Offset,Value)-Pair #5 - { 0x31, 0x00 }, // (Offset,Value)-Pair #6 + { 0x2E, 0x8B }, + { 0x30, 0xE0 }, + { 0x31, 0x00 }, // CMcpxVoiceClient_SetMixBins+0x41 : jz +0x7F - { 0x41, 0x74 }, // (Offset,Value)-Pair #7 - { 0x42, 0x7F }, // (Offset,Value)-Pair #8 + { 0x41, 0x74 }, + { 0x42, 0x7F }, // CMcpxVoiceClient_SetMixBins+0x5A : mov ds:[0xFE8202F8], eax - { 0x5A, 0xA3 }, // (Offset,Value)-Pair #9 - { 0x5B, 0xF8 }, // (Offset,Value)-Pair #10 - { 0x5C, 0x02 }, // (Offset,Value)-Pair #11 - { 0x5D, 0x82 }, // (Offset,Value)-Pair #12 + { 0x5A, 0xA3 }, + { 0x5B, 0xF8 }, + { 0x5C, 0x02 }, + { 0x5D, 0x82 }, // CMcpxVoiceClient_SetMixBins+0xBF : jb +0x8C - { 0xBF, 0x72 }, // (Offset,Value)-Pair #13 - { 0xC0, 0x8C }, // (Offset,Value)-Pair #14 + { 0xBF, 0x72 }, + { 0xC0, 0x8C }, // CMcpxVoiceClient_SetMixBins+0xD6 : retn - { 0xD6, 0xC3 }, // (Offset,Value)-Pair #15 + { 0xD6, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundVoice::SetMixBins // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMixBins, 3936, 9, - XREF_DSSETMIXBINSA, + XREF_CDirectSoundVoice_SetMixBins, XRefOne) // CDirectSoundVoice_SetMixBins+0x28 : call [CMcpxVoiceClient::SetMixBins] - XREF_ENTRY( 0x29, XREF_DSSETMIXBINSB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x29, XREF_CMcpxVoiceClient_SetMixBins), // CDirectSoundVoice_SetMixBins+0x11 : mov ecx, [esi+0x18] - { 0x11, 0x8B }, // (Offset,Value)-Pair #2 - { 0x12, 0x4E }, // (Offset,Value)-Pair #3 - { 0x13, 0x18 }, // (Offset,Value)-Pair #4 + { 0x11, 0x8B }, + { 0x12, 0x4E }, + { 0x13, 0x18 }, // CDirectSoundVoice_SetMixBins+0x25 : mov ecx, [esi+0x14] - { 0x25, 0x8B }, // (Offset,Value)-Pair #5 - { 0x26, 0x4E }, // (Offset,Value)-Pair #6 - { 0x27, 0x14 }, // (Offset,Value)-Pair #7 + { 0x25, 0x8B }, + { 0x26, 0x4E }, + { 0x27, 0x14 }, // CDirectSoundVoice_SetMixBins+0x55 : retn 0x08 - { 0x55, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x56, 0x08 }, // (Offset,Value)-Pair #9 + { 0x55, 0xC2 }, + { 0x56, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetMixBins // ****************************************************************** @@ -904,24 +941,25 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 3936, 10, XRefOne) // IDirectSoundStream_SetFrequency+0x0C : call [CDirectSoundVoice::SetMixBins] - XREF_ENTRY( 0x0D, XREF_DSSETMIXBINSA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetMixBins), // CDirectSoundStream_SetMixBins+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetMixBins+0x08 : add eax, 0x04 - { 0x08, 0x83 }, // (Offset,Value)-Pair #6 - { 0x09, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #8 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, // CDirectSoundStream_SetMixBins+0x11 : retn 0x08 - { 0x11, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x12, 0x08 }, // (Offset,Value)-Pair #10 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMixBins // ****************************************************************** @@ -931,22 +969,23 @@ OOVPA_XREF(IDirectSoundBuffer_SetMixBins, 3936, 8, XRefOne) // IDirectSoundBuffer_SetMixBins+0x14 : call [CDirectSoundVoice::SetMixBins] - XREF_ENTRY( 0x15, XREF_DSSETMIXBINSA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetMixBins), // IDirectSoundBuffer_SetMixBins+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetMixBins+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #5 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, // IDirectSoundBuffer_SetMixBins+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #7 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #8 + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxBuffer_GetCurrentPosition // ****************************************************************** @@ -956,53 +995,26 @@ OOVPA_XREF(CMcpxBuffer_GetCurrentPosition, 3936, 11, XRefZero) // CMcpxBuffer_GetCurrentPosition+0x12 : mov eax, [esi+8] - { 0x12, 0x8B }, // (Offset,Value)-Pair #1 - { 0x13, 0x46 }, // (Offset,Value)-Pair #2 - { 0x14, 0x08 }, // (Offset,Value)-Pair #3 + { 0x12, 0x8B }, + { 0x13, 0x46 }, + { 0x14, 0x08 }, // CMcpxBuffer_GetCurrentPosition+0x1A : jnz +0x79 - { 0x1A, 0x75 }, // (Offset,Value)-Pair #4 - { 0x1B, 0x79 }, // (Offset,Value)-Pair #5 + { 0x1A, 0x75 }, + { 0x1B, 0x79 }, // CMcpxBuffer_GetCurrentPosition+0x8E : div dword ptr [ecx+0x4C] - { 0x8E, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x8F, 0x71 }, // (Offset,Value)-Pair #7 - { 0x90, 0x4C }, // (Offset,Value)-Pair #8 + { 0x8E, 0xF7 }, + { 0x8F, 0x71 }, + { 0x90, 0x4C }, // CMcpxBuffer_GetCurrentPosition+0xC8 : retn 0x08 - { 0xC8, 0xC2 }, // (Offset,Value)-Pair #9 - { 0xC9, 0x08 }, // (Offset,Value)-Pair #10 - { 0xCA, 0x00 }, // (Offset,Value)-Pair #11 + { 0xC8, 0xC2 }, + { 0xC9, 0x08 }, + { 0xCA, 0x00 }, OOVPA_END; - -// ****************************************************************** -// * CMcpxBuffer_GetCurrentPosition -// ****************************************************************** -OOVPA_XREF(CMcpxBuffer_GetCurrentPosition2, 3936, 11, - - XREF_CMcpxBuffer_GetCurrentPosition, - XRefZero) - - // CMcpxBuffer_GetCurrentPosition+0x12 : mov eax, [esi+0x18] - { 0x12, 0x8B }, // (Offset,Value)-Pair #1 - { 0x13, 0x46 }, // (Offset,Value)-Pair #2 - { 0x14, 0x18 }, // (Offset,Value)-Pair #3 - - // CMcpxBuffer_GetCurrentPosition+0x1A : jnz +0x79 - { 0x1A, 0x75 }, // (Offset,Value)-Pair #4 - { 0x1B, 0x79 }, // (Offset,Value)-Pair #5 - - // CMcpxBuffer_GetCurrentPosition+0x8E : div dword ptr [ecx+0x4C] - { 0x8E, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x8F, 0x71 }, // (Offset,Value)-Pair #7 - { 0x90, 0x4C }, // (Offset,Value)-Pair #8 - - // CMcpxBuffer_GetCurrentPosition+0xC8 : retn 0x08 - { 0xC8, 0xC2 }, // (Offset,Value)-Pair #9 - { 0xC9, 0x08 }, // (Offset,Value)-Pair #10 - { 0xCA, 0x00 }, // (Offset,Value)-Pair #11 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer_GetCurrentPosition // ****************************************************************** @@ -1012,23 +1024,24 @@ OOVPA_XREF(CDirectSoundBuffer_GetCurrentPosition, 3936, 9, XRefOne) // CDirectSoundBuffer_GetCurrentPosition+0x19 : call [CMcpxBuffer::GetCurrentPosition] - XREF_ENTRY( 0x19, XREF_CMcpxBuffer_GetCurrentPosition), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x19, XREF_CMcpxBuffer_GetCurrentPosition), // CDirectSoundBuffer_GetCurrentPosition+0x0D : mov eax, [esp+0x10] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0E, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x24 }, // (Offset,Value)-Pair #4 - { 0x10, 0x10 }, // (Offset,Value)-Pair #5 + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x10 }, // CDirectSoundBuffer_GetCurrentPosition+0x21 : jz +0x0B - { 0x21, 0x74 }, // (Offset,Value)-Pair #6 - { 0x22, 0x0B }, // (Offset,Value)-Pair #7 + { 0x21, 0x74 }, + { 0x22, 0x0B }, // CDirectSoundBuffer_GetCurrentPosition+0x32 : retn 0x0C - { 0x32, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x33, 0x0C }, // (Offset,Value)-Pair #9 + { 0x32, 0xC2 }, + { 0x33, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_GetCurrentPosition // ****************************************************************** @@ -1038,22 +1051,23 @@ OOVPA_XREF(IDirectSoundBuffer_GetCurrentPosition, 3936, 8, XRefOne) // IDirectSoundBuffer_GetCurrentPosition+0x19 : call [CDirectSoundBuffer::GetCurrentPosition] - XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_GetCurrentPosition), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_GetCurrentPosition), // IDirectSoundBuffer_GetCurrentPosition+0x0E : add eax, 0xFFFFFFE4 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x10, 0xE4 }, // (Offset,Value)-Pair #4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, // IDirectSoundBuffer_GetCurrentPosition+0x13 : sbb ecx, ecx - { 0x13, 0x1B }, // (Offset,Value)-Pair #5 - { 0x14, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x13, 0x1B }, + { 0x14, 0xC9 }, // IDirectSoundBuffer_GetCurrentPosition+0x15 : and ecx, eax - { 0x15, 0x23 }, // (Offset,Value)-Pair #7 - { 0x16, 0xC8 }, // (Offset,Value)-Pair #8 + { 0x15, 0x23 }, + { 0x16, 0xC8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::Play // ****************************************************************** @@ -1070,7 +1084,8 @@ OOVPA_XREF(CDirectSoundBuffer_Play, 3936, 7, { 0x2B, 0x8B }, { 0x2F, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_Play // ****************************************************************** @@ -1083,35 +1098,36 @@ OOVPA_XREF(IDirectSoundBuffer_Play, 3936, 16, XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_Play ), // IDirectSoundBuffer_Play+0x00 : push [esp+0x10] - { 0x00, 0xFF }, // (Offset,Value)-Pair #1 - { 0x01, 0x74 }, // (Offset,Value)-Pair #2 - { 0x02, 0x24 }, // (Offset,Value)-Pair #3 - { 0x03, 0x10 }, // (Offset,Value)-Pair #4 + { 0x00, 0xFF }, + { 0x01, 0x74 }, + { 0x02, 0x24 }, + { 0x03, 0x10 }, // IDirectSoundBuffer_Play+0x04 : mov eax, [esp+4+arg_0] - { 0x04, 0x8B }, // (Offset,Value)-Pair #5 - { 0x05, 0x44 }, // (Offset,Value)-Pair #6 - { 0x06, 0x24 }, // (Offset,Value)-Pair #7 - { 0x07, 0x08 }, // (Offset,Value)-Pair #8 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_Play+0x12 : and eax, [0xFFFFFFE4] - { 0x12, 0x83 }, // (Offset,Value)-Pair #9 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #10 - { 0x14, 0xE4 }, // (Offset,Value)-Pair #11 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xE4 }, // IDirectSoundBuffer_Play+0x17 : sbb ecx, ecx - { 0x17, 0x1B }, // (Offset,Value)-Pair #12 - { 0x18, 0xC9 }, // (Offset,Value)-Pair #13 + { 0x17, 0x1B }, + { 0x18, 0xC9 }, // IDirectSoundBuffer_Play+0x21 : retn 0x10 - { 0x21, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x22, 0x10 }, // (Offset,Value)-Pair #15 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by another 3936 version // ****************************************************************** -// * IDirectSoundBuffer_Play2 +// * IDirectSoundBuffer_Play // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_Play2, 3936, 12, +OOVPA_XREF(IDirectSoundBuffer_Play, 3936, 12, XRefNoSaveIndex, XRefOne) @@ -1120,106 +1136,56 @@ OOVPA_XREF(IDirectSoundBuffer_Play2, 3936, 12, XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_Play ), // IDirectSoundBuffer_Play+0x00 : push [esp+0x10] - { 0x00, 0xFF }, // (Offset,Value)-Pair #1 - { 0x01, 0x74 }, // (Offset,Value)-Pair #2 - { 0x02, 0x24 }, // (Offset,Value)-Pair #3 - { 0x03, 0x10 }, // (Offset,Value)-Pair #4 + { 0x00, 0xFF }, + { 0x01, 0x74 }, + { 0x02, 0x24 }, + { 0x03, 0x10 }, // IDirectSoundBuffer_Play+0x12 : and eax, [0xFFFFFFE4] - { 0x12, 0x83 }, // (Offset,Value)-Pair #5 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #6 - { 0x14, 0xE4 }, // (Offset,Value)-Pair #7 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xE4 }, // IDirectSoundBuffer_Play+0x17 : sbb ecx, ecx - { 0x17, 0x1B }, // (Offset,Value)-Pair #8 - { 0x18, 0xC9 }, // (Offset,Value)-Pair #9 + { 0x17, 0x1B }, + { 0x18, 0xC9 }, // IDirectSoundBuffer_Play+0x21 : retn 0x10 - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x10 }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, OOVPA_END; - -// ****************************************************************** -// * CDirectSoundBuffer_Stop -// ****************************************************************** -OOVPA_XREF(CDirectSoundBuffer_Stop, 3936, 12, - - XREF_CDirectSoundBuffer_Stop, - XRefZero) - - // CDirectSoundBuffer_Stop+0x07 : mov eax, 0x80004005 - { 0x07, 0x6A }, // (Offset,Value)-Pair #1 - { 0x08, 0x00 }, // (Offset,Value)-Pair #2 - { 0x09, 0x6A }, // (Offset,Value)-Pair #3 - { 0x0A, 0x00 }, // (Offset,Value)-Pair #4 - { 0x0B, 0x6A }, // (Offset,Value)-Pair #5 - { 0x0C, 0x00 }, // (Offset,Value)-Pair #6 - - // CDirectSoundBuffer_Stop+0x1A : mov ebx, eax; jz +0x0B - { 0x1A, 0x8B }, // (Offset,Value)-Pair #7 - { 0x1B, 0xD8 }, // (Offset,Value)-Pair #8 - { 0x1C, 0x74 }, // (Offset,Value)-Pair #9 - { 0x1D, 0x0B }, // (Offset,Value)-Pair #10 - - // CDirectSoundBuffer_Stop+0x2D : retn 0x04 - { 0x2D, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x2E, 0x04 }, // (Offset,Value)-Pair #12 -OOVPA_END; - -// ****************************************************************** -// * IDirectSoundBuffer_Stop -// ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_Stop, 3936, 8, - - XRefNoSaveIndex, - XRefOne) - - // IDirectSoundBuffer_Stop+0x11 : call [CDirectSoundBuffer::Stop] - XREF_ENTRY( 0x11, XREF_CDirectSoundBuffer_Stop ), // (Offset,Value)-Pair #1 - - // IDirectSoundBuffer_Stop+0x06 : and eax, 0xFFFFFFE4 - { 0x06, 0x83 }, // (Offset,Value)-Pair #2 - { 0x07, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x08, 0xE4 }, // (Offset,Value)-Pair #4 - - // IDirectSoundBuffer_Stop+0x0B : sbb ecx, ecx - { 0x0B, 0x1B }, // (Offset,Value)-Pair #5 - { 0x0C, 0xC9 }, // (Offset,Value)-Pair #6 - - // IDirectSoundBuffer_Stop+0x0D : and ecx, eax - { 0x0D, 0x23 }, // (Offset,Value)-Pair #7 - { 0x0E, 0xC8 }, // (Offset,Value)-Pair #8 -OOVPA_END; - +#endif +#if 0 // Was ?SetVolume@CDirectSoundVoice@@QAGJJ@Z, replaced by CDirectSoundVoice_SetVolume 3936 version // ****************************************************************** // * CMcpxVoiceClient_SetVolume // ****************************************************************** OOVPA_XREF(CMcpxVoiceClient_SetVolume, 3936, 10, - XREF_DSSTREAMSETVOLUME, + XREF_CMcpxVoiceClient_SetVolume, XRefZero) // TODO: re-use for IDirectSoundBuffer_SetVolume! // CMcpxVoiceClient_SetVolume+0x14 : sub edx, [eax+0x1C] - { 0x14, 0x2B }, // (Offset,Value)-Pair #1 - { 0x15, 0x50 }, // (Offset,Value)-Pair #2 - { 0x16, 0x1C }, // (Offset,Value)-Pair #3 + { 0x14, 0x2B }, + { 0x15, 0x50 }, + { 0x16, 0x1C }, // CMcpxVoiceClient_SetVolume+0x1A : mov ecx, [ecx+0x14] - { 0x1A, 0x8B }, // (Offset,Value)-Pair #4 - { 0x1B, 0x49 }, // (Offset,Value)-Pair #5 - { 0x1C, 0x14 }, // (Offset,Value)-Pair #6 + { 0x1A, 0x8B }, + { 0x1B, 0x49 }, + { 0x1C, 0x14 }, // CMcpxVoiceClient_SetVolume+0x26 : jz +0x0B - { 0x26, 0x74 }, // (Offset,Value)-Pair #7 - { 0x27, 0x0B }, // (Offset,Value)-Pair #8 + { 0x26, 0x74 }, + { 0x27, 0x0B }, // CMcpxVoiceClient_SetVolume+0x37 : retn 0x08 - { 0x37, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x38, 0x08 }, // (Offset,Value)-Pair #10 + { 0x37, 0xC2 }, + { 0x38, 0x08 }, OOVPA_END; - +#endif +#if 0 // Replaced with accurate OOVPA 3911 // ****************************************************************** // * CDirectSoundStream_SetVolume // ****************************************************************** @@ -1228,31 +1194,32 @@ OOVPA_XREF(CDirectSoundStream_SetVolume, 3936, 10, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetVolume+0x0D : call [IDirectSoundStream::SetVolume] - XREF_ENTRY( 0x0D, XREF_DSSTREAMSETVOLUME ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetVolume+0x0D : call [CMcpxVoiceClient_SetVolume] + XREF_ENTRY( 0x0D, XREF_CMcpxVoiceClient_SetVolume ), // CDirectSoundStream_SetVolume+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetVolume+0x08 : add eax, 0x04 - { 0x08, 0x83 }, // (Offset,Value)-Pair #6 - { 0x09, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #8 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, // CDirectSoundStream_SetVolume+0x11 : retn 0x08 - { 0x11, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x12, 0x08 }, // (Offset,Value)-Pair #10 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxVoiceClient_Set3dParameters // ****************************************************************** OOVPA_XREF(CMcpxVoiceClient_Set3dParameters, 3936, 11, - XREF_DSSTREAMSETALLPARAMETERS1B, + XREF_CMcpxVoiceClient_Set3dParameters, XRefZero) { 0x02, 0x74 }, @@ -1267,38 +1234,38 @@ OOVPA_XREF(CMcpxVoiceClient_Set3dParameters, 3936, 11, { 0x18, 0x7C }, { 0x1F, 0x09 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundVoice_SetAllParameters // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetAllParameters, 3936, 12, - XREF_DSSTREAMSETALLPARAMETERS1A, + XREF_CDirectSoundVoice_SetAllParameters, XRefOne) - // TODO: re-use for CDirectSoundBuffer_SetAllParametersA!? - - // CDirectSoundVoice_SetAllParameters+0x25 : call [IDirectSoundStream::SetAllParametersB] - XREF_ENTRY( 0x1F, XREF_DSSTREAMSETALLPARAMETERS1B ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetAllParameters+0x25 : call [CMcpxVoiceClient_Set3dParameters] + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_Set3dParameters ), // CDirectSoundVoice_SetAllParameters+0x09 : mov eax, [esp+0x14] - { 0x09, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0A, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0B, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0C, 0x14 }, // (Offset,Value)-Pair #5 + { 0x09, 0x8B }, + { 0x0A, 0x44 }, + { 0x0B, 0x24 }, + { 0x0C, 0x14 }, // CDirectSoundVoice_SetAllParameters+0x0D : not eax; and eax, 1 - { 0x0D, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x0E, 0xD0 }, // (Offset,Value)-Pair #7 - { 0x0F, 0x83 }, // (Offset,Value)-Pair #8 - { 0x10, 0xE0 }, // (Offset,Value)-Pair #9 - { 0x11, 0x01 }, // (Offset,Value)-Pair #10 + { 0x0D, 0xF7 }, + { 0x0E, 0xD0 }, + { 0x0F, 0x83 }, + { 0x10, 0xE0 }, + { 0x11, 0x01 }, // CDirectSoundVoice_SetAllParameters+0x38 : retn 0x0C - { 0x38, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x39, 0x0C }, // (Offset,Value)-Pair #12 + { 0x38, 0xC2 }, + { 0x39, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetAllParameters // ****************************************************************** @@ -1307,85 +1274,84 @@ OOVPA_XREF(CDirectSoundStream_SetAllParameters, 3936, 10, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetAllParameters+0x11 : call [IDirectSoundStream::SetAllParametersA] - XREF_ENTRY( 0x11, XREF_DSSTREAMSETALLPARAMETERS1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetAllParameters+0x11 : call [CDirectSoundVoice_SetAllParameters] + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetAllParameters ), // CDirectSoundStream_SetAllParameters+0x04 : push eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetAllParameters+0x0C : add eax, 0x04 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0D, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0E, 0x04 }, // (Offset,Value)-Pair #8 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, // CDirectSoundStream_SetAllParameters+0x15 : retn 0x0C - { 0x15, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x16, 0x0C }, // (Offset,Value)-Pair #10 + { 0x15, 0xC2 }, + { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used // ****************************************************************** -// * CDirectSoundStream_SetConeAnglesB +// * CMcpxVoiceClient_Set3dConeAngles // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeAnglesB, 3936, 12, +OOVPA_XREF(CMcpxVoiceClient_Set3dConeAngles, 3936, 12, - XREF_DSSTREAMSETCONEANGLES1B, + XREF_CMcpxVoiceClient_Set3dConeAngles, XRefZero) - // TODO: re-use for CDirectSoundBuffer_SetConeAnglesB!? + // CMcpxVoiceClient_Set3dConeAngles+0x04 : or dword ptr [eax+0x80], 0x10 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x10 }, - // CDirectSoundStream_SetConeAnglesB+0x04 : or dword ptr [eax+0x80], 0x10 - { 0x04, 0x83 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0x80 }, // (Offset,Value)-Pair #3 - { 0x07, 0x00 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x10 }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dConeAngles+0x10 : mov [ecx+0x38], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x38 }, - // CDirectSoundStream_SetConeAnglesB+0x10 : mov [ecx+0x38], eax - { 0x10, 0x89 }, // (Offset,Value)-Pair #8 - { 0x11, 0x41 }, // (Offset,Value)-Pair #9 - { 0x12, 0x38 }, // (Offset,Value)-Pair #10 - - // CDirectSoundStream_SetConeAnglesB+0x25 : retn 0x0C - { 0x25, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x26, 0x0C }, // (Offset,Value)-Pair #12 + // CMcpxVoiceClient_Set3dConeAngles+0x25 : retn 0x0C + { 0x25, 0xC2 }, + { 0x26, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by CDirectSoundVoice_SetConeAngles 3936 // ****************************************************************** -// * CDirectSoundStream_SetConeAnglesA +// * CDirectSoundVoice_SetConeAngles // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeAnglesA, 3936, 12, +OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 3936, 12, - XREF_DSSTREAMSETCONEANGLES1A, + XREF_CDirectSoundVoice_SetConeAngles, XRefOne) - // TODO: re-use for CDirectSoundBuffer_SetConeAnglesA!? + // CDirectSoundVoice_SetConeAngles+0x23 : call [CMcpxVoiceClient_Set3dConeAngles] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_Set3dConeAngles ), - // CDirectSoundStream_SetConeAnglesA+0x23 : call [IDirectSoundStream::SetConeAnglesB] - XREF_ENTRY( 0x23, XREF_DSSTREAMSETCONEANGLES1B ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetConeAngles+0x09 : mov eax, [esp+0x18] + { 0x09, 0x8B }, + { 0x0A, 0x44 }, + { 0x0B, 0x24 }, + { 0x0C, 0x18 }, - // CDirectSoundStream_SetConeAnglesA+0x09 : mov eax, [esp+0x18] - { 0x09, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0A, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0B, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0C, 0x18 }, // (Offset,Value)-Pair #5 + // CDirectSoundVoice_SetConeAngles+0x0D : not eax; and eax, 1 + { 0x0D, 0xF7 }, + { 0x0E, 0xD0 }, + { 0x0F, 0x83 }, + { 0x10, 0xE0 }, + { 0x11, 0x01 }, - // CDirectSoundStream_SetConeAnglesA+0x0D : not eax; and eax, 1 - { 0x0D, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x0E, 0xD0 }, // (Offset,Value)-Pair #7 - { 0x0F, 0x83 }, // (Offset,Value)-Pair #8 - { 0x10, 0xE0 }, // (Offset,Value)-Pair #9 - { 0x11, 0x01 }, // (Offset,Value)-Pair #10 - - // CDirectSoundStream_SetConeAnglesA+0x3C : retn 0x10 - { 0x3C, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x3D, 0x10 }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetConeAngles+0x3C : retn 0x10 + { 0x3C, 0xC2 }, + { 0x3D, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetConeAngles // ****************************************************************** @@ -1394,85 +1360,84 @@ OOVPA_XREF(CDirectSoundStream_SetConeAngles, 3936, 10, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetConeAngles+0x15 : call [IDirectSoundStream::SetConeAnglesA] - XREF_ENTRY( 0x15, XREF_DSSTREAMSETCONEANGLES1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetConeAngles+0x15 : call [CDirectSoundVoice_SetConeAngles] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetConeAngles ), // CDirectSoundStream_SetConeAngles+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetConeAngles+0x0C : add eax, 0x04 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0D, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0E, 0x04 }, // (Offset,Value)-Pair #8 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, // CDirectSoundStream_SetConeAngles+0x19 : retn 0x10 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x10 }, // (Offset,Value)-Pair #10 + { 0x19, 0xC2 }, + { 0x1A, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetConeOutsideVolumeB +// * CMcpxVoiceClient_Set3dConeOutsideVolume // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeOutsideVolumeB, 3936, 12, +OOVPA_XREF(CMcpxVoiceClient_Set3dConeOutsideVolume, 3936, 12, - XREF_DSSTREAMSETCONEOUTSIDEVOLUME1B, + XREF_CMcpxVoiceClient_Set3dConeOutsideVolume, XRefZero) - // TODO: re-use for CDirectSoundBuffer_SetConeOutsideVolumeB!? + // CMcpxVoiceClient_Set3dConeOutsideVolume+0x04 : or dword ptr [eax+0x80], 0x10 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x10 }, - // CDirectSoundStream_SetConeOutsideVolumeB+0x04 : or dword ptr [eax+0x80], 0x10 - { 0x04, 0x83 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0x80 }, // (Offset,Value)-Pair #3 - { 0x07, 0x00 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x10 }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dConeOutsideVolume+0x10 : mov [ecx+0x4C], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x4C }, - // CDirectSoundStream_SetConeOutsideVolumeB+0x10 : mov [ecx+0x4C], eax - { 0x10, 0x89 }, // (Offset,Value)-Pair #8 - { 0x11, 0x41 }, // (Offset,Value)-Pair #9 - { 0x12, 0x4C }, // (Offset,Value)-Pair #10 - - // CDirectSoundStream_SetConeOutsideVolumeB+0x1E : retn 0x08 - { 0x1E, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x1F, 0x08 }, // (Offset,Value)-Pair #12 + // CMcpxVoiceClient_Set3dConeOutsideVolume+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetConeOutsideVolumeA +// * CDirectSoundVoice_SetConeOutsideVolume // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeOutsideVolumeA, 3936, 12, +OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 3936, 12, - XREF_DSSTREAMSETCONEOUTSIDEVOLUME1A, + XREF_CDirectSoundVoice_SetConeOutsideVolume, XRefOne) - // TODO: re-use for CDirectSoundBuffer_SetConeOutsideVolumeA!? + // CDirectSoundVoice_SetConeOutsideVolume+0x1F : call [CMcpxVoiceClient_Set3dConeOutsideVolume] + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_Set3dConeOutsideVolume ), - // CDirectSoundStream_SetConeOutsideVolumeA+0x1F : call [IDirectSoundStream::SetConeOutsideVolumeB] - XREF_ENTRY( 0x1F, XREF_DSSTREAMSETCONEOUTSIDEVOLUME1B ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetConeOutsideVolume+0x09 : mov eax, [esp+0x14] + { 0x09, 0x8B }, + { 0x0A, 0x44 }, + { 0x0B, 0x24 }, + { 0x0C, 0x14 }, - // CDirectSoundStream_SetConeOutsideVolumeA+0x09 : mov eax, [esp+0x14] - { 0x09, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0A, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0B, 0x24 }, // (Offset,Value)-Pair #4 - { 0x0C, 0x14 }, // (Offset,Value)-Pair #5 + // CDirectSoundVoice_SetConeOutsideVolume+0x0D : not eax; and eax, 1 + { 0x0D, 0xF7 }, + { 0x0E, 0xD0 }, + { 0x0F, 0x83 }, + { 0x10, 0xE0 }, + { 0x11, 0x01 }, - // CDirectSoundStream_SetConeOutsideVolumeA+0x0D : not eax; and eax, 1 - { 0x0D, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x0E, 0xD0 }, // (Offset,Value)-Pair #7 - { 0x0F, 0x83 }, // (Offset,Value)-Pair #8 - { 0x10, 0xE0 }, // (Offset,Value)-Pair #9 - { 0x11, 0x01 }, // (Offset,Value)-Pair #10 - - // CDirectSoundStream_SetConeOutsideVolumeA+0x38 : retn 0x0C - { 0x38, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x39, 0x0C }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetConeOutsideVolume+0x38 : retn 0x0C + { 0x38, 0xC2 }, + { 0x39, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetConeOutsideVolume // ****************************************************************** @@ -1481,359 +1446,331 @@ OOVPA_XREF(CDirectSoundStream_SetConeOutsideVolume, 3936, 10, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetConeOutsideVolume+0x11 : call [IDirectSoundStream::SetConeOutsideVolumeA] - XREF_ENTRY( 0x11, XREF_DSSTREAMSETCONEOUTSIDEVOLUME1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetConeOutsideVolume+0x11 : call [CDirectSoundVoice_SetConeOutsideVolume] + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetConeOutsideVolume ), // CDirectSoundStream_SetConeOutsideVolume+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetConeOutsideVolume+0x0C : add eax, 0x04 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0D, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0E, 0x04 }, // (Offset,Value)-Pair #8 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, // CDirectSoundStream_SetConeOutsideVolume+0x15 : retn 0x0C - { 0x15, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x16, 0x0C }, // (Offset,Value)-Pair #10 + { 0x15, 0xC2 }, + { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetMaxDistanceC +// * CMcpxVoiceClient_Set3dMaxDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMaxDistanceC, 3936, 12, +OOVPA_XREF(CMcpxVoiceClient_Set3dMaxDistance, 3936, 12, - XREF_DSSTREAMSETMAXDISTANCE1C, + XREF_CMcpxVoiceClient_Set3dMaxDistance, XRefZero) - // TODO: re-use for CDirectSoundBuffer_SetMaxDistanceC!? + // CMcpxVoiceClient_Set3dMaxDistance+0x04 : or byte ptr [ecx+0x80], 0x04 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x04 }, - // CDirectSoundStream_SetMaxDistanceC+0x04 : or byte ptr [ecx+0x80], 0x04 - { 0x04, 0x83 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0x80 }, // (Offset,Value)-Pair #3 - { 0x07, 0x00 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dMaxDistance+0x10 : mov [ecx+0x54], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x54 }, - // CDirectSoundStream_SetMaxDistanceC+0x10 : mov [ecx+0x54], eax - { 0x10, 0x89 }, // (Offset,Value)-Pair #8 - { 0x11, 0x41 }, // (Offset,Value)-Pair #9 - { 0x12, 0x54 }, // (Offset,Value)-Pair #10 - - // CDirectSoundStream_SetMaxDistanceC+0x1E : retn 0x08 - { 0x1E, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x1F, 0x08 }, // (Offset,Value)-Pair #12 + // CMcpxVoiceClient_Set3dMaxDistance+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetMaxDistanceB +// * CDirectSoundVoice_SetMaxDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMaxDistanceB, 3936, 15, +OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 3936, 15, - XREF_DSSTREAMSETMAXDISTANCE1B, + XREF_CDirectSoundVoice_SetMaxDistance, XRefOne) - // TODO: re-use for CDirectSoundBuffer_SetMaxDistanceB!? + // CDirectSoundVoice_SetMaxDistance+0x23 : call [CMcpxVoiceClient_Set3dMaxDistance] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_Set3dMaxDistance ), - // CDirectSoundStream_SetMaxDistanceB+0x23 : call [IDirectSoundStream::SetMaxDistanceC] - XREF_ENTRY( 0x23, XREF_DSSTREAMSETMAXDISTANCE1C ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetMaxDistance+0x0D : mov eax, [esp+0x14] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x14 }, - // CDirectSoundStream_SetMaxDistanceB+0x0D : mov eax, [esp+0x14] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0E, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x24 }, // (Offset,Value)-Pair #4 - { 0x10, 0x14 }, // (Offset,Value)-Pair #5 + // CDirectSoundVoice_SetMaxDistance+0x11 : not eax + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, - // CDirectSoundStream_SetMaxDistanceB+0x11 : not eax - { 0x11, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x12, 0xD0 }, // (Offset,Value)-Pair #7 + // CDirectSoundVoice_SetMaxDistance+0x13 : and eax, 1 + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, - // CDirectSoundStream_SetMaxDistanceB+0x13 : and eax, 1 - { 0x13, 0x83 }, // (Offset,Value)-Pair #8 - { 0x14, 0xE0 }, // (Offset,Value)-Pair #9 - { 0x15, 0x01 }, // (Offset,Value)-Pair #10 + // CDirectSoundVoice_SetMaxDistance+0x1C : mov ecx, [eax+0x14] + { 0x1C, 0x8B }, + { 0x1D, 0x48 }, + { 0x1E, 0x14 }, - // CDirectSoundStream_SetMaxDistanceB+0x1C : mov ecx, [eax+0x14] - { 0x1C, 0x8B }, // (Offset,Value)-Pair #11 - { 0x1D, 0x48 }, // (Offset,Value)-Pair #12 - { 0x1E, 0x14 }, // (Offset,Value)-Pair #13 - - // CDirectSoundStream_SetMaxDistanceB+0x3C : retn 0x0C - { 0x3C, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x3D, 0x0C }, // (Offset,Value)-Pair #15 + // CDirectSoundVoice_SetMaxDistance+0x3C : retn 0x0C + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, OOVPA_END; - -// ****************************************************************** -// * CDirectSoundStream_SetMaxDistanceA -// ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMaxDistanceA, 3936, 10, - - XREF_DSSTREAMSETMAXDISTANCE1A, - XRefOne) - - // TODO: re-use for CDirectSoundBuffer_SetMaxDistanceA!? - - // CDirectSoundStream_SetMaxDistanceA+0x15 : call [IDirectSoundStream::SetMaxDistanceB] - XREF_ENTRY( 0x15, XREF_DSSTREAMSETMAXDISTANCE1B ), // (Offset,Value)-Pair #1 - - // CDirectSoundStream_SetMaxDistanceA+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 - - // CDirectSoundStream_SetMaxDistanceA+0x0D : add eax, 0x04 - { 0x0D, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0E, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0F, 0x04 }, // (Offset,Value)-Pair #8 - - // CDirectSoundStream_SetMaxDistanceA+0x19 : retn 0x0C - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x0C }, // (Offset,Value)-Pair #10 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetMaxDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 3936, 11, +OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 3936, 10, + + XREF_CDirectSoundStream_SetMaxDistance, + XRefOne) + + // CDirectSoundStream_SetMaxDistance+0x15 : call [CDirectSoundVoice_SetMaxDistance] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetMaxDistance ), + + // CDirectSoundStream_SetMaxDistance+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // CDirectSoundStream_SetMaxDistance+0x0D : add eax, 0x04 + { 0x0D, 0x83 }, + { 0x0E, 0xC0 }, + { 0x0F, 0x04 }, + + // CDirectSoundStream_SetMaxDistance+0x19 : retn 0x0C + { 0x19, 0xC2 }, + { 0x1A, 0x0C }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * IDirectSoundStream_SetMaxDistance +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetMaxDistance, 3936, 11, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetMaxDistance+0x11 : call [IDirectSoundStream::SetMaxDistanceA] - XREF_ENTRY( 0x11, XREF_DSSTREAMSETMAXDISTANCE1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetMaxDistance+0x11 : call [CDirectSoundStream_SetMaxDistance] + XREF_ENTRY( 0x11, XREF_CDirectSoundStream_SetMaxDistance ), // CDirectSoundStream_SetMaxDistance+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // CDirectSoundStream_SetMaxDistance+0x0C : push [esp+0x0C] - { 0x0C, 0xFF }, // (Offset,Value)-Pair #6 - { 0x0D, 0x74 }, // (Offset,Value)-Pair #7 - { 0x0E, 0x24 }, // (Offset,Value)-Pair #8 - { 0x0F, 0x0C }, // (Offset,Value)-Pair #9 + { 0x0C, 0xFF }, + { 0x0D, 0x74 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0C }, // CDirectSoundStream_SetMaxDistance+0x15 : retn 0x0C - { 0x15, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x16, 0x0C }, // (Offset,Value)-Pair #11 + { 0x15, 0xC2 }, + { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetMinDistanceC +// * CMcpxVoiceClient_Set3dMinDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMinDistanceC, 3936, 12, +OOVPA_XREF(CMcpxVoiceClient_Set3dMinDistance, 3936, 12, - XREF_DSSTREAMSETMINDISTANCE1C, + XREF_CMcpxVoiceClient_Set3dMinDistance, XRefZero) - // TODO: re-use for CDirectSoundBuffer_SetMinDistanceC!? + // CMcpxVoiceClient_Set3dMinDistance+0x04 : or byte ptr [ecx+0x80], 0x04 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x04 }, - // CDirectSoundStream_SetMinDistanceC+0x04 : or byte ptr [ecx+0x80], 0x04 - { 0x04, 0x83 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0x80 }, // (Offset,Value)-Pair #3 - { 0x07, 0x00 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dMinDistance+0x10 : mov [ecx+0x50], eax + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x50 }, - // CDirectSoundStream_SetMinDistanceC+0x10 : mov [ecx+0x50], eax - { 0x10, 0x89 }, // (Offset,Value)-Pair #8 - { 0x11, 0x41 }, // (Offset,Value)-Pair #9 - { 0x12, 0x50 }, // (Offset,Value)-Pair #10 - - // CDirectSoundStream_SetMinDistanceC+0x1E : retn 0x08 - { 0x1E, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x1F, 0x08 }, // (Offset,Value)-Pair #12 + // CMcpxVoiceClient_Set3dMinDistance+0x1E : retn 0x08 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetMinDistanceB +// * CDirectSoundVoice_SetMinDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMinDistanceB, 3936, 15, +OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 3936, 15, - XREF_DSSTREAMSETMINDISTANCE1B, + XREF_CDirectSoundVoice_SetMinDistance, XRefOne) - // TODO: re-use for CDirectSoundBuffer_SetMinDistanceB!? + // CDirectSoundVoice_SetMinDistance+0x23 : call [CMcpxVoiceClient_Set3dMinDistance] + XREF_ENTRY( 0x23, XREF_CMcpxVoiceClient_Set3dMinDistance ), - // CDirectSoundStream_SetMinDistanceB+0x23 : call [IDirectSoundStream::SetMinDistanceC] - XREF_ENTRY( 0x23, XREF_DSSTREAMSETMINDISTANCE1C ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetMinDistance+0x0D : mov eax, [esp+0x14] + { 0x0D, 0x8B }, + { 0x0E, 0x44 }, + { 0x0F, 0x24 }, + { 0x10, 0x14 }, - // CDirectSoundStream_SetMinDistanceB+0x0D : mov eax, [esp+0x14] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0E, 0x44 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x24 }, // (Offset,Value)-Pair #4 - { 0x10, 0x14 }, // (Offset,Value)-Pair #5 + // CDirectSoundVoice_SetMinDistance+0x11 : not eax + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, - // CDirectSoundStream_SetMinDistanceB+0x11 : not eax - { 0x11, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x12, 0xD0 }, // (Offset,Value)-Pair #7 + // CDirectSoundVoice_SetMinDistance+0x13 : and eax, 1 + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, - // CDirectSoundStream_SetMinDistanceB+0x13 : and eax, 1 - { 0x13, 0x83 }, // (Offset,Value)-Pair #8 - { 0x14, 0xE0 }, // (Offset,Value)-Pair #9 - { 0x15, 0x01 }, // (Offset,Value)-Pair #10 + // CDirectSoundVoice_SetMinDistance+0x1C : mov ecx, [eax+0x14] + { 0x1C, 0x8B }, + { 0x1D, 0x48 }, + { 0x1E, 0x14 }, - // CDirectSoundStream_SetMinDistanceB+0x1C : mov ecx, [eax+0x14] - { 0x1C, 0x8B }, // (Offset,Value)-Pair #11 - { 0x1D, 0x48 }, // (Offset,Value)-Pair #12 - { 0x1E, 0x14 }, // (Offset,Value)-Pair #13 - - // CDirectSoundStream_SetMinDistanceB+0x3C : retn 0x0C - { 0x3C, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x3D, 0x0C }, // (Offset,Value)-Pair #15 + // CDirectSoundVoice_SetMinDistance+0x3C : retn 0x0C + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, OOVPA_END; - -// ****************************************************************** -// * CDirectSoundStream_SetMinDistanceA -// ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMinDistanceA, 3936, 10, - - XREF_DSSTREAMSETMINDISTANCE1A, - XRefOne) - - // TODO: re-use for CDirectSoundBuffer_SetMinDistanceA!? - - // CDirectSoundStream_SetMinDistanceA+0x15 : call [IDirectSoundStream::SetMinDistanceB] - XREF_ENTRY( 0x15, XREF_DSSTREAMSETMINDISTANCE1B ), // (Offset,Value)-Pair #1 - - // CDirectSoundStream_SetMinDistanceA+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 - - // CDirectSoundStream_SetMinDistanceA+0x0D : add eax, 0x04 - { 0x0D, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0E, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0F, 0x04 }, // (Offset,Value)-Pair #8 - - // CDirectSoundStream_SetMinDistanceA+0x19 : retn 0x0C - { 0x19, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x0C }, // (Offset,Value)-Pair #10 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetMinDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMinDistance, 3936, 11, +OOVPA_XREF(CDirectSoundStream_SetMinDistance, 3936, 10, + + XREF_CDirectSoundStream_SetMinDistance, + XRefOne) + + // CDirectSoundStream_SetMinDistance+0x15 : call [CDirectSoundVoice_SetMinDistance] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetMinDistance ), + + // CDirectSoundStream_SetMinDistance+0x04 : fld [esp+0x0C] + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // CDirectSoundStream_SetMinDistance+0x0D : add eax, 0x04 + { 0x0D, 0x83 }, + { 0x0E, 0xC0 }, + { 0x0F, 0x04 }, + + // CDirectSoundStream_SetMinDistance+0x19 : retn 0x0C + { 0x19, 0xC2 }, + { 0x1A, 0x0C }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * CDirectSoundStream_SetMinDistance +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetMinDistance, 3936, 11, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetMinDistance+0x11 : call [IDirectSoundStream::SetMinDistanceA] - XREF_ENTRY( 0x11, XREF_DSSTREAMSETMINDISTANCE1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetMinDistance+0x11 : call [CDirectSoundStream_SetMinDistance] + XREF_ENTRY( 0x11, XREF_CDirectSoundStream_SetMinDistance ), // CDirectSoundStream_SetMinDistance+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // CDirectSoundStream_SetMinDistance+0x0C : push [esp+0x0C] - { 0x0C, 0xFF }, // (Offset,Value)-Pair #6 - { 0x0D, 0x74 }, // (Offset,Value)-Pair #7 - { 0x0E, 0x24 }, // (Offset,Value)-Pair #8 - { 0x0F, 0x0C }, // (Offset,Value)-Pair #9 + { 0x0C, 0xFF }, + { 0x0D, 0x74 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0C }, // CDirectSoundStream_SetMinDistance+0x15 : retn 0x0C - { 0x15, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x16, 0x0C }, // (Offset,Value)-Pair #11 + { 0x15, 0xC2 }, + { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetVelocityC +// * CMcpxVoiceClient_Set3dVelocity // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetVelocityC, 3936, 12, +OOVPA_XREF(CMcpxVoiceClient_Set3dVelocity, 3936, 12, - XREF_DSSTREAMSETVELOCITY1C, + XREF_CMcpxVoiceClient_Set3dVelocity, XRefZero) - // CDirectSoundStream_SetVelocityC+0x09 : movsd; movsd; movsd - { 0x09, 0xA5 }, // (Offset,Value)-Pair #8 - { 0x0A, 0xA5 }, // (Offset,Value)-Pair #9 - { 0x0B, 0xA5 }, // (Offset,Value)-Pair #10 + // CMcpxVoiceClient_Set3dVelocity+0x09 : movsd; movsd; movsd + { 0x09, 0xA5 }, + { 0x0A, 0xA5 }, + { 0x0B, 0xA5 }, - // CDirectSoundStream_SetVelocityC+0x0C : or byte ptr [ecx+0x80], 0x40 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #1 - { 0x0D, 0x89 }, // (Offset,Value)-Pair #2 - { 0x0E, 0x80 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x00 }, // (Offset,Value)-Pair #4 - { 0x10, 0x00 }, // (Offset,Value)-Pair #5 - { 0x11, 0x00 }, // (Offset,Value)-Pair #6 - { 0x12, 0x40 }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dVelocity+0x0C : or byte ptr [ecx+0x80], 0x40 + { 0x0C, 0x83 }, + { 0x0D, 0x89 }, + { 0x0E, 0x80 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x40 }, - // CDirectSoundStream_SetVelocityC+0x25 : retn 0x08 - { 0x25, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x26, 0x08 }, // (Offset,Value)-Pair #12 + // CMcpxVoiceClient_Set3dVelocity+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetVelocityB +// * CDirectSoundVoice_SetVelocity // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetVelocityB, 3936, 14, +OOVPA_XREF(CDirectSoundVoice_SetVelocity, 3936, 14, - XREF_DSSTREAMSETVELOCITY1B, + XREF_CDirectSoundVoice_SetVelocity, XRefOne) - // CDirectSoundStream_SetVelocityB+0x35 : call [IDirectSoundStream::SetVelocityC] - XREF_ENTRY( 0x35, XREF_DSSTREAMSETVELOCITY1C ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetVelocity+0x35 : call [CMcpxVoiceClient_Set3dVelocity] + XREF_ENTRY( 0x35, XREF_CMcpxVoiceClient_Set3dVelocity ), - // CDirectSoundStream_SetVelocityB+0x21 : mov eax, [ebp+0x18] - { 0x21, 0x8B }, // (Offset,Value)-Pair #2 - { 0x22, 0x45 }, // (Offset,Value)-Pair #3 - { 0x23, 0x18 }, // (Offset,Value)-Pair #4 + // CDirectSoundVoice_SetVelocity+0x21 : mov eax, [ebp+0x18] + { 0x21, 0x8B }, + { 0x22, 0x45 }, + { 0x23, 0x18 }, - // CDirectSoundStream_SetVelocityB+0x24 : not eax - { 0x24, 0xF7 }, // (Offset,Value)-Pair #5 - { 0x25, 0xD0 }, // (Offset,Value)-Pair #6 + // CDirectSoundVoice_SetVelocity+0x24 : not eax + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, - // CDirectSoundStream_SetVelocityB+0x26 : and eax, 1 - { 0x26, 0x83 }, // (Offset,Value)-Pair #7 - { 0x27, 0xE0 }, // (Offset,Value)-Pair #8 - { 0x28, 0x01 }, // (Offset,Value)-Pair #9 + // CDirectSoundVoice_SetVelocity+0x26 : and eax, 1 + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, - // CDirectSoundStream_SetVelocityB+0x31 : mov ecx, [eax+0x14] - { 0x31, 0x8B }, // (Offset,Value)-Pair #10 - { 0x32, 0x48 }, // (Offset,Value)-Pair #11 - { 0x33, 0x14 }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetVelocity+0x31 : mov ecx, [eax+0x14] + { 0x31, 0x8B }, + { 0x32, 0x48 }, + { 0x33, 0x14 }, - // CDirectSoundStream_SetVelocityB+0x4F : retn 0x14 - { 0x4F, 0xC2 }, // (Offset,Value)-Pair #13 - { 0x50, 0x14 }, // (Offset,Value)-Pair #14 -OOVPA_END; - -// ****************************************************************** -// * CDirectSoundStream_SetVelocityA -// ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetVelocityA, 3936, 9, - - XREF_DSSTREAMSETVELOCITY1A, - XRefOne) - - // CDirectSoundStream_SetVelocityA+0x25 : call [IDirectSoundStream::SetVelocityB] - XREF_ENTRY( 0x25, XREF_DSSTREAMSETVELOCITY1B ), // (Offset,Value)-Pair #1 - - // CDirectSoundStream_SetVelocityA+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 - - // CDirectSoundStream_SetVelocityA+0x0C : sub esp, 0x0C - { 0x0C, 0x83 }, // (Offset,Value)-Pair #5 - { 0x0D, 0xEC }, // (Offset,Value)-Pair #6 - { 0x0E, 0x0C }, // (Offset,Value)-Pair #7 - - // CDirectSoundStream_SetVelocityA+0x2A : retn 0x14 - { 0x2A, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x2B, 0x14 }, // (Offset,Value)-Pair #9 + // CDirectSoundVoice_SetVelocity+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, OOVPA_END; // ****************************************************************** @@ -1841,53 +1778,82 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetVelocity, 3936, 9, + XREF_CDirectSoundStream_SetVelocity, + XRefOne) + + // CDirectSoundStream_SetVelocity+0x25 : call [CDirectSoundVoice_SetVelocity] + XREF_ENTRY( 0x25, XREF_CDirectSoundVoice_SetVelocity ), + + // CDirectSoundStream_SetVelocity+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetVelocity+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // CDirectSoundStream_SetVelocity+0x2A : retn 0x14 + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * CDirectSoundStream_SetVelocity +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetVelocity, 3936, 9, + XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetVelocity+0x21 : call [IDirectSoundStream::SetVelocityA] - XREF_ENTRY( 0x21, XREF_DSSTREAMSETVELOCITY1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetVelocity+0x21 : call [CDirectSoundStream_SetVelocity] + XREF_ENTRY( 0x21, XREF_CDirectSoundStream_SetVelocity ), // CDirectSoundStream_SetVelocity+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, // CDirectSoundStream_SetVelocity+0x1A : fstp [esp] - { 0x1A, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x1B, 0x1C }, // (Offset,Value)-Pair #6 - { 0x1C, 0x24 }, // (Offset,Value)-Pair #7 + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, // CDirectSoundStream_SetVelocity+0x26 : retn 0x14 - { 0x26, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x27, 0x14 }, // (Offset,Value)-Pair #9 + { 0x26, 0xC2 }, + { 0x27, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::SetVelocity // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetVelocity, 3936, 9, - XREF_DSBUFFERSETVELOCITY, + XREF_CDirectSoundBuffer_SetVelocity, XRefOne) // CDirectSoundBuffer_SetVelocity+0x20 : call [CDirectSoundStream::SetVelocityB] - XREF_ENTRY( 0x21, XREF_DSSTREAMSETVELOCITY1B ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x21, XREF_CDirectSoundVoice_SetVelocity ), // CDirectSoundBuffer_SetVelocity+0x06 : fld [ebp+arg_C] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, // CDirectSoundBuffer_SetVelocity+0x1A : fstp [esp+0x10+var_10] - { 0x1A, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x1B, 0x1C }, // (Offset,Value)-Pair #6 - { 0x1C, 0x24 }, // (Offset,Value)-Pair #7 + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, // CDirectSoundBuffer_SetVelocity+0x26 : retn 0x14 - { 0x27, 0x14 }, // (Offset,Value)-Pair #8 - { 0x28, 0x00 }, // (Offset,Value)-Pair #9 + { 0x27, 0x14 }, + { 0x28, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetVelocity // ****************************************************************** @@ -1897,281 +1863,285 @@ OOVPA_XREF(IDirectSoundBuffer_SetVelocity, 3936, 9, XRefOne) // IDirectSoundBuffer_SetVelocity+0x2C : call [CDirectSoundBuffer::SetVelocity] - XREF_ENTRY( 0x2D, XREF_DSBUFFERSETVELOCITY ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x2D, XREF_CDirectSoundBuffer_SetVelocity ), // IDirectSoundBuffer_SetVelocity+0x09 : mov eax, [ebp+arg_0] - { 0x09, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0A, 0x45 }, // (Offset,Value)-Pair #3 - { 0x0B, 0x08 }, // (Offset,Value)-Pair #4 + { 0x09, 0x8B }, + { 0x0A, 0x45 }, + { 0x0B, 0x08 }, // IDirectSoundBuffer_SetVelocity+0x28 : fstp [esp+0x10+var_10] - { 0x28, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x29, 0x1C }, // (Offset,Value)-Pair #6 - { 0x2A, 0x24 }, // (Offset,Value)-Pair #7 + { 0x28, 0xD9 }, + { 0x29, 0x1C }, + { 0x2A, 0x24 }, // IDirectSoundBuffer_SetVelocity+0x32 : retn 0x14 - { 0x33, 0x14 }, // (Offset,Value)-Pair #8 - { 0x34, 0x00 }, // (Offset,Value)-Pair #9 + { 0x33, 0x14 }, + { 0x34, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetConeOrientationC +// * CMcpxVoiceClient_Set3dConeOrientation // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeOrientationC, 3936, 11, +OOVPA_XREF(CMcpxVoiceClient_Set3dConeOrientation, 3936, 11, - XREF_DSSTREAMSETCONEORIENTATION1C, + XREF_CMcpxVoiceClient_Set3dConeOrientation, XRefZero) - // TODO: re-use for CDirectSoundBuffer_SetConeOrientationC!? + // CMcpxVoiceClient_Set3dConeOrientation+0x0C : or byte ptr [ecx+0x80], 0x18 + { 0x0C, 0x83 }, + { 0x0D, 0x89 }, + { 0x0E, 0x80 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0x18 }, - // CDirectSoundStream_SetConeOrientationC+0x0C : or byte ptr [ecx+0x80], 0x18 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #1 - { 0x0D, 0x89 }, // (Offset,Value)-Pair #2 - { 0x0E, 0x80 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x00 }, // (Offset,Value)-Pair #4 - { 0x10, 0x00 }, // (Offset,Value)-Pair #5 - { 0x11, 0x00 }, // (Offset,Value)-Pair #6 - { 0x12, 0x18 }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dConeOrientation+0x1A : jz +0x07 + { 0x1A, 0x74 }, + { 0x1B, 0x07 }, - // CDirectSoundStream_SetConeOrientationC+0x1A : jz +0x07 - { 0x1A, 0x74 }, // (Offset,Value)-Pair #8 - { 0x1B, 0x07 }, // (Offset,Value)-Pair #9 - - // CDirectSoundStream_SetConeOrientationC+0x25 : retn 0x08 - { 0x25, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x26, 0x08 }, // (Offset,Value)-Pair #11 + // CMcpxVoiceClient_Set3dConeOrientation+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetConeOrientationB +// * CDirectSoundVoice_SetConeOrientation // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeOrientationB, 3936, 14, +OOVPA_XREF(CDirectSoundVoice_SetConeOrientation, 3936, 14, - XREF_DSSTREAMSETCONEORIENTATION1B, + XREF_CDirectSoundVoice_SetConeOrientation, XRefOne) - // TODO: re-use for CDirectSoundBuffer_SetConeOrientationB!? + // CDirectSoundVoice_SetConeOrientation+0x35 : call [CMcpxVoiceClient_Set3dConeOrientation] + XREF_ENTRY( 0x35, XREF_CMcpxVoiceClient_Set3dConeOrientation ), - // CDirectSoundStream_SetConeOrientationB+0x35 : call [IDirectSoundStream::SetConeOrientationC] - XREF_ENTRY( 0x35, XREF_DSSTREAMSETCONEORIENTATION1C ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetConeOrientation+0x21 : mov eax, [ebp+0x18] + { 0x21, 0x8B }, + { 0x22, 0x45 }, + { 0x23, 0x18 }, - // CDirectSoundStream_SetConeOrientationB+0x21 : mov eax, [ebp+0x18] - { 0x21, 0x8B }, // (Offset,Value)-Pair #2 - { 0x22, 0x45 }, // (Offset,Value)-Pair #3 - { 0x23, 0x18 }, // (Offset,Value)-Pair #4 + // CDirectSoundVoice_SetConeOrientation+0x24 : not eax + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, - // CDirectSoundStream_SetConeOrientationB+0x24 : not eax - { 0x24, 0xF7 }, // (Offset,Value)-Pair #5 - { 0x25, 0xD0 }, // (Offset,Value)-Pair #6 + // CDirectSoundVoice_SetConeOrientation+0x26 : and eax, 1 + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, - // CDirectSoundStream_SetConeOrientationB+0x26 : and eax, 1 - { 0x26, 0x83 }, // (Offset,Value)-Pair #7 - { 0x27, 0xE0 }, // (Offset,Value)-Pair #8 - { 0x28, 0x01 }, // (Offset,Value)-Pair #9 + // CDirectSoundVoice_SetConeOrientation+0x31 : mov ecx, [eax+0x14] + { 0x31, 0x8B }, + { 0x32, 0x48 }, + { 0x33, 0x14 }, - // CDirectSoundStream_SetConeOrientationB+0x31 : mov ecx, [eax+0x14] - { 0x31, 0x8B }, // (Offset,Value)-Pair #10 - { 0x32, 0x48 }, // (Offset,Value)-Pair #11 - { 0x33, 0x14 }, // (Offset,Value)-Pair #12 - - // CDirectSoundStream_SetConeOrientationB+0x4F : retn 0x14 - { 0x4F, 0xC2 }, // (Offset,Value)-Pair #13 - { 0x50, 0x14 }, // (Offset,Value)-Pair #14 + // CDirectSoundVoice_SetConeOrientation+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, OOVPA_END; - -// ****************************************************************** -// * CDirectSoundStream_SetConeOrientationA -// ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetConeOrientationA, 3936, 9, - - XREF_DSSTREAMSETCONEORIENTATION1A, - XRefOne) - - // TODO: re-use for CDirectSoundBuffer_SetConeOrientationA!? - - // CDirectSoundStream_SetConeOrientationA+0x25 : call [IDirectSoundStream::SetConeOrientationB] - XREF_ENTRY( 0x25, XREF_DSSTREAMSETCONEORIENTATION1B ), // (Offset,Value)-Pair #1 - - // CDirectSoundStream_SetConeOrientationA+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 - - // CDirectSoundStream_SetConeOrientationA+0x0C : sub esp, 0x0C - { 0x0C, 0x83 }, // (Offset,Value)-Pair #5 - { 0x0D, 0xEC }, // (Offset,Value)-Pair #6 - { 0x0E, 0x0C }, // (Offset,Value)-Pair #7 - - // CDirectSoundStream_SetConeOrientationA+0x2A : retn 0x14 - { 0x2A, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x2B, 0x14 }, // (Offset,Value)-Pair #9 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetConeOrientation // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetConeOrientation, 3936, 9, + XREF_CDirectSoundStream_SetConeOrientation, + XRefOne) + + // CDirectSoundStream_SetConeOrientation+0x25 : call [CDirectSoundVoice_SetConeOrientation] + XREF_ENTRY( 0x25, XREF_CDirectSoundVoice_SetConeOrientation ), + + // CDirectSoundStream_SetConeOrientation+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetConeOrientation+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // CDirectSoundStream_SetConeOrientation+0x2A : retn 0x14 + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * IDirectSoundStream_SetConeOrientation +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetConeOrientation, 3936, 9, + XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetConeOrientation+0x21 : call [IDirectSoundStream::SetConeOrientationA] - XREF_ENTRY( 0x21, XREF_DSSTREAMSETCONEORIENTATION1A ), // (Offset,Value)-Pair #1 + // IDirectSoundStream_SetConeOrientation+0x21 : call [CDirectSoundStream_SetConeOrientation] + XREF_ENTRY( 0x21, XREF_CDirectSoundStream_SetConeOrientation ), - // CDirectSoundStream_SetConeOrientation+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + // IDirectSoundStream_SetConeOrientation+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, - // CDirectSoundStream_SetConeOrientation+0x1A : fstp [esp] - { 0x1A, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x1B, 0x1C }, // (Offset,Value)-Pair #6 - { 0x1C, 0x24 }, // (Offset,Value)-Pair #7 + // IDirectSoundStream_SetConeOrientation+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, - // CDirectSoundStream_SetConeOrientation+0x26 : retn 0x14 - { 0x26, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x27, 0x14 }, // (Offset,Value)-Pair #9 + // IDirectSoundStream_SetConeOrientation+0x26 : retn 0x14 + { 0x26, 0xC2 }, + { 0x27, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetPositionC +// * CMcpxVoiceClient_Set3dPosition // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetPositionC, 3936, 11, +OOVPA_XREF(CMcpxVoiceClient_Set3dPosition, 3936, 11, - XREF_DSSTREAMSETPOSITION1C, + XREF_CMcpxVoiceClient_Set3dPosition, XRefZero) - // CDirectSoundStream_SetPositionC+0x0C : or byte ptr [ecx+0x80], 0xFF - { 0x0C, 0x80 }, // (Offset,Value)-Pair #1 - { 0x0D, 0x89 }, // (Offset,Value)-Pair #2 - { 0x0E, 0x80 }, // (Offset,Value)-Pair #3 - { 0x0F, 0x00 }, // (Offset,Value)-Pair #4 - { 0x10, 0x00 }, // (Offset,Value)-Pair #5 - { 0x11, 0x00 }, // (Offset,Value)-Pair #6 - { 0x12, 0xFF }, // (Offset,Value)-Pair #7 + // CMcpxVoiceClient_Set3dPosition+0x0C : or byte ptr [ecx+0x80], 0xFF + { 0x0C, 0x80 }, + { 0x0D, 0x89 }, + { 0x0E, 0x80 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0xFF }, - // CDirectSoundStream_SetPositionC+0x1A : jz +0x07 - { 0x1A, 0x74 }, // (Offset,Value)-Pair #8 - { 0x1B, 0x07 }, // (Offset,Value)-Pair #9 + // CMcpxVoiceClient_Set3dPosition+0x1A : jz +0x07 + { 0x1A, 0x74 }, + { 0x1B, 0x07 }, - // CDirectSoundStream_SetPositionC+0x25 : retn 0x08 - { 0x25, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x26, 0x08 }, // (Offset,Value)-Pair #11 + // CMcpxVoiceClient_Set3dPosition+0x25 : retn 0x08 + { 0x25, 0xC2 }, + { 0x26, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetPositionB +// * CDirectSoundVoice_SetPosition // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetPositionB, 3936, 14, +OOVPA_XREF(CDirectSoundVoice_SetPosition, 3936, 14, - XREF_DSSTREAMSETPOSITION1B, + XREF_CDirectSoundVoice_SetPosition, XRefOne) - // CDirectSoundStream_SetPositionB+0x35 : call [IDirectSoundStream::SetPositionC] - XREF_ENTRY( 0x35, XREF_DSSTREAMSETPOSITION1C ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetPosition+0x35 : call [CMcpxVoiceClient_Set3dPosition] + XREF_ENTRY( 0x35, XREF_CMcpxVoiceClient_Set3dPosition ), - // CDirectSoundStream_SetPositionB+0x21 : mov eax, [ebp+0x18] - { 0x21, 0x8B }, // (Offset,Value)-Pair #2 - { 0x22, 0x45 }, // (Offset,Value)-Pair #3 - { 0x23, 0x18 }, // (Offset,Value)-Pair #4 + // CDirectSoundVoice_SetPosition+0x21 : mov eax, [ebp+0x18] + { 0x21, 0x8B }, + { 0x22, 0x45 }, + { 0x23, 0x18 }, - // CDirectSoundStream_SetPositionB+0x24 : not eax - { 0x24, 0xF7 }, // (Offset,Value)-Pair #5 - { 0x25, 0xD0 }, // (Offset,Value)-Pair #6 + // CDirectSoundVoice_SetPosition+0x24 : not eax + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, - // CDirectSoundStream_SetPositionB+0x26 : and eax, 1 - { 0x26, 0x83 }, // (Offset,Value)-Pair #7 - { 0x27, 0xE0 }, // (Offset,Value)-Pair #8 - { 0x28, 0x01 }, // (Offset,Value)-Pair #9 + // CDirectSoundVoice_SetPosition+0x26 : and eax, 1 + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, - // CDirectSoundStream_SetPositionB+0x31 : mov ecx, [eax+0x14] - { 0x31, 0x8B }, // (Offset,Value)-Pair #10 - { 0x32, 0x48 }, // (Offset,Value)-Pair #11 - { 0x33, 0x14 }, // (Offset,Value)-Pair #12 + // CDirectSoundVoice_SetPosition+0x31 : mov ecx, [eax+0x14] + { 0x31, 0x8B }, + { 0x32, 0x48 }, + { 0x33, 0x14 }, - // CDirectSoundStream_SetPositionB+0x4F : retn 0x14 - { 0x4F, 0xC2 }, // (Offset,Value)-Pair #13 - { 0x50, 0x14 }, // (Offset,Value)-Pair #14 + // CDirectSoundVoice_SetPosition+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, OOVPA_END; - -// ****************************************************************** -// * CDirectSoundStream_SetPositionA -// ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetPositionA, 3936, 9, - - XREF_DSSTREAMSETPOSITION1A, - XRefOne) - - // CDirectSoundStream_SetPositionA+0x25 : call [IDirectSoundStream::SetPositionB] - XREF_ENTRY( 0x25, XREF_DSSTREAMSETPOSITION1B ), // (Offset,Value)-Pair #1 - - // CDirectSoundStream_SetPositionA+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 - - // CDirectSoundStream_SetPositionA+0x0C : sub esp, 0x0C - { 0x0C, 0x83 }, // (Offset,Value)-Pair #5 - { 0x0D, 0xEC }, // (Offset,Value)-Pair #6 - { 0x0E, 0x0C }, // (Offset,Value)-Pair #7 - - // CDirectSoundStream_SetPositionA+0x2A : retn 0x14 - { 0x2A, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x2B, 0x14 }, // (Offset,Value)-Pair #9 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetPosition // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetPosition, 3936, 9, + XREF_CDirectSoundStream_SetPosition, + XRefOne) + + // CDirectSoundStream_SetPosition+0x25 : call [CDirectSoundVoice_SetPosition] + XREF_ENTRY( 0x25, XREF_CDirectSoundVoice_SetPosition ), + + // CDirectSoundStream_SetPosition+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // CDirectSoundStream_SetPosition+0x0C : sub esp, 0x0C + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, + + // CDirectSoundStream_SetPosition+0x2A : retn 0x14 + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * IDirectSoundStream_SetPosition +// ****************************************************************** +OOVPA_XREF(IDirectSoundStream_SetPosition, 3936, 9, + XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetPosition+0x21 : call [IDirectSoundStream::SetPositionA] - XREF_ENTRY( 0x21, XREF_DSSTREAMSETPOSITION1A ), // (Offset,Value)-Pair #1 + // IDirectSoundStream_SetPosition+0x21 : call [CDirectSoundStream_SetPosition] + XREF_ENTRY( 0x21, XREF_CDirectSoundStream_SetPosition ), - // CDirectSoundStream_SetPosition+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + // IDirectSoundStream_SetPosition+0x06 : fld [ebp+0x14] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, - // CDirectSoundStream_SetPosition+0x1A : fstp [esp] - { 0x1A, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x1B, 0x1C }, // (Offset,Value)-Pair #6 - { 0x1C, 0x24 }, // (Offset,Value)-Pair #7 + // IDirectSoundStream_SetPosition+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, - // CDirectSoundStream_SetPosition+0x26 : retn 0x14 - { 0x26, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x27, 0x14 }, // (Offset,Value)-Pair #9 + // IDirectSoundStream_SetPosition+0x26 : retn 0x14 + { 0x26, 0xC2 }, + { 0x27, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::SetPosition // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetPosition, 3936, 9, - XREF_DSBUFFERSETPOSITION, + XREF_CDirectSoundBuffer_SetPosition, XRefOne) - // CDirectSoundBuffer_SetPosition+0x20 : call [CDirectSoundStream::PositionB] - XREF_ENTRY( 0x21, XREF_DSSTREAMSETPOSITION1B ), // (Offset,Value)-Pair #1 + // CDirectSoundBuffer_SetPosition+0x20 : call [CDirectSoundVoice_SetPosition] + XREF_ENTRY( 0x21, XREF_CDirectSoundVoice_SetPosition ), // CDirectSoundBuffer_SetPosition+0x06 : fld [ebp+arg_C] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, // CDirectSoundBuffer_SetPosition+0x1A : fstp [esp+0x10+var_10] - { 0x1A, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x1B, 0x1C }, // (Offset,Value)-Pair #6 - { 0x1C, 0x24 }, // (Offset,Value)-Pair #7 + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, // CDirectSoundBuffer_SetPosition+0x26 : retn 0x14 - { 0x27, 0x14 }, // (Offset,Value)-Pair #8 - { 0x28, 0x00 }, // (Offset,Value)-Pair #9 + { 0x27, 0x14 }, + { 0x28, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetPosition // ****************************************************************** @@ -2181,77 +2151,80 @@ OOVPA_XREF(IDirectSoundBuffer_SetPosition, 3936, 9, XRefOne) // IDirectSoundBuffer_SetPosition+0x2C : call [CDirectSoundBuffer::SetPosition] - XREF_ENTRY( 0x2D, XREF_DSBUFFERSETPOSITION ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x2D, XREF_CDirectSoundBuffer_SetPosition ), // IDirectSoundBuffer_SetPosition+0x09 : mov eax, [ebp+arg_0] - { 0x09, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0A, 0x45 }, // (Offset,Value)-Pair #3 - { 0x0B, 0x08 }, // (Offset,Value)-Pair #4 + { 0x09, 0x8B }, + { 0x0A, 0x45 }, + { 0x0B, 0x08 }, // IDirectSoundBuffer_SetPosition+0x28 : fstp [esp+0x10+var_10] - { 0x28, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x29, 0x1C }, // (Offset,Value)-Pair #6 - { 0x2A, 0x24 }, // (Offset,Value)-Pair #7 + { 0x28, 0xD9 }, + { 0x29, 0x1C }, + { 0x2A, 0x24 }, // IDirectSoundBuffer_SetPosition+0x32 : retn 0x14 - { 0x33, 0x14 }, // (Offset,Value)-Pair #8 - { 0x34, 0x00 }, // (Offset,Value)-Pair #9 + { 0x33, 0x14 }, + { 0x34, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetFrequencyB +// * XAudioCalculatePitch // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetFrequencyB, 3936, 11, +OOVPA_XREF(XAudioCalculatePitch, 3936, 11, - XREF_DSSTREAMSETFREQUENCY1B, + XREF_XAudioCalculatePitch, XRefZero) - // CDirectSoundStream_SetFrequencyB+0x08 : cmp esi, 0xBB80 - { 0x08, 0x81 }, // (Offset,Value)-Pair #1 - { 0x09, 0xFE }, // (Offset,Value)-Pair #2 - { 0x0A, 0x80 }, // (Offset,Value)-Pair #3 - { 0x0B, 0xBB }, // (Offset,Value)-Pair #4 + // XAudioCalculatePitch+0x08 : cmp esi, 0xBB80 + { 0x08, 0x81 }, + { 0x09, 0xFE }, + { 0x0A, 0x80 }, + { 0x0B, 0xBB }, - // CDirectSoundStream_SetFrequencyB+0x1D : jmp +0x2B - { 0x1D, 0xEB }, // (Offset,Value)-Pair #5 - { 0x1E, 0x2B }, // (Offset,Value)-Pair #6 + // XAudioCalculatePitch+0x1D : jmp +0x2B + { 0x1D, 0xEB }, + { 0x1E, 0x2B }, - // CDirectSoundStream_SetFrequencyB+0x1F : lea ecx, [ebp+0x08] - { 0x1F, 0x8D }, // (Offset,Value)-Pair #7 - { 0x20, 0x4D }, // (Offset,Value)-Pair #8 - { 0x21, 0x08 }, // (Offset,Value)-Pair #9 + // XAudioCalculatePitch+0x1F : lea ecx, [ebp+0x08] + { 0x1F, 0x8D }, + { 0x20, 0x4D }, + { 0x21, 0x08 }, - // CDirectSoundStream_SetFrequencyB+0x4E : retn 0x08 - { 0x4E, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x4F, 0x04 }, // (Offset,Value)-Pair #11 + // XAudioCalculatePitch+0x4E : retn 0x08 + { 0x4E, 0xC2 }, + { 0x4F, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSoundStream_SetFrequencyA +// * CDirectSoundVoice_SetFrequency // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetFrequencyA, 3936, 9, +OOVPA_XREF(CDirectSoundVoice_SetFrequency, 3936, 9, - XREF_DSSTREAMSETFREQUENCY1A, + XREF_CDirectSoundVoice_SetFrequency, XRefOne) - // CDirectSoundStream_SetFrequencyA+0x1F : call [CDirectSoundStream::SetFrequencyB] - XREF_ENTRY( 0x20, XREF_DSSTREAMSETFREQUENCY1B ), // (Offset,Value)-Pair #1 + // CDirectSoundVoice_SetFrequency+0x1F : call [XAudioCalculatePitch] + XREF_ENTRY( 0x20, XREF_XAudioCalculatePitch ), - // CDirectSoundStream_SetFrequencyA+0x15 : mov eax, [esi+0x18] - { 0x15, 0x8B }, // (Offset,Value)-Pair #2 - { 0x16, 0x46 }, // (Offset,Value)-Pair #3 - { 0x17, 0x18 }, // (Offset,Value)-Pair #4 + // CDirectSoundVoice_SetFrequency+0x15 : mov eax, [esi+0x18] + { 0x15, 0x8B }, + { 0x16, 0x46 }, + { 0x17, 0x18 }, - // CDirectSoundStream_SetFrequencyA+0x18 : mov eax, [eax+0x10] - { 0x18, 0x8B }, // (Offset,Value)-Pair #5 - { 0x19, 0x40 }, // (Offset,Value)-Pair #6 - { 0x1A, 0x10 }, // (Offset,Value)-Pair #7 + // CDirectSoundVoice_SetFrequency+0x18 : mov eax, [eax+0x10] + { 0x18, 0x8B }, + { 0x19, 0x40 }, + { 0x1A, 0x10 }, - // CDirectSoundStream_SetFrequencyA+0x40 : retn 0x08 - { 0x40, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x41, 0x08 }, // (Offset,Value)-Pair #9 + // CDirectSoundVoice_SetFrequency+0x40 : retn 0x08 + { 0x40, 0xC2 }, + { 0x41, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetFrequency // ****************************************************************** @@ -2260,25 +2233,26 @@ OOVPA_XREF(CDirectSoundStream_SetFrequency, 3936, 10, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetFrequency+0x0D : call [IDirectSoundStream::SetFrequency] - XREF_ENTRY( 0x0D, XREF_DSSTREAMSETFREQUENCY1A ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetFrequency+0x0D : call [CDirectSoundVoice_SetFrequency] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetFrequency ), // CDirectSoundStream_SetFrequency+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetFrequency+0x08 : add eax, 0x04 - { 0x08, 0x83 }, // (Offset,Value)-Pair #6 - { 0x09, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #8 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, // CDirectSoundStream_SetFrequency+0x11 : retn 0x08 - { 0x11, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x12, 0x08 }, // (Offset,Value)-Pair #10 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetFrequency // ****************************************************************** @@ -2287,77 +2261,80 @@ OOVPA_XREF(IDirectSoundBuffer_SetFrequency, 3936, 8, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetFrequency+0x15 : call [IDirectSoundStream::SetFrequency] - XREF_ENTRY( 0x15, XREF_DSSTREAMSETFREQUENCY1A ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetFrequency+0x15 : call [CDirectSoundVoice_SetFrequency] + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetFrequency ), // IDirectSoundBuffer_SetFrequency+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetFrequency+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #5 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, // IDirectSoundBuffer_SetFrequency+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #7 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #8 + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxVoiceClient::Set3dMode // ****************************************************************** OOVPA_XREF(CMcpxVoiceClient_Set3dMode, 3936, 12, - XREF_DSBUFFERSETMODEB, + XREF_CMcpxVoiceClient_Set3dMode, XRefZero) // CMcpxVoiceClient_Set3dMode+0x04 : or byte ptr [ecx+0x80], 0xFF - { 0x04, 0x80 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0x80 }, // (Offset,Value)-Pair #3 - { 0x07, 0x00 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0xFF }, // (Offset,Value)-Pair #7 + { 0x04, 0x80 }, + { 0x05, 0x89 }, + { 0x06, 0x80 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0xFF }, // CMcpxVoiceClient_Set3dMode+0x10 : cmp [ecx+0x58], eax - { 0x10, 0x89 }, // (Offset,Value)-Pair #8 - { 0x11, 0x41 }, // (Offset,Value)-Pair #9 - { 0x12, 0x58 }, // (Offset,Value)-Pair #10 + { 0x10, 0x89 }, + { 0x11, 0x41 }, + { 0x12, 0x58 }, // CMcpxVoiceClient_Set3dMode+0x1E : retn 0x08 - { 0x1E, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x1F, 0x08 }, // (Offset,Value)-Pair #12 + { 0x1E, 0xC2 }, + { 0x1F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundVoice::SetMode // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMode, 3936, 10, - XREF_DSBUFFERSETMODEA, + XREF_CDirectSoundVoice_SetMode, XRefOne) // CDirectSoundVoice_SetMode+0x1E : call [CMcpxVoiceClient::Set3dMode] - XREF_ENTRY( 0x1F, XREF_DSBUFFERSETMODEB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1F, XREF_CMcpxVoiceClient_Set3dMode ), // CDirectSoundVoice_SetMode+0x17 : push [esp+0x14] - { 0x17, 0xFF }, // (Offset,Value)-Pair #2 - { 0x18, 0x74 }, // (Offset,Value)-Pair #3 - { 0x19, 0x24 }, // (Offset,Value)-Pair #4 - { 0x1A, 0x14 }, // (Offset,Value)-Pair #5 + { 0x17, 0xFF }, + { 0x18, 0x74 }, + { 0x19, 0x24 }, + { 0x1A, 0x14 }, // CDirectSoundVoice_SetMode+0x1B : mov ecx, [eax+0x14] - { 0x1B, 0x8B }, // (Offset,Value)-Pair #6 - { 0x1C, 0x48 }, // (Offset,Value)-Pair #7 - { 0x1D, 0x14 }, // (Offset,Value)-Pair #8 + { 0x1B, 0x8B }, + { 0x1C, 0x48 }, + { 0x1D, 0x14 }, // CDirectSoundVoice_SetMode+0x38 : retn 0x0C - { 0x38, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x39, 0x0C }, // (Offset,Value)-Pair #10 + { 0x38, 0xC2 }, + { 0x39, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMode // ****************************************************************** @@ -2367,24 +2344,25 @@ OOVPA_XREF(IDirectSoundBuffer_SetMode, 3936, 10, XRefOne) // IDirectSoundBuffer_SetMode+0x18 : call [CDirectSoundVoice::SetMode] - XREF_ENTRY( 0x19, XREF_DSBUFFERSETMODEA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x19, XREF_CDirectSoundVoice_SetMode ), // IDirectSoundBuffer_SetMode+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSoundBuffer_SetMode+0x0E : add eax, 0xFFFFFFE4 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x10, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, // IDirectSoundBuffer_SetMode+0x1D : retn 0x0C - { 0x1D, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x1E, 0x0C }, // (Offset,Value)-Pair #10 + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, not available by 3936 // ****************************************************************** // * CDirectSoundStream_SetRolloffFactor // ****************************************************************** @@ -2394,24 +2372,25 @@ OOVPA_XREF(CDirectSoundStream_SetRolloffFactor, 3936, 10, XRefOne) // CDirectSoundStream_SetRolloffFactor+0x11 : call [IDirectSoundStream::SetRolloffFactor] - XREF_ENTRY( 0x11, XREF_DSSTREAMSETROLLOFFFACTOR1A ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x11, XREF_DSSTREAMSETROLLOFFFACTOR1A ), // CDirectSoundStream_SetRolloffFactor+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetRolloffFactor+0x0C : add eax, 0x04 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0D, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0E, 0x04 }, // (Offset,Value)-Pair #8 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, // CDirectSoundStream_SetRolloffFactor+0x15 : retn 0x0C - { 0x15, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x16, 0x0C }, // (Offset,Value)-Pair #10 + { 0x15, 0xC2 }, + { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by CDirectSoundVoice_SetHeadroom 3936 version // ****************************************************************** // * CDirectSoundVoice_SetHeadroom // ****************************************************************** @@ -2431,7 +2410,8 @@ OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 3936, 10, { 0x3C, 0xC2 }, { 0x3D, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetHeadroom // ****************************************************************** @@ -2440,215 +2420,223 @@ OOVPA_XREF(CDirectSoundStream_SetHeadroom, 3936, 10, XRefNoSaveIndex, XRefOne) - // CDirectSoundStream_SetHeadroom+0x0D : call [DirectSound_CDirectSoundVoice_SetHeadroom] - XREF_ENTRY( 0x0D, XREF_DSSETHEADROOMA ), // (Offset,Value)-Pair #1 + // CDirectSoundStream_SetHeadroom+0x0D : call [CDirectSoundVoice_SetHeadroom] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoice_SetHeadroom ), // CDirectSoundStream_SetHeadroom+0x04 : mov eax, [esp+0x08] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // CDirectSoundStream_SetHeadroom+0x08 : add eax, 0x04 - { 0x08, 0x83 }, // (Offset,Value)-Pair #6 - { 0x09, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #8 + { 0x08, 0x83 }, + { 0x09, 0xC0 }, + { 0x0A, 0x04 }, // CDirectSoundStream_SetHeadroom+0x11 : retn 0x08 - { 0x11, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x12, 0x08 }, // (Offset,Value)-Pair #10 + { 0x11, 0xC2 }, + { 0x12, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetOrientation // ****************************************************************** OOVPA_NO_XREF(IDirectSound_SetOrientation, 3936, 13) // IDirectSound_SetOrientation+0x06 : fld [ebp+0x20] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #1 - { 0x07, 0x45 }, // (Offset,Value)-Pair #2 - { 0x08, 0x20 }, // (Offset,Value)-Pair #3 + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x20 }, // IDirectSound_SetOrientation+0x0C : sub esp, 0x18 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #4 - { 0x0D, 0xEC }, // (Offset,Value)-Pair #5 - { 0x0E, 0x18 }, // (Offset,Value)-Pair #6 + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x18 }, // IDirectSound_SetOrientation+0x18 : add eax, 0xFFFFFFF8 - { 0x18, 0x83 }, // (Offset,Value)-Pair #7 - { 0x19, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x1A, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x18, 0x83 }, + { 0x19, 0xC0 }, + { 0x1A, 0xF8 }, // IDirectSound_SetOrientation+0x1F : neg ecx - { 0x1F, 0xF7 }, // (Offset,Value)-Pair #10 - { 0x20, 0xD9 }, // (Offset,Value)-Pair #11 + { 0x1F, 0xF7 }, + { 0x20, 0xD9 }, // IDirectSound_SetOrientation+0x47 : retn 0x20 - { 0x47, 0xC2 }, // (Offset,Value)-Pair #12 - { 0x48, 0x20 }, // (Offset,Value)-Pair #13 + { 0x47, 0xC2 }, + { 0x48, 0x20 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::CommitDeferredSettingsB +// * CMcpxAPU_Commit3dSettings // ****************************************************************** -OOVPA_XREF(CDirectSound_CommitDeferredSettingsB, 3936, 11, +OOVPA_XREF(CMcpxAPU_Commit3dSettings, 3936, 11, - XREF_COMMITDEFERREDSETTINGSB, + XREF_CMcpxAPU_Commit3dSettings, XRefZero) - // CDirectSound_CommitDeferredSettingsB+0x56 : fld dword ptr [eax+0x174] - { 0x56, 0xD9 }, // (Offset,Value)-Pair #1 - { 0x57, 0x80 }, // (Offset,Value)-Pair #2 - { 0x58, 0x74 }, // (Offset,Value)-Pair #3 - { 0x59, 0x01 }, // (Offset,Value)-Pair #4 - { 0x5A, 0x00 }, // (Offset,Value)-Pair #5 - { 0x5B, 0x00 }, // (Offset,Value)-Pair #6 + // CMcpxAPU_Commit3dSettings+0x56 : fld dword ptr [eax+0x174] + { 0x56, 0xD9 }, + { 0x57, 0x80 }, + { 0x58, 0x74 }, + { 0x59, 0x01 }, + { 0x5A, 0x00 }, + { 0x5B, 0x00 }, - // CDirectSound_CommitDeferredSettingsB+0xA8 : fsubp st(1), st - { 0xA8, 0xDE }, // (Offset,Value)-Pair #7 - { 0xA9, 0xE9 }, // (Offset,Value)-Pair #8 + // CMcpxAPU_Commit3dSettings+0xA8 : fsubp st(1), st + { 0xA8, 0xDE }, + { 0xA9, 0xE9 }, - // CDirectSound_CommitDeferredSettingsB+0xD4 : mov esi, 0x118 - { 0xD4, 0xBE }, // (Offset,Value)-Pair #9 - { 0xD5, 0x18 }, // (Offset,Value)-Pair #10 - { 0xD6, 0x01 }, // (Offset,Value)-Pair #11 + // CMcpxAPU_Commit3dSettings+0xD4 : mov esi, 0x118 + { 0xD4, 0xBE }, + { 0xD5, 0x18 }, + { 0xD6, 0x01 }, OOVPA_END; - -// ****************************************************************** -// * CDirectSound::CommitDeferredSettingsA -// ****************************************************************** -OOVPA_XREF(CDirectSound_CommitDeferredSettingsA, 3936, 10, - - XREF_COMMITDEFERREDSETTINGSA, - XRefOne) - - // CDirectSound_CommitDeferredSettingsA+0x12 : call [CDirectSound::CommitDeferredSettingsB] - XREF_ENTRY( 0x12, XREF_COMMITDEFERREDSETTINGSB ), // (Offset,Value)-Pair #1 - - // CDirectSound_CommitDeferredSettingsA+0x0C : mov ecx, [eax+0x0C] - { 0x0C, 0x8B }, // (Offset,Value)-Pair #2 - { 0x0D, 0x48 }, // (Offset,Value)-Pair #3 - { 0x0E, 0x0C }, // (Offset,Value)-Pair #4 - - // CDirectSound_CommitDeferredSettingsA+0x0F : push 0 - { 0x0F, 0x6A }, // (Offset,Value)-Pair #5 - { 0x10, 0x00 }, // (Offset,Value)-Pair #6 - - // CDirectSound_CommitDeferredSettingsA+0x19 : jz +0x0B - { 0x19, 0x74 }, // (Offset,Value)-Pair #7 - { 0x1A, 0x0B }, // (Offset,Value)-Pair #8 - - // CDirectSound_CommitDeferredSettingsA+0x28 : retn 0x04 - { 0x28, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x29, 0x04 }, // (Offset,Value)-Pair #10 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound_CommitDeferredSettings // ****************************************************************** -OOVPA_XREF(CDirectSound_CommitDeferredSettings, 3936, 8, +OOVPA_XREF(CDirectSound_CommitDeferredSettings, 3936, 10, + + XREF_CDirectSound_CommitDeferredSettings, + XRefOne) + + // CDirectSound_CommitDeferredSettings+0x12 : call [CMcpxAPU_Commit3dSettings] + XREF_ENTRY( 0x12, XREF_CMcpxAPU_Commit3dSettings ), + + // CDirectSound_CommitDeferredSettings+0x0C : mov ecx, [eax+0x0C] + { 0x0C, 0x8B }, + { 0x0D, 0x48 }, + { 0x0E, 0x0C }, + + // CDirectSound_CommitDeferredSettings+0x0F : push 0 + { 0x0F, 0x6A }, + { 0x10, 0x00 }, + + // CDirectSound_CommitDeferredSettings+0x19 : jz +0x0B + { 0x19, 0x74 }, + { 0x1A, 0x0B }, + + // CDirectSound_CommitDeferredSettings+0x28 : retn 0x04 + { 0x28, 0xC2 }, + { 0x29, 0x04 }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * IDirectSound_CommitDeferredSettings +// ****************************************************************** +OOVPA_XREF(IDirectSound_CommitDeferredSettings, 3936, 8, XRefNoSaveIndex, XRefOne) - // CDirectSound_CommitDeferredSettings+0x11 : call [CDirectSound::CommitDeferredSettingsA] - XREF_ENTRY( 0x11, XREF_COMMITDEFERREDSETTINGSA ), // (Offset,Value)-Pair #1 + // IDirectSound_CommitDeferredSettings+0x11 : call [CDirectSound_CommitDeferredSettings] + XREF_ENTRY( 0x11, XREF_CDirectSound_CommitDeferredSettings ), - // CDirectSound_CommitDeferredSettings+0x06 : and eax, 0xFFFFFFF8 - { 0x06, 0x83 }, // (Offset,Value)-Pair #2 - { 0x07, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x08, 0xF8 }, // (Offset,Value)-Pair #4 + // IDirectSound_CommitDeferredSettings+0x06 : and eax, 0xFFFFFFF8 + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xF8 }, - // CDirectSound_CommitDeferredSettings+0x09 : neg ecx - { 0x09, 0xF7 }, // (Offset,Value)-Pair #5 - { 0x0A, 0xD9 }, // (Offset,Value)-Pair #6 + // IDirectSound_CommitDeferredSettings+0x09 : neg ecx + { 0x09, 0xF7 }, + { 0x0A, 0xD9 }, - // CDirectSound_CommitDeferredSettings+0x15 : retn 0x04 - { 0x15, 0xC2 }, // (Offset,Value)-Pair #7 - { 0x16, 0x04 }, // (Offset,Value)-Pair #8 + // IDirectSound_CommitDeferredSettings+0x15 : retn 0x04 + { 0x15, 0xC2 }, + { 0x16, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_Release // ****************************************************************** OOVPA_NO_XREF(IDirectSound_Release, 3936, 10) // IDirectSound_Release+0x04 : lea ecx, [eax-8] - { 0x04, 0x8D }, // (Offset,Value)-Pair #1 - { 0x05, 0x48 }, // (Offset,Value)-Pair #2 - { 0x06, 0xF8 }, // (Offset,Value)-Pair #3 + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xF8 }, // IDirectSound_Release+0x07 : neg eax - { 0x07, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x08, 0xD8 }, // (Offset,Value)-Pair #5 + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, // IDirectSound_Release+0x10 : call dword ptr [ecx+8] - { 0x10, 0xFF }, // (Offset,Value)-Pair #6 - { 0x11, 0x51 }, // (Offset,Value)-Pair #7 - { 0x12, 0x08 }, // (Offset,Value)-Pair #8 + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x08 }, // IDirectSound_Release+0x13 : retn 0x04 - { 0x13, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x14, 0x04 }, // (Offset,Value)-Pair #10 + { 0x13, 0xC2 }, + { 0x14, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetDistanceFactorB +// * CMcpxAPU_Set3dDistanceFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetDistanceFactorB, 3936, 13, +OOVPA_XREF(CMcpxAPU_Set3dDistanceFactor, 3936, 13, - XREF_SETDISTANCEFACTORB, + XREF_CMcpxAPU_Set3dDistanceFactor, XRefZero) - // CDirectSound_SetDistanceFactorB+0x04 : or dword ptr [ecx+0x01B4], 0x60 - { 0x04, 0x83 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0xB4 }, // (Offset,Value)-Pair #3 - { 0x07, 0x01 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x60 }, // (Offset,Value)-Pair #7 + // CMcpxAPU_Set3dDistanceFactor+0x04 : or dword ptr [ecx+0x01B4], 0x60 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0xB4 }, + { 0x07, 0x01 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x60 }, - // CDirectSound_SetDistanceFactorB+0x0B : cmp [esp+0x08], 0 - { 0x0B, 0x83 }, // (Offset,Value)-Pair #8 - { 0x0C, 0x7C }, // (Offset,Value)-Pair #9 - { 0x0D, 0x24 }, // (Offset,Value)-Pair #10 - { 0x0E, 0x08 }, // (Offset,Value)-Pair #11 + // CMcpxAPU_Set3dDistanceFactor+0x0B : cmp [esp+0x08], 0 + { 0x0B, 0x83 }, + { 0x0C, 0x7C }, + { 0x0D, 0x24 }, + { 0x0E, 0x08 }, - // CDirectSound_SetDistanceFactorB+0x12 : mov [ecx+0x0178], eax - { 0x12, 0x78 }, // (Offset,Value)-Pair #12 - { 0x13, 0x01 }, // (Offset,Value)-Pair #13 + // CMcpxAPU_Set3dDistanceFactor+0x12 : mov [ecx+0x0178], eax + { 0x12, 0x78 }, + { 0x13, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetDistanceFactorA +// * CDirectSound_SetDistanceFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetDistanceFactorA, 3936, 12, +OOVPA_XREF(CDirectSound_SetDistanceFactor, 3936, 12, - XREF_SETDISTANCEFACTORA, + XREF_CDirectSound_SetDistanceFactor, XRefOne) - // CDirectSound_SetDistanceFactorA+0x23 : call [CDirectSound::SetDistanceFactorB] - XREF_ENTRY( 0x23, XREF_SETDISTANCEFACTORB ), // (Offset,Value)-Pair #1 + // CDirectSound_SetDistanceFactor+0x23 : call [CMcpxAPU_Set3dDistanceFactor] + XREF_ENTRY( 0x23, XREF_CMcpxAPU_Set3dDistanceFactor ), - // CDirectSound_SetDistanceFactorA+0x00 : push esi; push edi - { 0x00, 0x56 }, // (Offset,Value)-Pair #2 - { 0x01, 0x57 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetDistanceFactor+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, - // CDirectSound_SetDistanceFactorA+0x07 : fld [esp+0x10] - { 0x07, 0xD9 }, // (Offset,Value)-Pair #4 - { 0x08, 0x44 }, // (Offset,Value)-Pair #5 - { 0x09, 0x24 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x10 }, // (Offset,Value)-Pair #7 + // CDirectSound_SetDistanceFactor+0x07 : fld [esp+0x10] + { 0x07, 0xD9 }, + { 0x08, 0x44 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, - // CDirectSound_SetDistanceFactorA+0x11 : not eax; and eax, 1 - { 0x11, 0xF7 }, // (Offset,Value)-Pair #8 - { 0x12, 0xD0 }, // (Offset,Value)-Pair #9 - { 0x13, 0x83 }, // (Offset,Value)-Pair #10 - { 0x14, 0xE0 }, // (Offset,Value)-Pair #11 - { 0x15, 0x01 }, // (Offset,Value)-Pair #12 + // CDirectSound_SetDistanceFactor+0x11 : not eax; and eax, 1 + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetDistanceFactor // ****************************************************************** @@ -2659,85 +2647,88 @@ OOVPA_XREF(IDirectSound_SetDistanceFactor, 3936, 11, // TODO: Tentative (may not be SetDistanceFactor) - // IDirectSound_SetDistanceFactor+0x1D : call [CDirectSound::SetDistanceFactorA] - XREF_ENTRY( 0x1D, XREF_SETDISTANCEFACTORA ), // (Offset,Value)-Pair #1 + // IDirectSound_SetDistanceFactor+0x1D : call [CDirectSound_SetDistanceFactor] + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetDistanceFactor ), // IDirectSound_SetDistanceFactor+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetDistanceFactor+0x0C : push ecx - { 0x0C, 0x51 }, // (Offset,Value)-Pair #6 + { 0x0C, 0x51 }, // IDirectSound_SetDistanceFactor+0x12 : add eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #7 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_SetDistanceFactor+0x21 : retn 0x0C - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x0C }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetRolloffFactorB +// * CMcpxAPU_Set3dRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetRolloffFactorB, 3936, 13, +OOVPA_XREF(CMcpxAPU_Set3dRolloffFactor, 3936, 13, - XREF_SETROLLOFFFACTORB, + XREF_CMcpxAPU_Set3dRolloffFactor, XRefZero) - // CDirectSound_SetRolloffFactorB+0x04 : or dword ptr [ecx+0x01B4], 0x60 - { 0x04, 0x83 }, // (Offset,Value)-Pair #1 - { 0x05, 0x89 }, // (Offset,Value)-Pair #2 - { 0x06, 0xB4 }, // (Offset,Value)-Pair #3 - { 0x07, 0x01 }, // (Offset,Value)-Pair #4 - { 0x08, 0x00 }, // (Offset,Value)-Pair #5 - { 0x09, 0x00 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x04 }, // (Offset,Value)-Pair #7 + // CMcpxAPU_Set3dRolloffFactor+0x04 : or dword ptr [ecx+0x01B4], 0x60 + { 0x04, 0x83 }, + { 0x05, 0x89 }, + { 0x06, 0xB4 }, + { 0x07, 0x01 }, + { 0x08, 0x00 }, + { 0x09, 0x00 }, + { 0x0A, 0x04 }, - // CDirectSound_SetRolloffFactorB+0x0B : cmp [esp+0x08], 0 - { 0x0B, 0x83 }, // (Offset,Value)-Pair #8 - { 0x0C, 0x7C }, // (Offset,Value)-Pair #9 - { 0x0D, 0x24 }, // (Offset,Value)-Pair #10 - { 0x0E, 0x08 }, // (Offset,Value)-Pair #11 + // CMcpxAPU_Set3dRolloffFactor+0x0B : cmp [esp+0x08], 0 + { 0x0B, 0x83 }, + { 0x0C, 0x7C }, + { 0x0D, 0x24 }, + { 0x0E, 0x08 }, - // CDirectSound_SetRolloffFactorB+0x12 : mov [ecx+0x017C], eax - { 0x12, 0x7C }, // (Offset,Value)-Pair #12 - { 0x13, 0x01 }, // (Offset,Value)-Pair #13 + // CMcpxAPU_Set3dRolloffFactor+0x12 : mov [ecx+0x017C], eax + { 0x12, 0x7C }, + { 0x13, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetRolloffFactorA +// * CDirectSound_SetRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetRolloffFactorA, 3936, 12, +OOVPA_XREF(CDirectSound_SetRolloffFactor, 3936, 12, - XREF_SETROLLOFFFACTORA, + XREF_CDirectSound_SetRolloffFactor, XRefOne) - // CDirectSound_SetRolloffFactorA+0x23 : call [CDirectSound::SetRolloffFactorB] - XREF_ENTRY( 0x23, XREF_SETROLLOFFFACTORB ), // (Offset,Value)-Pair #1 + // CDirectSound_SetRolloffFactor+0x23 : call [CMcpxAPU_Set3dRolloffFactor] + XREF_ENTRY( 0x23, XREF_CMcpxAPU_Set3dRolloffFactor ), - // CDirectSound_SetRolloffFactorA+0x00 : push esi; push edi - { 0x00, 0x56 }, // (Offset,Value)-Pair #2 - { 0x01, 0x57 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetRolloffFactor+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, - // CDirectSound_SetRolloffFactorA+0x07 : fld [esp+0x10] - { 0x07, 0xD9 }, // (Offset,Value)-Pair #4 - { 0x08, 0x44 }, // (Offset,Value)-Pair #5 - { 0x09, 0x24 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x10 }, // (Offset,Value)-Pair #7 + // CDirectSound_SetRolloffFactor+0x07 : fld [esp+0x10] + { 0x07, 0xD9 }, + { 0x08, 0x44 }, + { 0x09, 0x24 }, + { 0x0A, 0x10 }, - // CDirectSound_SetRolloffFactorA+0x11 : not eax; and eax, 1 - { 0x11, 0xF7 }, // (Offset,Value)-Pair #8 - { 0x12, 0xD0 }, // (Offset,Value)-Pair #9 - { 0x13, 0x83 }, // (Offset,Value)-Pair #10 - { 0x14, 0xE0 }, // (Offset,Value)-Pair #11 - { 0x15, 0x01 }, // (Offset,Value)-Pair #12 + // CDirectSound_SetRolloffFactor+0x11 : not eax; and eax, 1 + { 0x11, 0xF7 }, + { 0x12, 0xD0 }, + { 0x13, 0x83 }, + { 0x14, 0xE0 }, + { 0x15, 0x01 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetRolloffFactor // ****************************************************************** @@ -2748,81 +2739,84 @@ OOVPA_XREF(IDirectSound_SetRolloffFactor, 3936, 11, // TODO: Tentative (may not be SetRolloffFactor) - // IDirectSound_SetRolloffFactor+0x1D : call [CDirectSound::SetRolloffFactorA] - XREF_ENTRY( 0x1D, XREF_SETROLLOFFFACTORA ), // (Offset,Value)-Pair #1 + // IDirectSound_SetRolloffFactor+0x1D : call [CDirectSound_SetRolloffFactor] + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetRolloffFactor ), // IDirectSound_SetRolloffFactor+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetRolloffFactor+0x0C : push ecx - { 0x0C, 0x51 }, // (Offset,Value)-Pair #6 + { 0x0C, 0x51 }, // IDirectSound_SetRolloffFactor+0x12 : add eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #7 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_SetRolloffFactor+0x21 : retn 0x0C - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x0C }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetMixBinHeadroomB +// * CMcpxAPU_SetMixBinHeadroom // ****************************************************************** -OOVPA_XREF(CDirectSound_SetMixBinHeadroomB, 3936, 12, +OOVPA_XREF(CMcpxAPU_SetMixBinHeadroom, 3936, 12, - XREF_DSSETMIXBINHEADROOMB, + XREF_CMcpxAPU_SetMixBinHeadroom, XRefZero) - // CDirectSound_SetMixBinHeadroomB+0x04 : cmp dword ptr ds:[0xFE820010], 4 - { 0x12, 0x83 }, // (Offset,Value)-Pair #1 - { 0x13, 0x3D }, // (Offset,Value)-Pair #2 - { 0x14, 0x10 }, // (Offset,Value)-Pair #3 - { 0x15, 0x00 }, // (Offset,Value)-Pair #4 - { 0x16, 0x82 }, // (Offset,Value)-Pair #5 - { 0x17, 0xFE }, // (Offset,Value)-Pair #6 - { 0x18, 0x04 }, // (Offset,Value)-Pair #7 + // CMcpxAPU_SetMixBinHeadroom+0x04 : cmp dword ptr ds:[0xFE820010], 4 + { 0x12, 0x83 }, + { 0x13, 0x3D }, + { 0x14, 0x10 }, + { 0x15, 0x00 }, + { 0x16, 0x82 }, + { 0x17, 0xFE }, + { 0x18, 0x04 }, - // CDirectSound_SetMixBinHeadroomB+0x1F : and edx, 7 - { 0x1F, 0x83 }, // (Offset,Value)-Pair #8 - { 0x20, 0xE2 }, // (Offset,Value)-Pair #9 - { 0x21, 0x07 }, // (Offset,Value)-Pair #10 + // CMcpxAPU_SetMixBinHeadroom+0x1F : and edx, 7 + { 0x1F, 0x83 }, + { 0x20, 0xE2 }, + { 0x21, 0x07 }, - // CDirectSound_SetMixBinHeadroomB+0x2D : jl +0xD8 - { 0x2D, 0x7C }, // (Offset,Value)-Pair #11 - { 0x2E, 0xD8 }, // (Offset,Value)-Pair #12 + // CMcpxAPU_SetMixBinHeadroom+0x2D : jl +0xD8 + { 0x2D, 0x7C }, + { 0x2E, 0xD8 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetMixBinHeadroomA +// * CDirectSound_SetMixBinHeadroom // ****************************************************************** -OOVPA_XREF(CDirectSound_SetMixBinHeadroomA, 3936, 9, +OOVPA_XREF(CDirectSound_SetMixBinHeadroom, 3936, 9, - XREF_DSSETMIXBINHEADROOMA, + XREF_CDirectSound_SetMixBinHeadroom, XRefOne) - // CDirectSound_SetMixBinHeadroomA+0x19 : call [CDirectSound::SetMixBinHeadroomB] - XREF_ENTRY( 0x19, XREF_DSSETMIXBINHEADROOMB ), // (Offset,Value)-Pair #1 + // CDirectSound_SetMixBinHeadroom+0x19 : call [CMcpxAPU_SetMixBinHeadroom] + XREF_ENTRY( 0x19, XREF_CMcpxAPU_SetMixBinHeadroom ), - // CDirectSound_SetMixBinHeadroomA+0x00 : push esi; push edi - { 0x00, 0x56 }, // (Offset,Value)-Pair #2 - { 0x01, 0x57 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetMixBinHeadroom+0x00 : push esi; push edi + { 0x00, 0x56 }, + { 0x01, 0x57 }, - // CDirectSound_SetMixBinHeadroomA+0x07 : push [esp+0x14] - { 0x07, 0xFF }, // (Offset,Value)-Pair #4 - { 0x08, 0x74 }, // (Offset,Value)-Pair #5 - { 0x09, 0x24 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x14 }, // (Offset,Value)-Pair #7 + // CDirectSound_SetMixBinHeadroom+0x07 : push [esp+0x14] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x14 }, - // CDirectSound_SetMixBinHeadroomA+0x21 : jz +0x0B - { 0x21, 0x74 }, // (Offset,Value)-Pair #8 - { 0x22, 0x0B }, // (Offset,Value)-Pair #9 + // CDirectSound_SetMixBinHeadroom+0x21 : jz +0x0B + { 0x21, 0x74 }, + { 0x22, 0x0B }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetMixBinHeadroom // ****************************************************************** @@ -2831,83 +2825,86 @@ OOVPA_XREF(IDirectSound_SetMixBinHeadroom, 3936, 12, XRefNoSaveIndex, XRefOne) - // IDirectSound_SetMixBinHeadroom+0x19 : call [CDirectSound::SetMixBinHeadroomA] - XREF_ENTRY( 0x19, XREF_DSSETMIXBINHEADROOMA ), // (Offset,Value)-Pair #1 + // IDirectSound_SetMixBinHeadroom+0x19 : call [CDirectSound_SetMixBinHeadroom] + XREF_ENTRY( 0x19, XREF_CDirectSound_SetMixBinHeadroom ), // IDirectSound_SetMixBinHeadroom+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetMixBinHeadroom+0x08 : mov ecx, eax - { 0x08, 0x8B }, // (Offset,Value)-Pair #6 - { 0x09, 0xC8 }, // (Offset,Value)-Pair #7 + { 0x08, 0x8B }, + { 0x09, 0xC8 }, // IDirectSound_SetMixBinHeadroom+0x0E : add eax, 0xFFFFFFF8 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #8 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #9 - { 0x10, 0xF8 }, // (Offset,Value)-Pair #10 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xF8 }, // IDirectSound_SetMixBinHeadroom+0x1D : retn 0x0C - { 0x1D, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x1E, 0x0C }, // (Offset,Value)-Pair #12 + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetPositionB +// * CMcpxAPU_Set3dPosition // ****************************************************************** -OOVPA_XREF(CDirectSound_SetPositionB, 3936, 12, +OOVPA_XREF(CMcpxAPU_Set3dPosition, 3936, 12, - XREF_DSSETPOSITIONB, + XREF_CMcpxAPU_Set3dPosition, XRefZero) - // CDirectSound_SetPositionB+0x0C : movsd; movsd; movsd - { 0x0C, 0xA5 }, // (Offset,Value)-Pair #1 - { 0x0D, 0xA5 }, // (Offset,Value)-Pair #2 - { 0x0E, 0xA5 }, // (Offset,Value)-Pair #3 + // CMcpxAPU_Set3dPosition+0x0C : movsd; movsd; movsd + { 0x0C, 0xA5 }, + { 0x0D, 0xA5 }, + { 0x0E, 0xA5 }, - // CDirectSound_SetPositionB+0x0F : or byte ptr [ecx+0x01B4], 0xFF - { 0x0F, 0x80 }, // (Offset,Value)-Pair #4 - { 0x10, 0x89 }, // (Offset,Value)-Pair #5 - { 0x11, 0xB4 }, // (Offset,Value)-Pair #6 - { 0x12, 0x01 }, // (Offset,Value)-Pair #7 - { 0x13, 0x00 }, // (Offset,Value)-Pair #8 - { 0x14, 0x00 }, // (Offset,Value)-Pair #9 - { 0x15, 0xFF }, // (Offset,Value)-Pair #10 + // CMcpxAPU_Set3dPosition+0x0F : or byte ptr [ecx+0x01B4], 0xFF + { 0x0F, 0x80 }, + { 0x10, 0x89 }, + { 0x11, 0xB4 }, + { 0x12, 0x01 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0xFF }, - // CDirectSound_SetPositionB+0x28 : retn 0x08 - { 0x28, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x29, 0x08 }, // (Offset,Value)-Pair #12 + // CMcpxAPU_Set3dPosition+0x28 : retn 0x08 + { 0x28, 0xC2 }, + { 0x29, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetPositionA +// * CDirectSound_SetPosition // ****************************************************************** -OOVPA_XREF(CDirectSound_SetPositionA, 3936, 10, +OOVPA_XREF(CDirectSound_SetPosition, 3936, 10, - XREF_DSSETPOSITIONA, + XREF_CDirectSound_SetPosition, XRefOne) - // CDirectSound_SetPositionA+0x35 : call [CDirectSound::SetPositionB] - XREF_ENTRY( 0x35, XREF_DSSETPOSITIONB ), // (Offset,Value)-Pair #1 + // CDirectSound_SetPosition+0x35 : call [CMcpxAPU_Set3dPosition] + XREF_ENTRY( 0x35, XREF_CMcpxAPU_Set3dPosition ), - // CDirectSound_SetPositionA+0x06 : push esi; push edi - { 0x06, 0x56 }, // (Offset,Value)-Pair #2 - { 0x07, 0x57 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetPosition+0x06 : push esi; push edi + { 0x06, 0x56 }, + { 0x07, 0x57 }, - // CDirectSound_SetPositionA+0x24 : not eax; and eax, 1 - { 0x24, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x25, 0xD0 }, // (Offset,Value)-Pair #5 - { 0x26, 0x83 }, // (Offset,Value)-Pair #6 - { 0x27, 0xE0 }, // (Offset,Value)-Pair #7 - { 0x28, 0x01 }, // (Offset,Value)-Pair #8 + // CDirectSound_SetPosition+0x24 : not eax; and eax, 1 + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, - // CDirectSound_SetPositionA+0x4F : retn 0x14 - { 0x4F, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x50, 0x14 }, // (Offset,Value)-Pair #10 + // CDirectSound_SetPosition+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetPosition // ****************************************************************** @@ -2916,82 +2913,85 @@ OOVPA_XREF(IDirectSound_SetPosition, 3936, 11, XRefNoSaveIndex, XRefOne) - // IDirectSound_SetPosition+0x2D : call [CDirectSound::SetPositionA] - XREF_ENTRY( 0x2D, XREF_DSSETPOSITIONA ), // (Offset,Value)-Pair #1 + // IDirectSound_SetPosition+0x2D : call [CDirectSound_SetPosition] + XREF_ENTRY( 0x2D, XREF_CDirectSound_SetPosition ), // IDirectSound_SetPosition+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, // IDirectSound_SetPosition+0x0C : sub esp, 0x0C - { 0x0C, 0x83 }, // (Offset,Value)-Pair #5 - { 0x0D, 0xEC }, // (Offset,Value)-Pair #6 - { 0x0E, 0x0C }, // (Offset,Value)-Pair #7 + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, // IDirectSound_SetPosition+0x1B : neg ecx - { 0x1B, 0xF7 }, // (Offset,Value)-Pair #8 - { 0x1C, 0xD9 }, // (Offset,Value)-Pair #9 + { 0x1B, 0xF7 }, + { 0x1C, 0xD9 }, // IDirectSound_SetPosition+0x32 : retn 0x14 - { 0x32, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x33, 0x14 }, // (Offset,Value)-Pair #11 + { 0x32, 0xC2 }, + { 0x33, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetVelocityB +// * CMcpxAPU_Set3dVelocity // ****************************************************************** -OOVPA_XREF(CDirectSound_SetVelocityB, 3936, 12, +OOVPA_XREF(CMcpxAPU_Set3dVelocity, 3936, 12, - XREF_DSSETVELOCITYB, + XREF_CMcpxAPU_Set3dVelocity, XRefZero) - // CDirectSound_SetVelocityB+0x0C : movsd; movsd; movsd - { 0x0C, 0xA5 }, // (Offset,Value)-Pair #1 - { 0x0D, 0xA5 }, // (Offset,Value)-Pair #2 - { 0x0E, 0xA5 }, // (Offset,Value)-Pair #3 + // CMcpxAPU_Set3dVelocity+0x0C : movsd; movsd; movsd + { 0x0C, 0xA5 }, + { 0x0D, 0xA5 }, + { 0x0E, 0xA5 }, - // CDirectSound_SetVelocityB+0x0F : or dword ptr [ecx+0x01B4], 0x40 - { 0x0F, 0x83 }, // (Offset,Value)-Pair #4 - { 0x10, 0x89 }, // (Offset,Value)-Pair #5 - { 0x11, 0xB4 }, // (Offset,Value)-Pair #6 - { 0x12, 0x01 }, // (Offset,Value)-Pair #7 - { 0x13, 0x00 }, // (Offset,Value)-Pair #8 - { 0x14, 0x00 }, // (Offset,Value)-Pair #9 - { 0x15, 0x40 }, // (Offset,Value)-Pair #10 + // CMcpxAPU_Set3dVelocity+0x0F : or dword ptr [ecx+0x01B4], 0x40 + { 0x0F, 0x83 }, + { 0x10, 0x89 }, + { 0x11, 0xB4 }, + { 0x12, 0x01 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x40 }, - // CDirectSound_SetVelocityB+0x28 : retn 0x08 - { 0x28, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x29, 0x08 }, // (Offset,Value)-Pair #12 + // CMcpxAPU_Set3dVelocity+0x28 : retn 0x08 + { 0x28, 0xC2 }, + { 0x29, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * CDirectSound::SetVelocityA +// * CDirectSound_SetVelocity // ****************************************************************** -OOVPA_XREF(CDirectSound_SetVelocityA, 3936, 10, +OOVPA_XREF(CDirectSound_SetVelocity, 3936, 10, - XREF_DSSETVELOCITYA, + XREF_CDirectSound_SetVelocity, XRefOne) - // CDirectSound_SetVelocityA+0x35 : call [CDirectSound::SetVelocityB] - XREF_ENTRY( 0x35, XREF_DSSETVELOCITYB ), // (Offset,Value)-Pair #1 + // CDirectSound_SetVelocity+0x35 : call [CMcpxAPU_Set3dVelocity] + XREF_ENTRY( 0x35, XREF_CMcpxAPU_Set3dVelocity ), - // CDirectSound_SetVelocityA+0x06 : push esi; push edi - { 0x06, 0x56 }, // (Offset,Value)-Pair #2 - { 0x07, 0x57 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetVelocity+0x06 : push esi; push edi + { 0x06, 0x56 }, + { 0x07, 0x57 }, - // CDirectSound_SetVelocityA+0x24 : not eax; and eax, 1 - { 0x24, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x25, 0xD0 }, // (Offset,Value)-Pair #5 - { 0x26, 0x83 }, // (Offset,Value)-Pair #6 - { 0x27, 0xE0 }, // (Offset,Value)-Pair #7 - { 0x28, 0x01 }, // (Offset,Value)-Pair #8 + // CDirectSound_SetVelocity+0x24 : not eax; and eax, 1 + { 0x24, 0xF7 }, + { 0x25, 0xD0 }, + { 0x26, 0x83 }, + { 0x27, 0xE0 }, + { 0x28, 0x01 }, - // CDirectSound_SetVelocityA+0x4F : retn 0x14 - { 0x4F, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x50, 0x14 }, // (Offset,Value)-Pair #10 + // CDirectSound_SetVelocity+0x4F : retn 0x14 + { 0x4F, 0xC2 }, + { 0x50, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetVelocity // ****************************************************************** @@ -3000,139 +3000,112 @@ OOVPA_XREF(IDirectSound_SetVelocity, 3936, 11, XRefNoSaveIndex, XRefOne) - // IDirectSound_SetVelocity+0x2D : call [CDirectSound::SetVelocityA] - XREF_ENTRY( 0x2D, XREF_DSSETVELOCITYA ), // (Offset,Value)-Pair #1 + // IDirectSound_SetVelocity+0x2D : call [CDirectSound_SetVelocity] + XREF_ENTRY( 0x2D, XREF_CDirectSound_SetVelocity ), // IDirectSound_SetVelocity+0x06 : fld [ebp+0x14] - { 0x06, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x07, 0x45 }, // (Offset,Value)-Pair #3 - { 0x08, 0x14 }, // (Offset,Value)-Pair #4 + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, // IDirectSound_SetVelocity+0x0C : sub esp, 0x0C - { 0x0C, 0x83 }, // (Offset,Value)-Pair #5 - { 0x0D, 0xEC }, // (Offset,Value)-Pair #6 - { 0x0E, 0x0C }, // (Offset,Value)-Pair #7 + { 0x0C, 0x83 }, + { 0x0D, 0xEC }, + { 0x0E, 0x0C }, // IDirectSound_SetVelocity+0x1B : neg ecx - { 0x1B, 0xF7 }, // (Offset,Value)-Pair #8 - { 0x1C, 0xD9 }, // (Offset,Value)-Pair #9 + { 0x1B, 0xF7 }, + { 0x1C, 0xD9 }, // IDirectSound_SetVelocity+0x32 : retn 0x14 - { 0x32, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x33, 0x14 }, // (Offset,Value)-Pair #11 + { 0x32, 0xC2 }, + { 0x33, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911, Was ?SetI3DL2Listener@CMcpxAPU@@QAEJABU_DSI3DL2LISTENER@@H@Z. // ****************************************************************** // * CDirectSound::SetAllParametersB // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParametersB, 3936, 13, - XREF_DSSETALLPARAMETERSB, + XREF_CMcpxAPU_Set3dParameters, XRefZero) // CDirectSound_SetAllParametersB+0x08 : push 0x0C; pop ecx - { 0x08, 0x6A }, // (Offset,Value)-Pair #1 - { 0x09, 0x0C }, // (Offset,Value)-Pair #2 - { 0x0A, 0x59 }, // (Offset,Value)-Pair #3 + { 0x08, 0x6A }, + { 0x09, 0x0C }, + { 0x0A, 0x59 }, // CDirectSound_SetAllParametersB+0x13 : or word ptr [ecx+0x01B4], 0x0180 - { 0x13, 0x66 }, // (Offset,Value)-Pair #4 - { 0x14, 0x81 }, // (Offset,Value)-Pair #5 - { 0x15, 0x88 }, // (Offset,Value)-Pair #6 - { 0x16, 0xB4 }, // (Offset,Value)-Pair #7 - { 0x17, 0x01 }, // (Offset,Value)-Pair #8 - { 0x18, 0x00 }, // (Offset,Value)-Pair #9 - { 0x1A, 0x80 }, // (Offset,Value)-Pair #10 - { 0x1B, 0x01 }, // (Offset,Value)-Pair #11 + { 0x13, 0x66 }, + { 0x14, 0x81 }, + { 0x15, 0x88 }, + { 0x16, 0xB4 }, + { 0x17, 0x01 }, + { 0x18, 0x00 }, + { 0x1A, 0x80 }, + { 0x1B, 0x01 }, // CDirectSound_SetAllParametersB+0x30 : retn 0x08 - { 0x30, 0xC2 }, // (Offset,Value)-Pair #12 - { 0x31, 0x08 }, // (Offset,Value)-Pair #13 + { 0x30, 0xC2 }, + { 0x31, 0x08 }, OOVPA_END; - +#endif +#if 0 // Was ?SetI3DL2Listener@CDirectSound@@QAGJPBU_DSI3DL2LISTENER@@K@Z. replaced by CDirectSound_SetI3DL2Listener. // ****************************************************************** // * CDirectSound::SetAllParametersA // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParametersA, 3936, 10, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefOne) // CDirectSound_SetAllParametersA+0x2F : call [CDirectSound::SetAllParametersB] - XREF_ENTRY( 0x2F, XREF_DSSETALLPARAMETERSB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x2F, XREF_CMcpxAPU_Set3dParameters ), // CDirectSound_SetAllParametersA+0x00 : push esi; push edi - { 0x00, 0x56 }, // (Offset,Value)-Pair #2 - { 0x01, 0x57 }, // (Offset,Value)-Pair #3 + { 0x00, 0x56 }, + { 0x01, 0x57 }, // CDirectSound_SetAllParametersA+0x21 : not ecx; and ecx, 1 - { 0x21, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x22, 0xD1 }, // (Offset,Value)-Pair #5 - { 0x23, 0x83 }, // (Offset,Value)-Pair #6 - { 0x24, 0xE1 }, // (Offset,Value)-Pair #7 - { 0x25, 0x01 }, // (Offset,Value)-Pair #8 + { 0x21, 0xF7 }, + { 0x22, 0xD1 }, + { 0x23, 0x83 }, + { 0x24, 0xE1 }, + { 0x25, 0x01 }, // CDirectSound_SetAllParametersA+0x48 : retn 0x0C - { 0x48, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x49, 0x0C }, // (Offset,Value)-Pair #10 + { 0x48, 0xC2 }, + { 0x49, 0x0C }, OOVPA_END; - -// ****************************************************************** -// * IDirectSound8_SetAllParameters -// ****************************************************************** -OOVPA_XREF(IDirectSound8_SetAllParameters, 3936, 12, - - XRefNoSaveIndex, - XRefOne) - - // IDirectSound8_SetAllParameters+0x19 : call [CDirectSound::SetAllParametersA] - XREF_ENTRY( 0x19, XREF_DSSETALLPARAMETERSA ), // (Offset,Value)-Pair #1 - - // IDirectSound8_SetAllParameters+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 - - // IDirectSound8_SetAllParameters+0x0E : add eax, 0xFFFFFFF8 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x10, 0xF8 }, // (Offset,Value)-Pair #8 - - // IDirectSound8_SetAllParameters+0x13 : sbb ecx, ecx - { 0x13, 0x1B }, // (Offset,Value)-Pair #9 - { 0x14, 0xC9 }, // (Offset,Value)-Pair #10 - - // IDirectSound8_SetAllParameters+0x1D : retn 0x0C - { 0x1D, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x1E, 0x0C }, // (Offset,Value)-Pair #12 -OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_DownloadEffectsImage // ****************************************************************** OOVPA_NO_XREF(IDirectSound_DownloadEffectsImage, 3936, 11) // IDirectSound_DownloadEffectsImage+0x03 : push [ebp+0x18] - { 0x03, 0xFF }, // (Offset,Value)-Pair #1 - { 0x04, 0x75 }, // (Offset,Value)-Pair #2 - { 0x05, 0x18 }, // (Offset,Value)-Pair #3 + { 0x03, 0xFF }, + { 0x04, 0x75 }, + { 0x05, 0x18 }, // IDirectSound_DownloadEffectsImage+0x06 : mov eax, [ebp+0x08] - { 0x06, 0x8B }, // (Offset,Value)-Pair #4 - { 0x07, 0x45 }, // (Offset,Value)-Pair #5 - { 0x08, 0x08 }, // (Offset,Value)-Pair #6 + { 0x06, 0x8B }, + { 0x07, 0x45 }, + { 0x08, 0x08 }, // IDirectSound_DownloadEffectsImage+0x11 : add eax, 0xFFFFFFF8 - { 0x11, 0x83 }, // (Offset,Value)-Pair #7 - { 0x12, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x13, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x11, 0x83 }, + { 0x12, 0xC0 }, + { 0x13, 0xF8 }, // IDirectSound_DownloadEffectsImage+0x24 : retn 0x14 - { 0x24, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x25, 0x14 }, // (Offset,Value)-Pair #11 + { 0x24, 0xC2 }, + { 0x25, 0x14 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetMode // ****************************************************************** @@ -3142,21 +3115,22 @@ OOVPA_XREF(CDirectSoundStream_SetMode, 3936, 7, XRefOne) // CDirectSoundStream_SetMode+0x10 : call [CDirectSoundVoice::SetMode] - XREF_ENTRY( 0x11, XREF_DSBUFFERSETMODEA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMode ), // CDirectSoundStream_SetMode+0x0C : add eax, 4 - { 0x0C, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0D, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x0E, 0x04 }, // (Offset,Value)-Pair #4 + { 0x0C, 0x83 }, + { 0x0D, 0xC0 }, + { 0x0E, 0x04 }, // CDirectSoundStream_SetMode+0x0F : push eax - { 0x0F, 0x50 }, // (Offset,Value)-Pair #6 + { 0x0F, 0x50 }, // CDirectSoundBuffer8_SetMode+0x15 : retn 0x0C - { 0x15, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x16, 0x0C }, // (Offset,Value)-Pair #10 + { 0x15, 0xC2 }, + { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * public: long __thiscall DirectSound::CMcpxBuffer::Play(unsigned long) // ****************************************************************** @@ -3175,7 +3149,8 @@ OOVPA_XREF(CMcpxBuffer_Play, 3925, 9, { 0x2F, 0x8B }, { 0x36, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxAPU::Set3dDopplerFactor // ****************************************************************** @@ -3192,13 +3167,14 @@ OOVPA_XREF(CMcpxAPU_Set3dDopplerFactor, 3936, 7, { 0x1F, 0x33 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::SetDopplerFactor // ****************************************************************** OOVPA_XREF(CDirectSound_SetDopplerFactor, 3936, 9, - XREF_SETDOPPLERFACTOR, + XREF_CDirectSound_SetDopplerFactor, XRefOne) XREF_ENTRY( 0x23, XREF_CMcpxAPU_Set3dDopplerFactor ), @@ -3212,7 +3188,8 @@ OOVPA_XREF(CDirectSound_SetDopplerFactor, 3936, 9, { 0x38, 0x8B }, { 0x3E, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetDopplerFactor // ****************************************************************** @@ -3221,7 +3198,7 @@ OOVPA_XREF(IDirectSound_SetDopplerFactor, 3936, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x1D, XREF_SETDOPPLERFACTOR ), + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetDopplerFactor ), { 0x03, 0x0C }, { 0x08, 0x8B }, @@ -3231,7 +3208,8 @@ OOVPA_XREF(IDirectSound_SetDopplerFactor, 3936, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CSensaura3d::GetFullHRTFFilterPair // ****************************************************************** @@ -3248,7 +3226,7 @@ OOVPA_XREF(CSensaura3d_GetFullHRTFFilterPair, 3925, 7, { 0xA2, 0xD9 }, { 0xBE, 0x09 }, OOVPA_END; - +#endif // ****************************************************************** // * CSensaura3d::GetFullHRTFFilterPair // ****************************************************************** @@ -3267,7 +3245,7 @@ OOVPA_XREF(CSensaura3d_GetFullHRTFFilterPair, 3936, 9, { 0xAC, 0xD8 }, { 0xAD, 0x05 }, OOVPA_END; - +#if 0 // Moved to 3911 // ****************************************************************** // * DirectSoundUseFullHRTF // ****************************************************************** @@ -3286,7 +3264,8 @@ OOVPA_XREF(DirectSoundUseFullHRTF, 3925, 8, { 0x18, 0xFF }, { 0x1E, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::GetCaps // ****************************************************************** @@ -3304,7 +3283,8 @@ OOVPA_XREF(CDirectSound_GetCaps, 3936, 8, { 0x48, 0x8B }, { 0x4E, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_GetCaps // ****************************************************************** @@ -3323,7 +3303,8 @@ OOVPA_XREF(IDirectSound_GetCaps, 3936, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by CDirectSoundVoice_SetPitch 3936 version // ****************************************************************** // * CDirectSoundVoice::SetPitch // ****************************************************************** @@ -3341,7 +3322,8 @@ OOVPA_XREF(CDirectSoundVoice_SetPitch, 3936, 8, { 0x30, 0x8B }, { 0x36, 0x00 }, OOVPA_END; -/* +#endif +#if 0 // No longer used, replaced by another 3936 version // ****************************************************************** // * IDirectSoundBuffer_SetPitch // ****************************************************************** @@ -3360,13 +3342,14 @@ OOVPA_XREF(IDirectSoundBuffer_SetPitch, 3936, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; -*/ +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundVoice::SetConeAngles // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 3936, 8, - XREF_DSVOICESETCONEANGLES, + XREF_CDirectSoundVoice_SetConeAngles, XRefZero) { 0x07, 0x8B }, @@ -3378,7 +3361,8 @@ OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 3936, 8, { 0x38, 0x8B }, { 0x3E, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetConeAngles // ****************************************************************** @@ -3387,7 +3371,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeAngles, 3936, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x1D, XREF_DSVOICESETCONEANGLES ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundVoice_SetConeAngles ), { 0x03, 0x10 }, { 0x08, 0xFF }, @@ -3397,7 +3381,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeAngles, 3936, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * DirectSoundEnterCriticalSection // ****************************************************************** @@ -3414,7 +3399,8 @@ OOVPA_XREF(DirectSoundEnterCriticalSection, 3936, 7, { 0x1A, 0x33 }, { 0x1B, 0xC0 }, OOVPA_END; - +#endif +#if 0 // Replaced with 3911 revision // ****************************************************************** // * CDirectSoundBuffer::PlayEx // ****************************************************************** @@ -3434,7 +3420,8 @@ OOVPA_XREF(CDirectSoundBuffer_PlayEx, 3936, 9, { 0x30, 0xFF }, { 0x36, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_PlayEx // ****************************************************************** @@ -3453,35 +3440,37 @@ OOVPA_XREF(IDirectSoundBuffer_PlayEx, 3936, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_AddRef // ****************************************************************** OOVPA_NO_XREF(IDirectSound_AddRef, 3936, 12) // IDirectSound_AddRef+0x04 : lea ecx, [eax-8] - { 0x04, 0x8D }, // (Offset,Value)-Pair #1 - { 0x05, 0x48 }, // (Offset,Value)-Pair #2 - { 0x06, 0xF8 }, // (Offset,Value)-Pair #3 + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xF8 }, // IDirectSound_AddRef+0x07 : neg eax - { 0x07, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x08, 0xD8 }, // (Offset,Value)-Pair #5 + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, // IDirectSound_AddRef+0x09 : sbb eax, eax - { 0x09, 0x1B }, // (Offset,Value)-Pair #6 - { 0x0A, 0xC0 }, // (Offset,Value)-Pair #7 + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, // IDirectSound_AddRef+0x0D : mov ecx, [eax] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #8 - { 0x0E, 0x08 }, // (Offset,Value)-Pair #9 + { 0x0D, 0x8B }, + { 0x0E, 0x08 }, // IDirectSound_AddRef+0x10 : call dword ptr [ecx+4] - { 0x10, 0xFF }, // (Offset,Value)-Pair #10 - { 0x11, 0x51 }, // (Offset,Value)-Pair #11 - { 0x12, 0x04 }, // (Offset,Value)-Pair #12 + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * DirectSoundGetSampleTime // ****************************************************************** @@ -3494,29 +3483,31 @@ OOVPA_NO_XREF(DirectSoundGetSampleTime, 3936, 6) { 0x04, 0xFE }, { 0x05, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_AddRef // ****************************************************************** OOVPA_NO_XREF(IDirectSoundBuffer_AddRef, 3936, 10) // IDirectSoundBuffer_AddRef+0x04 : lea ecx, [eax-0x1C] - { 0x04, 0x8D }, // (Offset,Value)-Pair #1 - { 0x05, 0x48 }, // (Offset,Value)-Pair #2 - { 0x06, 0xE4 }, // (Offset,Value)-Pair #3 + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xE4 }, // IDirectSoundBuffer_AddRef+0x07 : neg eax; sbb eax, eax - { 0x07, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x08, 0xD8 }, // (Offset,Value)-Pair #5 - { 0x09, 0x1B }, // (Offset,Value)-Pair #6 - { 0x0A, 0xC0 }, // (Offset,Value)-Pair #7 + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, // IDirectSoundBuffer_AddRef+0x10 : call dword ptr [ecx+0x04] - { 0x10, 0xFF }, // (Offset,Value)-Pair #8 - { 0x11, 0x51 }, // (Offset,Value)-Pair #9 - { 0x12, 0x04 }, // (Offset,Value)-Pair #10 + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::SetMinDistance // ****************************************************************** @@ -3525,7 +3516,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 3936, 9, XREF_CDirectSoundBuffer_SetMinDistance, XRefOne) - XREF_ENTRY( 0x11, XREF_DSSTREAMSETMINDISTANCE1B ), + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMinDistance ), { 0x01, 0x74 }, { 0x04, 0xD9 }, @@ -3536,11 +3527,12 @@ OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 3936, 9, { 0x15, 0xC2 }, { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMinDistance // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 3936, 8, +OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 3911, 8, XRefNoSaveIndex, XRefOne) @@ -3555,7 +3547,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 3936, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::SetMaxDistance // ****************************************************************** @@ -3564,7 +3557,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 3936, 9, XREF_CDirectSoundBuffer_SetMaxDistance, XRefOne) - XREF_ENTRY( 0x11, XREF_DSSTREAMSETMAXDISTANCE1B ), + XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMaxDistance ), { 0x01, 0x74 }, { 0x04, 0xD9 }, @@ -3575,11 +3568,12 @@ OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 3936, 9, { 0x15, 0xC2 }, { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMaxDistance // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 3936, 8, +OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 3911, 8, XRefNoSaveIndex, XRefOne) @@ -3594,7 +3588,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 3936, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxVoiceClient::Commit3dSettings // ****************************************************************** @@ -3617,7 +3612,8 @@ OOVPA_XREF(CMcpxVoiceClient_Commit3dSettings, 3936, 10, { 0x3E, 0xB1 }, { 0x3F, 0x11 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxVoiceClient::SetI3DL2Source // ****************************************************************** @@ -3634,7 +3630,8 @@ OOVPA_XREF(CMcpxVoiceClient_SetI3DL2Source, 3936, 7, { 0x22, 0x8B }, { 0x29, 0x33 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundVoice::SetI3DL2Source // ****************************************************************** @@ -3654,7 +3651,8 @@ OOVPA_XREF(CDirectSoundVoice_SetI3DL2Source, 3936, 9, { 0x2E, 0xFF }, { 0x36, 0x5F }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetI3DL2Source // ****************************************************************** @@ -3674,7 +3672,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 3936, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundVoice::SetMixBinVolumes // ****************************************************************** @@ -3691,11 +3690,12 @@ OOVPA_XREF(CDirectSoundVoice_SetMixBinVolumes, 3936, 7, { 0x58, 0x83 }, { 0x67, 0x15 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** -// * IDirectSoundBuffer_SetMixBinVolumes +// * IDirectSoundBuffer_SetMixBinVolumes_12 // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes, 3936, 9, +OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes_12, 3911, 9, XRefNoSaveIndex, XRefOne) @@ -3711,13 +3711,14 @@ OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes, 3936, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CMcpxAPU::Set3dParameters // ****************************************************************** OOVPA_XREF(CMcpxAPU_Set3dParameters, 3936, 7, - XREF_DSSETALLPARAMETERSB, + XREF_CMcpxAPU_Set3dParameters, XRefZero) { 0x05, 0x57 }, @@ -3728,16 +3729,17 @@ OOVPA_XREF(CMcpxAPU_Set3dParameters, 3936, 7, { 0x2C, 0x33 }, { 0x2F, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::SetAllParameters // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParameters, 3936, 9, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefOne) - XREF_ENTRY( 0x1F, XREF_DSSETALLPARAMETERSB ), + XREF_ENTRY( 0x1F, XREF_CMcpxAPU_Set3dParameters ), { 0x00, 0x56 }, { 0x07, 0x8B }, @@ -3748,7 +3750,8 @@ OOVPA_XREF(CDirectSound_SetAllParameters, 3936, 9, { 0x2E, 0xFF }, { 0x36, 0x5F }, OOVPA_END; - +#endif +#if 0 // Replaced with generic OOVPA // ****************************************************************** // * IDirectSound_SetAllParameters // ****************************************************************** @@ -3757,7 +3760,7 @@ OOVPA_XREF(IDirectSound_SetAllParameters, 3936, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSSETALLPARAMETERSA ), + XREF_ENTRY( 0x19, XREF_CDirectSound_SetAllParameters ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -3768,13 +3771,14 @@ OOVPA_XREF(IDirectSound_SetAllParameters, 3936, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::SetI3DL2Listener // ****************************************************************** OOVPA_XREF(CDirectSound_SetI3DL2Listener, 3936, 7, - XREF_DSSETI3DL2LISTENER, + XREF_CDirectSound_SetI3DL2Listener, XRefZero) { 0x08, 0xF8 }, @@ -3785,7 +3789,8 @@ OOVPA_XREF(CDirectSound_SetI3DL2Listener, 3936, 7, { 0x3E, 0xFF }, { 0x44, 0x5F }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSound_SetI3DL2Listener // ****************************************************************** @@ -3794,7 +3799,7 @@ OOVPA_XREF(IDirectSound_SetI3DL2Listener, 3936, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSSETI3DL2LISTENER ), + XREF_ENTRY( 0x19, XREF_CDirectSound_SetI3DL2Listener ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -3805,7 +3810,8 @@ OOVPA_XREF(IDirectSound_SetI3DL2Listener, 3936, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSound::EnableHeadphones // ****************************************************************** @@ -3821,7 +3827,8 @@ OOVPA_XREF(CDirectSound_EnableHeadphones, 3936, 7, { 0x9A, 0x76 }, { 0xB4, 0x5B }, OOVPA_END; - +#endif +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_EnableHeadphones // ****************************************************************** @@ -3840,13 +3847,14 @@ OOVPA_XREF(IDirectSound_EnableHeadphones, 3936, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream::SetMixBinVolumes // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes, 3936, 9, +OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes_12, 3936, 9, - XREF_CDirectSoundStream_SetMixBinVolumes, + XREF_CDirectSoundStream_SetMixBinVolumes_12, XRefOne) XREF_ENTRY( 0x11, XREF_CDirectSoundVoice_SetMixBinVolumes ), @@ -3860,7 +3868,8 @@ OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes, 3936, 9, { 0x15, 0xC2 }, { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream::SetI3DL2Source // ****************************************************************** @@ -3880,7 +3889,8 @@ OOVPA_XREF(CDirectSoundStream_SetI3DL2Source, 3936, 9, { 0x15, 0xC2 }, { 0x16, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundBuffer::SetNotificationPositions // ****************************************************************** @@ -3897,7 +3907,8 @@ OOVPA_XREF(CDirectSoundBuffer_SetNotificationPositions, 3936, 7, { 0x40, 0x07 }, { 0x4D, 0x5F }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetNotificationPositions // ****************************************************************** @@ -3917,7 +3928,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetNotificationPositions, 3936, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream::Pause // ****************************************************************** @@ -3930,158 +3942,275 @@ OOVPA_NO_XREF(CDirectSoundStream_Pause, 3936, 6) { 0x10, 0xC2 }, { 0x11, 0x08 }, OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * CDirectSoundBuffer::SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetConeOrientation, 3936, 11, + + XREF_CDirectSoundBuffer_SetConeOrientation, + XRefOne) + + XREF_ENTRY( 0x21, XREF_CDirectSoundVoice_SetConeOrientation ), + + // CDirectSoundBuffer_SetConeOrientation+0x1A : fstp [esp+8h] + { 0x0C, 0xD9 }, + { 0x0D, 0x5C }, + { 0x0E, 0x24 }, + { 0x0F, 0x08 }, + + // CDirectSoundBuffer_SetConeOrientation+0x1A : fstp [esp] + { 0x1A, 0xD9 }, + { 0x1B, 0x1C }, + { 0x1C, 0x24 }, + + // CDirectSoundBuffer_SetConeOrientation+0x26 : ret 14h + { 0x26, 0xC2 }, + { 0x27, 0x14 }, + { 0x28, 0x00 }, +OOVPA_END; +#endif +#if 0 // Moved to 3911 +// ****************************************************************** +// * IDirectSoundBuffer_SetConeOrientation +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetConeOrientation, 3936, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetConeOrientation+0x2C : call [CDirectSoundBuffer::SetConeOrientation] + XREF_ENTRY(0x2D, XREF_CDirectSoundBuffer_SetConeOrientation), + + // IDirectSoundBuffer_SetConeOrientation+0x06 : fld [ebp+arg_C] + { 0x06, 0xD9 }, + { 0x07, 0x45 }, + { 0x08, 0x14 }, + + // IDirectSoundBuffer_SetConeOrientation+0x28 : fstp [esp+10h+var_10] + { 0x28, 0xD9 }, + { 0x29, 0x1C }, + { 0x2A, 0x24 }, + + // IDirectSoundBuffer_SetConeOrientation+0x32 : retn 14h + { 0x33, 0x14 }, + { 0x34, 0x00 } +OOVPA_END; +#endif + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Flush, 3936, 15, + XREF_CMcpxStream_Flush, + XRefZero) + + { 0x08, 0xF6 }, + { 0x12, 0xF6 }, + + { 0x22, 0x33 }, + { 0x24, 0x33 }, + + { 0x2F, 0x83 }, + { 0x30, 0xFF }, + { 0x31, 0x03 }, + + { 0x4D, 0xE8 }, + + //CMcpxStream_Flush+0x54 : e__,0x80004004 (unique value) + { 0x55, 0x04 }, + { 0x56, 0x40 }, + { 0x57, 0x00 }, + { 0x58, 0x80 }, + + { 0x5F, 0xE8 }, + + + { 0xA1, 0xC9 }, + { 0xA2, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CSensaura3d_GetLiteHRTFFilterPair +// ****************************************************************** +OOVPA_XREF(CSensaura3d_GetLiteHRTFFilterPair, 3936, 10, + + XREF_CSensaura3d_GetLiteHRTFFilterPair, + XRefZero) + + //CSensaura3d_GetLiteHRTFFilterPair+0x00 : push ebp + { 0x00, 0x55 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x14 : push ecx + { 0x15, 0x51 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x22 : push 3 + { 0x1F, 0x6A }, + { 0x20, 0x03 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x22 : idiv eax, ecx + { 0x22, 0xF7 }, + { 0x23, 0xF9 }, + + //CSensaura3d_GetLiteHRTFFilterPair+0x24 : cmp dword ptr [ebp+10h], 0 + { 0x36, 0x83 }, + { 0x37, 0x7D }, + { 0x38, 0x10 }, + { 0x39, 0x00 }, +OOVPA_END; // ****************************************************************** // * DSound_3936 // ****************************************************************** OOVPATable DSound_3936[] = { - REGISTER_OOVPA(DirectSoundCreate, 3936, PATCH), - REGISTER_OOVPA(DirectSoundDoWorkB, 3936, XREF), - REGISTER_OOVPA(DirectSoundDoWorkA, 3936, XREF), - REGISTER_OOVPA(DirectSoundDoWork, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 3936, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 3936, XREF), - REGISTER_OOVPA(IDirectSound_CreateBuffer, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitchB, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitchA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_GetStatus, 3936, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolumeB, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolumeA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPositionB, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPositionA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegionA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_LockA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroomA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetBufferDataA, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetMixBins, 3936, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 3936, XREF), - REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition2, 3936, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Play, 3925, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_Play, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Play, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_Stop, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetVolume, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetConeAnglesB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeAnglesA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeAngles, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetConeOutsideVolumeB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeOutsideVolumeA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeOutsideVolume, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_Set3dParameters, 3936, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetAllParameters, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMaxDistanceC, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMaxDistanceB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMaxDistanceA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMaxDistance, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMinDistanceC, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMinDistanceB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMinDistanceA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMinDistance, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetVelocityC, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetVelocityB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetVelocityA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetVelocity, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetConeOrientationC, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeOrientationB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeOrientationA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetPositionC, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetPositionB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetPositionA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetPosition, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFrequencyB, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFrequencyA, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_Set3dMode, 3936, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMode, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettingsB, 3936, XREF), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettingsA, 3936, XREF), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorB, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetRolloffFactorB, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetRolloffFactorA, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetMixBinHeadroomB, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetMixBinHeadroomA, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetPositionB, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetPositionA, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetVelocityB, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetVelocityA, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH), - REGISTER_OOVPA(CMcpxAPU_Set3dParameters, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetAllParameters, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMode, 3936, PATCH), - REGISTER_OOVPA(CMcpxAPU_Set3dDopplerFactor, 3936, XREF), - REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3936, PATCH), - REGISTER_OOVPA(CSensaura3d_GetFullHRTFFilterPair, 3925, XREF), + REGISTER_OOVPA(DirectSoundCreate, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_ServiceDeferredCommandsLow, 3911, XREF), + REGISTER_OOVPA(CDirectSound_DoWork, 3911, XREF), + REGISTER_OOVPA(DirectSoundDoWork, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 3911, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 3911, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetPitch, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_GetStatus, 3911, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 3911, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Lock, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetMixBins, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 3911, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Play, 3911, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Play, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Play, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetVolume, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetConeAngles, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dConeOutsideVolume, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetConeOutsideVolume, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetConeOutsideVolume, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dParameters, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetAllParameters, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dMaxDistance, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetMaxDistance, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundStream_SetMaxDistance, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dMinDistance, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetMinDistance, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundStream_SetMinDistance, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dVelocity, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetVelocity, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundStream_SetVelocity, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dConeOrientation, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetConeOrientation, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundStream_SetConeOrientation, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dPosition, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetPosition, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetPosition, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundStream_SetPosition, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3911, PATCH), + REGISTER_OOVPA(XAudioCalculatePitch, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Set3dMode, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMode, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Commit3dSettings, 3911, XREF), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 3911, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Set3dDistanceFactor, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Set3dRolloffFactor, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_SetMixBinHeadroom, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Set3dPosition, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetPosition, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Set3dVelocity, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetVelocity, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetVelocity, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Set3dParameters, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetAllParameters, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMode, 3911, PATCH), + REGISTER_OOVPA(CMcpxAPU_Set3dDopplerFactor, 3911, XREF), + REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CSensaura3d_GetFullHRTFFilterPair, 3911, XREF), REGISTER_OOVPA(CSensaura3d_GetFullHRTFFilterPair, 3936, XREF), - REGISTER_OOVPA(DirectSoundUseFullHRTF, 3925, PATCH), - REGISTER_OOVPA(CDirectSound_GetCaps, 3936, XREF), - REGISTER_OOVPA(IDirectSound_GetCaps, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 3936, PATCH), - REGISTER_OOVPA(DirectSoundEnterCriticalSection, 3936, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), - REGISTER_OOVPA(DirectSoundGetSampleTime, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_Commit3dSettings, 3936, XREF), - REGISTER_OOVPA(CMcpxVoiceClient_SetI3DL2Source, 3936, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 3936, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetI3DL2Source, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_EnableHeadphones, 3936, XREF), - REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundStream_Pause, 3936, PATCH), + REGISTER_OOVPA(DirectSoundUseFullHRTF, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 3911, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 3911, PATCH), + REGISTER_OOVPA(DirectSoundEnterCriticalSection, 3911, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), + REGISTER_OOVPA(DirectSoundGetSampleTime, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_Commit3dSettings, 3911, XREF), + REGISTER_OOVPA(CMcpxVoiceClient_SetI3DL2Source, 3911, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 3911, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetI3DL2Source, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_12, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 3911, XREF), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_EnableHeadphones, 3911, XREF), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes_12, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_Pause, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetConeOrientation, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetConeOutsideVolume, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl new file mode 100644 index 000000000..fdb9115a7 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl @@ -0,0 +1,3702 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->DSound.1.0.4039.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 RadWolfie +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * DirectSoundCreate +// ****************************************************************** +OOVPA_NO_XREF(DirectSoundCreate, 4039, 9) + // DirectSoundCreate+0x0B : mov esi, eax + { 0x0B, 0x8B }, + { 0x0C, 0xF0 }, + + // DirectSoundCreate+0x11 : call [addr] + { 0x11, 0xE8 }, + + // DirectSoundCreate+0x1A : jl +0x13 + { 0x1A, 0x7C }, + { 0x1B, 0x13 }, + + // DirectSoundCreate+0x26 : sbb ecx, ecx + { 0x26, 0x1B }, + { 0x27, 0xC9 }, + + // DirectSoundCreate+0x43 : retn 0x0C + { 0x43, 0xC2 }, + { 0x44, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundCreateBuffer +// ****************************************************************** +OOVPA_XREF(DirectSoundCreateBuffer, 4039, 11, + + XRefNoSaveIndex, + XRefOne) + + // DirectSoundCreateBuffer+0x2B : call [CDirectSound::CreateSoundBuffer] + XREF_ENTRY(0x2C, XREF_CDirectSound_CreateSoundBuffer), + + // DirectSoundCreateBuffer+0x04 : and [ebp-0x04], 0 + { 0x04, 0x83 }, + { 0x05, 0x65 }, + { 0x06, 0xFC }, + + // DirectSoundCreateBuffer+0x08 : push esi; push edi + { 0x08, 0x56 }, + { 0x09, 0x57 }, + + // DirectSoundCreateBuffer+0x32 : lea eax, [ebp-0x04] + { 0x32, 0x8D }, + { 0x33, 0x45 }, + { 0x34, 0xFC }, + + // DirectSoundCreateBuffer+0x4F : retn 0x08 + { 0x4F, 0xC2 }, + { 0x50, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::CreateSoundBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSound_CreateSoundBuffer, 4039, 15, + + XREF_CDirectSound_CreateSoundBuffer, + XRefZero) + // CDirectSound_CreateSoundBuffer+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_CreateSoundBuffer+0x25 : mov eax, 0x80004005 + { 0x25, 0xB8 }, + { 0x26, 0x05 }, + { 0x27, 0x40 }, + { 0x29, 0x80 }, + + // CDirectSound_CreateSoundBuffer+0x2E : push 0x24 + { 0x2E, 0x6A }, + { 0x2F, 0x24 }, + + // CDirectSound_CreateSoundBuffer+0x4C : add esi, 0x7FF8FFF2 + { 0x4C, 0x81 }, + { 0x4D, 0xE6 }, + { 0x4E, 0xF2 }, + { 0x4F, 0xFF }, + { 0x50, 0xF8 }, + { 0x51, 0x7F }, + + // CDirectSound_CreateSoundBuffer+0x9C : retn 0x10 + { 0x9C, 0xC2 }, + { 0x9D, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_DoWork +// ****************************************************************** +OOVPA_XREF(CDirectSound_DoWork, 4039, 13, + + XREF_CDirectSound_DoWork, + XRefZero) + + // CDirectSound_DoWork+0x0D : mov esi, eax + { 0x0D, 0x8B }, + { 0x0E, 0xF0 }, + + // CDirectSound_DoWork+0x0F : jnz +0x0C + { 0x0F, 0x75 }, + { 0x10, 0x0C }, + + // CDirectSound_DoWork+0x11 : mov eax, [esp+4+arg_0] + { 0x11, 0x8B }, + { 0x12, 0x44 }, + { 0x13, 0x24 }, + { 0x14, 0x08 }, + + // CDirectSound_DoWork+0x15 : mov ecx, [eax+0Ch] + { 0x15, 0x8B }, + { 0x16, 0x48 }, + { 0x17, 0x0C }, + + // CDirectSound_DoWork+0x24 : retn 0x04 + { 0x2D, 0xC2 }, + { 0x2E, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetLoopRegion +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetLoopRegion, 4039, 16, + + XREF_CDirectSoundBuffer_SetLoopRegion, + XRefZero) + + // CDirectSoundBuffer_SetLoopRegion+0x23 : mov eax, 0x80004005 + { 0x23, 0xB8 }, // Was 4134 Offset -0x01h + { 0x24, 0x05 }, + { 0x25, 0x40 }, + { 0x26, 0x00 }, + { 0x27, 0x80 }, + + // CDirectSoundBuffer_SetLoopRegion+0x3C : lea ebx, [esi+ecx] + { 0x3C, 0x8D }, + { 0x3D, 0x1C }, + { 0x3E, 0x0E }, + + // CDirectSoundBuffer_SetLoopRegion+0x3F : cmp ebx, [eax+148h] + { 0x3F, 0x3B }, // Was 4134 Offset 0x40 cmp ebx, [eax+0C4h] + { 0x40, 0x98 }, + + // CDirectSoundBuffer_SetLoopRegion+0x5D : mov [eax+150h], ecx + { 0x61, 0x00 }, + { 0x62, 0x00 }, + + // CDirectSoundBuffer_SetLoopRegion+0x63 : mov ecx, [edx+20h] + { 0x63, 0x8B }, + { 0x64, 0x4A }, + { 0x65, 0x20 }, + + // CDirectSoundBuffer_SetLoopRegion+0x66 : call CMcpxBuffer_SetLoopRegion + { 0x66, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetDistanceFactor +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetDistanceFactor, 4039, 17, + + XREF_CDirectSound_SetDistanceFactor, + XRefZero) + + // CDirectSound_SetDistanceFactor+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSound_SetDistanceFactor+0x32 : mov [eax+48h], edx + { 0x32, 0x89 }, + { 0x33, 0x50 }, + { 0x34, 0x48 }, // Value is CDirectSound_SetDistanceFactor +0x00h + + // CDirectSound_SetDistanceFactor+0x35 : mov eax, [ecx+8] + { 0x35, 0x8B }, + { 0x36, 0x41 }, + { 0x37, 0x08 }, + + // CDirectSound_SetDistanceFactor+0x38 : or dword ptr [eax+84h], 60h + { 0x38, 0x83 }, + { 0x39, 0x88 }, + { 0x3A, 0x84 }, // 4039 0x84 vs 4134 0xA4 + { 0x3E, 0x60 }, + + // CDirectSound_SetDistanceFactor+0x4E : jz +0x0B + { 0x4E, 0x74 }, + { 0x4F, 0x0B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetRolloffFactor +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetRolloffFactor, 4039, 17, + + XREF_CDirectSound_SetRolloffFactor, + XRefZero) + + // CDirectSound_SetRolloffFactor+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSound_SetRolloffFactor+0x33 : mov [eax+4Ch], edx + { 0x32, 0x89 }, + { 0x33, 0x50 }, + { 0x34, 0x4C }, // Value is CDirectSound_SetDistanceFactor +0x04h + + // CDirectSound_SetRolloffFactor+0x36 : mov eax, [ecx+8] + { 0x35, 0x8B }, + { 0x36, 0x41 }, + { 0x37, 0x08 }, + + // CDirectSound_SetRolloffFactor+0x39 : or dword ptr[eax+0x84], 0x04 + { 0x38, 0x83 }, + { 0x39, 0x88 }, + { 0x3A, 0x84 }, // 4039 0x84 vs 4134 0xA4 + { 0x3E, 0x04 }, + + // CDirectSound_SetRolloffFactor+0x4E : jz +0x0B + { 0x4E, 0x74 }, + { 0x4F, 0x0B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetDopplerFactor +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetDopplerFactor, 4039, 14, + + XREF_CDirectSound_SetDopplerFactor, + XRefZero) + + // CDirectSound_SetDopplerFactor+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSound_SetDopplerFactor+0x32 : mov [eax+0x50], edx + { 0x32, 0x89 }, + { 0x33, 0x50 }, + { 0x34, 0x50 }, // Value is CDirectSound_SetDistanceFactor+ 0x08h + + // CDirectSound_SetDopplerFactor+0x38 : or dword ptr[eax+0x84], 0x40 + { 0x38, 0x83 }, + { 0x39, 0x88 }, + { 0x3A, 0x84 }, // 4039 0x84 vs 4134 0xA4 + { 0x3E, 0x40 }, + + // CDirectSound_SetDopplerFactor+0x4E : jz +0x0B + { 0x4E, 0x74 }, + { 0x4F, 0x0B }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient_SetVolume +// ****************************************************************** +// Verified with Agent Under Fire title. +OOVPA_XREF(CMcpxVoiceClient_SetVolume, 4039, 13, + + XREF_CMcpxVoiceClient_SetVolume, + XRefZero) + + // CMcpxVoiceClient_SetVolume+0x15 : test byte ptr [esi+90h], 1 + { 0x15, 0xF6 }, + { 0x16, 0x86 }, + { 0x17, 0x90 }, + { 0x18, 0x00 }, + { 0x19, 0x00 }, + { 0x1A, 0x00 }, + { 0x1B, 0x01 }, + + // CMcpxVoiceClient_SetVolume+0x1C : jz +0x75 + { 0x1C, 0x74 }, + { 0x1D, 0x75 }, + + // CMcpxVoiceClient_SetVolume+0x73 : mov edx, [ebp+eax*4-0x14] + { 0x73, 0x8B }, // Was 4134 Offset -0x07h + { 0x74, 0x54 }, + { 0x75, 0x85 }, + { 0x76, 0xEC }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetVolume +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(CDirectSoundVoice_SetVolume, 4039, 13, + + XREF_CDirectSoundVoice_SetVolume, + XRefOne) + + // CDirectSoundVoice_SetVolume+0x15 : call [CMcpxVoiceClient::SetVolume] + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetVolume ), + + // CDirectSoundVoice_SetVolume+0x04 : mov eax, [ecx+10h] + { 0x04, 0x8B }, + { 0x05, 0x41 }, + { 0x06, 0x10 }, + + // CDirectSoundVoice_SetVolume+0x07 : mov edx, [esp+arg_4] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x08 }, + + // CDirectSoundVoice_SetVolume+0x0B : sub edx, [eax+28h] + { 0x0B, 0x2B }, + { 0x0C, 0x50 }, + { 0x0D, 0x28 }, // 4039 0x28 vs 4134 0x20 + + // CDirectSoundVoice_SetVolume+0x19 : retn 8 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetVolume +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(CDirectSoundBuffer_SetVolume, 4039, 10, + + XREF_CDirectSoundBuffer_SetVolume, + XRefOne) + + // CDirectSoundBuffer_SetVolume+0x31 : call [CMcpxVoiceClient::SetVolume] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetVolume ), // Was 4134 Offset -0x01h + + // CDirectSoundBuffer_SetVolume+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetVolume+0x25 : jmp +0x22 + { 0x25, 0xEB }, + { 0x26, 0x22 }, + + // CDirectSoundBuffer_SetVolume+0x2C : push [esp+0x10] + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetVolume+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer::SetVolume +// ****************************************************************** +// Verified with Agent Under Fire. +// Side note: It is compatible down to XDK 3911. Except 3911 is calling to CDirectSoundVoice_SetVolume directly. +OOVPA_XREF(IDirectSoundBuffer_SetVolume, 4039, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetVolume ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetVolume, 4039, 9, + + XREF_CDirectSoundStream_SetVolume, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetVolume ), // Was 4134 Offset -0x01h + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + { 0x4A, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetHeadroom +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 4039, 12, + + XREF_CDirectSoundVoice_SetHeadroom, + XRefZero) + + { 0x00, 0x8B }, + { 0x08, 0x48 }, + { 0x0F, 0x2B }, + + { 0x13, 0x24 }, // 4039 0x24 vs 4134 0x1C + { 0x14, 0x89 }, + { 0x15, 0x70 }, + { 0x16, 0x28 }, // 4039 0x28 vs 4134 0x20 + { 0x17, 0x8B }, + { 0x18, 0x4A }, + { 0x19, 0x0C }, + { 0x1A, 0xE8 }, + + { 0x21, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetHeadroom +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetHeadroom, 4039, 8, + + XREF_CDirectSoundBuffer_SetHeadroom, + XRefOne) + + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetHeadroom ), // Was 4134 Offset -0x01h + + { 0x00, 0x56 }, + { 0x11, 0x85 }, + { 0x1B, 0x15 }, + { 0x25, 0xEB }, + { 0x2F, 0x10 }, + { 0x39, 0x74 }, + { 0x46, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetBufferData +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(CDirectSoundBuffer_SetBufferData, 4039, 16, + + XREF_DSSETBUFFERDATA, + XRefZero) + + // CDirectSoundBuffer_SetBufferData+0x3D : mov eax, 0x80004005 + { 0x3D, 0xB8 }, // Was 4134 Offset -0x03h + { 0x3E, 0x05 }, + { 0x3F, 0x40 }, + { 0x40, 0x00 }, + { 0x41, 0x80 }, + + // CDirectSoundBuffer_SetBufferData+0x48 : mov eax, [esi+1Ch] + { 0x48, 0x8B }, + { 0x49, 0x46 }, + { 0x4A, 0x1C }, + + // CDirectSoundBuffer_SetBufferData+0x4B : cmp ebx, [eax+13Ch] + { 0x4B, 0x3B }, + { 0x4C, 0x98 }, + { 0x4D, 0x3C }, + { 0x4E, 0x01 }, + { 0x4F, 0x00 }, + { 0x50, 0x00 }, + + // CDirectSoundBuffer_SetBufferData+0xA8 : retn 0Ch + { 0xA8, 0xC2 }, + { 0xA9, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundVoice::SetPitch +// ****************************************************************** +// Verified with Agent Under Fire. +// Same as 4134 +// TOOD: CDirectSoundVoice_SetPitch need to be strengthen by using XREF to CMcpxVoiceClient_SetPitch function. +OOVPA_XREF(CDirectSoundVoice_SetPitch, 4039, 6, + + XREF_CDirectSoundVoice_SetPitch, + XRefZero) + + { 0x02, 0x24 }, + { 0x06, 0x10 }, + { 0x0A, 0x08 }, + { 0x0E, 0x8B }, + { 0x16, 0xC2 }, + { 0x17, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetPitch +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetPitch, 4039, 13, + + XREF_CDirectSoundBuffer_SetPitch, + XRefOne) + + // CDirectSoundBuffer_SetPitch+0x31 : call [CDirectSoundVoice::SetPitch] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetPitch ), // Was 4134 Offset -0x01h + + // CDirectSoundBuffer_SetPitch+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetPitch+0x28 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetPitch+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetPitch+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetPitch +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetPitch, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetPitch+0x15 : call [CDirectSoundBuffer_SetPitch] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetPitch ), + + // IDirectSoundBuffer_SetPitch+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetPitch+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetPitch+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetFrequency +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(CDirectSoundVoice_SetFrequency, 4039, 11, + + XREF_CDirectSoundVoice_SetFrequency, + XRefZero) + + // CDirectSoundVoice_SetFrequency+0x0D : mov eax, [esi+0x10] + { 0x0D, 0x8B }, + { 0x0E, 0x46 }, + { 0x0F, 0x10 }, + + // CDirectSoundVoice_SetFrequency+0x10 : mov eax, [eax+0x18] + { 0x10, 0x8B }, + { 0x11, 0x40 }, + { 0x12, 0x18 }, // 4039 0x18 vs 4134 0x10 + + // CDirectSoundVoice_SetFrequency+0x14 : call [abs]; push eax; push esi + { 0x14, 0xE8 }, + { 0x19, 0x50 }, + { 0x1A, 0x56 }, + + // CDirectSoundVoice_SetFrequency+0x22 : retn 0x08 + { 0x21, 0xC2 }, + { 0x22, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetFrequency +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(CDirectSoundBuffer_SetFrequency, 4039, 13, + + XREF_CDirectSoundBuffer_SetFrequency, + XRefOne) + + // CDirectSoundBuffer_SetFrequency+0x31 : call [CDirectSoundVoice::SetFrequency] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetFrequency ), // Was 4134 Offset -0x01h + + // CDirectSoundBuffer_SetFrequency+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetFrequency+0x28 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetFrequency+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetFrequency+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetFrequency +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(IDirectSoundBuffer_SetFrequency, 4039, 12, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetFrequency+0x15 : call [CDirectSound::SetFrequency] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetFrequency), + + // IDirectSoundBuffer_SetFrequency+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetFrequency0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetFrequency+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, + + // IDirectSoundBuffer_SetFrequency+0x11 : and ecx, eax + { 0x11, 0x23 }, + { 0x12, 0xC8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_Stop +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_Stop, 4039, 12, + + XREF_CDirectSoundBuffer_Stop, + XRefZero) + + // CDirectSoundBuffer_Stop+0x33 : call [CMcpxBuffer::Stop] + //XREF_ENTRY( 0x30, XREF_CMcpxBuffer_Stop), //TODO: is this CMcpxBuffer::Stop or something else? + + // CDirectSoundBuffer_Stop+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_Stop+0x2B : mov ecx,[eax+20] + { 0x2B, 0x8B }, + { 0x2C, 0x48 }, + { 0x2D, 0x20 }, + + // CDirectSoundBuffer_Stop+0x38 : jz +0x0B + { 0x38, 0x74 }, + { 0x39, 0x0B }, + + // CDirectSoundBuffer_Stop+0x49 : retn 0x04 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * IDirectSoundBuffer_Stop +// ****************************************************************** +OOVPA_NO_XREF(IDirectSoundBuffer_Stop, 4039, 11) + + // IDirectSoundBuffer_Stop+0x00 : mov eax, [esp+arg_0] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // IDirectSoundBuffer_Stop+0x04 : mov ecx, eax + { 0x04, 0x8B }, + { 0x05, 0xC8 }, + + // IDirectSoundBuffer_Stop+0x06 : add eax, 0FFFFFFE4h + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xE4 }, + + // IDirectSoundBuffer_Stop+0x15 : retn 4 + { 0x16, 0x04 }, + { 0x17, 0x00 } +OOVPA_END; +#endif + +// ****************************************************************** +// * CDirectSound::CommitDeferredSettings +// ****************************************************************** +// Verified with Agent Under Fire. +OOVPA_XREF(CDirectSound_CommitDeferredSettings, 4039, 14, + + XREF_CDirectSound_CommitDeferredSettings, + XRefZero) + + // CDirectSound_CommitDeferredSettings+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_CommitDeferredSettings+0x24 : mov eax, 0x80004005 + { 0x24, 0xB8 }, // Was 4134 Offset -0x03h + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, + + // CDirectSound_CommitDeferredSettings+0x52 : and dword ptr [eax+84h], 0 + { 0x52, 0x83 }, + { 0x53, 0xA0 }, + { 0x54, 0x84 }, + { 0x55, 0x00 }, + { 0x56, 0x00 }, + { 0x57, 0x00 }, + { 0x58, 0x00 }, + + // CDirectSound_CommitDeferredSettings+0x78 : leave + { 0x6F, 0xC9 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::Play +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_Play, 4039, 13, + + XREF_CDirectSoundBuffer_Play, + XRefZero) + + //CDirectSoundBuffer_Play+0x00 : push esi + { 0x00, 0x56 }, + + //CDirectSoundBuffer_Play+0x20 : mov eax, 80004005h + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + //CDirectSoundBuffer_Play+0x2F : mov ecx, dword ptr [esp+18h] + { 0x2F , 0xFF }, + { 0x30 , 0x74 }, + { 0x31 , 0x24 }, + { 0x32 , 0x18 }, + + //CDirectSoundBuffer_Play+0x4D : ret 10h + { 0x4D , 0xC2 }, + { 0x4E , 0x10 }, + { 0x4F , 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_GetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_GetCurrentPosition, 4039, 17, + + XREF_CMcpxBuffer_GetCurrentPosition, + XRefZero) + + // CMcpxBuffer_GetCurrentPosition+0x16 : mov eax, [esi+0x00000090] + { 0x16, 0x8B }, + { 0x17, 0x86 }, + { 0x18, 0x90 }, + { 0x19, 0x00 }, + //{ 0x1A, 0x00 }, + //{ 0x1B, 0x00 }, + + // CMcpxBuffer_GetCurrentPosition+0x21 : jnz +0x00000088 + { 0x21, 0x0F }, + { 0x22, 0x85 }, + { 0x23, 0x88 }, + { 0x24, 0x00 }, + //{ 0x25, 0x00 }, + //{ 0x26, 0x00 }, + + // CMcpxBuffer_GetCurrentPosition+0x8E : div dword ptr [ecx+0x00000140] + { 0xA5, 0xF7 }, + { 0xA6, 0xB1 }, + { 0xA7, 0x40 }, + { 0xA8, 0x01 }, + { 0xA9, 0x00 }, + { 0xAA, 0x00 }, + + // CMcpxBuffer_GetCurrentPosition+0xC8 : retn 0x08 + { 0xDB, 0xC2 }, + { 0xDC, 0x08 }, + { 0xDD, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_GetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_GetCurrentPosition, 4039, 10, + + XREF_CDirectSoundBuffer_GetCurrentPosition, + XRefOne) + + // CDirectSoundBuffer_GetCurrentPosition+0x38 : call [CMcpxBuffer::GetCurrentPosition] + XREF_ENTRY( 0x38, XREF_CMcpxBuffer_GetCurrentPosition), + + // CDirectSoundBuffer_GetCurrentPosition+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_GetCurrentPosition+0x40 : jz +0x0B + { 0x40, 0x74 }, + { 0x41, 0x0B }, + + // CDirectSoundBuffer_GetCurrentPosition+0x51 : retn 0x08 + { 0x51, 0xC2 }, + { 0x52, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_GetStatus +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_GetStatus, 4039, 13, + + XREF_CMcpxBuffer_GetStatus, + XRefZero) + + // CMcpxBuffer_GetStatus+0x14 : mov ecx, [ebp+0x08] + { 0x14, 0x8B }, + { 0x15, 0x4D }, + { 0x16, 0x08 }, + + // CMcpxBuffer_GetStatus+0x1A : xor edx, edx + { 0x1A, 0x33 }, + { 0x1B, 0xD2 }, + + // CMcpxBuffer_GetStatus+0x22 : inc edx + { 0x22, 0x42 }, + + // CMcpxBuffer_GetStatus+0x1C : jz +0x17 + { 0x26, 0x74 }, + { 0x27, 0x15 }, + + // CMcpxBuffer_GetStatus+0x2F : mov [ecx], 5 + { 0x37, 0xC7 }, + { 0x38, 0x01 }, + { 0x39, 0x05 }, + + // CMcpxBuffer_GetStatus+0x48 : retn 0x04 + { 0x48, 0xC2 }, + { 0x49, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_GetStatus +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_GetStatus, 4039, 10, + + XREF_CDirectSoundBuffer_GetStatus, + XRefOne) + + // CDirectSoundBuffer_GetStatus+0x14 : call [CMcpxBuffer::GetStatus] + XREF_ENTRY( 0x34, XREF_CMcpxBuffer_GetStatus), + + // CDirectSoundBuffer_GetStatus+0x2B : mov ecx, [eax+0x20] + { 0x2B, 0x8B }, + { 0x2C, 0x48 }, + { 0x2D, 0x20 }, + + // CDirectSoundBuffer_GetStatus+0x2F : push [esp+0x10] + { 0x2F, 0xFF }, + { 0x30, 0x74 }, + { 0x31, 0x24 }, + { 0x32, 0x10 }, + + // CDirectSoundBuffer_GetStatus+0x4D : retn 0x08 + { 0x4D, 0xC2 }, + { 0x4E, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_Lock +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_Lock, 4039, 13, + + XREF_CDirectSoundBuffer_Lock, + XRefZero) + + // CDirectSoundBuffer_Lock+0x34 : test [ebp+0x24], 1 + { 0x34, 0xF6 }, + { 0x35, 0x45 }, + { 0x36, 0x24 }, + { 0x37, 0x01 }, + + // CDirectSoundBuffer_Lock+0x59 : mov eax, [eax+0x140] + { 0x59, 0x8B }, + { 0x5A, 0x80 }, + { 0x5B, 0x40 }, + { 0x5C, 0x01 }, + + // CDirectSoundBuffer_Lock+0x9F : jnb +0x11; mov esi, [esi+0x1C] + { 0x9F, 0x73 }, + { 0xA0, 0x11 }, + { 0xA1, 0x8B }, + { 0xA2, 0x76 }, + { 0xA3, 0x1C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetPlayRegion +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetPlayRegion, 4039, 13, + + XREF_CDirectSoundBuffer_SetPlayRegion, + XRefZero) + + { 0x00, 0x55 }, + { 0x18, 0x68 }, + { 0x23, 0xB8 }, + + { 0x37, 0x14 }, + { 0x38, 0x8B }, + { 0x39, 0x75 }, + { 0x3A, 0x0C }, + { 0x3B, 0x03 }, + { 0x3C, 0xF0 }, + { 0x3D, 0x3B }, + { 0x3E, 0xB1 }, + + { 0x7C, 0xC2 }, + { 0x7D, 0x0C }, +OOVPA_END; + + +// ****************************************************************** +// * IDirectSoundBuffer_SetPlayRegion +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetPlayRegion, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetPlayRegion+0x19 : call [CDirectSoundBuffer_SetPlayRegion] + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetPlayRegion ), + + // IDirectSoundBuffer_SetPlayRegion+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSoundBuffer_SetPlayRegion+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_SetPlayRegion+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_SetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_SetCurrentPosition, 4039, 9, + + XREF_CMcpxBuffer_SetCurrentPosition, + XRefZero) + + // CMcpxBuffer_SetCurrentPosition+0x11 : lea eax, [esi+90h] + { 0x11, 0x8D }, + { 0x12, 0x86 }, + { 0x13, 0x90 }, + + // CMcpxBuffer_SetCurrentPosition+0x43 : jb +0x10 + { 0x43, 0x72 }, + { 0x44, 0x10 }, + + // CMcpxBuffer_SetCurrentPosition+0x86 : mov eax, [esi+0E4h] + { 0x6A, 0x8B }, + { 0x6B, 0x86 }, + { 0x6C, 0xE4 }, + { 0x6D, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetCurrentPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 4039, 11, + + XREF_CDirectSoundBuffer_SetCurrentPosition, + XRefOne) + + // CDirectSoundBuffer_SetCurrentPosition+0x34 : call [CMcpxBuffer::SetCurrentPosition] + XREF_ENTRY( 0x34, XREF_CMcpxBuffer_SetCurrentPosition), + + // CDirectSoundBuffer_SetCurrentPosition+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetCurrentPosition+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetCurrentPosition+0x3C : jz +0x0B + { 0x3C, 0x74 }, + { 0x3D, 0x0B }, + + // CDirectSoundBuffer_SetCurrentPosition+0x4D : retn 0x08 + { 0x4D, 0xC2 }, + { 0x4E, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CMcpxVoiceClient::SetFilter +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetFilter, 4039, 12, + + XREF_CMcpxVoiceClient_SetFilter, + XRefZero) + + { 0x08, 0xF8 }, + { 0x12, 0xE8 }, + + { 0x20, 0x00 }, + { 0x21, 0x74 }, + { 0x22, 0x13 }, + { 0x23, 0x6A }, + { 0x24, 0x06 }, + { 0x25, 0x59 }, + { 0x26, 0x8D }, + { 0x27, 0x7D }, + + { 0x47, 0x83 }, + { 0x4D, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundVoice::SetFilter +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetFilter, 4039, 7, + + XREF_CDirectSoundVoice_SetFilter, + XRefOne) + + XREF_ENTRY( 0x0C, XREF_CMcpxVoiceClient_SetFilter ), + + { 0x01, 0x44 }, + { 0x04, 0xFF }, + { 0x07, 0x08 }, + { 0x0A, 0x0C }, + { 0x10, 0xC2 }, + { 0x11, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetFilter +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetFilter, 4039, 8, + + XREF_CDirectSoundBuffer_SetFilter, + XRefOne) + + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetFilter ), + + { 0x00, 0x56 }, + { 0x11, 0x85 }, + { 0x1B, 0x15 }, + { 0x25, 0xEB }, + { 0x2F, 0x10 }, + { 0x39, 0x74 }, + { 0x46, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetFilter +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetFilter, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetFilter+0x15 : call [CDirectSoundBuffer_SetFilter] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetFilter), + + // IDirectSoundBuffer_SetFilter+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetFilter+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetFilter+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetFilter +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetFilter, 4039, 9, + + XREF_CDirectSoundStream_SetFilter, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetFilter ), + + { 0x00, 0x56 }, //Prevent incorrect offset difference from 4134 and later revision. + + { 0x0B, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + { 0x4A, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoiceSettings::SetMixBins +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBins, 4039, 13, + + XREF_CDirectSoundVoiceSettings_SetMixBins, + XRefZero) + + // CDirectSoundVoiceSettings_SetMixBins+0x06 : jnz +0x19 + { 0x06, 0x75 }, + { 0x07, 0x19 }, + + // CDirectSoundVoiceSettings_SetMixBins+0x08 : test byte ptr [ecx+8], 0x10 + { 0x08, 0xF6 }, + { 0x09, 0x41 }, + { 0x0A, 0x08 }, + { 0x0B, 0x10 }, + + // CDirectSoundVoiceSettings_SetMixBins+0x18 : shr eax, 1 + { 0x18, 0xD1 }, + { 0x19, 0xE8 }, + + // CDirectSoundVoiceSettings_SetMixBins+0x4E : mov edx, [ecx+2Ch] + { 0x4E, 0x8B }, + { 0x4F, 0x51 }, + { 0x50, 0x2C }, + + // CDirectSoundVoiceSettings_SetMixBins+0x51 : cmp edx, [eax] + { 0x51, 0x3B }, + { 0x52, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMixBins +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMixBins, 4039, 17, + + XREF_CDirectSoundVoice_SetMixBins, + XRefOne) + + // CDirectSoundVoice_SetMixBins+0x0D : call [CDirectSoundVoiceSettings::SetMixBins] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoiceSettings_SetMixBins ), + + // CDirectSoundVoice_SetMixBins+0x01 : mov esi, [esp+8] + { 0x01, 0x8B }, + { 0x02, 0x74 }, + { 0x03, 0x24 }, + { 0x04, 0x08 }, + + // CDirectSoundVoice_SetMixBins+0x05 : push [esp+0x0C] + { 0x05, 0xFF }, + { 0x06, 0x74 }, + { 0x07, 0x24 }, + { 0x08, 0x0C }, + + // CDirectSoundVoice_SetMixBins+0x09 : mov ecx, [esi+0x10] + { 0x09, 0x8B }, + { 0x0A, 0x4E }, + { 0x0B, 0x10 }, + + // CDirectSoundVoice_SetMixBins+0x11 : mov ecx, [esi+0x0C] + { 0x11, 0x8B }, + { 0x12, 0x4E }, + { 0x13, 0x0C }, + + // CDirectSoundVoice_SetMixBins+0x1A : retn 0x08 + { 0x1A, 0xC2 }, + { 0x1B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetMixBins +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetMixBins, 4039, 18, + + XREF_CDirectSoundBuffer_SetMixBins, + XRefOne) + + // CDirectSoundBuffer_SetMixBins+0x31 : call [CDirectSoundVoice::SetMixBins] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetMixBins ), + + // CDirectSoundBuffer_SetMixBins+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetMixBins+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetMixBins+0x29 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetMixBins+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetMixBins+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMixBins +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundBuffer_SetMixBins, 4039, 8, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetMixBins+0x14 : call [CDirectSoundVoice::SetMixBins] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetMixBins ), + + // IDirectSoundBuffer_SetMixBins+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetMixBins+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, + + // IDirectSoundBuffer_SetMixBins+0x11 : and ecx, eax + { 0x11, 0x23 }, + { 0x12, 0xC8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoiceSettings::SetMixBinVolumes +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBinVolumes, 4039, 10, + + XREF_CDirectSoundVoiceSettings_SetMixBinVolumes, + XRefZero) + + // CDirectSoundVoiceSettings_SetMixBinVolumes+0x09 : jbe +0x16 + { 0x09, 0x76 }, + { 0x0A, 0x16 }, + + // CDirectSoundVoiceSettings_SetMixBinVolumes+0x18 : mov [ecx+edi*4+0x50], eax + { 0x18, 0x89 }, + { 0x19, 0x44 }, + { 0x1A, 0xB9 }, + { 0x1B, 0x50 }, // 4039 0x50 vs 4134 0x30 + + // CDirectSoundVoiceSettings_SetMixBinVolumes+0x1E : jb +0xEC + { 0x1E, 0x72 }, + { 0x1F, 0xEC }, + + // CDirectSoundVoiceSettings_SetMixBinVolumes+0x22 : retn 0x04 + { 0x22, 0xC2 }, + { 0x23, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMixBinVolumes +// ****************************************************************** +// Generic OOVPA as of 4039 and newer. +OOVPA_XREF(CDirectSoundVoice_SetMixBinVolumes, 4039, 15, + + XREF_CDirectSoundVoice_SetMixBinVolumes, + XRefTwo) + + // CDirectSoundVoice_SetMixBinVolumes+0x0D : call [CDirectSoundVoiceSettings::SetMixBinVolumes] + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoiceSettings_SetMixBinVolumes ), + + // CDirectSoundVoice_SetMixBinVolumes+0x14 : call [CMcpxVoiceClient::SetVolume] + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetVolume ), + + // CDirectSoundVoice_SetMixBinVolumes+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundVoice_SetMixBinVolumes+0x05 : push [esp+0x0C] + { 0x05, 0xFF }, + { 0x06, 0x74 }, + { 0x07, 0x24 }, + { 0x08, 0x0C }, + + // CDirectSoundVoice_SetMixBinVolumes+0x09 : mov ecx, [esi+0x10] + { 0x09, 0x8B }, + { 0x0A, 0x4E }, + { 0x0B, 0x10 }, + + // CDirectSoundVoice_SetMixBinVolumes+0x11 : mov ecx, [esi+0x0C] + { 0x11, 0x8B }, + { 0x12, 0x4E }, + { 0x13, 0x0C }, + + // CDirectSoundVoice_SetMixBinVolumes+0x1A : retn 0x08 + { 0x1A, 0xC2 }, + { 0x1B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetMixBinVolumes +// ****************************************************************** +//Generic OOVPA as of 4039 and newer +OOVPA_XREF(CDirectSoundBuffer_SetMixBinVolumes, 4039, 18, + + XREF_CDirectSoundBuffer_SetMixBinVolumes, + XRefOne) + + // CDirectSoundBuffer_SetMixBinVolumes+0x31 : call [CDirectSoundVoice::SetMixBinVolumes] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetMixBinVolumes ), + + // CDirectSoundBuffer_SetMixBinVolumes+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetMixBinVolumes+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetMixBinVolumes+0x28 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetMixBinVolumes+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetMixBinVolumes+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMixBinVolumes_8 +// ****************************************************************** +//Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, 12, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetMixBinVolumes_8+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetMixBinVolumes ), + + // IDirectSoundBuffer_SetMixBinVolumes_8+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetMixBinVolumes_8+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetMixBinVolumes_8+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, + + // IDirectSoundBuffer_SetMixBinVolumes_8+0x11 : and ecx, eax + { 0x11, 0x23 }, + { 0x12, 0xC8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMixBinVolumes_8 +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes_8, 4039, 12, + + XREF_CDirectSoundStream_SetMixBinVolumes_8, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetMixBinVolumes ), + + { 0x00, 0x56 }, + + { 0x0C, 0x00 }, + { 0x0D, 0x8B }, + { 0x0E, 0xF0 }, + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::CreateSoundStream +// ****************************************************************** +OOVPA_XREF(CDirectSound_CreateSoundStream, 4039, 15, + + XREF_CDirectSound_CreateSoundStream, + XRefZero) + + // CDirectSound_CreateSoundStream+0x25 : mov eax, 0x80004005 + { 0x25, 0xB8 }, + + // CDirectSound_CreateSoundStream+0x2A : jmp 0x62 + { 0x2A, 0xEB }, + { 0x2B, 0x62 }, + + // CDirectSound_CreateSoundStream+0x2C : push 0x1 + { 0x2C, 0x6A }, + { 0x2D, 0x01 }, + + // CDirectSound_CreateSoundStream+0x2E : push 0x28 + { 0x2E, 0x6A }, + { 0x2F, 0x28 }, + + // CDirectSound_CreateSoundStream+0x4A : add esi, 0x7FF8FFF2 + { 0x4C, 0x81 }, + { 0x4D, 0xE6 }, + { 0x4E, 0xF2 }, + { 0x4F, 0xFF }, + { 0x50, 0xF8 }, + { 0x51, 0x7F }, + + // CDirectSound_CreateSoundStream+0x91 : retn 0x10 + { 0x91, 0xC2 }, + { 0x92, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_StopEx +// ****************************************************************** +// Similar pattern of version 3911 +OOVPA_XREF(CDirectSoundBuffer_StopEx, 4039, 12, + + XREF_CDirectSoundBuffer_StopEx, + XRefZero) + + { 0x00, 0x55 }, + { 0x23, 0xB8 }, + + { 0x49, 0xEB }, + { 0x4A, 0x11 }, + { 0x4B, 0xFF }, + { 0x4C, 0x75 }, + { 0x4D, 0x10 }, + { 0x4E, 0x8B }, + { 0x4F, 0x45 }, + { 0x50, 0x08 }, + + { 0x72, 0xC2 }, + { 0x73, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetLFO +// ****************************************************************** +// Similar pattern of version 3911 +OOVPA_XREF(CMcpxVoiceClient_SetLFO, 4039, 13, + + XREF_CMcpxVoiceClient_SetLFO, + XRefZero) + + { 0x00, 0x55 }, + { 0x25, 0xEB }, + + { 0x57, 0x72 }, + { 0x58, 0xF3 }, + { 0x59, 0x33 }, + { 0x5A, 0xC0 }, + { 0x5B, 0x85 }, + { 0x5C, 0xC9 }, + { 0x5D, 0x76 }, + { 0x5E, 0x62 }, + { 0x5F, 0x8B }, + + { 0xCD, 0xC2 }, + { 0xCE, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetLFO +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetLFO, 4039, 7, + + XREF_CDirectSoundVoice_SetLFO, + XRefOne) + + XREF_ENTRY( 0x0C, XREF_CMcpxVoiceClient_SetLFO ), + + { 0x01, 0x44 }, + { 0x04, 0xFF }, + { 0x07, 0x08 }, + { 0x0A, 0x0C }, + { 0x10, 0xC2 }, + { 0x11, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetLFO +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetLFO, 4039, 18, + + XREF_CDirectSoundBuffer_SetLFO, + XRefOne) + + // CDirectSoundBuffer_SetLFO+0x31 : call [CDirectSoundVoice_SetLFO] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetLFO), + + // CDirectSoundBuffer_SetLFO+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetLFO+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetLFO+0x28 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetLFO+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetLFO+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetLFO +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetLFO, 4039, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetLFO ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetLFO +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetLFO, 4039, 11, + + XREF_CDirectSoundStream_SetLFO, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetLFO ), + + { 0x00, 0x56 }, //Prevent incorrect offset difference from 4134 and later revision. + + { 0x0B, 0x00 }, + { 0x0E, 0xF0 }, + { 0x11, 0x85 }, + { 0x14, 0x0B }, + { 0x39, 0x85 }, + { 0x3C, 0xF8 }, + { 0x3F, 0x68 }, + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetEG +// ****************************************************************** +// Similar pattern of version 3911 +OOVPA_XREF(CMcpxVoiceClient_SetEG, 4039, 12, + + XREF_CMcpxVoiceClient_SetEG, + XRefZero) + + { 0x00, 0x55 }, + { 0x25, 0xEB }, + + { 0x3C, 0x84 }, + { 0x3D, 0x86 }, + { 0x3E, 0x00 }, + { 0x3F, 0x00 }, + { 0x40, 0x00 }, + { 0x41, 0x8B }, + { 0x42, 0x86 }, + { 0x43, 0xE4 }, + + { 0xD3, 0xC2 }, + { 0xD4, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetEG +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetEG, 4039, 7, + + XREF_CDirectSoundVoice_SetEG, + XRefOne) + + XREF_ENTRY( 0x0C, XREF_CMcpxVoiceClient_SetEG ), + + { 0x01, 0x44 }, + { 0x04, 0xFF }, + { 0x07, 0x08 }, + { 0x0A, 0x0C }, + { 0x10, 0xC2 }, + { 0x11, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetEG +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetEG, 4039, 18, + + XREF_CDirectSoundBuffer_SetEG, + XRefOne) + + // CDirectSoundBuffer_SetEG+0x31 : call [CDirectSoundVoice_SetEG] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetEG), + + // CDirectSoundBuffer_SetEG+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetEG+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetEG+0x28 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetEG+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetEG+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetEG +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetEG, 4039, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetEG ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetEG +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetEG, 4039, 9, + + XREF_CDirectSoundStream_SetEG, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetEG ), + + { 0x00, 0x56 }, //Prevent incorrect offset difference from 4134 and later revision. + + { 0x0B, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + { 0x4A, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetOutputBuffer, 4039, 7, + + XREF_CDirectSoundVoice_SetOutputBuffer, + XRefZero) + + { 0x09, 0xF7 }, + { 0x14, 0x8B }, + { 0x1F, 0x3B }, + { 0x2A, 0xE8 }, + { 0x35, 0x8B }, + { 0x40, 0x74 }, + { 0x4B, 0xD8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetOutputBuffer, 4039, 18, + + XREF_CDirectSoundBuffer_SetOutputBuffer, + XRefOne) + + // CDirectSoundBuffer_SetOutputBuffer+0x30 : call [XREF_CDirectSoundVoice_SetOutputBuffer] + XREF_ENTRY( 0x31, XREF_CDirectSoundVoice_SetOutputBuffer), + + // CDirectSoundBuffer_SetOutputBuffer+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x28 : push [esp+0x10]; push [esp+0x10] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0xFF }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + { 0x2F, 0x10 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x48 : pop edi + { 0x48, 0x5F }, + + // CDirectSoundBuffer_SetOutputBuffer+0x4A : retn 0x08 + { 0x4A, 0xC2 }, + { 0x4B, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 4039, 15, + + XREF_CDirectSoundVoice_SetConeOutsideVolume, + XRefZero) + + // CDirectSoundVoice_SetConeOutsideVolume+0x07 : mov edx, [esp+arg_4] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x08 }, + + // CDirectSoundVoice_SetConeOutsideVolume+0x11 : mov [eax+104h], edx + { 0x0B, 0x89 }, + { 0x0C, 0x90 }, + { 0x0D, 0x04 }, + { 0x0E, 0x01 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + + { 0x11, 0x8B }, + { 0x14, 0x83 }, + { 0x1A, 0x10 }, + + // CDirectSoundVoice_SetConeOutsideVolume+0x2A : retn 0Ch + { 0x2A, 0xC2 }, + { 0x2B, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetConeOutsideVolume, 4039, 12, + + XREF_CDirectSoundBuffer_SetConeOutsideVolume, + XRefOne) + + // CDirectSoundBuffer_SetConeOutsideVolume+0x35 : call [CDirectSoundVoice::SetConeOutsideVolume] + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetConeOutsideVolume ), + + // CDirectSoundBuffer_SetConeOutsideVolume+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetConeOutsideVolume+0x21 : mov eax, 80004005h + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetConeOutsideVolume+0x30 : push [esp+0Ch+arg_0] + { 0x30, 0xFF }, + { 0x31, 0x74 }, + { 0x32, 0x24 }, + { 0x33, 0x14 }, + + // CDirectSoundBuffer_SetConeOutsideVolume+0x4E : retn 0Ch + { 0x4E, 0xC2 }, + { 0x4F, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetConeOutsideVolume +// ****************************************************************** +// Generic OOVPA as of 4039 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetConeOutsideVolume, 4039, 9, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetConeOutsideVolume+0x18 : call [CDirectSoundBuffer_SetConeOutsideVolume] + XREF_ENTRY(0x19, XREF_CDirectSoundBuffer_SetConeOutsideVolume ), + + // IDirectSoundBuffer_SetConeOutsideVolume+0x0A : push [esp+4+arg_4] + { 0x0A, 0xFF }, + { 0x0B, 0x74 }, + { 0x0C, 0x24 }, + { 0x0D, 0x0C }, + + // IDirectSoundBuffer_SetConeOutsideVolume+0x15 : and ecx, eax + { 0x15, 0x23 }, + { 0x16, 0xC8 }, + + // IDirectSoundBuffer_SetConeOutsideVolume+0x1D : retn 0Ch + { 0x1E, 0x0C }, + { 0x1F, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 4039, 14, + + XREF_CDirectSoundVoice_SetMaxDistance, + XRefZero) + + // CDirectSoundVoice_SetMaxDistance+0x07 : mov edx, [esp+arg_4] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x08 }, + + // CDirectSoundVoice_SetMaxDistance+0x0B : mov [eax+10h], edx + { 0x0B, 0x89 }, + { 0x0C, 0x90 }, + { 0x0D, 0x0C }, // SetMaxDistance 0x0C VS SetMinDistance 0x08 + + // CDirectSoundVoice_SetMaxDistance+0x14 : or dword ptr [eax+138h], 4 + { 0x14, 0x83 }, + { 0x15, 0x88 }, + { 0x18, 0x00 }, + { 0x19, 0x00 }, + { 0x1A, 0x04 }, + + // CDirectSoundVoice_SetMaxDistance+0x2A : retn 0Ch + { 0x2A, 0xC2 }, + { 0x2B, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 4039, 11, + + XREF_CDirectSoundBuffer_SetMaxDistance, + XRefOne) + + // CDirectSoundBuffer_SetMaxDistance+0x39 : call [CDirectSoundVoice_SetMaxDistance] + XREF_ENTRY( 0x39, XREF_CDirectSoundVoice_SetMaxDistance ), + + // CDirectSoundBuffer_SetMaxDistance+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetMaxDistance+0x21 : mov eax, 80004005h + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetMaxDistance+0x31 : fstp [esp+0Ch+var_C] + { 0x31, 0xD9 }, + { 0x32, 0x1C }, + { 0x33, 0x24 }, + + // CDirectSoundBuffer_SetMaxDistance+0x52 : retn 0Ch + { 0x53, 0x0C }, + { 0x54, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 4039, 14, + + XREF_CDirectSoundVoice_SetMinDistance, + XRefZero) + + // CDirectSoundVoice_SetMinDistance+0x07 : mov edx, [esp+arg_4] + { 0x07, 0x8B }, + { 0x08, 0x54 }, + { 0x09, 0x24 }, + { 0x0A, 0x08 }, + + // CDirectSoundVoice_SetMinDistance+0x0B : mov [eax+10h], edx + { 0x0B, 0x89 }, + { 0x0C, 0x90 }, + { 0x0D, 0x08 }, // SetMaxDistance 0x0C VS SetMinDistance 0x08 + + // CDirectSoundVoice_SetMinDistance+0x14 : or dword ptr [eax+138h], 4 + { 0x14, 0x83 }, + { 0x15, 0x88 }, + { 0x18, 0x00 }, + { 0x19, 0x00 }, + { 0x1A, 0x04 }, + + // CDirectSoundVoice_SetMinDistance+0x2A : retn 0Ch + { 0x2A, 0xC2 }, + { 0x2B, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 4039, 11, + + XREF_CDirectSoundBuffer_SetMinDistance, + XRefOne) + + // CDirectSoundBuffer_SetMinDistance+0x39 : call [CDirectSoundVoice_SetMinDistance] + XREF_ENTRY( 0x39, XREF_CDirectSoundVoice_SetMinDistance ), + + // CDirectSoundBuffer_SetMinDistance+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetMinDistance+0x21 : mov eax, 80004005h + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetMinDistance+0x31 : fstp [esp+0Ch+var_C] + { 0x31, 0xD9 }, + { 0x32, 0x1C }, + { 0x33, 0x24 }, + + // CDirectSoundBuffer_SetMinDistance+0x52 : retn 0Ch + { 0x53, 0x0C }, + { 0x54, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMode +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMode, 4039, 12, + + XREF_CDirectSoundVoice_SetMode, + XRefZero) + + { 0x00, 0xF6 }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x0C }, + { 0x04, 0x01 }, + { 0x05, 0x8B }, + { 0x06, 0x44 }, + { 0x07, 0x24 }, + + { 0x16, 0x75 }, + { 0x19, 0xE8 }, + { 0x20, 0xC2 }, + { 0x21, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetMode +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetMode, 4039, 12, + + XREF_CDirectSoundBuffer_SetMode, + XRefOne) + + // CDirectSoundBuffer_SetMode+0x35 : call [CDirectSoundVoice::SetMode] + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetMode ), + + // CDirectSoundBuffer_SetMode+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetMode+0x21 : mov eax, 80004005h + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetMode+0x30 : push [esp+0Ch+arg_0] + { 0x30, 0xFF }, + { 0x31, 0x74 }, + { 0x32, 0x24 }, + { 0x33, 0x14 }, + + // CDirectSoundBuffer_SetMode+0x4E : retn 0Ch + { 0x4E, 0xC2 }, + { 0x4F, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetPosition, 4039, 12, + + XREF_CDirectSoundVoice_SetPosition, + XRefZero) + + { 0x05, 0x08 }, + { 0x1C, 0xDC }, + + { 0x31, 0x00 }, + { 0x32, 0x00 }, + { 0x33, 0xFF }, // SetPosition 0xFF vs SetConeOrientation 0x40 + { 0x34, 0xF6 }, + { 0x35, 0x45 }, + { 0x36, 0x18 }, + { 0x37, 0x01 }, + { 0x38, 0x5E }, + + { 0x44, 0xC2 }, + { 0x45, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetPosition, 4039, 10, + + XREF_CDirectSoundBuffer_SetPosition, + XRefOne) + + // CDirectSoundBuffer_SetPosition+0x49 : call [CDirectSoundVoice::SetPosition] + XREF_ENTRY( 0x49, XREF_CDirectSoundVoice_SetPosition ), + + // CDirectSoundBuffer_SetPosition+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSoundBuffer_SetPosition+0x2A : fld [ebp+arg_C] + { 0x2A, 0xD9 }, + { 0x2B, 0x45 }, + { 0x2C, 0x14 }, + + // CDirectSoundBuffer_SetPosition+0x42 : fstp [esp+18h+var_18] + { 0x42, 0xD9 }, + { 0x43, 0x1C }, + { 0x44, 0x24 }, + + // CDirectSoundBuffer_SetPosition+0x63 : retn 14h + { 0x63, 0xC2 }, + { 0x64, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetMode +// ****************************************************************** +// Generic OOVPA as of 4039 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetMode, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetMode+0x18 : call [CDirectSoundBuffer::SetPosition] + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetMode ), + + // IDirectSoundBuffer_SetMode+0x04 : push [esp+0x0C] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSoundBuffer_SetMode+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_SetMode+0x1D : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetVelocity, 4039, 12, + + XREF_CDirectSoundVoice_SetVelocity, + XRefZero) + + { 0x05, 0x08 }, + { 0x1C, 0xE8 }, + + { 0x31, 0x00 }, + { 0x32, 0x00 }, + { 0x33, 0x40 }, // SetPosition 0xFF vs SetVelocity 0x40 + { 0x34, 0xF6 }, + { 0x35, 0x45 }, + { 0x36, 0x18 }, + { 0x37, 0x01 }, + { 0x38, 0x5E }, + + { 0x44, 0xC2 }, + { 0x45, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetVelocity, 4039, 10, + + XREF_CDirectSoundBuffer_SetVelocity, + XRefOne) + + // CDirectSoundBuffer_SetVelocity+0x49 : call [CDirectSoundVoice::SetVelocity] + XREF_ENTRY( 0x49, XREF_CDirectSoundVoice_SetVelocity ), + + // CDirectSoundBuffer_SetVelocity+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSoundBuffer_SetVelocity+0x2A : fld [ebp+arg_C] + { 0x2A, 0xD9 }, + { 0x2B, 0x45 }, + { 0x2C, 0x14 }, + + // CDirectSoundBuffer_SetVelocity+0x42 : fstp [esp+18h+var_18] + { 0x42, 0xD9 }, + { 0x43, 0x1C }, + { 0x44, 0x24 }, + + // CDirectSoundBuffer_SetVelocity+0x63 : retn 14h + { 0x63, 0xC2 }, + { 0x64, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeOrientation, 4039, 12, + + XREF_CDirectSoundVoice_SetConeOrientation, + XRefZero) + + { 0x05, 0x08 }, + { 0x1C, 0xFC }, + + { 0x31, 0x00 }, + { 0x32, 0x00 }, + { 0x33, 0x18 }, // SetPosition 0xFF vs SetConeOrientation 0x40 + { 0x34, 0xF6 }, + { 0x35, 0x45 }, + { 0x36, 0x18 }, + { 0x37, 0x01 }, + { 0x38, 0x5E }, + + { 0x44, 0xC2 }, + { 0x45, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetConeOrientation, 4039, 10, + + XREF_CDirectSoundBuffer_SetConeOrientation, + XRefOne) + + // CDirectSoundBuffer_SetConeOrientation+0x49 : call [CDirectSoundVoice::SetConeOrientation] + XREF_ENTRY( 0x49, XREF_CDirectSoundVoice_SetConeOrientation ), + + // CDirectSoundBuffer_SetConeOrientation+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSoundBuffer_SetConeOrientation+0x2A : fld [ebp+arg_C] + { 0x2A, 0xD9 }, + { 0x2B, 0x45 }, + { 0x2C, 0x14 }, + + // CDirectSoundBuffer_SetConeOrientation+0x42 : fstp [esp+18h+var_18] + { 0x42, 0xD9 }, + { 0x43, 0x1C }, + { 0x44, 0x24 }, + + // CDirectSoundBuffer_SetConeOrientation+0x63 : retn 14h + { 0x63, 0xC2 }, + { 0x64, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetOrientation, 4039, 13, + + XREF_CDirectSound_SetOrientation, + XRefZero) + + // CDirectSound_SetOrientation+0x00 : push ebp + { 0x00 , 0x55 }, + + { 0x30 , 0x8B }, + { 0x32 , 0x0C }, + { 0x39 , 0x8B }, + { 0x3B , 0x10 }, + { 0x42 , 0x8B }, + { 0x44 , 0x14 }, + { 0x4B , 0x8B }, + { 0x4D , 0x18 }, + { 0x54 , 0x8B }, + { 0x56 , 0x1C }, + { 0x5D , 0x8B }, + { 0x5F , 0x20 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetStatus +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_GetStatus, 4039, 14) + + { 0x00, 0x56 }, + + { 0x27, 0x8B }, + { 0x2A, 0x08 }, + + { 0x2B, 0x8B }, + { 0x2D, 0x24 }, + + { 0x33, 0x8B }, + { 0x36, 0x0C }, + + { 0x37, 0xF7 }, + { 0x39, 0x1B }, + { 0x3B, 0xF7 }, + + //CDirectSoundStream_GetStatus+0x20 : mov dword ptr [ecx], eax + { 0x3F, 0x89 }, + { 0x40, 0x01 }, + + { 0x51, 0xC2 }, + { 0x52, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_DownloadEffectsImage +// ****************************************************************** +OOVPA_XREF(CDirectSound_DownloadEffectsImage, 4039, 18, + + XREF_CDirectSound_DownloadEffectsImage, + XRefZero) + + // CDirectSound_DownloadEffectsImage+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_DownloadEffectsImage+0x2B : mov esi,dword ptr [ebp+8] + { 0x2B, 0x8B }, + { 0x2C, 0x75 }, + { 0x2D, 0x08 }, + + // CDirectSound_DownloadEffectsImage+0x2E : push dword ptr [ebp+14h] + { 0x2E, 0xFF }, + { 0x2F, 0x75 }, + { 0x30, 0x14 }, + + // CDirectSound_DownloadEffectsImage+0x31 : mov ecx,dword ptr [esi+8] + { 0x31, 0x8B }, + { 0x32, 0x4E }, + { 0x33, 0x08 }, + + // CDirectSound_DownloadEffectsImage+0x39 : push dword ptr [ebp+18h] + { 0x39, 0xFF }, + //{ 0x3A, 0x75 }, + { 0x3B, 0x18 }, + + // CDirectSound_DownloadEffectsImage+0x3F : push dword ptr [ebp+10h] + { 0x3F, 0xFF }, + //{ 0x40, 0x75 }, + { 0x41, 0x10 }, + + // CDirectSound_DownloadEffectsImage+0x42 : push dword ptr [ebp+0Ch] + { 0x42, 0xFF }, + //{ 0x43, 0x75 }, + { 0x44, 0x0C }, + + // CDirectSound_DownloadEffectsImage+0x60 : ret 14h + { 0x60, 0xC2 }, + { 0x61, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetHeadroom +// ****************************************************************** +//Generic OOVPA as of 4039 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetHeadroom, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetHeadroom+0x15 : call [CDirectSoundBuffer_SetHeadroom] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetHeadroom ), + + // IDirectSoundBuffer_SetHeadroom+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetHeadroom+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, + + // IDirectSoundBuffer_SetHeadroom+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetPosition, 4039, 14, + + XREF_CDirectSound_SetPosition, + XRefZero) + + // CDirectSound_SetPosition+0x00 : push ebp + { 0x00, 0x55}, + + // CDirectSound_SetPosition+0x2A : mov ecx, [ebp+0x08] + { 0x2A, 0x8B }, + { 0x2B, 0x4D }, + { 0x2C, 0x08 }, + + // CDirectSound_SetPosition+0x3E : mov [edx+0x1C], edi + { 0x3E, 0x89 }, + { 0x3F, 0x7A }, + { 0x40, 0x1C }, + + // CDirectSound_SetPosition+0x4B : or word ptr [eax+0x84], 0x01FF + { 0x4B, 0x80 }, + { 0x4C, 0x88 }, + { 0x4D, 0x84 }, + { 0x4E, 0x00 }, + { 0x51, 0xFF }, + + // CDirectSound_SetPosition+0x72 : retn 0x14 + { 0x72, 0xC2 }, + { 0x73, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetVelocity, 4039, 16, + + XREF_CDirectSound_SetVelocity, + XRefZero) + + // CDirectSound_SetVelocity+0x00 : push ebp + { 0x00, 0x55}, + + // CDirectSound_SetVelocity+0x23 : mov eax, 0x80004005 + { 0x23, 0xB8 }, + { 0x24, 0x05 }, + { 0x25, 0x40 }, + { 0x26, 0x00 }, + { 0x27, 0x80 }, + + // CDirectSound_SetVelocity+0x36 : mov [edx+0x24], edi + { 0x36, 0x89 }, + { 0x37, 0x7A }, + { 0x38, 0x24 }, + + // CDirectSound_SetVelocity+0x4B : or dword ptr [eax+0x084], 0x40 + { 0x4B, 0x83 }, + { 0x4C, 0x88 }, + { 0x4D, 0x84 }, + { 0x4F, 0x00 }, + { 0x51, 0x40 }, + + // CDirectSound_SetVelocity+0x72 : retn 0x14 + { 0x72, 0xC2 }, + { 0x73, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetI3DL2Listener +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetI3DL2Listener, 4039, 16, + + XREF_CDirectSound_SetI3DL2Listener, + XRefZero) + // CDirectSound_SetI3DL2Listener+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_SetI3DL2Listener+0x35 : cmp dword ptr [eax+0C],-01 + { 0x35, 0x83 }, + //{ 0x36, 0x78 }, + { 0x37, 0x0C }, + { 0x38, 0xFF }, + + // CDirectSound_SetI3DL2Listener+0x3B : mov [ebp-04h],0x88780032 + { 0x3B, 0xC7 }, + { 0x3C, 0x45 }, + { 0x3D, 0xFC }, + { 0x3E, 0x32 }, + { 0x3F, 0x00 }, + { 0x40, 0x78 }, + { 0x41, 0x88 }, + + // CDirectSound_SetI3DL2Listener+0x45 : mov esi,[ebp+0Ch] + { 0x45, 0x8B }, + { 0x46, 0x75 }, + { 0x47, 0x0C }, + + // CDirectSound_SetI3DL2Listener+0x7F : retn 0x0C + { 0x7F, 0xC2 }, + { 0x80, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice_SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetAllParameters, 4039, 12, + + XREF_CDirectSoundVoice_SetAllParameters, + XRefZero) + + // CDirectSoundVoice_SetAllParameters+0x00 : mov edx,[esp+04] + { 0x00, 0x8B }, + + // CDirectSoundVoice_SetAllParameters+0x0D : mov edi,[edx+10] + { 0x0D, 0x6A }, + { 0x0E, 0x10 }, + + // CDirectSoundVoice_SetAllParameters+0x16 : repe movsd + { 0x16, 0xF3 }, + { 0x17, 0xA5 }, + + // CDirectSoundVoice_SetAllParameters+0x18 : mov eax,[edx+10] + { 0x18, 0x8B }, + { 0x19, 0x42 }, + { 0x1A, 0x10 }, + + { 0x21, 0xFF }, + { 0x26, 0x01 }, + + // CDirectSoundVoice_SetAllParameters+0x33 : retn 0x0C + { 0x33, 0xC2 }, + { 0x34, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetAllParameters, 4039, 8, + + XREF_CDirectSoundBuffer_SetAllParameters, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetAllParameters ), + + // CDirectSoundBuffer_SetAllParameters+0x00 : push esi + { 0x00, 0x56 }, + + { 0x2A, 0x24 }, + { 0x2E, 0x24 }, + { 0x32, 0x24 }, + { 0x34, 0xE8 }, + + // CDirectSoundBuffer_SetAllParameters+0x4E : retn 0x0C + { 0x4E, 0xC2 }, + { 0x4F, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetAllParameters +// ****************************************************************** +//Generic OOVPA as of 4039 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetAllParameters, 4039, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetAllParameters ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0xFF }, + { 0x0E, 0x83 }, + { 0x12, 0xD9 }, + { 0x16, 0xC8 }, + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetConeAngles +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 4039, 14, + + XREF_CDirectSoundVoice_SetConeAngles, + XRefZero) + + { 0x00, 0x8B }, + { 0x03, 0x04 }, + + { 0x04, 0x8B }, + { 0x06, 0x10 }, + + { 0x07, 0x8B }, + { 0x0A, 0x08 }, + + { 0x0B, 0x89 }, + { 0x0C, 0x91 }, + + { 0x18, 0x89 }, + { 0x19, 0x91 }, + + { 0x27, 0x10 }, + { 0x2C, 0x01 }, + + // CDirectSoundVoice_SetConeAngles+0x37 : retn 10h + { 0x37, 0xC2 }, + { 0x38, 0x10 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetConeAngles +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetConeAngles, 4039, 12, + + XREF_CDirectSoundBuffer_SetConeAngles, + XRefOne) + + // CDirectSoundBuffer_SetConeAngles+0x39 : call [CDirectSoundVoice::SetConeAngles] + XREF_ENTRY( 0x39, XREF_CDirectSoundVoice_SetConeAngles ), + + // CDirectSoundBuffer_SetConeAngles+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetConeAngles+0x20 : mov eax, 80004005h + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetConeAngles+0x28 : push [esp+0Ch+arg_4] + { 0x28, 0xFF }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x18 }, + + // CDirectSoundBuffer_SetConeAngles+0x52 : retn 10h + { 0x52, 0xC2 }, + { 0x53, 0x10 } +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetConeAngles +// ****************************************************************** +//Generic OOVPA as of 4039 and newer. +OOVPA_XREF(IDirectSoundBuffer_SetConeAngles, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetConeAngles+0x1C : call [CDirectSoundBuffer::SetConeAngles] + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetConeAngles ), + + // IDirectSoundBuffer_SetConeAngles+0x04 : mov eax, [esp+4+arg_0] + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, + + // IDirectSoundBuffer_SetConeAngles+0x12 : add eax, 0FFFFFFE4 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xE4 }, + + // IDirectSoundBuffer_SetConeAngles+0x21 : retn 10h + { 0x21, 0xC2 }, + { 0x22, 0x10 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetVelocity +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetVelocity, 4039, 11, + + XREF_CDirectSoundStream_SetVelocity, + XRefOne) + + XREF_ENTRY( 0x4D, XREF_CDirectSoundVoice_SetVelocity ), + + { 0x00, 0x55 }, + { 0x0F, 0x00 }, + { 0x16, 0x74 }, + { 0x23, 0xB8 }, + { 0x29, 0x3B }, + { 0x34, 0x83 }, + { 0x3F, 0x45 }, + { 0x62, 0x8B }, + + { 0x67, 0xC2 }, + { 0x68, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetPosition +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetPosition, 4039, 11, + + XREF_CDirectSoundStream_SetPosition, + XRefOne) + + XREF_ENTRY( 0x4D, XREF_CDirectSoundVoice_SetPosition ), + + { 0x00, 0x55 }, + { 0x0F, 0x00 }, + { 0x16, 0x74 }, + { 0x23, 0xB8 }, + { 0x29, 0x3B }, + { 0x38, 0xEC }, + { 0x57, 0x68 }, + { 0x62, 0x8B }, + + { 0x67, 0xC2 }, + { 0x68, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMode +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMode, 4039, 11, + + XREF_CDirectSoundStream_SetMode, + XRefOne) + + XREF_ENTRY( 0x39, XREF_CDirectSoundVoice_SetMode ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x38, 0xE8 }, + { 0x43, 0x68 }, + { 0x4E, 0x8B }, + + { 0x52, 0xC2 }, + { 0x53, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 4039, 11, + + XREF_CDirectSoundStream_SetMaxDistance, + XRefOne) + + XREF_ENTRY( 0x3D, XREF_CDirectSoundVoice_SetMaxDistance ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x3C, 0xE8 }, + { 0x47, 0x68 }, + { 0x52, 0x8B }, + + { 0x56, 0xC2 }, + { 0x57, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMinDistance, 4039, 11, + + XREF_CDirectSoundStream_SetMinDistance, + XRefOne) + + XREF_ENTRY( 0x3D, XREF_CDirectSoundVoice_SetMinDistance ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x3C, 0xE8 }, + { 0x47, 0x68 }, + { 0x52, 0x8B }, + + { 0x56, 0xC2 }, + { 0x57, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetConeOutsideVolume, 4039, 9, + + XREF_CDirectSoundStream_SetConeOutsideVolume, + XRefOne) + + XREF_ENTRY( 0x39, XREF_CDirectSoundVoice_SetConeOutsideVolume ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x20, 0xB8 }, + { 0x23, 0x00 }, + { 0x38, 0xE8 }, + { 0x3D, 0x85 }, + { 0x4E, 0x8B }, + { 0x52, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetConeOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetConeOrientation, 4039, 9, + + XREF_CDirectSoundStream_SetConeOrientation, + XRefOne) + + XREF_ENTRY( 0x4D, XREF_CDirectSoundVoice_SetConeOrientation ), + + { 0x00, 0x55 }, + { 0x0F, 0x00 }, + { 0x16, 0x74 }, + { 0x23, 0xB8 }, + { 0x29, 0x3B }, + { 0x38, 0xEC }, + { 0x43, 0x24 }, + { 0x4C, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetConeAngles +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetConeAngles, 4039, 9, + + XREF_CDirectSoundStream_SetConeAngles, + XRefOne) + + XREF_ENTRY( 0x3D, XREF_CDirectSoundVoice_SetConeAngles ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + + { 0x2F, 0x18 }, + { 0x32, 0x04 }, + { 0x36, 0x18 }, + + { 0x3C, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetAllParameters, 4039, 9, + + XREF_CDirectSoundStream_SetAllParameters, + XRefOne) + + XREF_ENTRY( 0x39, XREF_CDirectSoundVoice_SetAllParameters ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x38, 0xE8 }, + { 0x43, 0x68 }, + { 0x4E, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetOutputBuffer, 4039, 9, + + XREF_CDirectSoundStream_SetOutputBuffer, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetOutputBuffer ), + + { 0x00, 0x56 }, + + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + { 0x4A, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetFrequency +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetFrequency, 4039, 12, + + XREF_CDirectSoundStream_SetFrequency, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetFrequency ), + + { 0x00, 0x56 }, + + { 0x0C, 0x00 }, + // je XXXXXXXX + 0x0B + { 0x13, 0x74 }, + { 0x14, 0x0B }, + // jmp XXXXXXXX + 0x26 + { 0x25, 0xEB }, + { 0x26, 0x26 }, + + { 0x29, 0x24 }, + // je XXXXXXXX + 0x0B + { 0x3D, 0x74 }, + { 0x3E, 0x0B }, + + // ret 8 + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetFrequency +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetFrequency, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetFrequency+0x00 : jmp [CDirectSoundStream_SetFrequency] + XREF_ENTRY( 0x01, XREF_CDirectSoundStream_SetFrequency ), + + // IDirectSoundStream_SetFrequency+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetVolume +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetVolume, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetVolume+0x00 : jmp [CDirectSoundStream_SetVolume] + XREF_ENTRY( 0x01, XREF_CDirectSoundStream_SetVolume ), + + // IDirectSoundStream_SetVolume+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetPitch +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetPitch, 4039, 12, + + XREF_CDirectSoundStream_SetPitch, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetPitch ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + { 0x4A, 0x8B }, + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, + { 0x50, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetPitch +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetPitch, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetPitch+0x00 : jmp [CDirectSoundStream_SetPitch] + XREF_ENTRY( 0x01, XREF_CDirectSoundStream_SetPitch ), + + // IDirectSoundStream_SetPitch+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetLFO +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetLFO, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetLFO+0x00 : jmp [CDirectSoundStream_SetLFO] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetLFO ), + + // IDirectSoundStream_SetLFO+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetEG +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetEG, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetEG+0x00 : jmp [CDirectSoundStream_SetEG] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetEG ), + + // IDirectSoundStream_SetEG+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetFilter +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetFilter, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetFilter+0x00 : jmp [CDirectSoundStream_SetFilter] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetFilter ), + + // IDirectSoundStream_SetFilter+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMixBinVolumes +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetMixBinVolumes_8, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetMixBinVolumes+0x00 : jmp [CDirectSoundStream_SetMixBinVolumes] + XREF_ENTRY(0x01, XREF_CDirectSoundStream_SetMixBinVolumes_8 ), + + // IDirectSoundStream_SetMixBinVolumes+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Pause +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Pause, 4039, 12, + + XREF_CMcpxStream_Pause, + XRefZero) + + // CMcpxStream_Pause+0x00 : push ebp + { 0x00, 0x55 }, + + // CMcpxStream_Pause+0x20 : or eax, 4 + { 0x20, 0x83 }, + { 0x21, 0xC8 }, + { 0x22, 0x04 }, + + // CMcpxStream_Pause+0x23 : jmp +0x0F + { 0x23, 0xEB }, + { 0x24, 0x0F }, + + // CMcpxStream_Pause+0x2B : mov eax,[esi+00000090] + { 0x2B, 0x8B }, + { 0x2C, 0x86 }, + { 0x2D, 0x90 }, + { 0x2E, 0x00 }, + + // CMcpxStream_Pause+0x48 : retn 0x04 + { 0x48, 0xC2 }, + { 0x49, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Pause +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Pause, 4039, 12, + + XREF_CDirectSoundStream_Pause, + XRefOne) + + // CDirectSoundStream_Pause+0x33 : call [CMcpxStream::Pause] + XREF_ENTRY( 0x34, XREF_CMcpxStream_Pause ), + + // CDirectSoundStream_Pause+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundStream_Pause+0x20 : mov eax, 0x80004005 + { 0x20, 0xB8 }, + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundStream_Pause+0x2B : mov ecx, [eax+0x24] + { 0x2B, 0x8B }, + { 0x2C, 0x48 }, + { 0x2D, 0x24 }, + + // CDirectSoundStream_Pause+0x4D : retn 0x08 + { 0x4D, 0xC2 }, + { 0x4E, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * DS_CRefCount_AddRef +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(DS_CRefCount_AddRef, 4039, 12, + + XREF_DS_CRefCount_AddRef, + XRefZero) + + // DS_CRefCount_AddRef+0x00 : mov eax,dword ptr [esp+4] + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + + // DS_CRefCount_AddRef+0x04 : inc dword ptr [eax+4] + { 0x04, 0xFF }, + { 0x05, 0x40 }, + { 0x06, 0x04 }, + + // DS_CRefCount_AddRef+0x07 : mov eax, dword ptr [eax+4] + { 0x07, 0x8B }, + { 0x08, 0x40 }, + { 0x09, 0x04 }, + + // DS_CRefCount_AddRef+0x0A : retn 0x04 + { 0x0A, 0xC2 }, + { 0x0B, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DS_CRefCount_Release +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(DS_CRefCount_Release, 4039, 10, + + XREF_DS_CRefCount_Release, + XRefZero) + + { 0x00, 0x8B }, + + // DS_CRefCount_Release+0x0B : dec eax + { 0x0B, 0x48 }, + + // DS_CRefCount_Release+0x0E : mov dword ptr [ecx+4], eax + { 0x0E, 0x89 }, + { 0x0F, 0x41 }, + { 0x10, 0x04 }, + + // DS_CRefCount_Release+0x1D : mov, dword ptr [ecx+4] + { 0x1D, 0x8B }, + { 0x1E, 0x41 }, + { 0x1F, 0x04 }, + + // DS_CRefCount_Release+0x20 : retn 0x04 + { 0x20, 0xC2 }, + { 0x21, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::Release +// ****************************************************************** +// NOTE: Has identical function to DirectSound::CAc97MediaObject::Release +OOVPA_XREF(CDirectSoundStream_Release, 4039, 12, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x31, XREF_DS_CRefCount_Release ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + + { 0x2C, 0x83 }, + { 0x2D, 0xC0 }, + { 0x2E, 0x04 }, + + { 0x46, 0x8B }, + + { 0x4A, 0xC2 }, + { 0x4B, 0x04 }, + { 0x4C, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CFullHRTFSource::GetCenterVolume +// ****************************************************************** +OOVPA_XREF(CFullHRTFSource_GetCenterVolume, 4039, 9, + + XREF_CFullHRTFSource_GetCenterVolume, + XRefZero) + + { 0x00, 0x55 }, + + { 0x22, 0xD9 }, + { 0x63, 0xDF }, + + { 0xCB, 0xF0 }, + { 0xCC, 0xD8 }, + { 0xCD, 0xFF }, + { 0xCE, 0xFF }, + + { 0xD1, 0xC2 }, + { 0xD2, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CHRTFSource::SetFullHRTF5Channel +// ****************************************************************** +OOVPA_XREF(CHRTFSource_SetFullHRTF5Channel, 4039, 9, + + XREF_CHRTFSource_SetFullHRTF5Channel, + XRefOne) + + XREF_ENTRY( 0x38, XREF_CFullHRTFSource_GetCenterVolume ), + + { 0x00, 0xC7 }, + + { 0x14, 0xC7 }, + { 0x1E, 0xC7 }, + { 0x28, 0xC7 }, + { 0x32, 0xC7 }, + { 0x3C, 0xC7 }, + { 0x46, 0xC7 }, + { 0x50, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundUseFullHRTF +// ****************************************************************** +OOVPA_XREF(DirectSoundUseFullHRTF, 4039, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x09, XREF_CHRTFSource_SetFullHRTF5Channel ), + + { 0x06, 0x8B }, + { 0x07, 0xF0 }, + { 0x0D, 0x85 }, + { 0x0E, 0xF6 }, + { 0x11, 0x0B }, + { 0x17, 0xFF }, + { 0x1D, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * XAudioCalculatePitch +// ****************************************************************** +OOVPA_XREF(XAudioCalculatePitch, 4039, 11, + + XREF_XAudioCalculatePitch, + XRefZero) + + // XAudioCalculatePitch+0x10 : cmp eax, 0xBB80 + { 0x10, 0x3D }, + { 0x11, 0x80 }, + { 0x12, 0xBB }, + { 0x13, 0x00 }, + + // XAudioCalculatePitch+0x19 : jmp +0x21 + { 0x19, 0xEB }, + { 0x1A, 0x21 }, + + // XAudioCalculatePitch+0x3C : lea ecx, [ebp-04] + { 0x3C, 0x8D }, + { 0x3D, 0x4D }, + { 0x3E, 0xFC }, + + // XAudioCalculatePitch+0x48 : retn 0x08 + { 0x48, 0xC2 }, + { 0x49, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::EnableHeadphones +// ****************************************************************** +OOVPA_XREF(CDirectSound_EnableHeadphones, 4039, 16, + + XREF_CDirectSound_EnableHeadphones, + XRefZero) + + { 0x00, 0x55 }, + + { 0x42, 0x0f }, + { 0x43, 0x95 }, + { 0x44, 0xC3 }, + + { 0x4F, 0x0D }, + { 0x50, 0x00 }, + { 0x51, 0x00 }, + { 0x52, 0x00 }, + { 0x53, 0x80 }, + + { 0x56, 0x25 }, + { 0x57, 0xFF }, + { 0x58, 0xFF }, + { 0x59, 0xFF }, + { 0x5A, 0x7F }, + + { 0x7F, 0xC2 }, + { 0x80, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Process +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_Process, 4039, 17) + + { 0x00, 0x57 }, + + { 0x28, 0x8B }, + { 0x2B, 0x0C }, + + { 0x2C, 0x8B }, + { 0x2E, 0x24 }, + + { 0x34, 0x85 }, + { 0x35, 0xC0 }, + + //CDirectSoundStream_Process+0x39 : mov eax, 88780032h + { 0x39, 0x32 }, + { 0x3A, 0x00 }, + { 0x3B, 0x78 }, + { 0x3C, 0x88 }, + + { 0x3F, 0xFF }, + { 0x42, 0x10 }, + + { 0x43, 0x8B }, + { 0x45, 0x24 }, + + { 0x60, 0xC2 }, + { 0x61, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Flush, 4039, 10, + XREF_CMcpxStream_Flush, + XRefZero) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + { 0x09, 0x33 }, + + { 0x32, 0x83 }, + { 0x33, 0xFF }, + { 0x34, 0x03 }, + + { 0x4A, 0xE8 }, + + { 0x58, 0xE8 }, + + { 0x98, 0xC9 }, + { 0x99, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Flush +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Flush, 4039, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Flush+0x2F : call [CMcpxStream_Flush] + XREF_ENTRY( 0x30, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x27, 0x8B }, + { 0x2A, 0x08 }, + + { 0x2B, 0x8B }, + { 0x2D, 0x24 }, + + { 0x2F, 0xE8 }, + + //CDirectSoundStream_Flush+0x49 : ret 4 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_AddRef +// ****************************************************************** +// NOTE: Has identical function to DirectSound::CAc97MediaObject::AddRef +OOVPA_XREF(CDirectSoundStream_AddRef, 4039, 11, + XRefNoSaveIndex, + XRefZero) + + { 0x00, 0xE8 }, + + { 0x24, 0x8B }, + { 0x25, 0x4C }, + + { 0x28, 0xFF }, + { 0x29, 0x41 }, + { 0x2A, 0x08 }, + + { 0x2E, 0x8B }, + { 0x2F, 0x71 }, + { 0x30, 0x08 }, + + //CDirectSoundStream_AddRef+0x41 : ret 4 + { 0x41, 0xC2 }, + { 0x42, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetInfo +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_GetInfo, 4039, 17) + + //CDirectSoundStream_GetInfo+0x00 : push ebx + { 0x00, 0x53 }, + + //CDirectSoundStream_GetInfo+0x2D : mov edi, dword ptr [esp + 10h] + { 0x2D, 0x8B }, + { 0x2E, 0x7C }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, + + //CDirectSoundStream_GetInfo+0x37 : mov, dword ptr [edi + 24h] + { 0x37, 0x8B }, + { 0x38, 0x4F }, + { 0x39, 0x24 }, + + //CDirectSoundStream_GetInfo+0x42 : mov eax, dword ptr [edi + 20h] + { 0x42, 0x8B }, + { 0x43, 0x47 }, + { 0x44, 0x20 }, + + //CDirectSoundStream_GetInfo+0x48 : and dword ptr [esi + 8], 0 + { 0x48, 0x83 }, + { 0x49, 0x66 }, + { 0x4A, 0x08 }, + { 0x4B, 0x00 }, + + //CDirectSoundStream_GetInfo+0x63 : ret 8 + { 0x63, 0xC2 }, + { 0x64, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Discontinuity, 4039, 7, + XREF_CMcpxStream_Discontinuity, + XRefOne) + + //CMcpxStream_Discontinuity+0x17 : call [CMcpxStream_Flush] + XREF_ENTRY ( 0x18, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x01, 0x8B }, + + { 0x15, 0x8B }, + + { 0x17, 0xE8 }, + + { 0x1E, 0x5E }, + + { 0x1F, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Discontinuity, 4039, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Discontinuity+0x2F : call [CMcpxStream_Discontinuity] + XREF_ENTRY( 0x30, XREF_CMcpxStream_Discontinuity ), + + { 0x00, 0x56 }, + + { 0x27, 0x8B }, + { 0x2A, 0x08 }, + + { 0x2B, 0x8B }, + { 0x2D, 0x24 }, + + { 0x2F, 0xE8 }, + + //CDirectSoundStream_Discontinuity+0x49 : ret 4 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetMixBins +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMixBins, 4039, 10, + + XREF_CDirectSoundStream_SetMixBins, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetMixBins ), + + { 0x00, 0x56 }, + + { 0x0C, 0x00 }, + + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMixBins +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetMixBins, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetMixBins+0x00 : jmp [CDirectSoundStream_SetMixBins] + XREF_ENTRY( 0x01, XREF_CDirectSoundStream_SetMixBins ), + + // IDirectSoundStream_SetMixBins+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetI3DL2Source, 4039, 18, + + XREF_CDirectSoundVoice_SetI3DL2Source, + XRefZero) + + // CDirectSoundVoice_SetI3DL2Source+0x00 : mov edx, [esp+arg_0] + { 0x00, 0x8B }, + { 0x01, 0x54 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + + // CDirectSoundVoice_SetI3DL2Source+0x1B : or byte ptr [eax+138h], 80h + { 0x1B, 0x80 }, + { 0x1C, 0x88 }, + { 0x1D, 0x38 }, + { 0x1E, 0x01 }, + { 0x1F, 0x00 }, + { 0x20, 0x00 }, + { 0x21, 0x80 }, + + // CDirectSoundVoice_SetI3DL2Source+0x22 : test [esp+8+arg_8], 1 + { 0x22, 0xF6 }, + { 0x23, 0x44 }, + { 0x24, 0x24 }, + { 0x25, 0x14 }, + { 0x26, 0x01 }, + + // CDirectSoundVoice_SetI3DL2Source+0x57 : retn 08h + { 0x57, 0xC2 }, + { 0x58, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetI3DL2Source, 4039, 12, + + XREF_CDirectSoundBuffer_SetI3DL2Source, + XRefOne) + + // CDirectSoundBuffer_SetI3DL2Source+0x35 : call [CDirectSoundVoice::SetI3DL2Source] + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetI3DL2Source ), + + // CDirectSoundBuffer_SetI3DL2Source+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetI3DL2Source+0x21 : mov eax, 80004005h + { 0x21, 0x05 }, + { 0x22, 0x40 }, + { 0x23, 0x00 }, + { 0x24, 0x80 }, + + // CDirectSoundBuffer_SetI3DL2Source+0x31 : push [esp+0Ch+arg_0] + { 0x30, 0xFF }, + { 0x31, 0x74 }, + { 0x32, 0x24 }, + { 0x33, 0x14 }, + + // CDirectSoundBuffer_SetI3DL2Source+0x4E : retn 0Ch + { 0x4E, 0xC2 }, + { 0x4F, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetI3DL2Source +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 4039, 10, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundBuffer_SetI3DL2Source+0x18 : call [CDirectSoundBuffer::SetI3DL2Source] + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetI3DL2Source ), + + // IDirectSoundBuffer_SetI3DL2Source+0x04 : push [esp+arg_8] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, + + // IDirectSoundBuffer_SetI3DL2Source+0x0E : add eax, 0FFFFFFE4h + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, + + // IDirectSoundBuffer_SetI3DL2Source+0x1D : retn 0Ch + { 0x1E, 0x0C }, + { 0x1F, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::GetCaps +// ****************************************************************** +OOVPA_XREF(CDirectSound_GetCaps, 4039, 12, + + XREF_CDirectSound_GetCaps, + XRefZero) + + { 0x00, 0x53 }, + { 0x15, 0x68 }, + + { 0x36, 0x44 }, + { 0x37, 0x24 }, + { 0x38, 0x18 }, + { 0x39, 0x8B }, + { 0x3A, 0x48 }, + { 0x3B, 0x0C }, + { 0x3C, 0x56 }, + { 0x3D, 0xE8 }, + + { 0x6C, 0xC2 }, + { 0x6D, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundCreateStream +// ****************************************************************** +OOVPA_XREF(DirectSoundCreateStream, 4039, 11, + + XRefNoSaveIndex, + XRefOne) + + // DirectSoundCreateStream+0x2B : call [CDirectSound::CreateSoundStream] + XREF_ENTRY( 0x2C, XREF_CDirectSound_CreateSoundStream ), + + // DirectSoundCreateStream+0x04 : and [ebp-0x04], 0 + { 0x04, 0x83 }, + { 0x05, 0x65 }, + { 0x06, 0xFC }, + + // DirectSoundCreateStream+0x08 : push esi; push edi + { 0x08, 0x56 }, + { 0x09, 0x57 }, + + // DirectSoundCreateStream+0x32 : lea eax,[ebp-04] + { 0x32, 0x8D }, + { 0x33, 0x45 }, + { 0x34, 0xFC }, + + // DirectSoundCreateStream+0x4F : retn 0x08 + { 0x4F, 0xC2 }, + { 0x50, 0x08 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl index 6fa0b284d..0afc99a07 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl @@ -37,36 +37,39 @@ // ****************************************************************** OOVPA_NO_XREF(DirectSoundCreate, 4134, 9) // DirectSoundCreate+0x0B : movzx esi, al - { 0x0B, 0x0F }, // (Offset,Value)-Pair #1 - { 0x0C, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x0D, 0xF0 }, // (Offset,Value)-Pair #3 + { 0x0B, 0x0F }, + { 0x0C, 0xB6 }, + { 0x0D, 0xF0 }, // DirectSoundCreate+0x12 : call [addr] - { 0x12, 0xE8 }, // (Offset,Value)-Pair #4 + { 0x12, 0xE8 }, // DirectSoundCreate+0x1B : jl +0x13 - { 0x1B, 0x7C }, // (Offset,Value)-Pair #5 - { 0x1C, 0x13 }, // (Offset,Value)-Pair #6 + { 0x1B, 0x7C }, + { 0x1C, 0x13 }, // DirectSoundCreate+0x27 : sbb ecx, ecx - { 0x27, 0x1B }, // (Offset,Value)-Pair #7 - { 0x28, 0xC9 }, // (Offset,Value)-Pair #8 + { 0x27, 0x1B }, + { 0x28, 0xC9 }, // DirectSoundCreate+0x43 : leave - { 0x43, 0xC9 }, // (Offset,Value)-Pair #9 + { 0x43, 0xC9 }, OOVPA_END; // ****************************************************************** // * DirectSoundDoWork // ****************************************************************** +// Generic OOVPA as of 4134 and newer +// TODO: DirectSoundDoWork 4134 has weak OV list, need to add more or at least use XREF support to be strengthen. OOVPA_NO_XREF(DirectSoundDoWork, 4134, 7) - { 0x06, 0x0F }, - { 0x0E, 0x85 }, - { 0x10, 0x74 }, - { 0x18, 0x85 }, - { 0x1C, 0x0B }, - { 0x22, 0xFF }, - { 0x28, 0xC3 }, + + { 0x06, 0x0F }, + { 0x0E, 0x85 }, + { 0x10, 0x74 }, + { 0x18, 0x85 }, + { 0x1C, 0x0B }, + { 0x22, 0xFF }, + { 0x28, 0xC3 }, OOVPA_END; // ****************************************************************** @@ -74,30 +77,30 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_CreateSoundBuffer, 4134, 14, - XREF_DSCREATESOUNDBUFFER, + XREF_CDirectSound_CreateSoundBuffer, XRefZero) // CDirectSound_CreateSoundBuffer+0x23 : mov eax, 0x80004005 - { 0x23, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x24, 0x05 }, // (Offset,Value)-Pair #2 - { 0x25, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x80 }, // (Offset,Value)-Pair #4 + { 0x23, 0xB8 }, + { 0x24, 0x05 }, + { 0x25, 0x40 }, + { 0x27, 0x80 }, // CDirectSound_CreateSoundBuffer+0x2A : push 0x24 - { 0x2A, 0x6A }, // (Offset,Value)-Pair #5 - { 0x2B, 0x24 }, // (Offset,Value)-Pair #6 + { 0x2A, 0x6A }, + { 0x2B, 0x24 }, // CDirectSound_CreateSoundBuffer+0x4A : add esi, 0x7FF8FFF2 - { 0x4A, 0x81 }, // (Offset,Value)-Pair #7 - { 0x4B, 0xE6 }, // (Offset,Value)-Pair #8 - { 0x4C, 0xF2 }, // (Offset,Value)-Pair #9 - { 0x4D, 0xFF }, // (Offset,Value)-Pair #10 - { 0x4E, 0xF8 }, // (Offset,Value)-Pair #11 - { 0x4F, 0x7F }, // (Offset,Value)-Pair #12 + { 0x4A, 0x81 }, + { 0x4B, 0xE6 }, + { 0x4C, 0xF2 }, + { 0x4D, 0xFF }, + { 0x4E, 0xF8 }, + { 0x4F, 0x7F }, // CDirectSound_CreateSoundBuffer+0x99 : retn 0x10 - { 0x99, 0xC2 }, // (Offset,Value)-Pair #13 - { 0x9A, 0x10 }, // (Offset,Value)-Pair #14 + { 0x99, 0xC2 }, + { 0x9A, 0x10 }, OOVPA_END; // ****************************************************************** @@ -109,25 +112,26 @@ OOVPA_XREF(CDirectSoundBuffer_SetLoopRegion, 4134, 11, XRefZero) // CDirectSoundBuffer_SetLoopRegion+0x24 : mov eax, 0x80004005 - { 0x24, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x25, 0x05 }, // (Offset,Value)-Pair #2 - { 0x26, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x00 }, // (Offset,Value)-Pair #4 - { 0x28, 0x80 }, // (Offset,Value)-Pair #5 + { 0x24, 0xB8 }, + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, // CDirectSoundBuffer_SetLoopRegion+0x29 : jmp +0x55 - { 0x29, 0xEB }, // (Offset,Value)-Pair #6 - { 0x2A, 0x55 }, // (Offset,Value)-Pair #7 + { 0x29, 0xEB }, + { 0x2A, 0x55 }, // CDirectSoundBuffer_SetLoopRegion+0x56 : sub ecx, esi - { 0x56, 0x2B }, // (Offset,Value)-Pair #8 - { 0x57, 0xCE }, // (Offset,Value)-Pair #9 + { 0x56, 0x2B }, + { 0x57, 0xCE }, // CDirectSoundBuffer_SetLoopRegion+0x82 : retn 0x0C - { 0x82, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x83, 0x0C }, // (Offset,Value)-Pair #11 + { 0x82, 0xC2 }, + { 0x83, 0x0C }, OOVPA_END; +#if 0 // Moved to 3936 // ****************************************************************** // * IDirectSoundBuffer8::SetLoopRegion // ****************************************************************** @@ -147,33 +151,34 @@ OOVPA_XREF(IDirectSoundBuffer_SetLoopRegion, 4134, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSound::SetI3DL2Listener // ****************************************************************** OOVPA_XREF(CDirectSound_SetI3DL2Listener, 4134, 11, - XREF_DSSETI3DL2LISTENER, + XREF_CDirectSound_SetI3DL2Listener, XRefZero) // CDirectSound_SetI3DL2Listener+0x3A : mov edi, 0x88780032 - { 0x3A, 0xBF }, // (Offset,Value)-Pair #1 - { 0x3B, 0x32 }, // (Offset,Value)-Pair #2 - { 0x3C, 0x00 }, // (Offset,Value)-Pair #3 - { 0x3D, 0x78 }, // (Offset,Value)-Pair #4 - { 0x3E, 0x88 }, // (Offset,Value)-Pair #5 + { 0x3A, 0xBF }, + { 0x3B, 0x32 }, + { 0x3C, 0x00 }, + { 0x3D, 0x78 }, + { 0x3E, 0x88 }, // CDirectSound_SetI3DL2Listener+0xA2 : fstp dword ptr[edx+0x94] - { 0xA2, 0xD9 }, // (Offset,Value)-Pair #6 - { 0xA3, 0x9A }, // (Offset,Value)-Pair #7 - { 0xA4, 0x94 }, // (Offset,Value)-Pair #8 + { 0xA2, 0xD9 }, + { 0xA3, 0x9A }, + { 0xA4, 0x94 }, // CDirectSound_SetI3DL2Listener+0xA8 : fld dword ptr[ecx+0x24] - { 0xA8, 0xD9 }, // (Offset,Value)-Pair #9 - { 0xA9, 0x41 }, // (Offset,Value)-Pair #10 - { 0xAA, 0x24 }, // (Offset,Value)-Pair #11 + { 0xA8, 0xD9 }, + { 0xA9, 0x41 }, + { 0xAA, 0x24 }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_SetI3DL2Listener // ****************************************************************** @@ -183,166 +188,193 @@ OOVPA_XREF(IDirectSound_SetI3DL2Listener, 4134, 12, XRefOne) // IDirectSound_SetI3DL2Listener+0x19 : call [CDirectSound::SetI3DL2Listener] - XREF_ENTRY(0x19, XREF_DSSETI3DL2LISTENER), // (Offset,Value)-Pair #1 + XREF_ENTRY(0x19, XREF_CDirectSound_SetI3DL2Listener), // IDirectSound_SetI3DL2Listener+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetI3DL2Listener+0x0E : add eax, 0xFFFFFFF8 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x10, 0xF8 }, // (Offset,Value)-Pair #8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xF8 }, // IDirectSound_SetI3DL2Listener+0x13 : sbb ecx, ecx - { 0x13, 0x1B }, // (Offset,Value)-Pair #9 - { 0x14, 0xC9 }, // (Offset,Value)-Pair #10 + { 0x13, 0x1B }, + { 0x14, 0xC9 }, // IDirectSound_SetI3DL2Listener+0x15 : and ecx, eax - { 0x15, 0x23 }, // (Offset,Value)-Pair #11 - { 0x16, 0xC8 }, // (Offset,Value)-Pair #12 + { 0x15, 0x23 }, + { 0x16, 0xC8 }, OOVPA_END; - +#endif // ****************************************************************** -// * IDirectSoundBuffer_SetHeadroomA +// * CDirectSoundVoice_SetHeadroom // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetHeadroomA, 4134, 7, +OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 4134, 12, - XREF_DSBUFFERSETHEADROOMA, - XRefZero) + XREF_CDirectSoundVoice_SetHeadroom, + XRefZero) - { 0x03, 0x04 }, - { 0x08, 0x48 }, - { 0x0D, 0x24 }, - { 0x12, 0x48 }, - { 0x17, 0x8B }, - { 0x1F, 0x5E }, - { 0x21, 0x08 }, + { 0x00, 0x8B }, + { 0x08, 0x48 }, + { 0x0F, 0x2B }, + { 0x13, 0x1C }, + { 0x14, 0x89 }, + { 0x15, 0x70 }, + { 0x16, 0x20 }, + { 0x17, 0x8B }, + { 0x18, 0x4A }, + { 0x19, 0x0C }, + { 0x1A, 0xE8 }, + { 0x21, 0x08 }, OOVPA_END; +// ****************************************************************** +// * CDirectSoundBuffer_SetHeadroom +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetHeadroom, 4134, 8, + + XREF_CDirectSoundBuffer_SetHeadroom, + XRefOne) + + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetHeadroom ), + + { 0x0C, 0x00 }, + { 0x12, 0x85 }, + { 0x1C, 0x15 }, + { 0x26, 0xEB }, + { 0x30, 0x10 }, + { 0x3A, 0x74 }, + { 0x47, 0x8B }, +OOVPA_END; + +#if 0 // Replaced with generic OOVPA 4039 // ****************************************************************** // * IDirectSoundBuffer_SetHeadroom // ****************************************************************** OOVPA_XREF(IDirectSoundBuffer_SetHeadroom, 4134, 8, - XRefNoSaveIndex, - XRefOne) - // IDirectSoundBuffer_SetHeadroom+0x32 : call [IDirectSoundBuffer_SetHeadroomA] - XREF_ENTRY(0x32, XREF_DSBUFFERSETHEADROOMA), + XRefNoSaveIndex, + XRefOne) - { 0x0C, 0x00 }, - { 0x12, 0x85 }, - { 0x1C, 0x15 }, - { 0x26, 0xEB }, - { 0x30, 0x10 }, - { 0x3A, 0x74 }, - { 0x47, 0x8B }, + // IDirectSoundBuffer_SetHeadroom+0x15 : call [CDirectSoundBuffer_SetHeadroom] + XREF_ENTRY(0x15, XREF_CDirectSoundBuffer_SetHeadroom), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundVoiceSettings::SetMixBins // ****************************************************************** OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBins, 4134, 11, - XREF_DSSETMIXBINSC, + XREF_CDirectSoundVoiceSettings_SetMixBins, XRefZero) // CDirectSoundVoiceSettings_SetMixBins+0x06 : jnz +0x1A - { 0x06, 0x75 }, // (Offset,Value)-Pair #1 - { 0x07, 0x1A }, // (Offset,Value)-Pair #2 + { 0x06, 0x75 }, + { 0x07, 0x1A }, // CDirectSoundVoiceSettings_SetMixBins+0x08 : test byte ptr [ecx+8], 0x10 - { 0x08, 0xF6 }, // (Offset,Value)-Pair #3 - { 0x09, 0x41 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x08 }, // (Offset,Value)-Pair #5 - { 0x0B, 0x10 }, // (Offset,Value)-Pair #6 + { 0x08, 0xF6 }, + { 0x09, 0x41 }, + { 0x0A, 0x08 }, + { 0x0B, 0x10 }, // CDirectSoundVoiceSettings_SetMixBins+0x19 : shr eax, 1 - { 0x19, 0xD1 }, // (Offset,Value)-Pair #7 - { 0x1A, 0xE8 }, // (Offset,Value)-Pair #8 + { 0x19, 0xD1 }, + { 0x1A, 0xE8 }, // CDirectSoundVoiceSettings_SetMixBins+0x53 : cmp [ecx+24h], edx - { 0x53, 0x39 }, // (Offset,Value)-Pair #9 - { 0x54, 0x51 }, // (Offset,Value)-Pair #10 - { 0x55, 0x24 }, // (Offset,Value)-Pair #11 + { 0x53, 0x39 }, + { 0x54, 0x51 }, + { 0x55, 0x24 }, OOVPA_END; - +#if 0 // Moved to 4039 // ****************************************************************** // * CDirectSoundVoice::SetMixBins // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMixBins, 4134, 17, - XREF_DSSETMIXBINSB, + XREF_CDirectSoundVoice_SetMixBins, XRefOne) // CDirectSoundVoice_SetMixBins+0x0D : call [CDirectSoundVoiceSettings::SetMixBins] - XREF_ENTRY( 0x0D, XREF_DSSETMIXBINSC ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoiceSettings_SetMixBins ), // CDirectSoundVoice_SetMixBins+0x01 : mov esi, [esp+8] - { 0x01, 0x8B }, // (Offset,Value)-Pair #2 - { 0x02, 0x74 }, // (Offset,Value)-Pair #3 - { 0x03, 0x24 }, // (Offset,Value)-Pair #4 - { 0x04, 0x08 }, // (Offset,Value)-Pair #5 + { 0x01, 0x8B }, + { 0x02, 0x74 }, + { 0x03, 0x24 }, + { 0x04, 0x08 }, // CDirectSoundVoice_SetMixBins+0x05 : push [esp+0x0C] - { 0x05, 0xFF }, // (Offset,Value)-Pair #6 - { 0x06, 0x74 }, // (Offset,Value)-Pair #7 - { 0x07, 0x24 }, // (Offset,Value)-Pair #8 - { 0x08, 0x0C }, // (Offset,Value)-Pair #9 + { 0x05, 0xFF }, + { 0x06, 0x74 }, + { 0x07, 0x24 }, + { 0x08, 0x0C }, // CDirectSoundVoice_SetMixBins+0x09 : mov ecx, [esi+0x10] - { 0x09, 0x8B }, // (Offset,Value)-Pair #10 - { 0x0A, 0x4E }, // (Offset,Value)-Pair #11 - { 0x0B, 0x10 }, // (Offset,Value)-Pair #12 + { 0x09, 0x8B }, + { 0x0A, 0x4E }, + { 0x0B, 0x10 }, // CDirectSoundVoice_SetMixBins+0x11 : mov ecx, [esi+0x0C] - { 0x11, 0x8B }, // (Offset,Value)-Pair #13 - { 0x12, 0x4E }, // (Offset,Value)-Pair #14 - { 0x13, 0x0C }, // (Offset,Value)-Pair #15 + { 0x11, 0x8B }, + { 0x12, 0x4E }, + { 0x13, 0x0C }, // CDirectSoundVoice_SetMixBins+0x1A : retn 0x08 - { 0x1A, 0xC2 }, // (Offset,Value)-Pair #16 - { 0x1B, 0x08 }, // (Offset,Value)-Pair #17 + { 0x1A, 0xC2 }, + { 0x1B, 0x08 }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundBuffer::SetMixBins // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMixBins, 4134, 17, - XREF_DSSETMIXBINSA, + XREF_CDirectSoundBuffer_SetMixBins, XRefOne) // CDirectSoundBuffer_SetMixBins+0x32 : call [CDirectSoundVoice::SetMixBins] - XREF_ENTRY( 0x32, XREF_DSSETMIXBINSB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetMixBins ), // CDirectSoundBuffer_SetMixBins+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_SetMixBins+0x29 : push [esp+0x10]; push [esp+0x10] - { 0x29, 0xFF }, // (Offset,Value)-Pair #7 - { 0x2A, 0x74 }, // (Offset,Value)-Pair #8 - { 0x2B, 0x24 }, // (Offset,Value)-Pair #9 - { 0x2C, 0x10 }, // (Offset,Value)-Pair #10 - { 0x2D, 0xFF }, // (Offset,Value)-Pair #11 - { 0x2E, 0x74 }, // (Offset,Value)-Pair #12 - { 0x2F, 0x24 }, // (Offset,Value)-Pair #13 - { 0x30, 0x10 }, // (Offset,Value)-Pair #14 + { 0x29, 0xFF }, + { 0x2A, 0x74 }, + { 0x2B, 0x24 }, + { 0x2C, 0x10 }, + { 0x2D, 0xFF }, + { 0x2E, 0x74 }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, // CDirectSoundBuffer_SetMixBins+0x49 : pop edi - { 0x49, 0x5F }, // (Offset,Value)-Pair #15 + { 0x49, 0x5F }, // CDirectSoundBuffer_SetMixBins+0x4B : retn 0x08 - { 0x4B, 0xC2 }, // (Offset,Value)-Pair #16 - { 0x4C, 0x08 }, // (Offset,Value)-Pair #17 + { 0x4B, 0xC2 }, + { 0x4C, 0x08 }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 4039 // ****************************************************************** // * IDirectSoundBuffer_SetMixBins // ****************************************************************** @@ -352,52 +384,60 @@ OOVPA_XREF(IDirectSoundBuffer_SetMixBins, 4134, 12, XRefOne) // IDirectSoundBuffer_SetMixBins+0x15 : call [CDirectSoundBuffer::SetMixBins] - XREF_ENTRY( 0x15, XREF_DSSETMIXBINSA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetMixBins ), // IDirectSoundBuffer_SetMixBins+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_SetMixBins+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetMixBins+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #9 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #10 + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, // IDirectSoundBuffer_SetMixBins+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #11 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #12 + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; +#endif // ****************************************************************** -// * CDirectSound::SetPositionA +// * CDirectSound_SetPosition // ****************************************************************** -OOVPA_XREF(CDirectSound_SetPositionA, 4134, 11, +OOVPA_XREF(CDirectSound_SetPosition, 4134, 14, - XREF_DSSETPOSITIONA, + XREF_CDirectSound_SetPosition, XRefZero) - // CDirectSound_SetPositionA+0x2B : mov ecx, [ebp+0x08] - { 0x2B, 0x8B }, // (Offset,Value)-Pair #1 - { 0x2C, 0x4D }, // (Offset,Value)-Pair #2 - { 0x2D, 0x08 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetPosition+0x00 : push ebp + { 0x00, 0x55}, - // CDirectSound_SetPositionA+0x3F : mov [edx+0x3C], edi - { 0x3F, 0x89 }, // (Offset,Value)-Pair #4 - { 0x40, 0x7A }, // (Offset,Value)-Pair #5 - { 0x41, 0x3C }, // (Offset,Value)-Pair #6 + // CDirectSound_SetPosition+0x2B : mov ecx, [ebp+0x08] + { 0x2B, 0x8B }, + { 0x2C, 0x4D }, + { 0x2D, 0x08 }, - // CDirectSound_SetPositionA+0x4C : or word ptr [eax+0xA4], 0x01FF - { 0x4C, 0x80 }, // (Offset,Value)-Pair #7 - { 0x4D, 0x88 }, // (Offset,Value)-Pair #8 - { 0x4E, 0xA4 }, // (Offset,Value)-Pair #9 - { 0x4F, 0x00 }, // (Offset,Value)-Pair #10 - { 0x52, 0xFF }, // (Offset,Value)-Pair #11 + // CDirectSound_SetPosition+0x3F : mov [edx+0x3C], edi + { 0x3F, 0x89 }, + { 0x40, 0x7A }, + { 0x41, 0x3C }, + + // CDirectSound_SetPosition+0x4C : or word ptr [eax+0xA4], 0x01FF + { 0x4C, 0x80 }, + { 0x4D, 0x88 }, + { 0x4E, 0xA4 }, + { 0x4F, 0x00 }, + { 0x52, 0xFF }, + + // CDirectSound_SetPosition+0x73 : retn 0x14 + { 0x73, 0xC2 }, + { 0x74, 0x14 }, OOVPA_END; // ****************************************************************** @@ -409,26 +449,26 @@ OOVPA_XREF(IDirectSound_CreateSoundBuffer, 4134, 12, XRefOne) // IDirectSound_CreateSoundBuffer+0x1D : call [CDirectSound::CreateSoundBuffer] - XREF_ENTRY( 0x1D, XREF_DSCREATESOUNDBUFFER ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1D, XREF_CDirectSound_CreateSoundBuffer ), // IDirectSound_CreateSoundBuffer+0x04 : mov eax, [esp+8] - { 0x04, 0x8B }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0x8B }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSound_CreateSoundBuffer+0x12 : add eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #6 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #8 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_CreateSoundBuffer+0x17 : sbb ecx, ecx - { 0x17, 0x1B }, // (Offset,Value)-Pair #9 - { 0x18, 0xC9 }, // (Offset,Value)-Pair #10 + { 0x17, 0x1B }, + { 0x18, 0xC9 }, // IDirectSound_CreateSoundBuffer+0x21 : retn 0x10 - { 0x21, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x22, 0x10 }, // (Offset,Value)-Pair #12 + { 0x21, 0xC2 }, + { 0x22, 0x10 }, OOVPA_END; // ****************************************************************** @@ -436,27 +476,27 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetFrequency, 4134, 11, - XREF_DSBUFFERSETFREQUENCYB, + XREF_CDirectSoundVoice_SetFrequency, XRefZero) // CDirectSoundVoice_SetFrequency+0x0D : mov eax, [esi+0x10] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #1 - { 0x0E, 0x46 }, // (Offset,Value)-Pair #2 - { 0x0F, 0x10 }, // (Offset,Value)-Pair #3 + { 0x0D, 0x8B }, + { 0x0E, 0x46 }, + { 0x0F, 0x10 }, // CDirectSoundVoice_SetFrequency+0x10 : mov eax, [eax+0x10] - { 0x10, 0x8B }, // (Offset,Value)-Pair #4 - { 0x11, 0x40 }, // (Offset,Value)-Pair #5 - { 0x12, 0x10 }, // (Offset,Value)-Pair #6 + { 0x10, 0x8B }, + { 0x11, 0x40 }, + { 0x12, 0x10 }, // CDirectSoundVoice_SetFrequency+0x14 : call [abs]; push eax; push esi - { 0x14, 0xE8 }, // (Offset,Value)-Pair #7 - { 0x19, 0x50 }, // (Offset,Value)-Pair #8 - { 0x1A, 0x56 }, // (Offset,Value)-Pair #9 + { 0x14, 0xE8 }, + { 0x19, 0x50 }, + { 0x1A, 0x56 }, // CDirectSoundVoice_SetFrequency+0x22 : retn 0x08 - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x08 }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x08 }, OOVPA_END; // ****************************************************************** @@ -464,37 +504,38 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetFrequency, 4134, 17, - XREF_DSBUFFERSETFREQUENCYA, + XREF_CDirectSoundBuffer_SetFrequency, XRefOne) // CDirectSoundBuffer_SetFrequency+0x32 : call [CDirectSoundVoice::SetFrequency] - XREF_ENTRY( 0x32, XREF_DSBUFFERSETFREQUENCYB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetFrequency ), // CDirectSoundBuffer_SetFrequency+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_SetFrequency+0x29 : push [esp+0x10]; push [esp+0x10] - { 0x29, 0xFF }, // (Offset,Value)-Pair #7 - { 0x2A, 0x74 }, // (Offset,Value)-Pair #8 - { 0x2B, 0x24 }, // (Offset,Value)-Pair #9 - { 0x2C, 0x10 }, // (Offset,Value)-Pair #10 - { 0x2D, 0xFF }, // (Offset,Value)-Pair #11 - { 0x2E, 0x74 }, // (Offset,Value)-Pair #12 - { 0x2F, 0x24 }, // (Offset,Value)-Pair #13 - { 0x30, 0x10 }, // (Offset,Value)-Pair #14 + { 0x29, 0xFF }, + { 0x2A, 0x74 }, + { 0x2B, 0x24 }, + { 0x2C, 0x10 }, + { 0x2D, 0xFF }, + { 0x2E, 0x74 }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, // CDirectSoundBuffer_SetFrequency+0x49 : pop edi - { 0x49, 0x5F }, // (Offset,Value)-Pair #15 + { 0x49, 0x5F }, // CDirectSoundBuffer_SetFrequency+0x4B : retn 0x08 - { 0x4B, 0xC2 }, // (Offset,Value)-Pair #16 - { 0x4C, 0x08 }, // (Offset,Value)-Pair #17 + { 0x4B, 0xC2 }, + { 0x4C, 0x08 }, OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetFrequency // ****************************************************************** @@ -504,84 +545,87 @@ OOVPA_XREF(IDirectSoundBuffer_SetFrequency, 4134, 12, XRefOne) // IDirectSoundBuffer_SetFrequency+0x15 : call [CDirectSound::SetFrequency] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETFREQUENCYA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetFrequency ), // IDirectSoundBuffer_SetFrequency+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_SetFrequency0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetFrequency+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #9 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #10 + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, // IDirectSoundBuffer_SetFrequency+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #11 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #12 + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; +#endif // ****************************************************************** // * CMcpxVoiceClient_SetVolume // ****************************************************************** +// Generic OOVPA as of 4134 and newer. OOVPA_XREF(CMcpxVoiceClient_SetVolume, 4134, 13, - XREF_DSSTREAMSETVOLUME, + XREF_CMcpxVoiceClient_SetVolume, XRefZero) // CMcpxVoiceClient_SetVolume+0x2A : lea eax, [ecx+ecx*2] - { 0x2A, 0x8D }, // (Offset,Value)-Pair #1 - { 0x2B, 0x04 }, // (Offset,Value)-Pair #2 - { 0x2C, 0x49 }, // (Offset,Value)-Pair #3 + { 0x2A, 0x8D }, + { 0x2B, 0x04 }, + { 0x2C, 0x49 }, // CMcpxVoiceClient_SetVolume+0x45 : movzx edx, word ptr [ecx] - { 0x45, 0x0F }, // (Offset,Value)-Pair #4 - { 0x46, 0xB7 }, // (Offset,Value)-Pair #5 - { 0x47, 0x11 }, // (Offset,Value)-Pair #6 + { 0x45, 0x0F }, + { 0x46, 0xB7 }, + { 0x47, 0x11 }, // CMcpxVoiceClient_SetVolume+0x6C : mov edx, [ebp+eax*4-0x14] - { 0x6C, 0x8B }, // (Offset,Value)-Pair #7 - { 0x6D, 0x54 }, // (Offset,Value)-Pair #8 - { 0x6E, 0x85 }, // (Offset,Value)-Pair #9 - { 0x6F, 0xEC }, // (Offset,Value)-Pair #10 + { 0x6C, 0x8B }, + { 0x6D, 0x54 }, + { 0x6E, 0x85 }, + { 0x6F, 0xEC }, // CMcpxVoiceClient_SetVolume+0x84 : inc eax; inc ecx, inc ecx - { 0x84, 0x40 }, // (Offset,Value)-Pair #11 - { 0x85, 0x41 }, // (Offset,Value)-Pair #12 - { 0x86, 0x41 }, // (Offset,Value)-Pair #13 + { 0x84, 0x40 }, + { 0x85, 0x41 }, + { 0x86, 0x41 }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoice_SetVolume // ****************************************************************** +// Generic OOVPA as of 4134 and newer. OOVPA_XREF(CDirectSoundVoice_SetVolume, 4134, 11, XREF_CDirectSoundVoice_SetVolume, XRefOne) // CDirectSoundVoice_SetVolume+0x15 : call [CMcpxVoiceClient::SetVolume] - XREF_ENTRY( 0x15, XREF_DSSTREAMSETVOLUME ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetVolume ), // CDirectSoundVoice_SetVolume+0x00 : mov ecx, [esp+0x04] - { 0x00, 0x8B }, // (Offset,Value)-Pair #2 - { 0x01, 0x4C }, // (Offset,Value)-Pair #3 - { 0x02, 0x24 }, // (Offset,Value)-Pair #4 - { 0x03, 0x04 }, // (Offset,Value)-Pair #5 + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, // CDirectSoundVoice_SetVolume+0x0B : sub edx, [eax+0x20] - { 0x0B, 0x2B }, // (Offset,Value)-Pair #6 - { 0x0C, 0x50 }, // (Offset,Value)-Pair #7 - { 0x0D, 0x20 }, // (Offset,Value)-Pair #8 + { 0x0B, 0x2B }, + { 0x0C, 0x50 }, + { 0x0D, 0x20 }, // CDirectSoundVoice_SetVolume+0x11 : mov ecx, [ecx+0x0C] - { 0x11, 0x8B }, // (Offset,Value)-Pair #9 - { 0x12, 0x49 }, // (Offset,Value)-Pair #10 - { 0x13, 0x0C }, // (Offset,Value)-Pair #11 + { 0x11, 0x8B }, + { 0x12, 0x49 }, + { 0x13, 0x0C }, OOVPA_END; // ****************************************************************** @@ -589,7 +633,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetVolume, 4134, 9, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetVolume, XRefOne) XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetVolume ), @@ -605,31 +649,31 @@ OOVPA_XREF(CDirectSoundStream_SetVolume, 4134, 9, OOVPA_END; // ****************************************************************** -// * IDirectSoundBuffer_LockA +// * CDirectSoundBuffer_Lock // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_LockA, 4134, 13, +OOVPA_XREF(CDirectSoundBuffer_Lock, 4134, 13, - XREF_DSBUFFERLOCKA, + XREF_CDirectSoundBuffer_Lock, XRefZero) - // IDirectSoundBuffer_LockA+0x37 : test [ebp+0x24], 1 - { 0x37, 0xF6 }, // (Offset,Value)-Pair #1 - { 0x38, 0x45 }, // (Offset,Value)-Pair #2 - { 0x39, 0x24 }, // (Offset,Value)-Pair #3 - { 0x3A, 0x01 }, // (Offset,Value)-Pair #4 + // CDirectSoundBuffer_Lock+0x37 : test [ebp+0x24], 1 + { 0x37, 0xF6 }, + { 0x38, 0x45 }, + { 0x39, 0x24 }, + { 0x3A, 0x01 }, - // IDirectSoundBuffer_LockA+0x5C : mov eax, [eax+0xBC] - { 0x5C, 0x8B }, // (Offset,Value)-Pair #5 - { 0x5D, 0x80 }, // (Offset,Value)-Pair #6 - { 0x5E, 0xBC }, // (Offset,Value)-Pair #7 - { 0x5F, 0x00 }, // (Offset,Value)-Pair #8 + // CDirectSoundBuffer_Lock+0x5C : mov eax, [eax+0xBC] + { 0x5C, 0x8B }, + { 0x5D, 0x80 }, + { 0x5E, 0xBC }, + { 0x5F, 0x00 }, - // IDirectSoundBuffer_LockA+0xA4 : jnb +0x11; mov esi, [esi+0x1C] - { 0xA2, 0x73 }, // (Offset,Value)-Pair #9 - { 0xA3, 0x11 }, // (Offset,Value)-Pair #10 - { 0xA4, 0x8B }, // (Offset,Value)-Pair #11 - { 0xA5, 0x76 }, // (Offset,Value)-Pair #12 - { 0xA6, 0x1C }, // (Offset,Value)-Pair #13 + // CDirectSoundBuffer_Lock+0xA4 : jnb +0x11; mov esi, [esi+0x1C] + { 0xA2, 0x73 }, + { 0xA3, 0x11 }, + { 0xA4, 0x8B }, + { 0xA5, 0x76 }, + { 0xA6, 0x1C }, OOVPA_END; // ****************************************************************** @@ -641,21 +685,21 @@ OOVPA_XREF(CMcpxBuffer_SetBufferData, 4134, 9, XRefZero) // CMcpxBuffer_SetBufferData+0x1E : cmp eax, ebx - { 0x1E, 0x3B }, // (Offset,Value)-Pair #1 - { 0x1F, 0xC3 }, // (Offset,Value)-Pair #2 + { 0x1E, 0x3B }, + { 0x1F, 0xC3 }, // CMcpxBuffer_SetBufferData+0x20 : jz +0x0C - { 0x20, 0x74 }, // (Offset,Value)-Pair #3 - { 0x21, 0x0C }, // (Offset,Value)-Pair #4 + { 0x20, 0x74 }, + { 0x21, 0x0C }, // CMcpxBuffer_SetBufferData+0x45 : mov [esi+0xB8], ecx - { 0x45, 0x89 }, // (Offset,Value)-Pair #5 - { 0x46, 0x8E }, // (Offset,Value)-Pair #6 - { 0x47, 0xB8 }, // (Offset,Value)-Pair #7 + { 0x45, 0x89 }, + { 0x46, 0x8E }, + { 0x47, 0xB8 }, // CMcpxBuffer_SetBufferData+0x89 : retn 0x08 - { 0x89, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x8A, 0x08 }, // (Offset,Value)-Pair #9 + { 0x89, 0xC2 }, + { 0x8A, 0x08 }, OOVPA_END; // ****************************************************************** @@ -667,22 +711,22 @@ OOVPA_XREF(CDirectSoundBuffer_SetBufferData, 4134, 10, XRefOne) // CDirectSoundBuffer_SetBufferData+0x7A : call [CMcpxBuffer::SetBufferData] - XREF_ENTRY( 0x7A, XREF_CMcpxBuffer_SetBufferData), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x7A, XREF_CMcpxBuffer_SetBufferData), // CDirectSoundBuffer_SetBufferData+0x40 : mov eax, 0x80004005 - { 0x40, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x41, 0x05 }, // (Offset,Value)-Pair #3 - { 0x42, 0x40 }, // (Offset,Value)-Pair #4 - { 0x43, 0x00 }, // (Offset,Value)-Pair #5 - { 0x44, 0x80 }, // (Offset,Value)-Pair #6 + { 0x40, 0xB8 }, + { 0x41, 0x05 }, + { 0x42, 0x40 }, + { 0x43, 0x00 }, + { 0x44, 0x80 }, // CDirectSoundBuffer_SetBufferData+0x5F : jz +0x33 - { 0x5F, 0x74 }, // (Offset,Value)-Pair #7 - { 0x60, 0x33 }, // (Offset,Value)-Pair #8 + { 0x5F, 0x74 }, + { 0x60, 0x33 }, // CDirectSoundBuffer_SetBufferData+0xAB : retn 0x0C - { 0xAB, 0xC2 }, // (Offset,Value)-Pair #9 - { 0xAC, 0x0C }, // (Offset,Value)-Pair #10 + { 0xAB, 0xC2 }, + { 0xAC, 0x0C }, OOVPA_END; // ****************************************************************** @@ -694,20 +738,20 @@ OOVPA_XREF(IDirectSoundBuffer_SetBufferData, 4134, 8, XRefOne) // IDirectSoundBuffer_SetBufferData+0x19 : call [CDirectSoundBuffer::SetBufferData] - XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetBufferData), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetBufferData), // IDirectSoundBuffer_SetBufferData+0x0E : add eax, 0xFFFFFFE4 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x10, 0xE4 }, // (Offset,Value)-Pair #4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, // IDirectSoundBuffer_SetBufferData+0x13 : sbb ecx, ecx - { 0x13, 0x1B }, // (Offset,Value)-Pair #5 - { 0x14, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x13, 0x1B }, + { 0x14, 0xC9 }, // IDirectSoundBuffer_SetBufferData+0x15 : and ecx, eax - { 0x15, 0x23 }, // (Offset,Value)-Pair #7 - { 0x16, 0xC8 }, // (Offset,Value)-Pair #8 + { 0x15, 0x23 }, + { 0x16, 0xC8 }, OOVPA_END; // ****************************************************************** @@ -719,23 +763,23 @@ OOVPA_XREF(CMcpxBuffer_GetStatus, 4134, 11, XRefZero) // CMcpxBuffer_GetStatus+0x0A : mov esi, ecx - { 0x0A, 0x8B }, // (Offset,Value)-Pair #1 - { 0x0B, 0xF1 }, // (Offset,Value)-Pair #2 + { 0x0A, 0x8B }, + { 0x0B, 0xF1 }, // CMcpxBuffer_GetStatus+0x20 : jz +0x18 - { 0x20, 0x74 }, // (Offset,Value)-Pair #3 - { 0x21, 0x18 }, // (Offset,Value)-Pair #4 + { 0x20, 0x74 }, + { 0x21, 0x18 }, // CMcpxBuffer_GetStatus+0x22 : test word ptr [esi+0x12], 0x8002 - { 0x22, 0x66 }, // (Offset,Value)-Pair #5 - { 0x23, 0xF7 }, // (Offset,Value)-Pair #6 - { 0x24, 0x46 }, // (Offset,Value)-Pair #7 - { 0x25, 0x12 }, // (Offset,Value)-Pair #8 + { 0x22, 0x66 }, + { 0x23, 0xF7 }, + { 0x24, 0x46 }, + { 0x25, 0x12 }, // CMcpxBuffer_GetStatus+0x2C : test word ptr [esi+0x12], 0x200 - { 0x2C, 0x66 }, // (Offset,Value)-Pair #9 - { 0x2D, 0xF7 }, // (Offset,Value)-Pair #10 - { 0x2E, 0x46 }, // (Offset,Value)-Pair #11 + { 0x2C, 0x66 }, + { 0x2D, 0xF7 }, + { 0x2E, 0x46 }, OOVPA_END; // ****************************************************************** @@ -747,22 +791,22 @@ OOVPA_XREF(CDirectSoundBuffer_GetStatus, 4134, 10, XRefOne) // CDirectSoundBuffer_GetStatus+0x35 : call [CMcpxBuffer::GetStatus] - XREF_ENTRY(0x35, XREF_CMcpxBuffer_GetStatus), // (Offset,Value)-Pair #1 + XREF_ENTRY(0x35, XREF_CMcpxBuffer_GetStatus), // CDirectSoundBuffer_GetStatus+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_GetStatus+0x3D : jz +0x0B - { 0x3D, 0x74 }, // (Offset,Value)-Pair #7 - { 0x3E, 0x0B }, // (Offset,Value)-Pair #8 + { 0x3D, 0x74 }, + { 0x3E, 0x0B }, // CDirectSoundBuffer_GetStatus+0x4E : retn 0x08 - { 0x4E, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x4F, 0x08 }, // (Offset,Value)-Pair #10 + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, OOVPA_END; // ****************************************************************** @@ -774,19 +818,19 @@ OOVPA_XREF(CMcpxBuffer_SetCurrentPosition, 4134, 9, XRefZero) // CMcpxBuffer_SetCurrentPosition+0x11 : mov al, [esi+12] - { 0x11, 0x8A }, // (Offset,Value)-Pair #1 - { 0x12, 0x46 }, // (Offset,Value)-Pair #2 - { 0x13, 0x12 }, // (Offset,Value)-Pair #3 + { 0x11, 0x8A }, + { 0x12, 0x46 }, + { 0x13, 0x12 }, // CMcpxBuffer_SetCurrentPosition+0x5F : jb +0x10 - { 0x5F, 0x72 }, // (Offset,Value)-Pair #4 - { 0x60, 0x10 }, // (Offset,Value)-Pair #5 + { 0x5F, 0x72 }, + { 0x60, 0x10 }, // CMcpxBuffer_SetCurrentPosition+0x86 : movzx eax, byte ptr [esi+0x64] - { 0x86, 0x0F }, // (Offset,Value)-Pair #6 - { 0x87, 0xB6 }, // (Offset,Value)-Pair #7 - { 0x88, 0x46 }, // (Offset,Value)-Pair #8 - { 0x89, 0x64 }, // (Offset,Value)-Pair #9 + { 0x86, 0x0F }, + { 0x87, 0xB6 }, + { 0x88, 0x46 }, + { 0x89, 0x64 }, OOVPA_END; // ****************************************************************** @@ -798,24 +842,25 @@ OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 4134, 10, XRefOne) // CDirectSoundBuffer_SetCurrentPosition+0x35 : call [CMcpxBuffer::SetCurrentPosition] - XREF_ENTRY( 0x35, XREF_CMcpxBuffer_SetCurrentPosition), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x35, XREF_CMcpxBuffer_SetCurrentPosition), // CDirectSoundBuffer_SetCurrentPosition+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_SetCurrentPosition+0x3D : jz +0x0B - { 0x3D, 0x74 }, // (Offset,Value)-Pair #7 - { 0x3E, 0x0B }, // (Offset,Value)-Pair #8 + { 0x3D, 0x74 }, + { 0x3E, 0x0B }, // CDirectSoundBuffer_SetCurrentPosition+0x3D : retn 0x08 - { 0x4E, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x4F, 0x08 }, // (Offset,Value)-Pair #10 + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSoundBuffer_SetCurrentPosition // ****************************************************************** @@ -825,21 +870,22 @@ OOVPA_XREF(IDirectSoundBuffer_SetCurrentPosition, 4134, 8, XRefOne) // IDirectSoundBuffer_SetCurrentPosition+0x15 : call [CDirectSoundBuffer::SetCurrentPosition] - XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetCurrentPosition), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetCurrentPosition), // IDirectSoundBuffer_SetCurrentPosition+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, // IDirectSoundBuffer_SetCurrentPosition+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #5 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, // IDirectSoundBuffer_SetCurrentPosition+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #7 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #8 + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; +#endif // ****************************************************************** // * CMcpxBuffer_GetCurrentPosition @@ -850,23 +896,23 @@ OOVPA_XREF(CMcpxBuffer_GetCurrentPosition, 4134, 11, XRefZero) // CMcpxBuffer_GetCurrentPosition+0x0E : lea ecx, [ebp-0x08] - { 0x0E, 0x8D }, // (Offset,Value)-Pair #1 - { 0x0F, 0x4D }, // (Offset,Value)-Pair #2 - { 0x10, 0xF8 }, // (Offset,Value)-Pair #3 + { 0x0E, 0x8D }, + { 0x0F, 0x4D }, + { 0x10, 0xF8 }, // CMcpxBuffer_GetCurrentPosition+0x31 : jz +0x02 - { 0x31, 0x74 }, // (Offset,Value)-Pair #4 - { 0x32, 0x02 }, // (Offset,Value)-Pair #5 + { 0x31, 0x74 }, + { 0x32, 0x02 }, // CMcpxBuffer_GetCurrentPosition+0xA0 : div dword ptr [ecx+0xBC] - { 0xA0, 0xF7 }, // (Offset,Value)-Pair #6 - { 0xA1, 0xB1 }, // (Offset,Value)-Pair #7 - { 0xA2, 0xBC }, // (Offset,Value)-Pair #8 + { 0xA0, 0xF7 }, + { 0xA1, 0xB1 }, + { 0xA2, 0xBC }, // CMcpxBuffer_GetCurrentPosition+0xD6 : retn 0x08 - { 0xD6, 0xC2 }, // (Offset,Value)-Pair #9 - { 0xD7, 0x08 }, // (Offset,Value)-Pair #10 - { 0xD8, 0x00 }, // (Offset,Value)-Pair #11 + { 0xD6, 0xC2 }, + { 0xD7, 0x08 }, + { 0xD8, 0x00 }, OOVPA_END; // ****************************************************************** @@ -878,22 +924,22 @@ OOVPA_XREF(CDirectSoundBuffer_GetCurrentPosition, 4134, 10, XRefOne) // CDirectSoundBuffer_GetCurrentPosition+0x39 : call [CMcpxBuffer::GetCurrentPosition] - XREF_ENTRY( 0x39, XREF_CMcpxBuffer_GetCurrentPosition), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x39, XREF_CMcpxBuffer_GetCurrentPosition), // CDirectSoundBuffer_GetCurrentPosition+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_GetCurrentPosition+0x41 : jz +0x0B - { 0x41, 0x74 }, // (Offset,Value)-Pair #7 - { 0x42, 0x0B }, // (Offset,Value)-Pair #8 + { 0x41, 0x74 }, + { 0x42, 0x0B }, - // CDirectSoundBuffer_GetCurrentPosition+0x3D : retn 0x08 - { 0x52, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x53, 0x0C }, // (Offset,Value)-Pair #10 + // CDirectSoundBuffer_GetCurrentPosition+0x52 : retn 0x08 + { 0x52, 0xC2 }, + { 0x53, 0x0C }, OOVPA_END; // ****************************************************************** @@ -920,29 +966,39 @@ OOVPA_END; // ****************************************************************** // * CDirectSound::SetDistanceFactorA // ****************************************************************** -OOVPA_XREF(CDirectSound_SetDistanceFactorA, 4134, 11, +OOVPA_XREF(CDirectSound_SetDistanceFactor, 4134, 17, - XREF_SETDISTANCEFACTORA, + XREF_CDirectSound_SetDistanceFactor, XRefZero) - // CDirectSound_SetDistanceFactorA+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + // CDirectSound_SetDistanceFactor+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, - // CDirectSound_SetDistanceFactorA+0x39 : or dword ptr[eax+0xA4], 0x60 - { 0x39, 0x83 }, // (Offset,Value)-Pair #6 - { 0x3A, 0x88 }, // (Offset,Value)-Pair #7 - { 0x3B, 0xA4 }, // (Offset,Value)-Pair #8 - { 0x3F, 0x60 }, // (Offset,Value)-Pair #9 + // CDirectSound_SetDistanceFactor+0x33 : mov [eax+68h], edx + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x68 }, - // CDirectSound_SetDistanceFactorA+0x4F : jz +0x0B - { 0x4F, 0x74 }, // (Offset,Value)-Pair #10 - { 0x50, 0x0B }, // (Offset,Value)-Pair #11 + // CDirectSound_SetDistanceFactor+0x36 : mov eax, [ecx+8] + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, + + // CDirectSound_SetDistanceFactor+0x39 : or dword ptr[eax+0xA4], 0x60 + { 0x39, 0x83 }, + { 0x3A, 0x88 }, + { 0x3B, 0xA4 }, + { 0x3F, 0x60 }, + + // CDirectSound_SetDistanceFactor+0x4F : jz +0x0B + { 0x4F, 0x74 }, + { 0x50, 0x0B }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_SetDistanceFactor // ****************************************************************** @@ -952,53 +1008,64 @@ OOVPA_XREF(IDirectSound_SetDistanceFactor, 4134, 11, XRefOne) // IDirectSound_SetDistanceFactor+0x1D : call [CDirectSound::SetDistanceFactor] - XREF_ENTRY( 0x1D, XREF_SETDISTANCEFACTORA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetDistanceFactor ), // IDirectSound_SetDistanceFactor+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetDistanceFactor+0x0C : push ecx - { 0x0C, 0x51 }, // (Offset,Value)-Pair #6 + { 0x0C, 0x51 }, // IDirectSound_SetDistanceFactor+0x12 : add eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #7 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_SetDistanceFactor+0x21 : retn 0x0C - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x0C }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x0C }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSound::SetRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetRolloffFactor, 4134, 11, +OOVPA_XREF(CDirectSound_SetRolloffFactor, 4134, 17, - XREF_SETROLLOFFFACTORA, + XREF_CDirectSound_SetRolloffFactor, XRefZero) // CDirectSound_SetRolloffFactor+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSound_SetRolloffFactor+0x33 : mov [eax+6Ch], edx + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x6C }, + + // CDirectSound_SetRolloffFactor+0x36 : mov eax, [ecx+8] + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, // CDirectSound_SetRolloffFactor+0x39 : or dword ptr[eax+0xA4], 0x04 - { 0x39, 0x83 }, // (Offset,Value)-Pair #6 - { 0x3A, 0x88 }, // (Offset,Value)-Pair #7 - { 0x3B, 0xA4 }, // (Offset,Value)-Pair #8 - { 0x3F, 0x04 }, // (Offset,Value)-Pair #9 + { 0x39, 0x83 }, + { 0x3A, 0x88 }, + { 0x3B, 0xA4 }, + { 0x3F, 0x04 }, // CDirectSound_SetRolloffFactor+0x4F : jz +0x0B - { 0x4F, 0x74 }, // (Offset,Value)-Pair #10 - { 0x50, 0x0B }, // (Offset,Value)-Pair #11 + { 0x4F, 0x74 }, + { 0x50, 0x0B }, OOVPA_END; +#if 0 // Duplicate OOVPA, using 3911 OOVPA instead // ****************************************************************** // * IDirectSound_SetRolloffFactor // ****************************************************************** @@ -1008,58 +1075,59 @@ OOVPA_XREF(IDirectSound_SetRolloffFactor, 4134, 11, XRefOne) // IDirectSound_SetRolloffFactor+0x1D : call [CDirectSound::SetRolloffFactor] - XREF_ENTRY( 0x1D, XREF_SETROLLOFFFACTORA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetRolloffFactor ), // IDirectSound_SetRolloffFactor+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetRolloffFactor+0x0C : push ecx - { 0x0C, 0x51 }, // (Offset,Value)-Pair #6 + { 0x0C, 0x51 }, // IDirectSound_SetRolloffFactor+0x12 : add eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #7 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_SetRolloffFactor+0x21 : retn 0x0C - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x0C }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x0C }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSound::SetDopplerFactor // ****************************************************************** OOVPA_XREF(CDirectSound_SetDopplerFactor, 4134, 14, - XREF_SETDOPPLERFACTOR, + XREF_CDirectSound_SetDopplerFactor, XRefZero) // CDirectSound_SetDopplerFactor+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSound_SetDopplerFactor+0x33 : mov [eax+0x70], edx - { 0x33, 0x89 }, // (Offset,Value)-Pair #6 - { 0x34, 0x50 }, // (Offset,Value)-Pair #7 - { 0x35, 0x70 }, // (Offset,Value)-Pair #8 + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x70 }, // CDirectSound_SetDopplerFactor+0x39 : or dword ptr[eax+0xA4], 0x40 - { 0x39, 0x83 }, // (Offset,Value)-Pair #9 - { 0x3A, 0x88 }, // (Offset,Value)-Pair #10 - { 0x3B, 0xA4 }, // (Offset,Value)-Pair #11 - { 0x3F, 0x40 }, // (Offset,Value)-Pair #12 + { 0x39, 0x83 }, + { 0x3A, 0x88 }, + { 0x3B, 0xA4 }, + { 0x3F, 0x40 }, // CDirectSound_SetDopplerFactor+0x4F : jz +0x0B - { 0x4F, 0x74 }, // (Offset,Value)-Pair #13 - { 0x50, 0x0B }, // (Offset,Value)-Pair #14 + { 0x4F, 0x74 }, + { 0x50, 0x0B }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_SetDopplerFactor // ****************************************************************** @@ -1069,58 +1137,61 @@ OOVPA_XREF(IDirectSound_SetDopplerFactor, 4134, 11, XRefOne) // IDirectSound_SetDopplerFactor+0x1D : call [CDirectSound::SetDopplerFactor] - XREF_ENTRY( 0x1D, XREF_SETDOPPLERFACTOR), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetDopplerFactor), // IDirectSound_SetDopplerFactor+0x04 : fld [esp+0x0C] - { 0x04, 0xD9 }, // (Offset,Value)-Pair #2 - { 0x05, 0x44 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xD9 }, + { 0x05, 0x44 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetDopplerFactor+0x0C : push ecx - { 0x0C, 0x51 }, // (Offset,Value)-Pair #6 + { 0x0C, 0x51 }, // IDirectSound_SetDopplerFactor+0x12 : add eax, 0xFFFFFFF8 - { 0x12, 0x83 }, // (Offset,Value)-Pair #7 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #8 - { 0x14, 0xF8 }, // (Offset,Value)-Pair #9 + { 0x12, 0x83 }, + { 0x13, 0xC0 }, + { 0x14, 0xF8 }, // IDirectSound_SetDopplerFactor+0x21 : retn 0x0C - { 0x21, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x22, 0x0C }, // (Offset,Value)-Pair #11 + { 0x21, 0xC2 }, + { 0x22, 0x0C }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSound::CommitDeferredSettings // ****************************************************************** -OOVPA_NO_XREF(CDirectSound_CommitDeferredSettings, 4134, 11) +OOVPA_XREF(CDirectSound_CommitDeferredSettings, 4134, 11, + + XREF_CDirectSound_CommitDeferredSettings, + XRefZero) // CDirectSound_CommitDeferredSettings+0x10 : movzx eax, al - { 0x10, 0x0F }, // (Offset,Value)-Pair #1 - { 0x11, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x12, 0xC0 }, // (Offset,Value)-Pair #3 + { 0x10, 0x0F }, + { 0x11, 0xB6 }, + { 0x12, 0xC0 }, // CDirectSound_CommitDeferredSettings+0x27 : mov eax, 0x80004005 - { 0x27, 0xB8 }, // (Offset,Value)-Pair #4 - { 0x28, 0x05 }, // (Offset,Value)-Pair #5 - { 0x29, 0x40 }, // (Offset,Value)-Pair #6 - { 0x2B, 0x80 }, // (Offset,Value)-Pair #7 + { 0x27, 0xB8 }, + { 0x28, 0x05 }, + { 0x29, 0x40 }, + { 0x2B, 0x80 }, // CDirectSound_CommitDeferredSettings+0x5C : and [eax+0xA4], esi - { 0x5C, 0x21 }, // (Offset,Value)-Pair #8 - { 0x5D, 0xB0 }, // (Offset,Value)-Pair #9 - { 0x5E, 0xA4 }, // (Offset,Value)-Pair #10 + { 0x5C, 0x21 }, + { 0x5D, 0xB0 }, + { 0x5E, 0xA4 }, // CDirectSound_CommitDeferredSettings+0x78 : leave - { 0x78, 0xC9 }, // (Offset,Value)-Pair #11 + { 0x78, 0xC9 }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetMaxDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 4134, 9, +OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 4134, 12, - XREF_DSVOICESETMAXDISTANCE, + XREF_CDirectSoundVoice_SetMaxDistance, XRefZero) // CDirectSoundVoice_SetMaxDistance+0x0D : mov edx, [esp+arg_4] @@ -1134,6 +1205,10 @@ OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 4134, 9, { 0x12, 0x50 }, { 0x13, 0x38 }, + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x70 }, + // CDirectSoundVoice_SetMaxDistance+0x30 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -1144,11 +1219,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 4134, 10, - XREF_DSBUFFERSETMAXDISTANCE, + XREF_CDirectSoundBuffer_SetMaxDistance, XRefOne) // CDirectSoundBuffer_SetMaxDistance+0x39 : call [CDirectSoundVoice::SetMaxDistance] - XREF_ENTRY( 0x3A, XREF_DSVOICESETMAXDISTANCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMaxDistance ), // CDirectSoundBuffer_SetMaxDistance+0x21 : mov eax, 80004005h { 0x22, 0x05 }, @@ -1166,6 +1241,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 4134, 10, { 0x55, 0x00 } OOVPA_END; +#if 0 // No longer used, replaced by generic 3936 version // ****************************************************************** // * IDirectSoundBuffer_SetMaxDistance // ****************************************************************** @@ -1175,7 +1251,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 4134, 10, XRefOne) // IDirectSoundBuffer_SetMaxDistance+0x1C : call [CDirectSoundBuffer::SetMaxDistance] - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMAXDISTANCE ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMaxDistance ), // IDirectSoundBuffer_SetMaxDistance+0x04 : fld [esp+4+arg_4] { 0x04, 0xD9 }, @@ -1192,16 +1268,16 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 4134, 10, { 0x22, 0x0C }, { 0x23, 0x00 } OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundStream_SetMaxDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 4134, 9, +OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 4134, 11, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetMaxDistance, XRefOne) - XREF_ENTRY( 0x3E, XREF_DSVOICESETMAXDISTANCE ), + XREF_ENTRY( 0x3E, XREF_CDirectSoundVoice_SetMaxDistance ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -1211,14 +1287,17 @@ OOVPA_XREF(CDirectSoundStream_SetMaxDistance, 4134, 9, { 0x3D, 0xE8 }, { 0x48, 0x68 }, { 0x53, 0x8B }, + + { 0x57, 0xC2 }, + { 0x58, 0x0C }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetMinDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 4134, 9, +OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 4134, 12, - XREF_DSVOICESETMINDISTANCE, + XREF_CDirectSoundVoice_SetMinDistance, XRefZero) // CDirectSoundVoice_SetMinDistance+0x0D : mov edx, [esp+arg_4] @@ -1232,6 +1311,10 @@ OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 4134, 9, { 0x12, 0x50 }, { 0x13, 0x34 }, + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x70 }, + // CDirectSoundVoice_SetMinDistance+0x30 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -1242,11 +1325,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 4134, 10, - XREF_DSBUFFERSETMINDISTANCE, + XREF_CDirectSoundBuffer_SetMinDistance, XRefOne) // CDirectSoundBuffer_SetMinDistance+0x39 : call [CDirectSoundVoice::SetMinDistance] - XREF_ENTRY( 0x3A, XREF_DSVOICESETMINDISTANCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMinDistance ), // CDirectSoundBuffer_SetMinDistance+0x21 : mov eax, 80004005h { 0x22, 0x05 }, @@ -1263,7 +1346,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 4134, 10, { 0x54, 0x0C }, { 0x55, 0x00 } OOVPA_END; - +#if 0 // No longer used, replaced by generic 3936 version // ****************************************************************** // * IDirectSoundBuffer_SetMinDistance // ****************************************************************** @@ -1273,7 +1356,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 4134, 10, XRefOne) // IDirectSoundBuffer_SetMinDistance+0x1C : call [CDirectSoundBuffer::SetMinDistance] - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMINDISTANCE ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMinDistance ), // IDirectSoundBuffer_SetMinDistance+0x04 : fld [esp+4+arg_4] { 0x04, 0xD9 }, @@ -1290,16 +1373,17 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 4134, 10, { 0x22, 0x0C }, { 0x23, 0x00 } OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundStream_SetMinDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMinDistance, 4134, 9, +OOVPA_XREF(CDirectSoundStream_SetMinDistance, 4134, 11, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetMinDistance, XRefOne) - XREF_ENTRY( 0x3E, XREF_DSVOICESETMINDISTANCE ), + XREF_ENTRY( 0x3E, XREF_CDirectSoundVoice_SetMinDistance ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -1309,12 +1393,15 @@ OOVPA_XREF(CDirectSoundStream_SetMinDistance, 4134, 9, { 0x3D, 0xE8 }, { 0x48, 0x68 }, { 0x53, 0x8B }, + + { 0x57, 0xC2 }, + { 0x58, 0x0C }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 4134, 9, +OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 4134, 12, XREF_DSVOICESETROLLOFFFACTOR, XRefZero) @@ -1330,6 +1417,10 @@ OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 4134, 9, { 0x12, 0x50 }, { 0x13, 0x44 }, + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x70 }, + // CDirectSoundVoice_SetRolloffFactor+0x30 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -1412,7 +1503,7 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetDistanceFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 4134, 9, +OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 4134, 12, XREF_DSVOICESETDISTANCEFACTOR, XRefZero) @@ -1428,9 +1519,13 @@ OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 4134, 9, { 0x12, 0x50 }, { 0x13, 0x40 }, + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x70 }, + // CDirectSoundVoice_SetDistanceFactor+0x30 : retn 0Ch { 0x31, 0x0C }, - { 0x32, 0x00 } + { 0x32, 0x00 }, OOVPA_END; // ****************************************************************** @@ -1492,7 +1587,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 4134, 9, - XREF_DSVOICESETCONEANGLES, + XREF_CDirectSoundVoice_SetConeAngles, XRefZero) // CDirectSoundVoice_SetConeAngles+0x0D : mov edx, [esp+arg_4] @@ -1514,13 +1609,16 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundBuffer::SetConeAngles // ****************************************************************** -OOVPA_XREF(CDirectSoundBuffer_SetConeAngles, 4134, 11, +OOVPA_XREF(CDirectSoundBuffer_SetConeAngles, 4134, 12, - XREF_DSBUFFERSETCONEANGLES, + XREF_CDirectSoundBuffer_SetConeAngles, XRefOne) // CDirectSoundBuffer_SetConeAngles+0x39 : call [CDirectSoundVoice::SetConeAngles] - XREF_ENTRY( 0x3A, XREF_DSVOICESETCONEANGLES ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetConeAngles ), + + // CDirectSoundBuffer_SetConeAngles+0x00 : push esi + { 0x00, 0x56 }, // CDirectSoundBuffer_SetConeAngles+0x21 : mov eax, 80004005h { 0x22, 0x05 }, @@ -1538,7 +1636,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetConeAngles, 4134, 11, { 0x54, 0x10 }, { 0x55, 0x00 } OOVPA_END; - +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetConeAngles // ****************************************************************** @@ -1548,7 +1646,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeAngles, 4134, 10, XRefOne) // IDirectSoundBuffer_SetConeAngles+0x1C : call [CDirectSoundBuffer::SetConeAngles] - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETCONEANGLES ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetConeAngles ), // IDirectSoundBuffer_SetConeAngles+0x04 : mov eax, [esp+4+arg_0] { 0x04, 0x8B }, @@ -1565,13 +1663,13 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeAngles, 4134, 10, { 0x22, 0x10 }, { 0x23, 0x00 } OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundVoice::SetConeOrientation // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetConeOrientation, 4134, 8, - XREF_DSVOICESETCONEORIENTATION, + XREF_CDirectSoundVoice_SetConeOrientation, XRefZero) // CDirectSoundVoice_SetConeOrientation+0x0F : mov edx, [ebp+arg_4] @@ -1594,11 +1692,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetConeOrientation, 4134, 9, - XREF_DSBUFFERSETCONEORIENTATION, + XREF_CDirectSoundBuffer_SetConeOrientation, XRefOne) // CDirectSoundBuffer_SetConeOrientation+0x49 : call [CDirectSoundVoice::SetConeOrientation] - XREF_ENTRY( 0x4A, XREF_DSVOICESETCONEORIENTATION ), + XREF_ENTRY( 0x4A, XREF_CDirectSoundVoice_SetConeOrientation ), // CDirectSoundBuffer_SetConeOrientation+0x2B : fld [ebp+arg_C] { 0x2B, 0xD9 }, @@ -1615,41 +1713,15 @@ OOVPA_XREF(CDirectSoundBuffer_SetConeOrientation, 4134, 9, { 0x66, 0x00 } OOVPA_END; -// ****************************************************************** -// * IDirectSoundBuffer_SetConeOrientation -// ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetConeOrientation, 4134, 9, - - XRefNoSaveIndex, - XRefOne) - - // IDirectSoundBuffer_SetConeOrientation+0x2C : call [CDirectSoundBuffer::SetConeOrientation] - XREF_ENTRY( 0x2D, XREF_DSBUFFERSETCONEORIENTATION ), - - // IDirectSoundBuffer_SetConeOrientation+0x06 : fld [ebp+arg_C] - { 0x06, 0xD9 }, - { 0x07, 0x45 }, - { 0x08, 0x14 }, - - // IDirectSoundBuffer_SetConeOrientation+0x28 : fstp [esp+10h+var_10] - { 0x28, 0xD9 }, - { 0x29, 0x1C }, - { 0x2A, 0x24 }, - - // IDirectSoundBuffer_SetConeOrientation+0x32 : retn 14h - { 0x33, 0x14 }, - { 0x34, 0x00 } -OOVPA_END; - // ****************************************************************** // * CDirectSoundStream_SetConeOrientation // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetConeOrientation, 4134, 9, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetConeOrientation, XRefOne) - XREF_ENTRY( 0x4E, XREF_DSVOICESETCONEORIENTATION ), + XREF_ENTRY( 0x4E, XREF_CDirectSoundVoice_SetConeOrientation ), { 0x00, 0x55 }, { 0x0F, 0x00 }, @@ -1664,9 +1736,9 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetConeOutsideVolume // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 4134, 9, +OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 4134, 12, - XREF_DSVOICESETCONEOUTSIDEVOLUME, + XREF_CDirectSoundVoice_SetConeOutsideVolume, XRefZero) // CDirectSoundVoice_SetConeOutsideVolume+0x0D : mov edx, [esp+arg_4] @@ -1680,6 +1752,10 @@ OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 4134, 9, { 0x12, 0x50 }, { 0x13, 0x30 }, + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x70 }, + // CDirectSoundVoice_SetConeOutsideVolume+0x30 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -1690,11 +1766,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetConeOutsideVolume, 4134, 11, - XREF_DSBUFFERSETCONEOUTSIDEVOLUME, + XREF_CDirectSoundBuffer_SetConeOutsideVolume, XRefOne) // CDirectSoundBuffer_SetConeOutsideVolume+0x35 : call [CDirectSoundVoice::SetConeOutsideVolume] - XREF_ENTRY( 0x36, XREF_DSVOICESETCONEOUTSIDEVOLUME ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetConeOutsideVolume ), // CDirectSoundBuffer_SetConeOutsideVolume+0x21 : mov eax, 80004005h { 0x22, 0x05 }, @@ -1713,41 +1789,15 @@ OOVPA_XREF(CDirectSoundBuffer_SetConeOutsideVolume, 4134, 11, { 0x51, 0x00 } OOVPA_END; -// ****************************************************************** -// * IDirectSoundBuffer_SetConeOutsideVolume -// ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetConeOutsideVolume, 4134, 9, - - XRefNoSaveIndex, - XRefOne) - - // IDirectSoundBuffer_SetConeOutsideVolume+0x18 : call [CDirectSoundBuffer::SetConeOutsideVolume] - XREF_ENTRY( 0x19, XREF_DSBUFFERSETCONEOUTSIDEVOLUME ), - - // IDirectSoundBuffer_SetConeOutsideVolume+0x0A : push [esp+4+arg_4] - { 0x0A, 0xFF }, - { 0x0B, 0x74 }, - { 0x0C, 0x24 }, - { 0x0D, 0x0C }, - - // IDirectSoundBuffer_SetConeOutsideVolume+0x15 : and ecx, eax - { 0x15, 0x23 }, - { 0x16, 0xC8 }, - - // IDirectSoundBuffer_SetConeOutsideVolume+0x1D : retn 0Ch - { 0x1E, 0x0C }, - { 0x1F, 0x00 } -OOVPA_END; - // ****************************************************************** // * CDirectSoundStream_SetConeOutsideVolume // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetConeOutsideVolume, 4134, 9, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetConeOutsideVolume, XRefOne) - XREF_ENTRY( 0x3A, XREF_DSVOICESETCONEOUTSIDEVOLUME ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetConeOutsideVolume ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -1764,7 +1814,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetPosition, 4134, 8, - XREF_DSVOICESETPOSITION, + XREF_CDirectSoundVoice_SetPosition, XRefZero) // CDirectSoundVoice_SetPosition+0x0F : mov edx, [ebp+arg_4] @@ -1787,11 +1837,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetPosition, 4134, 9, - XREF_DSBUFFERSETPOSITION, + XREF_CDirectSoundBuffer_SetPosition, XRefOne) // CDirectSoundBuffer_SetPosition+0x49 : call [CDirectSoundVoice::SetPosition] - XREF_ENTRY( 0x4A, XREF_DSVOICESETPOSITION ), + XREF_ENTRY( 0x4A, XREF_CDirectSoundVoice_SetPosition ), // CDirectSoundBuffer_SetPosition+0x2B : fld [ebp+arg_C] { 0x2B, 0xD9 }, @@ -1811,12 +1861,12 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundStream_SetPosition // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetPosition, 4134, 9, +OOVPA_XREF(CDirectSoundStream_SetPosition, 4134, 11, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetPosition, XRefOne) - XREF_ENTRY( 0x4E, XREF_DSVOICESETPOSITION ), + XREF_ENTRY( 0x4E, XREF_CDirectSoundVoice_SetPosition ), { 0x00, 0x55 }, { 0x0F, 0x00 }, @@ -1826,6 +1876,9 @@ OOVPA_XREF(CDirectSoundStream_SetPosition, 4134, 9, { 0x39, 0xEC }, { 0x58, 0x68 }, { 0x63, 0x8B }, + + { 0x68, 0xC2 }, + { 0x69, 0x14 }, OOVPA_END; // ****************************************************************** @@ -1833,7 +1886,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetVelocity, 4134, 8, - XREF_DSVOICESETVELOCITY, + XREF_CDirectSoundVoice_SetVelocity, XRefZero) // CDirectSoundVoice_SetVelocity+0x0F : mov edx, [ebp+arg_4] @@ -1856,11 +1909,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetVelocity, 4134, 9, - XREF_DSBUFFERSETVELOCITY, + XREF_CDirectSoundBuffer_SetVelocity, XRefOne) // CDirectSoundBuffer_SetVelocity+0x49 : call [CDirectSoundVoice::SetVelocity] - XREF_ENTRY( 0x4A, XREF_DSVOICESETVELOCITY ), + XREF_ENTRY( 0x4A, XREF_CDirectSoundVoice_SetVelocity ), // CDirectSoundBuffer_SetVelocity+0x2B : fld [ebp+arg_C] { 0x2B, 0xD9 }, @@ -1880,12 +1933,12 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundStream_SetVelocity // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetVelocity, 4134, 9, +OOVPA_XREF(CDirectSoundStream_SetVelocity, 4134, 11, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetVelocity, XRefOne) - XREF_ENTRY( 0x4E, XREF_DSVOICESETVELOCITY ), + XREF_ENTRY( 0x4E, XREF_CDirectSoundVoice_SetVelocity ), { 0x00, 0x55 }, { 0x0F, 0x00 }, @@ -1895,12 +1948,15 @@ OOVPA_XREF(CDirectSoundStream_SetVelocity, 4134, 9, { 0x35, 0x83 }, { 0x40, 0x45 }, { 0x63, 0x8B }, + + { 0x68, 0xC2 }, + { 0x69, 0x14 }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetDopplerFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 4134, 9, +OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 4134, 12, XREF_CDirectSoundVoice_SetDopplerFactor, XRefZero) @@ -1916,6 +1972,10 @@ OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 4134, 9, { 0x12, 0x50 }, { 0x13, 0x48 }, + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x70 }, + // CDirectSoundVoice_SetDopplerFactor+0x31 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -1979,7 +2039,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetI3DL2Source, 4134, 10, - XREF_DSVOICESETI3DL2SOURCE, + XREF_CDirectSoundVoice_SetI3DL2Source, XRefZero) // CDirectSoundVoice_SetI3DL2Source+0x12 : mov esi, [ecx] @@ -2004,13 +2064,16 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundBuffer::SetI3DL2Source // ****************************************************************** -OOVPA_XREF(CDirectSoundBuffer_SetI3DL2Source, 4134, 11, +OOVPA_XREF(CDirectSoundBuffer_SetI3DL2Source, 4134, 12, - XREF_DSBUFFERSETI3DL2SOURCE, + XREF_CDirectSoundBuffer_SetI3DL2Source, XRefOne) // CDirectSoundBuffer_SetI3DL2Source+0x35 : call [CDirectSoundVoice::SetI3DL2Source] - XREF_ENTRY( 0x36, XREF_DSVOICESETI3DL2SOURCE ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetI3DL2Source ), + + // CDirectSoundBuffer_SetI3DL2Source+0x00 : push esi + { 0x00, 0x56 }, // CDirectSoundBuffer_SetI3DL2Source+0x21 : mov eax, 80004005h { 0x22, 0x05 }, @@ -2029,6 +2092,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetI3DL2Source, 4134, 11, { 0x51, 0x00 } OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetI3DL2Source // ****************************************************************** @@ -2038,7 +2102,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 4134, 10, XRefOne) // IDirectSoundBuffer_SetI3DL2Source+0x18 : call [CDirectSoundBuffer::SetI3DL2Source] - XREF_ENTRY( 0x19, XREF_DSBUFFERSETI3DL2SOURCE ), + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetI3DL2Source ), // IDirectSoundBuffer_SetI3DL2Source+0x04 : push [esp+arg_8] { 0x04, 0xFF }, @@ -2055,16 +2119,17 @@ OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 4134, 10, { 0x1E, 0x0C }, { 0x1F, 0x00 } OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundStream_SetI3DL2Source // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetI3DL2Source, 4134, 9, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetI3DL2Source, XRefOne) - XREF_ENTRY( 0x3A, XREF_DSVOICESETI3DL2SOURCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetI3DL2Source ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -2076,6 +2141,7 @@ OOVPA_XREF(CDirectSoundStream_SetI3DL2Source, 4134, 9, { 0x4F, 0x8B }, OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_Stop // ****************************************************************** @@ -2100,6 +2166,7 @@ OOVPA_NO_XREF(IDirectSoundBuffer_Stop, 4134, 11) { 0x16, 0x04 }, { 0x17, 0x00 } OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetAllParameters @@ -2137,7 +2204,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetAllParameters, 4134, 8, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; - +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetAllParameters // ****************************************************************** @@ -2157,13 +2224,13 @@ OOVPA_XREF(IDirectSoundBuffer_SetAllParameters, 4134, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundStream_SetAllParameters // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetAllParameters, 4134, 9, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetAllParameters, XRefOne) XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetAllParameters ), @@ -2177,7 +2244,7 @@ OOVPA_XREF(CDirectSoundStream_SetAllParameters, 4134, 9, { 0x44, 0x68 }, { 0x4F, 0x8B }, OOVPA_END; - +#if 0 //Replaced by generic 3911 // ****************************************************************** // * IDirectSoundBuffer_GetStatus // ****************************************************************** @@ -2187,29 +2254,29 @@ OOVPA_XREF(IDirectSoundBuffer_GetStatus, 4134, 9, XRefOne) // IDirectSoundBuffer_GetStatus+0x15 : call [CDirectSoundBuffer::GetStatus] - XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_GetStatus), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_GetStatus), // IDirectSoundBuffer_GetStatus+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, // IDirectSoundBuffer_GetStatus+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #6 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #7 + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, // IDirectSoundBuffer_GetStatus+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #8 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #9 + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetMode // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMode, 4134, 7, - XREF_DSBUFFERSETMODEB, + XREF_CDirectSoundVoice_SetMode, XRefZero) { 0x03, 0x0C }, @@ -2226,10 +2293,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMode, 4134, 8, - XREF_DSBUFFERSETMODEA, + XREF_CDirectSoundBuffer_SetMode, XRefOne) - XREF_ENTRY( 0x36, XREF_DSBUFFERSETMODEB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMode ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -2239,7 +2306,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMode, 4134, 8, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; - +#if 0 // Duplicate OOVPA, replacing with generic 4039 // ****************************************************************** // * IDirectSoundBuffer_SetMode // ****************************************************************** @@ -2248,7 +2315,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMode, 4134, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSBUFFERSETMODEA ), + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetMode ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -2259,16 +2326,16 @@ OOVPA_XREF(IDirectSoundBuffer_SetMode, 4134, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundStream_SetMode // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMode, 4134, 9, +OOVPA_XREF(CDirectSoundStream_SetMode, 4134, 11, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetMode, XRefOne) - XREF_ENTRY( 0x3A, XREF_DSBUFFERSETMODEB ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMode ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -2278,8 +2345,41 @@ OOVPA_XREF(CDirectSoundStream_SetMode, 4134, 9, { 0x39, 0xE8 }, { 0x44, 0x68 }, { 0x4F, 0x8B }, + + { 0x53, 0xC2 }, + { 0x54, 0x0C }, OOVPA_END; +// ****************************************************************** +// * DirectSound::CMcpxVoiceClient::SetFilter +// ****************************************************************** +// Generic OOVPA as of 4134 and newer +OOVPA_XREF(CMcpxVoiceClient_SetFilter, 4134, 12, + + XREF_CMcpxVoiceClient_SetFilter, + XRefZero) + + { 0x00, 0x55 }, + + { 0x23, 0x6A }, + { 0x24, 0x06 }, + + { 0x47, 0x83 }, + { 0x48, 0xE0 }, + { 0x49, 0x03 }, + + { 0x50, 0xC1 }, + { 0x51, 0xE8 }, + { 0x52, 0x12 }, + + { 0x53, 0x83 }, + { 0x54, 0xE0 }, + { 0x55, 0x07 }, + + //NOTE: Before offset 0x65, there has been no changes throughout all revisions. +OOVPA_END; + +#if 0 // Replaced with generic OOVPA 4134, see above // ****************************************************************** // * DirectSound::CMcpxVoiceClient::SetFilter // ****************************************************************** @@ -2297,7 +2397,9 @@ OOVPA_XREF(CMcpxVoiceClient_SetFilter, 4134, 8, { 0xDE, 0x0F }, { 0xFE, 0xB7 }, OOVPA_END; +#endif +#if 0 // Moved to 4039 // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetFilter // ****************************************************************** @@ -2315,6 +2417,7 @@ OOVPA_XREF(CDirectSoundVoice_SetFilter, 4134, 7, { 0x10, 0xC2 }, { 0x11, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetFilter @@ -2335,6 +2438,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetFilter, 4134, 8, { 0x47, 0x8B }, OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetFilter // ****************************************************************** @@ -2353,39 +2457,44 @@ OOVPA_XREF(IDirectSoundBuffer_SetFilter, 4134, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSound::SetVelocity // ****************************************************************** -OOVPA_XREF(CDirectSound_SetVelocity, 4134, 15, +OOVPA_XREF(CDirectSound_SetVelocity, 4134, 16, - XREF_DSSETVELOCITYA, + XREF_CDirectSound_SetVelocity, XRefZero) + // CDirectSound_SetVelocity+0x00 : push ebp + { 0x00, 0x55}, + // CDirectSound_SetVelocity+0x24 : mov eax, 0x80004005 - { 0x24, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x25, 0x05 }, // (Offset,Value)-Pair #2 - { 0x26, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x00 }, // (Offset,Value)-Pair #4 - { 0x28, 0x80 }, // (Offset,Value)-Pair #5 + { 0x24, 0xB8 }, + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, // CDirectSound_SetVelocity+0x37 : mov [edx+0x44], edi - { 0x37, 0x89 }, // (Offset,Value)-Pair #6 - { 0x38, 0x7A }, // (Offset,Value)-Pair #7 - { 0x39, 0x44 }, // (Offset,Value)-Pair #8 + { 0x37, 0x89 }, + { 0x38, 0x7A }, + { 0x39, 0x44 }, // CDirectSound_SetVelocity+0x4C : or dword ptr [eax+0x0A4], 0x40 - { 0x4C, 0x83 }, // (Offset,Value)-Pair #9 - { 0x4D, 0x88 }, // (Offset,Value)-Pair #10 - { 0x4E, 0xA4 }, // (Offset,Value)-Pair #11 - { 0x4F, 0x00 }, // (Offset,Value)-Pair #12 - { 0x52, 0x40 }, // (Offset,Value)-Pair #13 + { 0x4C, 0x83 }, + { 0x4D, 0x88 }, + { 0x4E, 0xA4 }, + { 0x4F, 0x00 }, + { 0x52, 0x40 }, // CDirectSound_SetVelocity+0x73 : retn 0x14 - { 0x73, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x74, 0x14 }, // (Offset,Value)-Pair #15 + { 0x73, 0xC2 }, + { 0x74, 0x14 }, OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetPitch // ****************************************************************** @@ -2401,35 +2510,82 @@ OOVPA_XREF(CDirectSoundVoice_SetPitch, 4134, 6, { 0x16, 0xC2 }, { 0x17, 0x08 }, OOVPA_END; +#endif + +// ****************************************************************** +// * DirectSound::CDirectSoundBuffer::SetPitch +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetPitch, 4134, 8, + + XREF_CDirectSoundBuffer_SetPitch, + XRefOne) + + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetPitch ), + + { 0x0C, 0x00 }, + { 0x12, 0x85 }, + { 0x1C, 0x15 }, + { 0x26, 0xEB }, + { 0x30, 0x10 }, + { 0x3A, 0x74 }, + { 0x47, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetPitch +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetPitch, 4134, 12, + + XREF_CDirectSoundStream_SetPitch, + XRefOne) + + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetPitch ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x14, 0x74 }, + { 0x21, 0xB8 }, + { 0x2A, 0x24 }, + { 0x35, 0xE8 }, + { 0x40, 0x68 }, + { 0x4B, 0x8B }, + { 0x4F, 0xC2 }, + { 0x50, 0x08 }, + { 0x51, 0x00 }, +OOVPA_END; // ****************************************************************** // * CDirectSoundBuffer::SetVolume // ****************************************************************** -OOVPA_XREF(CDirectSoundBuffer_SetVolume, 4134, 11, +OOVPA_XREF(CDirectSoundBuffer_SetVolume, 4134, 12, XREF_CDirectSoundBuffer_SetVolume, - XRefZero) + XRefOne) + + // CDirectSoundBuffer_SetVolume+0x32 : call [CDirectSoundVoice::SetVolume] + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetVolume ), // CDirectSoundBuffer_SetVolume+0x0D : movzx esi, al - { 0x0D, 0x0F }, // (Offset,Value)-Pair #1 - { 0x0E, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x0F, 0xF0 }, // (Offset,Value)-Pair #3 + { 0x0D, 0x0F }, + { 0x0E, 0xB6 }, + { 0x0F, 0xF0 }, // CDirectSoundBuffer_SetVolume+0x26 : jmp +0x22 - { 0x26, 0xEB }, // (Offset,Value)-Pair #4 - { 0x27, 0x22 }, // (Offset,Value)-Pair #5 + { 0x26, 0xEB }, + { 0x27, 0x22 }, // CDirectSoundBuffer_SetVolume+0x2D : push [esp+0x10] - { 0x2D, 0xFF }, // (Offset,Value)-Pair #6 - { 0x2E, 0x74 }, // (Offset,Value)-Pair #7 - { 0x2F, 0x24 }, // (Offset,Value)-Pair #8 - { 0x30, 0x10 }, // (Offset,Value)-Pair #9 + { 0x2D, 0xFF }, + { 0x2E, 0x74 }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, // CDirectSoundBuffer_SetVolume+0x4B : retn 0x08 - { 0x4B, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x4C, 0x08 }, // (Offset,Value)-Pair #11 + { 0x4B, 0xC2 }, + { 0x4C, 0x08 }, OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer8::SetVolume // ****************************************************************** @@ -2448,36 +2604,37 @@ OOVPA_XREF(IDirectSoundBuffer_SetVolume, 4134, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSound::CreateSoundStream // ****************************************************************** OOVPA_XREF(CDirectSound_CreateSoundStream, 4134, 14, - XREF_DSCREATESOUNDSTREAM, + XREF_CDirectSound_CreateSoundStream, XRefZero) // CDirectSound_CreateSoundStream+0x23 : mov eax, 0x80004005 - { 0x23, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x24, 0x05 }, // (Offset,Value)-Pair #2 - { 0x25, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x80 }, // (Offset,Value)-Pair #4 + { 0x23, 0xB8 }, + { 0x24, 0x05 }, + { 0x25, 0x40 }, + { 0x27, 0x80 }, // CDirectSound_CreateSoundStream+0x2A : push 0x28 - { 0x2A, 0x6A }, // (Offset,Value)-Pair #5 - { 0x2B, 0x28 }, // (Offset,Value)-Pair #6 + { 0x2A, 0x6A }, + { 0x2B, 0x28 }, // CDirectSound_CreateSoundStream+0x4A : add esi, 0x7FF8FFF2 - { 0x4A, 0x81 }, // (Offset,Value)-Pair #7 - { 0x4B, 0xE6 }, // (Offset,Value)-Pair #8 - { 0x4C, 0xF2 }, // (Offset,Value)-Pair #9 - { 0x4D, 0xFF }, // (Offset,Value)-Pair #10 - { 0x4E, 0xF8 }, // (Offset,Value)-Pair #11 - { 0x4F, 0x7F }, // (Offset,Value)-Pair #12 + { 0x4A, 0x81 }, + { 0x4B, 0xE6 }, + { 0x4C, 0xF2 }, + { 0x4D, 0xFF }, + { 0x4E, 0xF8 }, + { 0x4F, 0x7F }, // CDirectSound_CreateSoundStream+0x8E : retn 0x10 - { 0x8E, 0xC2 }, // (Offset,Value)-Pair #13 - { 0x8F, 0x10 }, // (Offset,Value)-Pair #14 + { 0x8E, 0xC2 }, + { 0x8F, 0x10 }, OOVPA_END; // ****************************************************************** @@ -2489,169 +2646,174 @@ OOVPA_XREF(DirectSoundCreateStream, 4134, 12, XRefOne) // DirectSoundCreateStream+0x2F : call [CDirectSound::CreateSoundStream] - XREF_ENTRY( 0x2F, XREF_DSCREATESOUNDSTREAM ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x2F, XREF_CDirectSound_CreateSoundStream ), // DirectSoundCreateStream+0x04 : and [ebp-0x04], 0 - { 0x04, 0x83 }, // (Offset,Value)-Pair #2 - { 0x05, 0x65 }, // (Offset,Value)-Pair #3 - { 0x06, 0xFC }, // (Offset,Value)-Pair #4 + { 0x04, 0x83 }, + { 0x05, 0x65 }, + { 0x06, 0xFC }, // DirectSoundCreateStream+0x08 : push ebx; push esi; push edi - { 0x08, 0x53 }, // (Offset,Value)-Pair #5 - { 0x09, 0x56 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x57 }, // (Offset,Value)-Pair #7 + { 0x08, 0x53 }, + { 0x09, 0x56 }, + { 0x0A, 0x57 }, // DirectSoundCreateStream+0x3C : call dword ptr [eax+8] - { 0x3C, 0xFF }, // (Offset,Value)-Pair #8 - { 0x3D, 0x50 }, // (Offset,Value)-Pair #9 - { 0x3E, 0x08 }, // (Offset,Value)-Pair #10 + { 0x3C, 0xFF }, + { 0x3D, 0x50 }, + { 0x3E, 0x08 }, // DirectSoundCreateStream+0x54 : retn 0x08 - { 0x54, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x55, 0x08 }, // (Offset,Value)-Pair #12 + { 0x54, 0xC2 }, + { 0x55, 0x08 }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoiceSettings::SetMixBinVolumes // ****************************************************************** +// Generic OOVPA as of 4134 and newer. OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, 10, - XREF_DSSETMIXBINVOLUMESC, + XREF_CDirectSoundVoiceSettings_SetMixBinVolumes, XRefZero) // CDirectSoundVoiceSettings_SetMixBinVolumes+0x09 : jbe +0x16 - { 0x09, 0x76 }, // (Offset,Value)-Pair #1 - { 0x0A, 0x16 }, // (Offset,Value)-Pair #2 + { 0x09, 0x76 }, + { 0x0A, 0x16 }, // CDirectSoundVoiceSettings_SetMixBinVolumes+0x18 : mov [ecx+edi*4+0x30], eax - { 0x18, 0x89 }, // (Offset,Value)-Pair #3 - { 0x19, 0x44 }, // (Offset,Value)-Pair #4 - { 0x1A, 0xB9 }, // (Offset,Value)-Pair #5 - { 0x1B, 0x30 }, // (Offset,Value)-Pair #6 + { 0x18, 0x89 }, + { 0x19, 0x44 }, + { 0x1A, 0xB9 }, + { 0x1B, 0x30 }, // CDirectSoundVoiceSettings_SetMixBinVolumes+0x1E : jb +0xEC - { 0x1E, 0x72 }, // (Offset,Value)-Pair #7 - { 0x1F, 0xEC }, // (Offset,Value)-Pair #8 + { 0x1E, 0x72 }, + { 0x1F, 0xEC }, // CDirectSoundVoiceSettings_SetMixBinVolumes+0x22 : retn 0x04 - { 0x22, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x23, 0x04 }, // (Offset,Value)-Pair #10 + { 0x22, 0xC2 }, + { 0x23, 0x04 }, OOVPA_END; +#if 0 // Moved to 4039 // ****************************************************************** // * CDirectSoundVoice::SetMixBinVolumes // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMixBinVolumes, 4134, 17, - XREF_DSSETMIXBINVOLUMESB, + XREF_CDirectSoundVoice_SetMixBinVolumes, XRefOne) // CDirectSoundVoice_SetMixBinVolumes+0x0D : call [CDirectSoundVoiceSettings::SetMixBinVolumes] - XREF_ENTRY( 0x0D, XREF_DSSETMIXBINVOLUMESC ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoiceSettings_SetMixBinVolumes ), // CDirectSoundVoice_SetMixBinVolumes+0x01 : mov esi, [esp+8] - { 0x01, 0x8B }, // (Offset,Value)-Pair #2 - { 0x02, 0x74 }, // (Offset,Value)-Pair #3 - { 0x03, 0x24 }, // (Offset,Value)-Pair #4 - { 0x04, 0x08 }, // (Offset,Value)-Pair #5 + { 0x01, 0x8B }, + { 0x02, 0x74 }, + { 0x03, 0x24 }, + { 0x04, 0x08 }, // CDirectSoundVoice_SetMixBinVolumes+0x05 : push [esp+0x0C] - { 0x05, 0xFF }, // (Offset,Value)-Pair #6 - { 0x06, 0x74 }, // (Offset,Value)-Pair #7 - { 0x07, 0x24 }, // (Offset,Value)-Pair #8 - { 0x08, 0x0C }, // (Offset,Value)-Pair #9 + { 0x05, 0xFF }, + { 0x06, 0x74 }, + { 0x07, 0x24 }, + { 0x08, 0x0C }, // CDirectSoundVoice_SetMixBinVolumes+0x09 : mov ecx, [esi+0x10] - { 0x09, 0x8B }, // (Offset,Value)-Pair #10 - { 0x0A, 0x4E }, // (Offset,Value)-Pair #11 - { 0x0B, 0x10 }, // (Offset,Value)-Pair #12 + { 0x09, 0x8B }, + { 0x0A, 0x4E }, + { 0x0B, 0x10 }, // CDirectSoundVoice_SetMixBinVolumes+0x11 : mov ecx, [esi+0x0C] - { 0x11, 0x8B }, // (Offset,Value)-Pair #13 - { 0x12, 0x4E }, // (Offset,Value)-Pair #14 - { 0x13, 0x0C }, // (Offset,Value)-Pair #15 + { 0x11, 0x8B }, + { 0x12, 0x4E }, + { 0x13, 0x0C }, // CDirectSoundVoice_SetMixBinVolumes+0x1A : retn 0x08 - { 0x1A, 0xC2 }, // (Offset,Value)-Pair #16 - { 0x1B, 0x08 }, // (Offset,Value)-Pair #17 + { 0x1A, 0xC2 }, + { 0x1B, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundBuffer::SetMixBinVolumes // ****************************************************************** +//Generic OOVPA as of 4134 and newer OOVPA_XREF(CDirectSoundBuffer_SetMixBinVolumes, 4134, 17, - XREF_DSSETMIXBINVOLUMESA, + XREF_CDirectSoundBuffer_SetMixBinVolumes, XRefOne) // CDirectSoundBuffer_SetMixBinVolumes+0x32 : call [CDirectSoundVoice::SetMixBinVolumes] - XREF_ENTRY( 0x32, XREF_DSSETMIXBINVOLUMESB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetMixBinVolumes ), // CDirectSoundBuffer_SetMixBinVolumes+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_SetMixBinVolumes+0x29 : push [esp+0x10]; push [esp+0x10] - { 0x29, 0xFF }, // (Offset,Value)-Pair #7 - { 0x2A, 0x74 }, // (Offset,Value)-Pair #8 - { 0x2B, 0x24 }, // (Offset,Value)-Pair #9 - { 0x2C, 0x10 }, // (Offset,Value)-Pair #10 - { 0x2D, 0xFF }, // (Offset,Value)-Pair #11 - { 0x2E, 0x74 }, // (Offset,Value)-Pair #12 - { 0x2F, 0x24 }, // (Offset,Value)-Pair #13 - { 0x30, 0x10 }, // (Offset,Value)-Pair #14 + { 0x29, 0xFF }, + { 0x2A, 0x74 }, + { 0x2B, 0x24 }, + { 0x2C, 0x10 }, + { 0x2D, 0xFF }, + { 0x2E, 0x74 }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, // CDirectSoundBuffer_SetMixBinVolumes+0x49 : pop edi - { 0x49, 0x5F }, // (Offset,Value)-Pair #15 + { 0x49, 0x5F }, // CDirectSoundBuffer_SetMixBinVolumes+0x4B : retn 0x08 - { 0x4B, 0xC2 }, // (Offset,Value)-Pair #16 - { 0x4C, 0x08 }, // (Offset,Value)-Pair #17 + { 0x4B, 0xC2 }, + { 0x4C, 0x08 }, OOVPA_END; - +#if 0 // Moved to 4039 // ****************************************************************** -// * IDirectSoundBuffer_SetMixBinVolumes2 +// * IDirectSoundBuffer_SetMixBinVolumes_8 // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes2, 4134, 12, +OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes_8, 4134, 12, XRefNoSaveIndex, XRefOne) - // IDirectSoundBuffer_SetMixBinVolumes2+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes] - XREF_ENTRY( 0x15, XREF_DSSETMIXBINVOLUMESA ), // (Offset,Value)-Pair #1 + // IDirectSoundBuffer_SetMixBinVolumes_8+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes] + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetMixBinVolumes ), - // IDirectSoundBuffer_SetMixBinVolumes2+0x04 : push [esp+0x08] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x08 }, // (Offset,Value)-Pair #5 + // IDirectSoundBuffer_SetMixBinVolumes_8+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, - // IDirectSoundBuffer_SetMixBinVolumes2+0x0A : add eax, 0xFFFFFFE4 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8 + // IDirectSoundBuffer_SetMixBinVolumes_8+0x0A : add eax, 0xFFFFFFE4 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xE4 }, - // IDirectSoundBuffer_SetMixBinVolumes2+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #9 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #10 + // IDirectSoundBuffer_SetMixBinVolumes_8+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, - // IDirectSoundBuffer_SetMixBinVolumes2+0x11 : and ecx, eax - { 0x11, 0x23 }, // (Offset,Value)-Pair #11 - { 0x12, 0xC8 }, // (Offset,Value)-Pair #12 + // IDirectSoundBuffer_SetMixBinVolumes_8+0x11 : and ecx, eax + { 0x11, 0x23 }, + { 0x12, 0xC8 }, OOVPA_END; - +#endif +#if 0 // Moved to 4039 // ****************************************************************** -// * CDirectSoundStream_SetMixBinVolumes2 +// * CDirectSoundStream_SetMixBinVolumes_8 // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes2, 4134, 12, +OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes_8, 4134, 12, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetMixBinVolumes_8, XRefOne) - XREF_ENTRY( 0x36, XREF_DSSETMIXBINVOLUMESB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMixBinVolumes ), { 0x0D, 0x0F }, { 0x0E, 0xB6 }, @@ -2665,45 +2827,831 @@ OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes2, 4134, 12, { 0x50, 0x08 }, { 0x51, 0x00 }, OOVPA_END; +#endif +// ****************************************************************** +// * CDirectSound_SetEffectData +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetEffectData, 4134, 13, // Also for 5849 + + XREF_CDirectSound_SetEffectData, + XRefZero) + + { 0x00, 0x55 }, + { 0x0F, 0x00 }, + { 0x24, 0xB8 }, + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, + { 0x29, 0xEB }, + { 0x2A, 0x32 }, + { 0x2B, 0x8B }, + { 0x2C, 0x45 }, + { 0x44, 0xE8 }, + { 0x60, 0x18 }, +OOVPA_END; +#if 0 // Replaced with generic OOVPA 3911 +// ****************************************************************** +// * IDirectSound_SetEffectData +// ****************************************************************** +OOVPA_XREF(IDirectSound_SetEffectData, 4134, 13, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x22, XREF_CDirectSound_SetEffectData ), + + { 0x04, 0x75 }, + { 0x0F, 0x75 }, + { 0x18, 0xD9 }, + { 0x19, 0xFF }, + { 0x1A, 0x75 }, + { 0x1B, 0x0C }, + { 0x1C, 0x1B }, + { 0x1D, 0xC9 }, + { 0x1E, 0x23 }, + { 0x1F, 0xC8 }, + { 0x26, 0x5D }, + { 0x28, 0x18 }, +OOVPA_END; +#endif +// ****************************************************************** +// * CMcpxBuffer_Stop +// ****************************************************************** +OOVPA_XREF(CMcpxBuffer_Stop, 4134, 9, + + XREF_CMcpxBuffer_Stop, + XRefZero) + + // CMcpxBuffer_Stop+0x0B : cmp al, 3 + { 0x0B, 0x3C }, + { 0x0C, 0x03 }, + + // CMcpxBuffer_Stop+0x1A : jne +0x59 + { 0x1A, 0x75 }, + { 0x1B, 0x59 }, + + // CMcpxBuffer_Stop+0x1C : test [esp+0Ch], 2 + { 0x1C, 0xF6 }, + { 0x1D, 0x44 }, + { 0x1E, 0x24 }, + { 0x1F, 0x0C }, + { 0x20, 0x02 }, +OOVPA_END; // ****************************************************************** -// * Direct, 4134 +// * CDirectSoundBuffer_Stop +// ****************************************************************** +//Generic OOVPA as of 4134 and newer. +OOVPA_XREF(CDirectSoundBuffer_Stop, 4134, 13, + + XREF_CDirectSoundBuffer_Stop, + XRefOne) + + // CDirectSoundBuffer_Stop+0x33 : call [CMcpxBuffer::Stop] + XREF_ENTRY( 0x33, XREF_CMcpxBuffer_Stop), + + // CDirectSoundBuffer_Stop+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSoundBuffer_Stop+0x2C : mov ecx,[eax+20] + { 0x2C, 0x8B }, + { 0x2D, 0x48 }, + { 0x2E, 0x20 }, + + // CDirectSoundBuffer_Stop+0x3B : jz +0x0B + { 0x3B, 0x74 }, + { 0x3C, 0x0B }, + + // CDirectSoundBuffer_Stop+0x4C : retn 0x04 + { 0x4C, 0xC2 }, + { 0x4D, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetEG +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetEG, 4134, 9, + + XREF_CDirectSoundStream_SetEG, + XRefOne) + + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetEG ), + + { 0x00, 0x56 }, //Prevent incorrect offset difference from 4039 revision. + + { 0x0C, 0x00 }, + { 0x14, 0x74 }, + { 0x21, 0xB8 }, + { 0x2A, 0x24 }, + { 0x35, 0xE8 }, + { 0x40, 0x68 }, + { 0x4B, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetFilter +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetFilter, 4134, 9, + + XREF_CDirectSoundStream_SetFilter, + XRefOne) + + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetFilter ), + + { 0x00, 0x56 }, //Prevent incorrect offset difference from 4039 revision. + + { 0x0C, 0x00 }, + { 0x14, 0x74 }, + { 0x21, 0xB8 }, + { 0x2A, 0x24 }, + { 0x35, 0xE8 }, + { 0x40, 0x68 }, + { 0x4B, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::SetLFO +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetLFO, 4134, 11, + + XREF_CDirectSoundStream_SetLFO, + XRefOne) + + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetLFO ), + + { 0x00, 0x56 }, //Prevent incorrect offset difference from 4039 revision. + + { 0x0C, 0x00 }, + { 0x0F, 0xF0 }, + { 0x12, 0x85 }, + { 0x15, 0x0B }, + { 0x3A, 0x85 }, + { 0x3D, 0xF8 }, + { 0x40, 0x68 }, + { 0x4F, 0xC2 }, + { 0x50, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_SetOrientation +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetOrientation, 4134, 13, + + XREF_CDirectSound_SetOrientation, + XRefZero) + + // CDirectSound_SetOrientation+0x00 : push ebp + { 0x00 , 0x55 }, + + { 0x31 , 0x8B }, + { 0x33 , 0x0C }, + { 0x3A , 0x8B }, + { 0x3C , 0x10 }, + { 0x43 , 0x8B }, + { 0x45 , 0x14 }, + { 0x4C , 0x8B }, + { 0x4E , 0x18 }, + { 0x55 , 0x8B }, + { 0x57 , 0x1C }, + { 0x5E , 0x8B }, + { 0x60 , 0x20 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound_DownloadEffectsImage +// ****************************************************************** +OOVPA_XREF(CDirectSound_DownloadEffectsImage, 4134, 18, + + XREF_CDirectSound_DownloadEffectsImage, + XRefZero) + + // CDirectSound_DownloadEffectsImage+0x00 : push ebp + { 0x00, 0x55 }, + + // CDirectSound_DownloadEffectsImage+0x2C : mov esi,dword ptr [ebp+8] + { 0x2C, 0x8B }, + { 0x2D, 0x75 }, + { 0x2E, 0x08 }, + + // CDirectSound_DownloadEffectsImage+0x2F : push dword ptr [ebp+14h] + { 0x2F, 0xFF }, + { 0x30, 0x75 }, + { 0x31, 0x14 }, + + // CDirectSound_DownloadEffectsImage+0x32 : mov ecx,dword ptr [esi+8] + { 0x32, 0x8B }, + { 0x33, 0x4E }, + { 0x34, 0x08 }, + + // CDirectSound_DownloadEffectsImage+0x3A : push dword ptr [ebp+18h] + { 0x3A, 0xFF }, + //{ 0x3B, 0x75 }, + { 0x3C, 0x18 }, + + // CDirectSound_DownloadEffectsImage+0x40 : push dword ptr [ebp+10h] + { 0x40, 0xFF }, + //{ 0x41, 0x75 }, + { 0x42, 0x10 }, + + // CDirectSound_DownloadEffectsImage+0x43 : push dword ptr [ebp+0Ch] + { 0x43, 0xFF }, + //{ 0x44, 0x75 }, + { 0x45, 0x0C }, + + // CDirectSound_DownloadEffectsImage+0x61 : ret 14h + { 0x61, 0xC2 }, + { 0x62, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream::Release +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Release, 4134, 12, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x32, XREF_DS_CRefCount_Release ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x14, 0x74 }, + { 0x21, 0xB8 }, + + { 0x2D, 0x83 }, + { 0x2E, 0xC0 }, + { 0x2F, 0x04 }, + + { 0x47, 0x8B }, + + { 0x4B, 0xC2 }, + { 0x4C, 0x04 }, + { 0x4D, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CFullHRTFSource::GetCenterVolume +// ****************************************************************** +OOVPA_XREF(CFullHRTFSource_GetCenterVolume, 4134, 9, + + XREF_CFullHRTFSource_GetCenterVolume, + XRefZero) + + { 0x00, 0x55 }, + + { 0x22, 0xD9 }, + { 0x62, 0xDF }, + + { 0xB6, 0xF0 }, + { 0xB7, 0xD8 }, + { 0xB8, 0xFF }, + { 0xB9, 0xFF }, + + { 0xBC, 0xC2 }, + { 0xBD, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSoundUseFullHRTF +// ****************************************************************** +// Generic OOVPA as of 4134 and newer. +OOVPA_XREF(DirectSoundUseFullHRTF, 4134, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0A, XREF_CHRTFSource_SetFullHRTF5Channel ), + + { 0x06, 0x0F }, + { 0x07, 0xB6 }, + { 0x0E, 0x85 }, + { 0x0F, 0xF6 }, + { 0x12, 0x0B }, + { 0x18, 0xFF }, + { 0x1E, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetMixBins +// ****************************************************************** +// Generic OOVPA as of 4134 and newer. +OOVPA_XREF(CDirectSoundStream_SetMixBins, 4134, 10, + + XREF_CDirectSoundStream_SetMixBins, + XRefOne) + + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMixBins ), + + { 0x00, 0x56 }, + + { 0x0C, 0x00 }, + + { 0x14, 0x74 }, + { 0x21, 0xB8 }, + { 0x2A, 0x24 }, + { 0x35, 0xE8 }, + { 0x40, 0x68 }, + + { 0x4F, 0xC2 }, + { 0x50, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Pause +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Pause, 4134, 11, + + XREF_CMcpxStream_Pause, + XRefZero) + + // CMcpxStream_Pause+0x00 : push ebp + { 0x00, 0x55 }, + + // CMcpxStream_Pause+0x1E : or eax, 4 + { 0x1E, 0x83 }, + { 0x1F, 0xC8 }, + { 0x20, 0x04 }, + + // CMcpxStream_Pause+0x21 : jmp +0x0D + { 0x21, 0xEB }, + { 0x22, 0x0D }, + + // CMcpxStream_Pause+0x2D : and eax,-05 + { 0x2D, 0x83 }, + { 0x2E, 0xE0 }, + { 0x2F, 0xFB }, + + // CMcpxStream_Pause+0x44 : retn 0x04 + { 0x44, 0xC2 }, + { 0x45, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Pause +// ****************************************************************** +// Generic OOVPA as of 4134 and newer +OOVPA_XREF(CDirectSoundStream_Pause, 4134, 12, + + XREF_CDirectSoundStream_Pause, + XRefOne) + + // CDirectSoundStream_Pause+0x34 : call [CMcpxStream::Pause] + XREF_ENTRY( 0x35, XREF_CMcpxStream_Pause ), + + // CDirectSoundStream_Pause+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundStream_Pause+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSoundStream_Pause+0x2C : mov ecx, [eax+0x24] + { 0x2C, 0x8B }, + { 0x2D, 0x48 }, + { 0x2E, 0x24 }, + + // CDirectSoundStream_Pause+0x4E : retn 0x08 + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetEG +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetEG, 4134, 12, + + XREF_CMcpxVoiceClient_SetEG, + XRefZero) + + { 0x00, 0x55 }, + { 0x25, 0xEB }, + + { 0x38, 0x74 }, + { 0x39, 0x7B }, + + { 0x3E, 0x8D }, + { 0x3F, 0x0C }, + { 0x40, 0xC0 }, + + { 0xAE, 0x41 }, + { 0xAF, 0x40 }, + { 0xB0, 0x40 }, + + { 0xC1, 0xC2 }, + { 0xC2, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::SetAllParameters +// ****************************************************************** +OOVPA_XREF(CDirectSound_SetAllParameters, 4134, 13, + + XREF_CDirectSound_SetAllParameters, + XRefZero) + + { 0x00, 0x56 }, + { 0x0D, 0x0F }, + + { 0x42, 0xD9 }, + { 0x43, 0x5A }, + { 0x44, 0x3C }, + + { 0x4B, 0xD9 }, + { 0x4C, 0x5A }, + { 0x4D, 0x40 }, + + { 0x54, 0xD9 }, + { 0x55, 0x5A }, + { 0x56, 0x44 }, + + { 0xE3, 0xC2 }, + { 0xE4, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetInfo +// ****************************************************************** +// Generic OOVPA as of 4134 and newer +OOVPA_NO_XREF(CDirectSoundStream_GetInfo, 4134, 17) + + //CDirectSoundStream_GetInfo+0x00 : push ebx + { 0x00, 0x53 }, + + //CDirectSoundStream_GetInfo+0x2E : mov edi, dword ptr [esp + 10h] + { 0x2E, 0x8B }, + { 0x2F, 0x7C }, + { 0x30, 0x24 }, + { 0x31, 0x10 }, + + //CDirectSoundStream_GetInfo+0x38 : mov, dword ptr [edi + 24h] + { 0x38, 0x8B }, + { 0x39, 0x4F }, + { 0x3A, 0x24 }, + + //CDirectSoundStream_GetInfo+0x43 : mov eax, dword ptr [edi + 20h] + { 0x43, 0x8B }, + { 0x44, 0x47 }, + { 0x45, 0x20 }, + + //CDirectSoundStream_GetInfo+0x49 : and dword ptr [esi + 8], 0 + { 0x49, 0x83 }, + { 0x4A, 0x66 }, + { 0x4B, 0x08 }, + { 0x4C, 0x00 }, + + //CDirectSoundStream_GetInfo+0x64 : ret 8 + { 0x64, 0xC2 }, + { 0x65, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Flush, 4134, 10, + XREF_CMcpxStream_Flush, + XRefZero) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + { 0x12, 0x33 }, + + { 0x3D, 0x83 }, + { 0x3E, 0xFE }, + { 0x3F, 0x04 }, + + { 0x56, 0xE8 }, + + { 0x67, 0xE8 }, + + { 0xD0, 0xC9 }, + { 0xD1, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Flush +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Flush, 4134, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Flush+0x30 : call [CMcpxStream_Flush] + XREF_ENTRY( 0x31, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x28, 0x8B }, + { 0x2B, 0x08 }, + + { 0x2C, 0x8B }, + { 0x2E, 0x24 }, + + { 0x30, 0xE8 }, + + //CDirectSoundStream_Flush+0x4A : ret 4 + { 0x4A, 0xC2 }, + { 0x4B, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_GetStatus, 4134, 14, + XREF_CMcpxStream_GetStatus, + XRefZero) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + // Added 2 OVs to enable support 4242 titles and later (if any has occurred). + { 0x2F, 0x03 }, + { 0x32, 0x03 }, + + // Just a note, this asm code is unique + { 0x3D, 0x80 }, + { 0x3E, 0x48 }, + { 0x3F, 0x02 }, + { 0x40, 0x02 }, + + { 0x4B, 0x81 }, + { 0x4C, 0xC9 }, + { 0x4D, 0x00 }, + { 0x4E, 0x00 }, + { 0x4F, 0x04 }, + { 0x50, 0x00 }, + + // Removed due to 4242 has a return asm code at offset 0x75. + //{ 0x65, 0xC2 }, + //{ 0x66, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetStatus +// ****************************************************************** +// Generic OOVPA as of 4134 and newer +OOVPA_XREF(CDirectSoundStream_GetStatus, 4134, 12, + + XRefNoSaveIndex, + XRefOne) + + // CDirectSoundStream_GetStatus+0x34 : call [CMcpxStream::GetStatus] + XREF_ENTRY( 0x35, XREF_CMcpxStream_GetStatus ), + + // CDirectSoundStream_GetStatus+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundStream_GetStatus+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSoundStream_GetStatus+0x2C : mov ecx, [eax+0x24] + { 0x2C, 0x8B }, + { 0x2D, 0x48 }, + { 0x2E, 0x24 }, + + // CDirectSoundStream_GetStatus+0x4E : retn 0x08 + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Process +// ****************************************************************** +// Generic OOVPA as of 4134 and newer +OOVPA_NO_XREF(CDirectSoundStream_Process, 4134, 15) + + { 0x00, 0x55 }, + + { 0x2D, 0x8B }, + { 0x2F, 0x08 }, + + { 0x30, 0x8B }, + { 0x32, 0x24 }, + + //CDirectSoundStream_Process+0x49 : mov eax, 88780032h + { 0x4A, 0x32 }, + { 0x4B, 0x00 }, + { 0x4C, 0x78 }, + { 0x4D, 0x88 }, + + { 0x52, 0xFF }, + { 0x54, 0x0C }, + + { 0x55, 0x8B }, + { 0x57, 0x24 }, + + { 0x74, 0xC2 }, + { 0x75, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Discontinuity, 4134, 7, + XREF_CMcpxStream_Discontinuity, + XRefOne) + + //CMcpxStream_Discontinuity+0x1C : call [CMcpxStream_Flush] + XREF_ENTRY ( 0x1D, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x01, 0x8B }, + + { 0x1A, 0x8B }, + + { 0x1C, 0xE8 }, + + { 0x23, 0x5E }, + + { 0x24, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Discontinuity, 4134, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Discontinuity+0x30 : call [CMcpxStream_Discontinuity] + XREF_ENTRY( 0x31, XREF_CMcpxStream_Discontinuity ), + + { 0x00, 0x56 }, + + { 0x28, 0x8B }, + { 0x2B, 0x08 }, + + { 0x2C, 0x8B }, + { 0x2E, 0x24 }, + + { 0x30, 0xE8 }, + + //CDirectSoundStream_Discontinuity+0x4A : ret 4 + { 0x4A, 0xC2 }, + { 0x4B, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CMemoryManager::PoolAlloc +// ****************************************************************** +OOVPA_NO_XREF(DS_CMemoryManager_PoolAlloc, 4134, 11) + + { 0x00, 0x56 }, + + { 0x22, 0x83 }, + { 0x23, 0x7C }, + { 0x24, 0x24 }, + { 0x25, 0x10 }, + { 0x26, 0x00 }, + + { 0x35, 0xF3 }, + { 0x36, 0xAB }, + + { 0x42, 0xC2 }, + { 0x43, 0x0C }, + { 0x44, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_AddRef +// ****************************************************************** +// NOTE: Has identical function to DirectSound::CAc97MediaObject::AddRef +OOVPA_XREF(CDirectSoundStream_AddRef, 4134, 11, + XRefNoSaveIndex, + XRefZero) + + { 0x00, 0xE8 }, + + { 0x27, 0x8B }, + { 0x28, 0x44 }, + + { 0x2B, 0xFF }, + { 0x2C, 0x40 }, + { 0x2D, 0x08 }, + + { 0x31, 0x8B }, + { 0x32, 0x70 }, + { 0x33, 0x08 }, + + //CDirectSoundStream_AddRef+0x44 : ret 4 + { 0x44, 0xC2 }, + { 0x45, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSound::GetCaps +// ****************************************************************** +OOVPA_XREF(CDirectSound_GetCaps, 4134, 12, + + XREF_CDirectSound_GetCaps, + XRefZero) + + { 0x00, 0x57 }, + { 0x16, 0x68 }, + + { 0x37, 0x44 }, + { 0x38, 0x24 }, + { 0x39, 0x18 }, + { 0x3A, 0x8B }, + { 0x3B, 0x48 }, + { 0x3C, 0x0C }, + { 0x3D, 0x56 }, + { 0x3E, 0xE8 }, + + { 0x6D, 0xC2 }, + { 0x6E, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer_SetOutputBuffer +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetOutputBuffer, 4134, 18, + + XREF_CDirectSoundBuffer_SetOutputBuffer, + XRefOne) + + // CDirectSoundBuffer_SetOutputBuffer+0x31 : call [XREF_CDirectSoundVoice_SetOutputBuffer] + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetOutputBuffer), + + // CDirectSoundBuffer_SetOutputBuffer+0x00 : push esi + { 0x00, 0x56 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x29 : push [esp+0x10]; push [esp+0x10] + { 0x29, 0xFF }, + { 0x2A, 0x74 }, + { 0x2B, 0x24 }, + { 0x2C, 0x10 }, + { 0x2D, 0xFF }, + { 0x2E, 0x74 }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, + + // CDirectSoundBuffer_SetOutputBuffer+0x49 : pop edi + { 0x49, 0x5F }, + + // CDirectSoundBuffer_SetOutputBuffer+0x4B : retn 0x08 + { 0x4B, 0xC2 }, + { 0x4C, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * DSound_4134 // ****************************************************************** OOVPATable DSound_4134[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroomA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 4134, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4039, PATCH), + REGISTER_OOVPA(IDirectSound_SetVelocity, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_SetPositionA, 4134, XREF), // TODO: Find a cure for laziness... - REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSound_SetPosition, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Lock, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), @@ -2711,29 +3659,30 @@ OOVPATable DSound_4134[] = { REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_Play, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Play, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Play, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetMaxDistance, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetMinDistance, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+ REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 4134, XREF), @@ -2744,53 +3693,62 @@ OOVPATable DSound_4134[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOrientation, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOrientation, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOutsideVolume, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetPosition, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVelocity, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetI3DL2Source, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), // +s - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), // Use that for now. Okay, it's your call pal... + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetAllParameters, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMode, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetMode, 4134, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes2, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSound_SetEffectData, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetEffectData, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4242.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4242.inl new file mode 100644 index 000000000..50a32d5d4 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4242.inl @@ -0,0 +1,234 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDataBase->DSound.1.0.4242.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 RadWolfie +// * +// * All rights reserved +// * +// ****************************************************************** + + +// ****************************************************************** +// * DirectSound::CDirectSoundVoice::SetFormat +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetFormat, 4242, 8, + + XREF_CDirectSoundVoice_SetFormat, + XRefZero) + + { 0x07, 0x4E }, + { 0x10, 0xE8 }, + { 0x19, 0xD8 }, + { 0x22, 0xFF }, + { 0x2B, 0x0C }, + { 0x34, 0xFF }, + { 0x3F, 0x8B }, + { 0x46, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundBuffer::SetFormat +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetFormat, 4242, 8, + + XREF_CDirectSoundBuffer_SetFormat, + XRefOne) + + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetFormat ), + + { 0x0C, 0x00 }, + { 0x12, 0x85 }, + { 0x1C, 0x15 }, + { 0x26, 0xEB }, + { 0x30, 0x10 }, + { 0x3A, 0x74 }, + { 0x47, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundBuffer_SetFormat +// ****************************************************************** +OOVPA_XREF(IDirectSoundBuffer_SetFormat, 4242, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetFormat ), + + { 0x02, 0x24 }, + { 0x06, 0x24 }, + { 0x0A, 0x83 }, + { 0x0E, 0xD9 }, + { 0x12, 0xC8 }, + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetFormat +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetFormat, 4242, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetFormat ), + + { 0x00, 0x56 }, + { 0x0C, 0x00 }, + { 0x14, 0x74 }, + { 0x21, 0xB8 }, + { 0x2A, 0x24 }, + { 0x35, 0xE8 }, + { 0x40, 0x68 }, + { 0x4B, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetLFO +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetLFO, 4242, 8, + + XREF_CMcpxVoiceClient_SetLFO, + XRefZero) + + { 0x1E, 0x48 }, + { 0x3E, 0x31 }, + { 0x5E, 0x35 }, + { 0x7E, 0xE1 }, + { 0x9E, 0x8B }, + { 0xBE, 0x8B }, + { 0xDE, 0x05 }, + { 0xFE, 0x6C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetLFO +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetLFO, 4242, 8, + + XREF_CDirectSoundBuffer_SetLFO, + XRefOne) + + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetLFO ), + + { 0x0C, 0x00 }, + { 0x12, 0x85 }, + { 0x1C, 0x15 }, + { 0x26, 0xEB }, + { 0x30, 0x10 }, + { 0x3A, 0x74 }, + { 0x47, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxVoiceClient::SetEG +// ****************************************************************** +OOVPA_XREF(CMcpxVoiceClient_SetEG, 4242, 8, + + XREF_CMcpxVoiceClient_SetEG, + XRefZero) + + { 0x1E, 0x75 }, + { 0x3E, 0x0F }, + { 0x5E, 0xE3 }, + { 0x7E, 0x4E }, + { 0x9E, 0x40 }, + { 0xBE, 0x50 }, + { 0xDE, 0x1C }, + { 0xFE, 0x1C }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundBuffer::SetEG +// ****************************************************************** +OOVPA_XREF(CDirectSoundBuffer_SetEG, 4242, 8, + + XREF_CDirectSoundBuffer_SetEG, + XRefOne) + + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetEG ), + + { 0x0C, 0x00 }, + { 0x12, 0x85 }, + { 0x1C, 0x15 }, + { 0x26, 0xEB }, + { 0x30, 0x10 }, + { 0x3A, 0x74 }, + { 0x47, 0x8B }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxBuffer_Stop +// ****************************************************************** +//Generic OOVPA as of 4242 and newer. +OOVPA_XREF(CMcpxBuffer_Stop, 4242, 9, + + XREF_CMcpxBuffer_Stop, + XRefZero) + + // CMcpxBuffer_Stop+0x0E : cmp al, 3 + { 0x0E, 0x3C }, + { 0x0F, 0x03 }, + + // CMcpxBuffer_Stop+0x17 : jne +0x2A + { 0x17, 0x74 }, + { 0x18, 0x2A }, + + // CMcpxBuffer_Stop+0x19 : test [esp+10h], 2 + { 0x19, 0xF6 }, + { 0x1A, 0x44 }, + { 0x1B, 0x24 }, + { 0x1C, 0x10 }, + { 0x1D, 0x02 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Flush, 4242, 10, + XREF_CMcpxStream_Flush, + XRefZero) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + { 0x12, 0x33 }, + + { 0x3D, 0x83 }, + { 0x3E, 0xFE }, + { 0x3F, 0x05 }, + + { 0x56, 0xE8 }, + + { 0x67, 0xE8 }, + + // Might not be a requirement? Aka comment this out might will enable support detection later XDK revisions. + { 0xD1, 0xC9 }, + { 0xD2, 0xC3 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl index 43a4d8c9e..62d78b927 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl @@ -38,79 +38,74 @@ OOVPA_NO_XREF(DirectSoundGetSampleTime, 4361, 8) // DirectSoundGetSampleTime+0x00 : xor eax, eax - { 0x00, 0x33 }, // (Offset,Value)-Pair #1 - { 0x01, 0xC0 }, // (Offset,Value)-Pair #2 + { 0x00, 0x33 }, + { 0x01, 0xC0 }, // DirectSoundGetSampleTime+0x0A : mov eax, ds:0FE80200Ch - { 0x0A, 0xA1 }, // (Offset,Value)-Pair #3 - { 0x0B, 0x0C }, // (Offset,Value)-Pair #4 - { 0x0C, 0x20 }, // (Offset,Value)-Pair #5 - { 0x0D, 0x80 }, // (Offset,Value)-Pair #6 - { 0x0E, 0xFE }, // (Offset,Value)-Pair #7 + { 0x0A, 0xA1 }, + { 0x0B, 0x0C }, + { 0x0C, 0x20 }, + { 0x0D, 0x80 }, + { 0x0E, 0xFE }, // DirectSoundGetSampleTime+0x0F : retn - { 0x0F, 0xC3 }, // (Offset,Value)-Pair #8 + { 0x0F, 0xC3 }, OOVPA_END; +#if 0 // Accurately CDirectSound_CreateSoundBuffer used 4134 // ****************************************************************** // * IDirectSound_CreateSoundBuffer // ****************************************************************** OOVPA_NO_XREF(IDirectSound_CreateSoundBuffer, 4361, 9) // IDirectSound_CreateSoundBuffer+0x2A : push 0x24 - { 0x2A, 0x6A }, // (Offset,Value)-Pair #1 - { 0x2B, 0x24 }, // (Offset,Value)-Pair #2 + { 0x2A, 0x6A }, + { 0x2B, 0x24 }, // IDirectSound_CreateSoundBuffer+0x3C : call [addr] - { 0x3C, 0xE8 }, // (Offset,Value)-Pair #3 + { 0x3C, 0xE8 }, // IDirectSound_CreateSoundBuffer+0x4A : and esi, 0x7FF8FFF2 - { 0x4A, 0x81 }, // (Offset,Value)-Pair #4 - { 0x4B, 0xE6 }, // (Offset,Value)-Pair #5 - { 0x4C, 0xF2 }, // (Offset,Value)-Pair #6 - { 0x4D, 0xFF }, // (Offset,Value)-Pair #7 - { 0x4E, 0xF8 }, // (Offset,Value)-Pair #8 - { 0x4F, 0x7F }, // (Offset,Value)-Pair #9 + { 0x4A, 0x81 }, + { 0x4B, 0xE6 }, + { 0x4C, 0xF2 }, + { 0x4D, 0xFF }, + { 0x4E, 0xF8 }, + { 0x4F, 0x7F }, OOVPA_END; +#endif -// ****************************************************************** -// * CDirectSound::CreateSoundStream -// ****************************************************************** -#define CDirectSound_CreateSoundStream_4361 CDirectSound_CreateSoundStream_4134 - -// ****************************************************************** -// * DirectSoundCreateStream -// ****************************************************************** -#define DirectSoundCreateStream_4361 DirectSoundCreateStream_4134 - +#if 0 // Replaced with OOVPA 4134 // ****************************************************************** // * CMcpxStream_Pause // ****************************************************************** OOVPA_XREF(CMcpxStream_Pause, 4361, 11, - XREF_DSSTREAMPAUSE, + XREF_CMcpxStream_Pause, XRefZero) // CMcpxStream_Pause+0x1E : or eax, 4 - { 0x1E, 0x83 }, // (Offset,Value)-Pair #1 - { 0x1F, 0xC8 }, // (Offset,Value)-Pair #2 - { 0x20, 0x04 }, // (Offset,Value)-Pair #3 + { 0x1E, 0x83 }, + { 0x1F, 0xC8 }, + { 0x20, 0x04 }, // CMcpxStream_Pause+0x21 : jmp +0x0D - { 0x21, 0xEB }, // (Offset,Value)-Pair #4 - { 0x22, 0x0D }, // (Offset,Value)-Pair #5 + { 0x21, 0xEB }, + { 0x22, 0x0D }, // CMcpxStream_Pause+0x29 : movzx eax, word ptr [esi+0x12] - { 0x29, 0x0F }, // (Offset,Value)-Pair #6 - { 0x2A, 0xB7 }, // (Offset,Value)-Pair #7 - { 0x2B, 0x46 }, // (Offset,Value)-Pair #8 - { 0x2C, 0x12 }, // (Offset,Value)-Pair #9 + { 0x29, 0x0F }, + { 0x2A, 0xB7 }, + { 0x2B, 0x46 }, + { 0x2C, 0x12 }, // CMcpxStream_Pause+0x44 : retn 0x04 - { 0x44, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x45, 0x04 }, // (Offset,Value)-Pair #11 + { 0x44, 0xC2 }, + { 0x45, 0x04 }, OOVPA_END; +#endif +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * CDirectSoundStream_Pause // ****************************************************************** @@ -120,48 +115,49 @@ OOVPA_XREF(CDirectSoundStream_Pause, 4361, 11, XRefOne) // CDirectSoundStream_Pause+0x35 : call [CMcpxStream::Pause] - XREF_ENTRY( 0x35, XREF_DSSTREAMPAUSE ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x35, XREF_CMcpxStream_Pause ), // CDirectSoundStream_Pause+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundStream_Pause+0x2C : mov ecx, [eax+0x24] - { 0x2C, 0x8B }, // (Offset,Value)-Pair #7 - { 0x2D, 0x48 }, // (Offset,Value)-Pair #8 - { 0x2E, 0x24 }, // (Offset,Value)-Pair #9 + { 0x2C, 0x8B }, + { 0x2D, 0x48 }, + { 0x2E, 0x24 }, // CDirectSoundStream_Pause+0x4E : retn 0x08 - { 0x4E, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x4F, 0x08 }, // (Offset,Value)-Pair #11 + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundBuffer::SetPlayRegion // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetPlayRegion, 4361, 10, - XREF_DSBUFFERSETPLAYREGIONA, + XREF_CDirectSoundBuffer_SetPlayRegion, XRefZero) // CDirectSoundBuffer_SetPlayRegion+0x10 : movzx edi, al - { 0x10, 0x0F }, // (Offset,Value)-Pair #1 - { 0x11, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x12, 0xF8 }, // (Offset,Value)-Pair #3 + { 0x10, 0x0F }, + { 0x11, 0xB6 }, + { 0x12, 0xF8 }, // CDirectSoundBuffer_SetPlayRegion+0x17 : jz +0x0B - { 0x17, 0x74 }, // (Offset,Value)-Pair #4 - { 0x18, 0x0B }, // (Offset,Value)-Pair #5 + { 0x17, 0x74 }, + { 0x18, 0x0B }, // CDirectSoundBuffer_SetPlayRegion+0x46 : mov esi, 0x88780032 - { 0x46, 0xBE }, // (Offset,Value)-Pair #6 - { 0x47, 0x32 }, // (Offset,Value)-Pair #7 - { 0x48, 0x00 }, // (Offset,Value)-Pair #8 - { 0x49, 0x78 }, // (Offset,Value)-Pair #9 - { 0x4A, 0x88 }, // (Offset,Value)-Pair #10 + { 0x46, 0xBE }, + { 0x47, 0x32 }, + { 0x48, 0x00 }, + { 0x49, 0x78 }, + { 0x4A, 0x88 }, OOVPA_END; // ****************************************************************** @@ -172,7 +168,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetPlayRegion, 4361, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSBUFFERSETPLAYREGIONA ), + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetPlayRegion ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -194,23 +190,23 @@ OOVPA_XREF(CMcpxBuffer_Play, 4361, 11, // CMcpxBuffer_Play+0x0E : cmp ebx, edi - { 0x0E, 0x3B }, // (Offset,Value)-Pair #1 - { 0x0F, 0xDF }, // (Offset,Value)-Pair #2 + { 0x0E, 0x3B }, + { 0x0F, 0xDF }, // CMcpxBuffer_Play+0x1C : jz +0x09 - { 0x1C, 0x74 }, // (Offset,Value)-Pair #3 - { 0x1D, 0x09 }, // (Offset,Value)-Pair #4 + { 0x1C, 0x74 }, + { 0x1D, 0x09 }, // CMcpxBuffer_Play+0x30 : test byte ptr [esi+0x12], 2 - { 0x30, 0xF6 }, // (Offset,Value)-Pair #5 - { 0x31, 0x46 }, // (Offset,Value)-Pair #6 - { 0x32, 0x12 }, // (Offset,Value)-Pair #7 - { 0x33, 0x02 }, // (Offset,Value)-Pair #8 + { 0x30, 0xF6 }, + { 0x31, 0x46 }, + { 0x32, 0x12 }, + { 0x33, 0x02 }, // CMcpxBuffer_Play+0x71 : call dword ptr [eax+0x18] - { 0x71, 0xFF }, // (Offset,Value)-Pair #9 - { 0x72, 0x50 }, // (Offset,Value)-Pair #10 - { 0x73, 0x18 }, // (Offset,Value)-Pair #11 + { 0x71, 0xFF }, + { 0x72, 0x50 }, + { 0x73, 0x18 }, OOVPA_END; // ****************************************************************** @@ -222,22 +218,22 @@ OOVPA_XREF(CDirectSoundBuffer_Play, 4361, 10, XRefOne) // CDirectSoundBuffer_Play+0x35 : call [CMcpxBuffer::Play] - XREF_ENTRY( 0x35, XREF_CMcpxBuffer_Play ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x35, XREF_CMcpxBuffer_Play ), // CDirectSoundBuffer_Play+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_Play+0x3D : jz +0x0B - { 0x3D, 0x74 }, // (Offset,Value)-Pair #7 - { 0x3E, 0x0B }, // (Offset,Value)-Pair #8 + { 0x3D, 0x74 }, + { 0x3E, 0x0B }, // CDirectSoundBuffer_Play+0x4E : retn 0x10 - { 0x4E, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x4F, 0x10 }, // (Offset,Value)-Pair #10 + { 0x4E, 0xC2 }, + { 0x4F, 0x10 }, OOVPA_END; // ****************************************************************** @@ -249,47 +245,49 @@ OOVPA_XREF(IDirectSoundBuffer_Play, 4361, 9, XRefOne) // IDirectSoundBuffer_Play+0x1D : call [CDirectSoundBuffer::Play] - XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_Play ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_Play ), // IDirectSoundBuffer_Play+0x0E : push [esp+0x10] - { 0x0E, 0xFF }, // (Offset,Value)-Pair #2 - { 0x0F, 0x74 }, // (Offset,Value)-Pair #3 - { 0x10, 0x24 }, // (Offset,Value)-Pair #4 - { 0x11, 0x10 }, // (Offset,Value)-Pair #5 + { 0x0E, 0xFF }, + { 0x0F, 0x74 }, + { 0x10, 0x24 }, + { 0x11, 0x10 }, // IDirectSoundBuffer_Play+0x17 : sbb ecx, ecx - { 0x17, 0x1B }, // (Offset,Value)-Pair #6 - { 0x18, 0xC9 }, // (Offset,Value)-Pair #7 + { 0x17, 0x1B }, + { 0x18, 0xC9 }, // IDirectSoundBuffer_Play+0x19 : and ecx, eax - { 0x19, 0x23 }, // (Offset,Value)-Pair #8 - { 0x1A, 0xC8 }, // (Offset,Value)-Pair #9 + { 0x19, 0x23 }, + { 0x1A, 0xC8 }, OOVPA_END; - +#if 0 // Moved to 4242 // ****************************************************************** // * CMcpxBuffer_Stop // ****************************************************************** + OOVPA_XREF(CMcpxBuffer_Stop, 4361, 9, XREF_CMcpxBuffer_Stop, XRefZero) // CMcpxBuffer_Stop+0x0E : cmp al, 3 - { 0x0E, 0x3C }, // (Offset,Value)-Pair #1 - { 0x0F, 0x03 }, // (Offset,Value)-Pair #2 + { 0x0E, 0x3C }, + { 0x0F, 0x03 }, // CMcpxBuffer_Stop+0x17 : jz +0x2A - { 0x17, 0x74 }, // (Offset,Value)-Pair #3 - { 0x18, 0x2A }, // (Offset,Value)-Pair #4 + { 0x17, 0x74 }, + { 0x18, 0x2A }, // CMcpxBuffer_Stop+0x19 : test [esp+0Ch+arg_0], 2 - { 0x19, 0xF6 }, // (Offset,Value)-Pair #5 - { 0x1A, 0x44 }, // (Offset,Value)-Pair #6 - { 0x1B, 0x24 }, // (Offset,Value)-Pair #7 - { 0x1C, 0x10 }, // (Offset,Value)-Pair #8 - { 0x1D, 0x02 }, // (Offset,Value)-Pair #9 + { 0x19, 0xF6 }, + { 0x1A, 0x44 }, + { 0x1B, 0x24 }, + { 0x1C, 0x10 }, + { 0x1D, 0x02 }, OOVPA_END; - +#endif +#if 0 // Moved to 4134 // ****************************************************************** // * CDirectSoundBuffer_Stop // ****************************************************************** @@ -299,24 +297,25 @@ OOVPA_XREF(CDirectSoundBuffer_Stop, 4361, 10, XRefOne) // CDirectSoundBuffer_Stop+0x33 : call [CMcpxBuffer::Stop] - XREF_ENTRY( 0x33, XREF_CMcpxBuffer_Stop), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x33, XREF_CMcpxBuffer_Stop), // CDirectSoundBuffer_Stop+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #2 - { 0x22, 0x05 }, // (Offset,Value)-Pair #3 - { 0x23, 0x40 }, // (Offset,Value)-Pair #4 - { 0x24, 0x00 }, // (Offset,Value)-Pair #5 - { 0x25, 0x80 }, // (Offset,Value)-Pair #6 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSoundBuffer_Stop+0x3B : jz +0x0B - { 0x3B, 0x74 }, // (Offset,Value)-Pair #7 - { 0x3C, 0x0B }, // (Offset,Value)-Pair #8 + { 0x3B, 0x74 }, + { 0x3C, 0x0B }, // CDirectSoundBuffer_Stop+0x4C : retn 0x04 - { 0x4C, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x4D, 0x04 }, // (Offset,Value)-Pair #10 + { 0x4C, 0xC2 }, + { 0x4D, 0x04 }, OOVPA_END; - +#endif +#if 0 //Using generic 3911 // ****************************************************************** // * IDirectSoundBuffer_Stop // ****************************************************************** @@ -326,28 +325,29 @@ OOVPA_XREF(IDirectSoundBuffer_Stop, 4361, 8, XRefOne) // IDirectSoundBuffer_Stop+0x11 : call [CDirectSoundBuffer::Stop] - XREF_ENTRY( 0x11, XREF_CDirectSoundBuffer_Stop), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x11, XREF_CDirectSoundBuffer_Stop), // IDirectSoundBuffer_Stop+0x06 : and eax, 0xFFFFFFE4 - { 0x06, 0x83 }, // (Offset,Value)-Pair #2 - { 0x07, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x08, 0xE4 }, // (Offset,Value)-Pair #4 + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xE4 }, // IDirectSoundBuffer_Stop+0x0B : sbb ecx, ecx - { 0x0B, 0x1B }, // (Offset,Value)-Pair #5 - { 0x0C, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x0B, 0x1B }, + { 0x0C, 0xC9 }, // IDirectSoundBuffer_Stop+0x0D : and ecx, eax - { 0x0D, 0x23 }, // (Offset,Value)-Pair #7 - { 0x0E, 0xC8 }, // (Offset,Value)-Pair #8 + { 0x0D, 0x23 }, + { 0x0E, 0xC8 }, OOVPA_END; - +#endif +#if 0 // Used 4134 // ****************************************************************** // * DirectSound::CDirectSoundVoiceSettings::SetMixBinVolumes // ****************************************************************** OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBinVolumes, 4361, 7, - XREF_DSSETMIXBINVOLUMESC, + XREF_CDirectSoundVoiceSettings_SetMixBinVolumes, XRefZero) { 0x03, 0x24 }, @@ -358,16 +358,17 @@ OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBinVolumes, 4361, 7, { 0x1C, 0x3B }, { 0x21, 0x5E }, OOVPA_END; - +#endif +#if 0 // Used 4134 // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetMixBinVolumes // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMixBinVolumes, 4361, 8, - XREF_DSSETMIXBINVOLUMESB, + XREF_CDirectSoundVoice_SetMixBinVolumes, XRefOne) - XREF_ENTRY( 0x0D, XREF_DSSETMIXBINVOLUMESC ), + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoiceSettings_SetMixBinVolumes ), { 0x02, 0x74 }, { 0x06, 0x74 }, @@ -377,16 +378,17 @@ OOVPA_XREF(CDirectSoundVoice_SetMixBinVolumes, 4361, 8, { 0x19, 0x5E }, { 0x1A, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Used 4134 // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetMixBinVolumes // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMixBinVolumes, 4361, 8, - XREF_DSSETMIXBINVOLUMESA, + XREF_CDirectSoundBuffer_SetMixBinVolumes, XRefOne) - XREF_ENTRY( 0x32, XREF_DSSETMIXBINVOLUMESB ), + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetMixBinVolumes ), { 0x0C, 0x00 }, { 0x12, 0x85 }, @@ -396,7 +398,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMixBinVolumes, 4361, 8, { 0x3A, 0x74 }, { 0x47, 0x8B }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSoundBuffer::PlayEx // ****************************************************************** @@ -460,6 +462,7 @@ OOVPA_XREF(CDirectSoundBuffer_StopEx, 4361, 8, { 0x52, 0x8B }, OOVPA_END; +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_StopEx // ****************************************************************** @@ -478,82 +481,7 @@ OOVPA_XREF(IDirectSoundBuffer_StopEx, 4361, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetFormat -// ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetFormat, 4361, 8, - - XREF_CDirectSoundVoice_SetFormat, - XRefZero) - - { 0x07, 0x4E }, - { 0x10, 0xE8 }, - { 0x19, 0xD8 }, - { 0x22, 0xFF }, - { 0x2B, 0x0C }, - { 0x34, 0xFF }, - { 0x3F, 0x8B }, - { 0x46, 0x00 }, -OOVPA_END; - -// ****************************************************************** -// * DirectSound::CDirectSoundBuffer::SetFormat -// ****************************************************************** -OOVPA_XREF(CDirectSoundBuffer_SetFormat, 4361, 8, - - XREF_CDirectSoundBuffer_SetFormat, - XRefOne) - - XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetFormat ), - - { 0x0C, 0x00 }, - { 0x12, 0x85 }, - { 0x1C, 0x15 }, - { 0x26, 0xEB }, - { 0x30, 0x10 }, - { 0x3A, 0x74 }, - { 0x47, 0x8B }, -OOVPA_END; - -// ****************************************************************** -// * IDirectSoundBuffer_SetFormat -// ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_SetFormat, 4361, 8, - - XRefNoSaveIndex, - XRefOne) - - XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetFormat ), - - { 0x02, 0x24 }, - { 0x06, 0x24 }, - { 0x0A, 0x83 }, - { 0x0E, 0xD9 }, - { 0x12, 0xC8 }, - { 0x19, 0xC2 }, - { 0x1A, 0x08 }, -OOVPA_END; - -// ****************************************************************** -// * DirectSound::CDirectSoundStream::SetFormat -// ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetFormat, 4361, 9, - - XRefNoSaveIndex, - XRefOne) - - XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetFormat ), - - { 0x00, 0x56 }, - { 0x0C, 0x00 }, - { 0x14, 0x74 }, - { 0x21, 0xB8 }, - { 0x2A, 0x24 }, - { 0x35, 0xE8 }, - { 0x40, 0x68 }, - { 0x4B, 0x8B }, -OOVPA_END; +#endif // ****************************************************************** // * public: long __thiscall DirectSound::CMcpxBuffer::Play(__int64,unsigned long) @@ -573,6 +501,174 @@ OOVPA_XREF(CMcpxBuffer_Play2, 4361, 8, { 0x36, 0xC2 }, OOVPA_END; +// ****************************************************************** +// * CDirectSoundVoice::SetMaxDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 4361, 12, + + XREF_CDirectSoundVoice_SetMaxDistance, + XRefZero) + + // CDirectSoundVoice_SetMaxDistance+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetMaxDistance+0x11 : mov [eax+38h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x38 }, + + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetMaxDistance+0x30 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetMinDistance +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 4361, 12, + + XREF_CDirectSoundVoice_SetMinDistance, + XRefZero) + + // CDirectSoundVoice_SetMinDistance+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetMinDistance+0x11 : mov [eax+34h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x34 }, + + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetMinDistance+0x30 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetRolloffFactor +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 4361, 12, + + XREF_DSVOICESETROLLOFFFACTOR, + XRefZero) + + // CDirectSoundVoice_SetRolloffFactor+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetRolloffFactor+0x11 : mov [eax+44h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x44 }, + + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetRolloffFactor+0x30 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetDistanceFactor +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 4361, 12, + + XREF_DSVOICESETDISTANCEFACTOR, + XRefZero) + + // CDirectSoundVoice_SetDistanceFactor+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetDistanceFactor+0x11 : mov [eax+40h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x40 }, + + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetDistanceFactor+0x30 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetConeOutsideVolume +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 4361, 12, + + XREF_CDirectSoundVoice_SetConeOutsideVolume, + XRefZero) + + // CDirectSoundVoice_SetConeOutsideVolume+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetConeOutsideVolume+0x11 : mov [eax+30h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x30 }, + + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetConeOutsideVolume+0x30 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 } +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetDopplerFactor +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 4361, 12, + + XREF_CDirectSoundVoice_SetDopplerFactor, + XRefZero) + + // CDirectSoundVoice_SetDopplerFactor+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetDopplerFactor+0x12 : mov [eax+48h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x48 }, + + { 0x14, 0x8B }, + { 0x1D, 0x83 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetDopplerFactor+0x31 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 } +OOVPA_END; + // ****************************************************************** // * DSound_4361 // ****************************************************************** @@ -581,52 +677,71 @@ OOVPATable DSound_4361[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), REGISTER_OOVPA(DirectSoundGetSampleTime, 4361, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4361, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4361, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4134, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4361, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4361, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4361, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4361, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), REGISTER_OOVPA(CMcpxBuffer_Play2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4361, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4361, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4361, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4242, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4242, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetLFO, 4134, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4432.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4432.inl index fcaf91f88..94545137c 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4432.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4432.inl @@ -32,44 +32,55 @@ // * // ****************************************************************** +//TODO: Need further verification for 4361 titles, 4432 is last known lowest build match. +//Test case for 4361: Burnout (found a match yet is called twice for every time joystick is moved. Is this normal?) // ****************************************************************** -// * DirectSoundDoWork +// * DirectSound::GetCaps // ****************************************************************** -#define DirectSoundDoWork_4432 DirectSoundDoWork_4361 +OOVPA_XREF(CDirectSound_GetCaps, 4361, 7, -// ****************************************************************** -// * DirectSoundGetSampleTime -// ****************************************************************** -#define DirectSoundGetSampleTime_4432 DirectSoundGetSampleTime_4361 + XREF_CDirectSound_GetCaps, + XRefZero) + { 0x0C, 0x0F }, + { 0x0D, 0xB6 }, + { 0x0E, 0xC8 }, + { 0x46, 0x8B }, + { 0x4C, 0x8B }, + { 0x69, 0xC2 }, + { 0x6A, 0x08 }, +OOVPA_END; + +#if 0 // Used 3936 // ****************************************************************** // * IDirectSound_Release // ****************************************************************** OOVPA_NO_XREF(IDirectSound_Release, 4432, 12) // IDirectSound_Release+0x04 : lea ecx, [eax-8] - { 0x04, 0x8D }, // (Offset,Value)-Pair #1 - { 0x05, 0x48 }, // (Offset,Value)-Pair #2 - { 0x06, 0xF8 }, // (Offset,Value)-Pair #3 + { 0x04, 0x8D }, + { 0x05, 0x48 }, + { 0x06, 0xF8 }, // IDirectSound_Release+0x07 : neg eax - { 0x07, 0xF7 }, // (Offset,Value)-Pair #4 - { 0x08, 0xD8 }, // (Offset,Value)-Pair #5 + { 0x07, 0xF7 }, + { 0x08, 0xD8 }, // IDirectSound_Release+0x09 : sbb eax, eax - { 0x09, 0x1B }, // (Offset,Value)-Pair #6 - { 0x0A, 0xC0 }, // (Offset,Value)-Pair #7 + { 0x09, 0x1B }, + { 0x0A, 0xC0 }, // IDirectSound_Release+0x0D : mov ecx, [eax] - { 0x0D, 0x8B }, // (Offset,Value)-Pair #8 - { 0x0E, 0x08 }, // (Offset,Value)-Pair #9 + { 0x0D, 0x8B }, + { 0x0E, 0x08 }, // IDirectSound_Release+0x10 : call dword ptr [ecx+8] - { 0x10, 0xFF }, // (Offset,Value)-Pair #10 - { 0x11, 0x51 }, // (Offset,Value)-Pair #11 - { 0x12, 0x08 }, // (Offset,Value)-Pair #12 + { 0x10, 0xFF }, + { 0x11, 0x51 }, + { 0x12, 0x08 }, OOVPA_END; - +#endif +#if 0 // Used 4134 // ****************************************************************** // ****************************************************************** @@ -77,75 +88,97 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBins, 4432, 10, - XREF_DSSETMIXBINSC, + XREF_CDirectSoundVoiceSettings_SetMixBins, XRefZero) // CDirectSoundVoiceSettings_SetMixBins+0x06 : jnz +0x1A - { 0x06, 0x75 }, // (Offset,Value)-Pair #1 - { 0x07, 0x1A }, // (Offset,Value)-Pair #2 + { 0x06, 0x75 }, + { 0x07, 0x1A }, // CDirectSoundVoiceSettings_SetMixBins+0x08 : test byte ptr [ecx+8], 0x10 - { 0x08, 0xF6 }, // (Offset,Value)-Pair #3 - { 0x09, 0x41 }, // (Offset,Value)-Pair #4 - { 0x0A, 0x08 }, // (Offset,Value)-Pair #5 - { 0x0B, 0x10 }, // (Offset,Value)-Pair #6 + { 0x08, 0xF6 }, + { 0x09, 0x41 }, + { 0x0A, 0x08 }, + { 0x0B, 0x10 }, // CDirectSoundVoiceSettings_SetMixBins+0x2B : jbe +0x2B - { 0x2B, 0x76 }, // (Offset,Value)-Pair #7 - { 0x2C, 0x2B }, // (Offset,Value)-Pair #8 + { 0x2B, 0x76 }, + { 0x2C, 0x2B }, // CDirectSoundVoiceSettings_SetMixBins+0xB2 : retn 0x04 - { 0xB2, 0xC2 }, // (Offset,Value)-Pair #9 - { 0xB3, 0x04 }, // (Offset,Value)-Pair #10 + { 0xB2, 0xC2 }, + { 0xB3, 0x04 }, OOVPA_END; +#endif // ****************************************************************** -// * DirectSoundCreate, 4432 +// * DSound_4432 // ****************************************************************** OOVPATable DSound_4432[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), - REGISTER_OOVPA(DirectSoundGetSampleTime, 4432, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4361, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 4432, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4361, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), + REGISTER_OOVPA(DirectSoundGetSampleTime, 4361, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4134, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4361, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4432, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetLFO, 4134, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl index 548af463e..90d34cee2 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl @@ -32,41 +32,36 @@ // * // ****************************************************************** -// ****************************************************************** -// * DirectSoundGetSampleTime -// ****************************************************************** -#define DirectSoundGetSampleTime_4627 DirectSoundGetSampleTime_4361 - // ****************************************************************** // * CDirectSound::SetMixBinHeadroom // ****************************************************************** OOVPA_XREF(CDirectSound_SetMixBinHeadroom, 4627, 15, - XREF_DSSETMIXBINHEADROOMA, + XREF_CDirectSound_SetMixBinHeadroom, XRefZero) // CDirectSound_SetMixBinHeadroom+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSound_SetMixBinHeadroom+0x34 : mov bl, [esp+0x14] - { 0x34, 0x8A }, // (Offset,Value)-Pair #6 - { 0x35, 0x5C }, // (Offset,Value)-Pair #7 - { 0x36, 0x24 }, // (Offset,Value)-Pair #8 - { 0x37, 0x14 }, // (Offset,Value)-Pair #9 + { 0x34, 0x8A }, + { 0x35, 0x5C }, + { 0x36, 0x24 }, + { 0x37, 0x14 }, // CDirectSound_SetMixBinHeadroom+0x39 : mov [edx+ecx+0x14], bl - { 0x39, 0x88 }, // (Offset,Value)-Pair #10 - { 0x3A, 0x5C }, // (Offset,Value)-Pair #11 - { 0x3B, 0x0A }, // (Offset,Value)-Pair #12 - { 0x3C, 0x14 }, // (Offset,Value)-Pair #13 + { 0x39, 0x88 }, + { 0x3A, 0x5C }, + { 0x3B, 0x0A }, + { 0x3C, 0x14 }, // CDirectSound_SetMixBinHeadroom+0x5C : retn 0x0C - { 0x5C, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x5D, 0x0C }, // (Offset,Value)-Pair #15 + { 0x5C, 0xC2 }, + { 0x5D, 0x0C }, OOVPA_END; // ****************************************************************** @@ -78,26 +73,26 @@ OOVPA_XREF(IDirectSound_SetMixBinHeadroom, 4627, 12, XRefOne) // IDirectSound_SetMixBinHeadroom+0x19 : call [CDirectSound::SetMixBinHeadroom] - XREF_ENTRY( 0x19, XREF_DSSETMIXBINHEADROOMA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x19, XREF_CDirectSound_SetMixBinHeadroom ), // IDirectSound_SetMixBinHeadroom+0x04 : push [esp+0x0C] - { 0x04, 0xFF }, // (Offset,Value)-Pair #2 - { 0x05, 0x74 }, // (Offset,Value)-Pair #3 - { 0x06, 0x24 }, // (Offset,Value)-Pair #4 - { 0x07, 0x0C }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x0C }, // IDirectSound_SetMixBinHeadroom+0x0E : add eax, 0xFFFFFFF8 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #6 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x10, 0xF8 }, // (Offset,Value)-Pair #8 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xF8 }, // IDirectSound_SetMixBinHeadroom+0x13 : sbb ecx, ecx - { 0x13, 0x1B }, // (Offset,Value)-Pair #9 - { 0x14, 0xC9 }, // (Offset,Value)-Pair #10 + { 0x13, 0x1B }, + { 0x14, 0xC9 }, // IDirectSound_SetMixBinHeadroom+0x15 : and ecx, eax - { 0x15, 0x23 }, // (Offset,Value)-Pair #11 - { 0x16, 0xC8 }, // (Offset,Value)-Pair #12 + { 0x15, 0x23 }, + { 0x16, 0xC8 }, OOVPA_END; // ****************************************************************** @@ -105,31 +100,31 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetVelocity, 4627, 15, - XREF_DSSETVELOCITYA, + XREF_CDirectSound_SetVelocity, XRefZero) // CDirectSound_SetVelocity+0x24 : mov eax, 0x80004005 - { 0x24, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x25, 0x05 }, // (Offset,Value)-Pair #2 - { 0x26, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x00 }, // (Offset,Value)-Pair #4 - { 0x28, 0x80 }, // (Offset,Value)-Pair #5 + { 0x24, 0xB8 }, + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, // CDirectSound_SetVelocity+0x37 : mov [edx+0x44], edi - { 0x37, 0x89 }, // (Offset,Value)-Pair #6 - { 0x38, 0x7A }, // (Offset,Value)-Pair #7 - { 0x39, 0x44 }, // (Offset,Value)-Pair #8 + { 0x37, 0x89 }, + { 0x38, 0x7A }, + { 0x39, 0x44 }, // CDirectSound_SetVelocity+0x4C : or byte ptr [eax+0x0x00A4], 0x80 - { 0x4C, 0x80 }, // (Offset,Value)-Pair #9 - { 0x4D, 0x88 }, // (Offset,Value)-Pair #10 - { 0x4E, 0xA4 }, // (Offset,Value)-Pair #11 - { 0x4F, 0x00 }, // (Offset,Value)-Pair #12 - { 0x52, 0x80 }, // (Offset,Value)-Pair #13 + { 0x4C, 0x80 }, + { 0x4D, 0x88 }, + { 0x4E, 0xA4 }, + { 0x4F, 0x00 }, + { 0x52, 0x80 }, // CDirectSound_SetVelocity+0x73 : retn 0x14 - { 0x73, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x74, 0x14 }, // (Offset,Value)-Pair #15 + { 0x73, 0xC2 }, + { 0x74, 0x14 }, OOVPA_END; // ****************************************************************** @@ -137,21 +132,21 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParametersA, 4627, 10, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefZero) - { 0x16, 0x68 }, // (Offset,Value)-Pair #1 - { 0x17, 0xE8 }, // (Offset,Value)-Pair #2 - { 0x18, 0xF7 }, // (Offset,Value)-Pair #3 - { 0x19, 0x2D }, // (Offset,Value)-Pair #4 + { 0x16, 0x68 }, + { 0x17, 0xE8 }, + { 0x18, 0xF7 }, + { 0x19, 0x2D }, - { 0x2F, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x30, 0x41 }, // (Offset,Value)-Pair #6 - { 0x31, 0x04 }, // (Offset,Value)-Pair #7 + { 0x2F, 0xD9 }, + { 0x30, 0x41 }, + { 0x31, 0x04 }, - { 0x87, 0x8B }, // (Offset,Value)-Pair #8 - { 0x88, 0x50 }, // (Offset,Value)-Pair #9 - { 0x89, 0x08 }, // (Offset,Value)-Pair #10 + { 0x87, 0x8B }, + { 0x88, 0x50 }, + { 0x89, 0x08 }, OOVPA_END; // ****************************************************************** @@ -159,29 +154,29 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParametersA, 4721, 10, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefZero) - { 0x16, 0x68 }, // (Offset,Value)-Pair #1 - { 0x17, 0xD8 }, // (Offset,Value)-Pair #2 - { 0x18, 0x81 }, // (Offset,Value)-Pair #3 - { 0x19, 0x15 }, // (Offset,Value)-Pair #4 + { 0x16, 0x68 }, + { 0x17, 0xD8 }, + { 0x18, 0x81 }, + { 0x19, 0x15 }, - { 0x2F, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x30, 0x41 }, // (Offset,Value)-Pair #6 - { 0x31, 0x04 }, // (Offset,Value)-Pair #7 + { 0x2F, 0xD9 }, + { 0x30, 0x41 }, + { 0x31, 0x04 }, - { 0x87, 0x8B }, // (Offset,Value)-Pair #8 - { 0x88, 0x50 }, // (Offset,Value)-Pair #9 - { 0x89, 0x08 }, // (Offset,Value)-Pair #10 + { 0x87, 0x8B }, + { 0x88, 0x50 }, + { 0x89, 0x08 }, OOVPA_END; // ****************************************************************** // * DirectSound::CDirectSound::SetAllParameters // ****************************************************************** -OOVPA_XREF(CDirectSound_SetAllParameters, 4928, 8, +OOVPA_XREF(CDirectSound_SetAllParameters, 4831, 8, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefZero) { 0x1B, 0xFF }, @@ -195,80 +190,60 @@ OOVPA_XREF(CDirectSound_SetAllParameters, 4928, 8, OOVPA_END; // ****************************************************************** -// * CDirectSoundVoiceSettings::SetMixBinVolumes +// * CDirectSound_SetPosition // ****************************************************************** -#define CDirectSoundVoiceSettings_SetMixBinVolumes_4627 CDirectSoundVoiceSettings_SetMixBinVolumes_4134 +OOVPA_XREF(CDirectSound_SetPosition, 4627, 11, -// ****************************************************************** -// * CDirectSoundVoice::SetMixBinVolumes -// ****************************************************************** -#define CDirectSoundVoice_SetMixBinVolumes_4627 CDirectSoundVoice_SetMixBinVolumes_4134 - -// ****************************************************************** -// * CDirectSoundBuffer::SetMixBinVolumes -// ****************************************************************** -#define CDirectSoundBuffer_SetMixBinVolumes_4627 CDirectSoundBuffer_SetMixBinVolumes_4134 - -// ****************************************************************** -// * IDirectSoundBuffer_SetMixBinVolumes2 -// ****************************************************************** -#define IDirectSoundBuffer_SetMixBinVolumes2_4627 IDirectSoundBuffer_SetMixBinVolumes2_4134 - -// ****************************************************************** -// * CDirectSound::SetPositionA -// ****************************************************************** -OOVPA_XREF(CDirectSound_SetPositionA, 4627, 11, - - XREF_DSSETPOSITIONA, + XREF_CDirectSound_SetPosition, XRefZero) - // CDirectSound_SetPositionA+0x2B : mov ecx, [ebp+0x08] - { 0x2B, 0x8B }, // (Offset,Value)-Pair #1 - { 0x2C, 0x4D }, // (Offset,Value)-Pair #2 - { 0x2D, 0x08 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetPosition+0x2B : mov ecx, [ebp+0x08] + { 0x2B, 0x8B }, + { 0x2C, 0x4D }, + { 0x2D, 0x08 }, - // CDirectSound_SetPositionA+0x3F : mov [edx+0x3C], edi - { 0x3F, 0x89 }, // (Offset,Value)-Pair #4 - { 0x40, 0x7A }, // (Offset,Value)-Pair #5 - { 0x41, 0x3C }, // (Offset,Value)-Pair #6 + // CDirectSound_SetPosition+0x3F : mov [edx+0x3C], edi + { 0x3F, 0x89 }, + { 0x40, 0x7A }, + { 0x41, 0x3C }, - // CDirectSound_SetPositionA+0x4C : or word ptr [eax+0xA4], 0x01FF - { 0x4C, 0x66 }, // (Offset,Value)-Pair #7 - { 0x4D, 0x81 }, // (Offset,Value)-Pair #8 - { 0x4E, 0x88 }, // (Offset,Value)-Pair #9 - { 0x4F, 0xA4 }, // (Offset,Value)-Pair #10 - { 0x53, 0xFF }, // (Offset,Value)-Pair #11 + // CDirectSound_SetPosition+0x4C : or word ptr [eax+0xA4], 0x01FF + { 0x4C, 0x66 }, + { 0x4D, 0x81 }, + { 0x4E, 0x88 }, + { 0x4F, 0xA4 }, + { 0x53, 0xFF }, OOVPA_END; // ****************************************************************** // * DirectSoundCreateBuffer // ****************************************************************** -OOVPA_XREF(DirectSoundCreateBuffer, 4627, 12, +OOVPA_XREF(DirectSoundCreateBuffer, 4242, 12, XRefNoSaveIndex, XRefOne) // DirectSoundCreateBuffer+0x2F : call [CDirectSound::CreateSoundBuffer] - XREF_ENTRY( 0x2F, XREF_DSCREATESOUNDBUFFER ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x2F, XREF_CDirectSound_CreateSoundBuffer ), // DirectSoundCreateBuffer+0x04 : and [ebp-0x04], 0 - { 0x04, 0x83 }, // (Offset,Value)-Pair #2 - { 0x05, 0x65 }, // (Offset,Value)-Pair #3 - { 0x06, 0xFC }, // (Offset,Value)-Pair #4 + { 0x04, 0x83 }, + { 0x05, 0x65 }, + { 0x06, 0xFC }, // DirectSoundCreateBuffer+0x08 : push ebx; push esi; push edi - { 0x08, 0x53 }, // (Offset,Value)-Pair #5 - { 0x09, 0x56 }, // (Offset,Value)-Pair #6 - { 0x0A, 0x57 }, // (Offset,Value)-Pair #7 + { 0x08, 0x53 }, + { 0x09, 0x56 }, + { 0x0A, 0x57 }, // DirectSoundCreateBuffer+0x3C : call dword ptr [eax+8] - { 0x3C, 0xFF }, // (Offset,Value)-Pair #8 - { 0x3D, 0x50 }, // (Offset,Value)-Pair #9 - { 0x3E, 0x08 }, // (Offset,Value)-Pair #10 + { 0x3C, 0xFF }, + { 0x3D, 0x50 }, + { 0x3E, 0x08 }, // DirectSoundCreateBuffer+0x54 : retn 0x08 - { 0x54, 0xC2 }, // (Offset,Value)-Pair #11 - { 0x55, 0x08 }, // (Offset,Value)-Pair #12 + { 0x54, 0xC2 }, + { 0x55, 0x08 }, OOVPA_END; // ****************************************************************** @@ -280,10 +255,10 @@ OOVPA_XREF(CMcpxBuffer_GetStatus, 4721, 17, XRefZero) // CMcpxBuffer_GetStatus+0x00 : movzx eax, word ptr [esi+0x12] - { 0x00, 0x0F }, // (Offset,Value)-Pair #5 - { 0x01, 0xB7 }, // (Offset,Value)-Pair #6 - { 0x02, 0x41 }, // (Offset,Value)-Pair #7 - { 0x03, 0x12 }, // (Offset,Value)-Pair #8 + { 0x00, 0x0F }, + { 0x01, 0xB7 }, + { 0x02, 0x41 }, + { 0x03, 0x12 }, { 0x07, 0xE1 }, { 0x10, 0x24 }, @@ -291,18 +266,18 @@ OOVPA_XREF(CMcpxBuffer_GetStatus, 4721, 17, { 0x22, 0x74 }, // CMcpxBuffer_GetStatus+0x27 : mov ecx, 0x8001 - { 0x27, 0xB9 }, // (Offset,Value)-Pair #3 - { 0x28, 0x01 }, // (Offset,Value)-Pair #4 - { 0x29, 0x80 }, // (Offset,Value)-Pair #4 - { 0x2A, 0x00 }, // (Offset,Value)-Pair #4 + { 0x27, 0xB9 }, + { 0x28, 0x01 }, + { 0x29, 0x80 }, + { 0x2A, 0x00 }, { 0x2B, 0x80 }, { 0x34, 0x24 }, // CMcpxBuffer_GetStatus+0x39 : mov [ecx], eax - { 0x39, 0x89 }, // (Offset,Value)-Pair #5 - { 0x3A, 0x01 }, // (Offset,Value)-Pair #6 + { 0x39, 0x89 }, + { 0x3A, 0x01 }, { 0x3D, 0x33 }, OOVPA_END; @@ -315,23 +290,23 @@ OOVPA_XREF(CMcpxBuffer_GetStatus, 4831, 13, XREF_CMcpxBuffer_GetStatus, XRefZero) - { 0x00, 0x0F }, // (Offset,Value)-Pair #1 + { 0x00, 0x0F }, - { 0x16, 0x6A }, // (Offset,Value)-Pair #2 - { 0x17, 0x00 }, // (Offset,Value)-Pair #3 - { 0x18, 0x5A }, // (Offset,Value)-Pair #4 + { 0x16, 0x6A }, + { 0x17, 0x00 }, + { 0x18, 0x5A }, - { 0x1C, 0x42 }, // (Offset,Value)-Pair #5 - { 0x1D, 0xF6 }, // (Offset,Value)-Pair #6 - { 0x1E, 0xC4 }, // (Offset,Value)-Pair #7 - { 0x1F, 0x02 }, // (Offset,Value)-Pair #8 + { 0x1C, 0x42 }, + { 0x1D, 0xF6 }, + { 0x1E, 0xC4 }, + { 0x1F, 0x02 }, - { 0x29, 0xB9 }, // (Offset,Value)-Pair #9 - { 0x2A, 0x01 }, // (Offset,Value)-Pair #10 - { 0x2B, 0x80 }, // (Offset,Value)-Pair #11 + { 0x29, 0xB9 }, + { 0x2A, 0x01 }, + { 0x2B, 0x80 }, - { 0x3F, 0xC2 }, // (Offset,Value)-Pair #12 - { 0x40, 0x04 }, // (Offset,Value)-Pair #13 + { 0x3F, 0xC2 }, + { 0x40, 0x04 }, OOVPA_END; // ****************************************************************** @@ -357,45 +332,45 @@ OOVPA_XREF(CMcpxBuffer_Play, 4721, 10, XRefZero) // CMcpxBuffer_Play+0x2E : test byte ptr [eax+9], 20h - { 0x2E, 0xF6 }, // (Offset,Value)-Pair #5 - { 0x2F, 0x40 }, // (Offset,Value)-Pair #6 - { 0x30, 0x09 }, // (Offset,Value)-Pair #7 - { 0x31, 0x20 }, // (Offset,Value)-Pair #8 + { 0x2E, 0xF6 }, + { 0x2F, 0x40 }, + { 0x30, 0x09 }, + { 0x31, 0x20 }, // CMcpxBuffer_Play+0x44 : test byte ptr [esi+12h], 2h - { 0x44, 0xF6 }, // (Offset,Value)-Pair #1 - { 0x45, 0x46 }, // (Offset,Value)-Pair #2 - { 0x46, 0x12 }, // (Offset,Value)-Pair #3 - { 0x47, 0x02 }, // (Offset,Value)-Pair #4 + { 0x44, 0xF6 }, + { 0x45, 0x46 }, + { 0x46, 0x12 }, + { 0x47, 0x02 }, // CMcpxBuffer_Play+0x52 : xor eax, eax - { 0x52, 0x33 }, // (Offset,Value)-Pair #9 - { 0x53, 0xC0 }, // (Offset,Value)-Pair #10 + { 0x52, 0x33 }, + { 0x53, 0xC0 }, OOVPA_END; // ****************************************************************** // * public: long __thiscall DirectSound::CMcpxBuffer::Play(unsigned long) // ****************************************************************** -OOVPA_XREF(CMcpxBuffer_Play, 4928, 10, +OOVPA_XREF(CMcpxBuffer_Play, 4831, 10, XREF_CMcpxBuffer_Play, XRefZero) // CMcpxBuffer_Play+0x32 : test byte ptr [esi+12h], 42h - { 0x32, 0xF6 }, // (Offset,Value)-Pair #1 - { 0x33, 0x46 }, // (Offset,Value)-Pair #2 - { 0x34, 0x12 }, // (Offset,Value)-Pair #3 - { 0x35, 0x42 }, // (Offset,Value)-Pair #4 + { 0x32, 0xF6 }, + { 0x33, 0x46 }, + { 0x34, 0x12 }, + { 0x35, 0x42 }, // CMcpxBuffer_Play+0x4D : test byte ptr [eax+9], 20h - { 0x4D, 0xF6 }, // (Offset,Value)-Pair #5 - { 0x4E, 0x40 }, // (Offset,Value)-Pair #6 - { 0x4F, 0x09 }, // (Offset,Value)-Pair #7 - { 0x50, 0x20 }, // (Offset,Value)-Pair #8 + { 0x4D, 0xF6 }, + { 0x4E, 0x40 }, + { 0x4F, 0x09 }, + { 0x50, 0x20 }, // CMcpxBuffer_Play+0x71 : xor eax, eax - { 0x71, 0x33 }, // (Offset,Value)-Pair #9 - { 0x72, 0xC0 }, // (Offset,Value)-Pair #10 + { 0x71, 0x33 }, + { 0x72, 0xC0 }, OOVPA_END; // ****************************************************************** @@ -406,27 +381,37 @@ OOVPA_END; // ****************************************************************** // * CDirectSound::SetDistanceFactorA // ****************************************************************** -OOVPA_XREF(CDirectSound_SetDistanceFactorA, 4627, 11, +OOVPA_XREF(CDirectSound_SetDistanceFactor, 4627, 17, - XREF_SETDISTANCEFACTORA, + XREF_CDirectSound_SetDistanceFactor, XRefZero) - // CDirectSound_SetDistanceFactorA+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + // CDirectSound_SetDistanceFactor+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, - // CDirectSound_SetDistanceFactorA+0x39 : or byte ptr[eax+0xA4], 0xE0 - { 0x39, 0x80 }, // (Offset,Value)-Pair #6 - { 0x3A, 0x88 }, // (Offset,Value)-Pair #7 - { 0x3B, 0xA4 }, // (Offset,Value)-Pair #8 - { 0x3F, 0xE0 }, // (Offset,Value)-Pair #9 + // CDirectSound_SetDistanceFactor+0x33 : mov [eax+68h], edx + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x68 }, - // CDirectSound_SetDistanceFactorA+0x4F : jz +0x0B - { 0x4F, 0x74 }, // (Offset,Value)-Pair #10 - { 0x50, 0x0B }, // (Offset,Value)-Pair #11 + // CDirectSound_SetDistanceFactor+0x36 : mov eax, [ecx+8] + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, + + // CDirectSound_SetDistanceFactor+0x39 : or byte ptr[eax+0xA4], 0xE0 + { 0x39, 0x80 }, + { 0x3A, 0x88 }, + { 0x3B, 0xA4 }, + { 0x3F, 0xE0 }, + + // CDirectSound_SetDistanceFactor+0x4F : jz +0x0B + { 0x4F, 0x74 }, + { 0x50, 0x0B }, OOVPA_END; // ****************************************************************** @@ -434,30 +419,30 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetDopplerFactor, 4627, 14, - XREF_SETDOPPLERFACTOR, + XREF_CDirectSound_SetDopplerFactor, XRefZero) // CDirectSound_SetDopplerFactor+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSound_SetDopplerFactor+0x33 : mov [eax+0x70], edx - { 0x33, 0x89 }, // (Offset,Value)-Pair #6 - { 0x34, 0x50 }, // (Offset,Value)-Pair #7 - { 0x35, 0x70 }, // (Offset,Value)-Pair #8 + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x70 }, // CDirectSound_SetDopplerFactor+0x39 : or byte ptr[eax+0xA4], 0x80 - { 0x39, 0x80 }, // (Offset,Value)-Pair #9 - { 0x3A, 0x88 }, // (Offset,Value)-Pair #10 - { 0x3B, 0xA4 }, // (Offset,Value)-Pair #11 - { 0x3F, 0x80 }, // (Offset,Value)-Pair #12 + { 0x39, 0x80 }, + { 0x3A, 0x88 }, + { 0x3B, 0xA4 }, + { 0x3F, 0x80 }, // CDirectSound_SetDopplerFactor+0x4F : jz +0x0B - { 0x4F, 0x74 }, // (Offset,Value)-Pair #13 - { 0x50, 0x0B }, // (Offset,Value)-Pair #14 + { 0x4F, 0x74 }, + { 0x50, 0x0B }, OOVPA_END; // ****************************************************************** @@ -465,7 +450,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetPosition, 4627, 8, - XREF_DSVOICESETPOSITION, + XREF_CDirectSoundVoice_SetPosition, XRefZero) // CDirectSoundVoice_SetPosition+0x0F : mov edx, [ebp+arg_4] @@ -483,11 +468,6 @@ OOVPA_XREF(CDirectSoundVoice_SetPosition, 4627, 8, { 0x53, 0x00 } OOVPA_END; -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetFormat -// ****************************************************************** -#define CDirectSoundVoice_SetFormat_4627 CDirectSoundVoice_SetFormat_4361 - // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetFormat // ****************************************************************** @@ -506,49 +486,34 @@ OOVPA_XREF(CDirectSoundVoice_SetFormat, 4721, 8, { 0x43, 0x00 }, OOVPA_END; -// ****************************************************************** -// * DirectSound::CDirectSoundBuffer::SetFormat -// ****************************************************************** -#define CDirectSoundBuffer_SetFormat_4627 CDirectSoundBuffer_SetFormat_4361 - -// ****************************************************************** -// * IDirectSoundBuffer_SetFormat -// ****************************************************************** -#define IDirectSoundBuffer_SetFormat_4627 IDirectSoundBuffer_SetFormat_4361 - // ****************************************************************** // * CMcpxStream_Pause // ****************************************************************** -OOVPA_XREF(CMcpxStream_Pause, 4928, 11, +OOVPA_XREF(CMcpxStream_Pause, 4831, 11, - XREF_DSSTREAMPAUSE, + XREF_CMcpxStream_Pause, XRefZero) // CMcpxStream_Pause+0x17 : and ax, 0xFFDF - { 0x17, 0x66 }, // (Offset,Value)-Pair #1 - { 0x18, 0x25 }, // (Offset,Value)-Pair #2 - { 0x19, 0xDF }, // (Offset,Value)-Pair #3 + { 0x17, 0x66 }, + { 0x18, 0x25 }, + { 0x19, 0xDF }, // CMcpxStream_Pause+0x32 : jmp +0x56 - { 0x32, 0xEB }, // (Offset,Value)-Pair #4 - { 0x33, 0x56 }, // (Offset,Value)-Pair #5 + { 0x32, 0xEB }, + { 0x33, 0x56 }, // CMcpxStream_Pause+0x39 : movzx eax, word ptr [esi+0x12] - { 0x39, 0x0F }, // (Offset,Value)-Pair #6 - { 0x3A, 0xB7 }, // (Offset,Value)-Pair #7 - { 0x3B, 0x46 }, // (Offset,Value)-Pair #8 - { 0x3C, 0x12 }, // (Offset,Value)-Pair #9 + { 0x39, 0x0F }, + { 0x3A, 0xB7 }, + { 0x3B, 0x46 }, + { 0x3C, 0x12 }, // CMcpxStream_Pause+0x8B : retn 0x04 - { 0x8B, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x8C, 0x04 }, // (Offset,Value)-Pair #11 + { 0x8B, 0xC2 }, + { 0x8C, 0x04 }, OOVPA_END; -// ****************************************************************** -// * CDirectSoundStream_SetMixBinVolumes2 -// ****************************************************************** -#define CDirectSoundStream_SetMixBinVolumes2_4627 CDirectSoundStream_SetMixBinVolumes2_4134 - // ****************************************************************** // * DirectSound::CDirectSound::EnableHeadphones (incorrect?) // ****************************************************************** @@ -558,30 +523,30 @@ OOVPA_XREF(CDirectSound_EnableHeadphones, 4627, 15, XRefZero) // CDirectSound_EnableHeadphones+0x12 : movzx eax, al - { 0x12, 0x0F }, // (Offset,Value)-Pair #1 - { 0x13, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x14, 0xC0 }, // (Offset,Value)-Pair #3 + { 0x12, 0x0F }, + { 0x13, 0xB6 }, + { 0x14, 0xC0 }, // CDirectSound_EnableHeadphones+0x29 : mov eax, 0x80004005 - { 0x29, 0xB8 }, // (Offset,Value)-Pair #4 - { 0x2A, 0x05 }, // (Offset,Value)-Pair #5 - { 0x2B, 0x40 }, // (Offset,Value)-Pair #6 - { 0x2C, 0x00 }, // (Offset,Value)-Pair #7 - { 0x2D, 0x80 }, // (Offset,Value)-Pair #8 + { 0x29, 0xB8 }, + { 0x2A, 0x05 }, + { 0x2B, 0x40 }, + { 0x2C, 0x00 }, + { 0x2D, 0x80 }, // CDirectSound_EnableHeadphones+0x59 : and eax, 0x7FFFFFFF - { 0x59, 0x25 }, // (Offset,Value)-Pair #9 - { 0x5A, 0xFF }, // (Offset,Value)-Pair #10 - { 0x5B, 0xFF }, // (Offset,Value)-Pair #11 - { 0x5C, 0xFF }, // (Offset,Value)-Pair #12 - { 0x5D, 0x7F }, // (Offset,Value)-Pair #13 + { 0x59, 0x25 }, + { 0x5A, 0xFF }, + { 0x5B, 0xFF }, + { 0x5C, 0xFF }, + { 0x5D, 0x7F }, // CDirectSound_EnableHeadphones+0x97 : leave - //{ 0x97, 0xC9 }, // (Offset,Value)-Pair #14 + //{ 0x97, 0xC9 }, { 0x98, 0xC2 }, { 0x99, 0x08 }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_EnableHeadphones // ****************************************************************** @@ -607,7 +572,7 @@ OOVPA_XREF(IDirectSound_EnableHeadphones, 4627, 9, { 0x1A, 0x08 }, { 0x1B, 0x00 }, OOVPA_END; - +#endif /* // ****************************************************************** // * CDirectSoundVoice::SetHeadrom @@ -617,7 +582,7 @@ OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 4627, 9, XREF_CDirectSoundVoice_SetHeadroom, XRefOne) // Note : This was -1, which is used nowhere else and probably an error. - XREF_ENTRY( 0x1B, XREF_DSSTREAMSETVOLUME ), + XREF_ENTRY( 0x1B, XREF_CMcpxVoiceClient_SetVolume ), { 0x0A, 0x56 }, { 0x0F, 0x2B }, @@ -658,21 +623,21 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParametersA, 4831, 10, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefZero) - { 0x16, 0x68 }, // (Offset,Value)-Pair #1 - { 0x17, 0x08 }, // (Offset,Value)-Pair #2 - { 0x18, 0x6E }, // (Offset,Value)-Pair #3 - { 0x19, 0x18 }, // (Offset,Value)-Pair #4 + { 0x16, 0x68 }, + { 0x17, 0x08 }, + { 0x18, 0x6E }, + { 0x19, 0x18 }, - { 0x2F, 0xD9 }, // (Offset,Value)-Pair #5 - { 0x30, 0x41 }, // (Offset,Value)-Pair #6 - { 0x31, 0x04 }, // (Offset,Value)-Pair #7 + { 0x2F, 0xD9 }, + { 0x30, 0x41 }, + { 0x31, 0x04 }, - { 0x87, 0x8B }, // (Offset,Value)-Pair #8 - { 0x88, 0x50 }, // (Offset,Value)-Pair #9 - { 0x89, 0x08 }, // (Offset,Value)-Pair #10 + { 0x87, 0x8B }, + { 0x88, 0x50 }, + { 0x89, 0x08 }, OOVPA_END; // ****************************************************************** @@ -715,7 +680,7 @@ OOVPA_END; // ****************************************************************** // * DirectSound::CMcpxBuffer::Pause // ****************************************************************** -OOVPA_XREF(CMcpxBuffer_Pause, 4928, 7, +OOVPA_XREF(CMcpxBuffer_Pause, 4831, 7, XREF_CMcpxBuffer_Pause, XRefZero) @@ -785,7 +750,7 @@ OOVPA_XREF(CDirectSoundBuffer_GetStatus, 4721, 8, { 0x44, 0xFF }, { 0x4B, 0xC7 }, OOVPA_END; - +#if 0 // Used 4134 // ****************************************************************** // * IDirectSoundBuffer_GetStatus // ****************************************************************** @@ -804,7 +769,9 @@ OOVPA_XREF(IDirectSoundBuffer_GetStatus, 4721, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetMixBins // ****************************************************************** @@ -813,7 +780,7 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 4627, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, XREF_DSSETMIXBINSB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMixBins ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -823,7 +790,9 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 4627, 8, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * DirectSound::CMcpxVoiceClient::SetEG // ****************************************************************** @@ -841,7 +810,8 @@ OOVPA_XREF(CMcpxVoiceClient_SetEG, 4627, 8, { 0xDE, 0x1C }, { 0xFE, 0x1C }, OOVPA_END; - +#endif +#if 0 // Moved to 4039 // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetEG // ****************************************************************** @@ -859,7 +829,8 @@ OOVPA_XREF(CDirectSoundVoice_SetEG, 4627, 7, { 0x10, 0xC2 }, { 0x11, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetEG // ****************************************************************** @@ -878,7 +849,8 @@ OOVPA_XREF(CDirectSoundStream_SetEG, 4627, 8, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetEG // ****************************************************************** @@ -897,7 +869,8 @@ OOVPA_XREF(CDirectSoundBuffer_SetEG, 4627, 8, { 0x3A, 0x74 }, { 0x47, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetEG // ****************************************************************** @@ -916,19 +889,27 @@ OOVPA_XREF(IDirectSoundBuffer_SetEG, 4627, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundStream::FlushEx // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_FlushEx, 4627, 7, +OOVPA_XREF(CDirectSoundStream_FlushEx, 4627, 14, XREF_DSFLUSHEX2, XRefZero) { 0x0F, 0x00 }, { 0x18, 0x0B }, + { 0x24, 0xB8 }, { 0x25, 0x05 }, - { 0x32, 0x8B }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, + { 0x29, 0xEB }, + { 0x2A, 0x36 }, + { 0x2B, 0x83 }, + { 0x2C, 0x7D }, { 0x3F, 0x75 }, { 0x4D, 0x85 }, { 0x59, 0x15 }, @@ -968,7 +949,7 @@ OOVPA_NO_XREF(XAudioDownloadEffectsImage, 4627, 8) { 0xDE, 0x07 }, { 0xFE, 0xF7 }, OOVPA_END; - +#if 0 // Moved to 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetFilter // ****************************************************************** @@ -987,7 +968,8 @@ OOVPA_XREF(CDirectSoundStream_SetFilter, 4627, 8, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 4134 // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetPitch // ****************************************************************** @@ -1006,7 +988,8 @@ OOVPA_XREF(CDirectSoundBuffer_SetPitch, 4627, 8, { 0x3A, 0x74 }, { 0x47, 0x8B }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3936 version // ****************************************************************** // * IDirectSoundBuffer_SetPitch // ****************************************************************** @@ -1025,6 +1008,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetPitch, 4627, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetHeadroom @@ -1035,7 +1019,7 @@ OOVPA_XREF(CDirectSoundVoice_SetHeadroom, 4627, 8, XRefOne) // CDirectSoundVoice_SetHeadroom+0x1B : call [CMcpxVoiceClient::SetVolume] - XREF_ENTRY( 0x1B, XREF_DSSTREAMSETVOLUME ), + XREF_ENTRY( 0x1B, XREF_CMcpxVoiceClient_SetVolume ), { 0x03, 0x04 }, { 0x08, 0x48 }, @@ -1054,7 +1038,7 @@ OOVPA_XREF(CDirectSoundStream_SetHeadroom, 4627, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, /*XREF_CDirectSoundVoice_SetHeadroom*/ XREF_DSBUFFERSETHEADROOMA ), + XREF_ENTRY( 0x36, /*XREF_CDirectSoundVoice_SetHeadroom*/ XREF_CDirectSoundVoice_SetHeadroom ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -1064,7 +1048,7 @@ OOVPA_XREF(CDirectSoundStream_SetHeadroom, 4627, 8, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; - +#if 0 // Moved to 4039 // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetOutputBuffer // ****************************************************************** @@ -1081,7 +1065,9 @@ OOVPA_XREF(CDirectSoundVoice_SetOutputBuffer, 4627, 7, { 0x40, 0x74 }, { 0x4B, 0xD8 }, OOVPA_END; +#endif +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetOutputBuffer // ****************************************************************** @@ -1100,13 +1086,14 @@ OOVPA_XREF(CDirectSoundBuffer_SetOutputBuffer, 4627, 8, { 0x3A, 0x74 }, { 0x47, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundStream::SetOutputBuffer // ****************************************************************** OOVPA_XREF(CDirectSoundStream_SetOutputBuffer, 4627, 8, - XRefNoSaveIndex, + XREF_CDirectSoundStream_SetOutputBuffer, XRefOne) XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetOutputBuffer ), @@ -1120,6 +1107,7 @@ OOVPA_XREF(CDirectSoundStream_SetOutputBuffer, 4627, 8, { 0x4B, 0x8B }, OOVPA_END; +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetOutputBuffer // ****************************************************************** @@ -1138,18 +1126,22 @@ OOVPA_XREF(IDirectSoundBuffer_SetOutputBuffer, 4627, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetRolloffCurve // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetRolloffCurve, 4627, 8, +OOVPA_XREF(CDirectSoundVoice_SetRolloffCurve, 4627, 11, XREF_DSVOICESETROLLOFFCURVE, XRefZero) { 0x07, 0x8B }, { 0x10, 0x08 }, + { 0x11, 0x89 }, + { 0x12, 0x51 }, { 0x13, 0x70 }, + { 0x14, 0x8B }, { 0x19, 0xB4 }, { 0x22, 0x51 }, { 0x2B, 0x00 }, @@ -1283,7 +1275,7 @@ OOVPA_NO_XREF(XFileCreateMediaObjectEx, 4627, 7) { 0x46, 0x4C }, { 0x52, 0xFF }, OOVPA_END; - +#if 0 // Duplicate OOVPA from 3911 // ****************************************************************** // * IDirectSoundBuffer_SetNotificationPositions // ****************************************************************** @@ -1303,7 +1295,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetNotificationPositions, 4627, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * CMcpxVoiceClient::SetLFO // ****************************************************************** @@ -1321,7 +1314,8 @@ OOVPA_XREF(CMcpxVoiceClient_SetLFO, 4627, 8, { 0xDE, 0x05 }, { 0xFE, 0x6C }, OOVPA_END; - +#endif +#if 0 // Moved to 4039 // ****************************************************************** // * CDirectSoundVoice::SetLFO // ****************************************************************** @@ -1339,7 +1333,8 @@ OOVPA_XREF(CDirectSoundVoice_SetLFO, 4627, 7, { 0x10, 0xC2 }, { 0x11, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * CDirectSoundBuffer::SetLFO // ****************************************************************** @@ -1358,7 +1353,8 @@ OOVPA_XREF(CDirectSoundBuffer_SetLFO, 4627, 8, { 0x3A, 0x74 }, { 0x47, 0x8B }, OOVPA_END; - +#endif +#if 0 // Moved to 4039 // ****************************************************************** // * IDirectSoundBuffer_SetLFO // ****************************************************************** @@ -1377,7 +1373,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetLFO, 4627, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetLFO // ****************************************************************** @@ -1398,7 +1395,8 @@ OOVPA_XREF(CDirectSoundStream_SetLFO, 4627, 10, { 0x4F, 0xC2 }, { 0x50, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetPitch // ****************************************************************** @@ -1421,6 +1419,63 @@ OOVPA_XREF(CDirectSoundStream_SetPitch, 4627, 12, { 0x50, 0x08 }, { 0x51, 0x00 }, OOVPA_END; +#endif + +// ****************************************************************** +// * CDirectSoundVoice::SetDistanceFactor +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 4627, 12, + + XREF_DSVOICESETDISTANCEFACTOR, + XRefZero) + + // CDirectSoundVoice_SetDistanceFactor+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetDistanceFactor+0x11 : mov [eax+40h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x40 }, + + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetDistanceFactor+0x30 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundVoice::SetDopplerFactor +// ****************************************************************** +OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 4627, 12, + + XREF_CDirectSoundVoice_SetDopplerFactor, + XRefZero) + + // CDirectSoundVoice_SetDopplerFactor+0x0D : mov edx, [esp+arg_4] + { 0x0D, 0x8B }, + { 0x0E, 0x54 }, + { 0x0F, 0x24 }, + { 0x10, 0x08 }, + + // CDirectSoundVoice_SetDopplerFactor+0x12 : mov [eax+48h], edx + { 0x11, 0x89 }, + { 0x12, 0x50 }, + { 0x13, 0x48 }, + + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x78 }, + + // CDirectSoundVoice_SetDopplerFactor+0x31 : retn 0Ch + { 0x31, 0x0C }, + { 0x32, 0x00 } +OOVPA_END; // ****************************************************************** // * DSound_4627 @@ -1429,175 +1484,178 @@ OOVPATable DSound_4627[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), - REGISTER_OOVPA(DirectSoundGetSampleTime, 4627, PATCH), + REGISTER_OOVPA(DirectSoundGetSampleTime, 4361, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 4627, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroomA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4039, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetAllParametersA, 4627, XREF), REGISTER_OOVPA(CDirectSound_SetAllParametersA, 4721, XREF), REGISTER_OOVPA(CDirectSound_SetAllParametersA, 4831, XREF), - REGISTER_OOVPA(CDirectSound_SetAllParameters, 4928, XREF), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), + REGISTER_OOVPA(CDirectSound_SetAllParameters, 4831, XREF), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4627, PATCH), - REGISTER_OOVPA(CDirectSound_SetPositionA, 4627, XREF), - REGISTER_OOVPA(CDirectSound_SetPositionA, 4134, XREF), // TODO: Find a cure for laziness... - REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSound_SetPosition, 4627, XREF), + REGISTER_OOVPA(CDirectSound_SetPosition, 4134, XREF), // TODO: Find a cure for laziness... + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4361, XREF), - REGISTER_OOVPA(CMcpxStream_Pause, 4928, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Lock, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4134, XREF), + REGISTER_OOVPA(CMcpxStream_Pause, 4831, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4134, XREF), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4721, XREF), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4721, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetSpeakerConfig, 4627, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF), REGISTER_OOVPA(CMcpxBuffer_Play, 4721, XREF), - REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Play, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4134, XREF), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4134, XREF), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4627, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+ REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetDistanceFactor, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetDistanceFactor, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDistanceFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOrientation, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOrientation, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetPosition, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetDopplerFactor, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetDopplerFactor, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), // +s - REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4627, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4039, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4242, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4721, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4361, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes2, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4242, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4242, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes_8, 4039, PATCH), REGISTER_OOVPA(CDirectSound_EnableHeadphones, 4627, XREF), - REGISTER_OOVPA(IDirectSound_EnableHeadphones, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 4627, XREF), REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), // Use that for now. Okay, it's your call pal... - REGISTER_OOVPA(CMcpxBuffer_Pause, 4928, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Pause, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Pause, 4928, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4721, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4721, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4721, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 4627, XREF), REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMode, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 4627, XREF), REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetOutputBuffer, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffCurve, 4627, XREF), @@ -1606,13 +1664,15 @@ OOVPATable DSound_4627[] = { REGISTER_OOVPA(XFileCreateMediaObjectEx, 4627, PATCH), REGISTER_OOVPA(XWaveFileCreateMediaObject, 4627, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), // Uncommenting these fixes dashboard 4920 - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetLFO, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetLFO, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl index 4847e64ed..486732bb3 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl @@ -54,56 +54,56 @@ OOVPATable DSound_5028[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), - REGISTER_OOVPA(DirectSoundGetSampleTime, 4627, PATCH), + REGISTER_OOVPA(DirectSoundGetSampleTime, 4361, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 4627, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroomA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4039, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetAllParametersA, 4627, XREF), REGISTER_OOVPA(CDirectSound_SetAllParametersA, 4721, XREF), REGISTER_OOVPA(CDirectSound_SetAllParametersA, 4831, XREF), - REGISTER_OOVPA(CDirectSound_SetAllParameters, 4928, XREF), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), + REGISTER_OOVPA(CDirectSound_SetAllParameters, 4831, XREF), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes2, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_SetPositionA, 4627, XREF), - REGISTER_OOVPA(CDirectSound_SetPositionA, 4134, XREF), // TODO: Find a cure for laziness... - REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSound_SetPosition, 4627, XREF), + REGISTER_OOVPA(CDirectSound_SetPosition, 4134, XREF), // TODO: Find a cure for laziness... + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4361, XREF), - REGISTER_OOVPA(CMcpxStream_Pause, 4928, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Lock, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4134, XREF), + REGISTER_OOVPA(CMcpxStream_Pause, 4831, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), @@ -111,38 +111,40 @@ OOVPATable DSound_5028[] = { REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4721, XREF), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetSpeakerConfig, 4627, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF), REGISTER_OOVPA(CMcpxBuffer_Play, 4721, XREF), - REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Play, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4134, XREF), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4134, XREF), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4627, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetMaxDistance, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetMinDistance, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+ REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 4134, XREF), @@ -153,83 +155,85 @@ OOVPATable DSound_5028[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOrientation, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOrientation, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOutsideVolume, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetPosition, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetPosition, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVelocity, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetI3DL2Source, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), // +s + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4721, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4242, PATCH), REGISTER_OOVPA(CDirectSound_EnableHeadphones, 4627, XREF), - REGISTER_OOVPA(IDirectSound_EnableHeadphones, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 4627, XREF), REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), // Use that for now. Okay, it's your call pal... + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetAllParameters, 4134, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Pause, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Pause, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Pause, 4928, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4721, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4721, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 4627, XREF), REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMode, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetMode, 4134, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 4627, XREF), REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetOutputBuffer, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffCurve, 4627, XREF), @@ -238,13 +242,15 @@ OOVPATable DSound_5028[] = { REGISTER_OOVPA(XFileCreateMediaObjectEx, 5028, PATCH), REGISTER_OOVPA(XWaveFileCreateMediaObject, 4627, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetLFO, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetLFO, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl index 50c8a7c63..efa62d874 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl @@ -37,89 +37,96 @@ // ****************************************************************** OOVPA_XREF(CDirectSound_EnableHeadphones, 5233, 8, - XREF_DSENABLEHEADPHONES, + XREF_CDirectSound_EnableHeadphones, XRefZero) - { 0x16, 0x45 }, // (Offset,Value)-Pair #1 - { 0x1D, 0x0B }, // (Offset,Value)-Pair #2 - { 0x2A, 0x05 }, // (Offset,Value)-Pair #3 - { 0x46, 0x95 }, // (Offset,Value)-Pair #4 - { 0x56, 0x80 }, // (Offset,Value)-Pair #5 - { 0x5D, 0x7F }, // (Offset,Value)-Pair #6 - { 0x74, 0xA4 }, // (Offset,Value)-Pair #7 - { 0x99, 0x08 }, // (Offset,Value)-Pair #8 + { 0x16, 0x45 }, + { 0x1D, 0x0B }, + { 0x2A, 0x05 }, + { 0x46, 0x95 }, + { 0x56, 0x80 }, + { 0x5D, 0x7F }, + { 0x74, 0xA4 }, + { 0x99, 0x08 }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** -// * IDirectSound8_EnableHeadphones +// * IDirectSound_EnableHeadphones // ****************************************************************** -OOVPA_XREF(IDirectSound8_EnableHeadphones, 5233, 8, +OOVPA_XREF(IDirectSound_EnableHeadphones, 5233, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x15, XREF_DSENABLEHEADPHONES ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x15, XREF_CDirectSound_EnableHeadphones ), - // IDirectSound8_EnableHeadphones+0x0A : add eax, 0xFFFFFFF8 - { 0x0A, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0B, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x0C, 0xF8 }, // (Offset,Value)-Pair #4 + // IDirectSound_EnableHeadphones+0x0A : add eax, 0xFFFFFFF8 + { 0x0A, 0x83 }, + { 0x0B, 0xC0 }, + { 0x0C, 0xF8 }, - // IDirectSound8_EnableHeadphones+0x0F : sbb ecx, ecx - { 0x0F, 0x1B }, // (Offset,Value)-Pair #5 - { 0x10, 0xC9 }, // (Offset,Value)-Pair #6 + // IDirectSound_EnableHeadphones+0x0F : sbb ecx, ecx + { 0x0F, 0x1B }, + { 0x10, 0xC9 }, - // IDirectSound8_EnableHeadphones+0x19 : retn 0x08 - { 0x19, 0xC2 }, // (Offset,Value)-Pair #7 - { 0x1A, 0x08 }, // (Offset,Value)-Pair #8 + // IDirectSound_EnableHeadphones+0x19 : retn 0x08 + { 0x19, 0xC2 }, + { 0x1A, 0x08 }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundStream_FlushEx // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_FlushEx, 5233, 11, +OOVPA_XREF(CDirectSoundStream_FlushEx, 5233, 15, XREF_DSFLUSHEX2, XRefZero) - { 0x24, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x25, 0x05 }, // (Offset,Value)-Pair #2 - { 0x26, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x00 }, // (Offset,Value)-Pair #4 - { 0x28, 0x80 }, // (Offset,Value)-Pair #5 + { 0x24, 0xB8 }, + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, - { 0x36, 0x74 }, // (Offset,Value)-Pair #6 - { 0x37, 0x12 }, // (Offset,Value)-Pair #7 + { 0x29, 0xEB }, + { 0x2A, 0x3A }, + { 0x2B, 0x83 }, + { 0x2C, 0x7D }, - { 0x3E, 0xFF }, // (Offset,Value)-Pair #8 - { 0x40, 0x0C }, // (Offset,Value)-Pair #9 + { 0x36, 0x74 }, + { 0x37, 0x12 }, - { 0x67, 0xC2 }, // (Offset,Value)-Pair #10 - { 0x68, 0x10 }, // (Offset,Value)-Pair #11 + { 0x3E, 0xFF }, + { 0x40, 0x0C }, + + { 0x67, 0xC2 }, + { 0x68, 0x10 }, OOVPA_END; +#if 0 // Used 4627 // ****************************************************************** -// * IDirectSoundBuffer_StopEx +// * IDirectSoundStream_FlushEx // ****************************************************************** -OOVPA_XREF(IDirectSoundBuffer_StopEx, 5233, 9, +OOVPA_XREF(IDirectSoundStream_FlushEx, 5233, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x11, XREF_DSFLUSHEX2 ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x11, XREF_DSFLUSHEX2 ), - { 0x00, 0xFF }, // (Offset,Value)-Pair #2 - { 0x03, 0x10 }, // (Offset,Value)-Pair #3 + { 0x00, 0xFF }, + { 0x03, 0x10 }, - { 0x04, 0xFF }, // (Offset,Value)-Pair #4 - { 0x07, 0x10 }, // (Offset,Value)-Pair #5 + { 0x04, 0xFF }, + { 0x07, 0x10 }, - { 0x08, 0xFF }, // (Offset,Value)-Pair #6 - { 0x0B, 0x10 }, // (Offset,Value)-Pair #7 + { 0x08, 0xFF }, + { 0x0B, 0x10 }, - { 0x15, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x16, 0x10 }, // (Offset,Value)-Pair #9 + { 0x15, 0xC2 }, + { 0x16, 0x10 }, OOVPA_END; +#endif // ****************************************************************** // CMcpxAPU::SynchPlayback @@ -129,14 +136,14 @@ OOVPA_XREF(CMcpxAPU_SynchPlayback, 5233, 8, XREF_DSSYNCHPLAYBACKB, XRefZero) - { 0x0C, 0x74 }, // (Offset,Value)-Pair #1 - { 0x1A, 0x1A }, // (Offset,Value)-Pair #2 - { 0x25, 0x53 }, // (Offset,Value)-Pair #3 - { 0x37, 0xF2 }, // (Offset,Value)-Pair #4 - { 0x58, 0xBC }, // (Offset,Value)-Pair #5 - { 0x84, 0x43 }, // (Offset,Value)-Pair #6 - { 0x9E, 0x64 }, // (Offset,Value)-Pair #7 - { 0xFF, 0x00 }, // (Offset,Value)-Pair #8 + { 0x0C, 0x74 }, + { 0x1A, 0x1A }, + { 0x25, 0x53 }, + { 0x37, 0xF2 }, + { 0x58, 0xBC }, + { 0x84, 0x43 }, + { 0x9E, 0x64 }, + { 0xFF, 0x00 }, OOVPA_END; // ****************************************************************** @@ -147,22 +154,22 @@ OOVPA_XREF(CDirectSound_SynchPlayback, 5233, 10, XREF_DSSYNCHPLAYBACKA, XRefOne) - XREF_ENTRY( 0x08, XREF_DSSYNCHPLAYBACKB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x08, XREF_DSSYNCHPLAYBACKB ), // CDirectSound_SynchPlayback+0x00 : mov eax, [esp+0x04] - { 0x00, 0x8B }, // (Offset,Value)-Pair #2 - { 0x01, 0x44 }, // (Offset,Value)-Pair #3 - { 0x02, 0x24 }, // (Offset,Value)-Pair #4 - { 0x03, 0x04 }, // (Offset,Value)-Pair #5 + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, // CDirectSound_SynchPlayback+0x04 : mov ecx, [eax+0x0C] - { 0x04, 0x8B }, // (Offset,Value)-Pair #6 - { 0x05, 0x48 }, // (Offset,Value)-Pair #7 - { 0x06, 0x0C }, // (Offset,Value)-Pair #8 + { 0x04, 0x8B }, + { 0x05, 0x48 }, + { 0x06, 0x0C }, // CDirectSound_SynchPlayback+0x0C : retn 0x04 - { 0x0C, 0xC2 }, // (Offset,Value)-Pair #9 - { 0x0D, 0x04 }, // (Offset,Value)-Pair #10 + { 0x0C, 0xC2 }, + { 0x0D, 0x04 }, OOVPA_END; // ****************************************************************** @@ -173,43 +180,38 @@ OOVPA_XREF(IDirectSound_SynchPlayback, 5233, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x11, XREF_DSSYNCHPLAYBACKA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x11, XREF_DSSYNCHPLAYBACKA ), // IDirectSound_SynchPlayback+0x06 : add eax, 0xFFFFFFF8 - { 0x06, 0x83 }, // (Offset,Value)-Pair #2 - { 0x07, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x08, 0xF8 }, // (Offset,Value)-Pair #4 + { 0x06, 0x83 }, + { 0x07, 0xC0 }, + { 0x08, 0xF8 }, // IDirectSound_SynchPlayback+0x0B : sbb ecx, ecx - { 0x0B, 0x1B }, // (Offset,Value)-Pair #5 - { 0x0C, 0xC9 }, // (Offset,Value)-Pair #6 + { 0x0B, 0x1B }, + { 0x0C, 0xC9 }, // IDirectSound_SynchPlayback+0x15 : retn 0x04 - { 0x15, 0xC2 }, // (Offset,Value)-Pair #7 - { 0x16, 0x04 }, // (Offset,Value)-Pair #8 + { 0x15, 0xC2 }, + { 0x16, 0x04 }, OOVPA_END; -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetFormat -// ****************************************************************** -#define CDirectSoundVoice_SetFormat_5233 CDirectSoundVoice_SetFormat_4721 - // ****************************************************************** // CDirectSoundVoice::SetMode // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMode, 5233, 8, - XREF_DSBUFFERSETMODEB, + XREF_CDirectSoundVoice_SetMode, XRefZero) - { 0x00, 0xF6 }, // (Offset,Value)-Pair #1 - { 0x07, 0x24 }, // (Offset,Value)-Pair #2 - { 0x0B, 0x10 }, // (Offset,Value)-Pair #3 - { 0x0E, 0xB4 }, // (Offset,Value)-Pair #4 - { 0x18, 0x3C }, // (Offset,Value)-Pair #5 - { 0x1A, 0x06 }, // (Offset,Value)-Pair #6 - { 0x21, 0x33 }, // (Offset,Value)-Pair #7 - { 0x24, 0x0C }, // (Offset,Value)-Pair #8 + { 0x00, 0xF6 }, + { 0x07, 0x24 }, + { 0x0B, 0x10 }, + { 0x0E, 0xB4 }, + { 0x18, 0x3C }, + { 0x1A, 0x06 }, + { 0x21, 0x33 }, + { 0x24, 0x0C }, OOVPA_END; // ****************************************************************** @@ -217,20 +219,20 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMode, 5233, 8, - XREF_DSBUFFERSETMODEA, + XREF_CDirectSoundBuffer_SetMode, XRefOne) - XREF_ENTRY( 0x36, XREF_DSBUFFERSETMODEB ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMode ), - { 0x01, 0xE8 }, // (Offset,Value)-Pair #2 - { 0x15, 0x0B }, // (Offset,Value)-Pair #3 - { 0x22, 0x05 }, // (Offset,Value)-Pair #4 - { 0x27, 0x26 }, // (Offset,Value)-Pair #5 - { 0x34, 0x14 }, // (Offset,Value)-Pair #6 - { 0x3F, 0x0B }, // (Offset,Value)-Pair #7 - { 0x50, 0x0C }, // (Offset,Value)-Pair #8 + { 0x01, 0xE8 }, + { 0x15, 0x0B }, + { 0x22, 0x05 }, + { 0x27, 0x26 }, + { 0x34, 0x14 }, + { 0x3F, 0x0B }, + { 0x50, 0x0C }, OOVPA_END; - +#if 0 // Duplicate OOVPA, replacing with generic 4039 // ****************************************************************** // * IDirectSoundBuffer_SetMode // ****************************************************************** @@ -239,22 +241,22 @@ OOVPA_XREF(IDirectSoundBuffer_SetMode, 5233, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSBUFFERSETMODEA ), // (Offset,Value)-Pair #1 + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetMode ), - // IDirectSound8_EnableHeadphones+0x0E : add eax, 0xFFFFFFE4 - { 0x0E, 0x83 }, // (Offset,Value)-Pair #2 - { 0x0F, 0xC0 }, // (Offset,Value)-Pair #3 - { 0x10, 0xE4 }, // (Offset,Value)-Pair #4 + // IDirectSoundBuffer_SetMode+0x0E : add eax, 0xFFFFFFE4 + { 0x0E, 0x83 }, + { 0x0F, 0xC0 }, + { 0x10, 0xE4 }, - // IDirectSound8_EnableHeadphones+0x13 : sbb ecx, ecx - { 0x13, 0x1B }, // (Offset,Value)-Pair #5 - { 0x14, 0xC9 }, // (Offset,Value)-Pair #6 + // IDirectSoundBuffer_SetMode+0x13 : sbb ecx, ecx + { 0x13, 0x1B }, + { 0x14, 0xC9 }, - // IDirectSound8_EnableHeadphones+0x19 : retn 0x0C - { 0x1D, 0xC2 }, // (Offset,Value)-Pair #7 - { 0x1E, 0x0C }, // (Offset,Value)-Pair #8 + // IDirectSoundBuffer_SetMode+0x19 : retn 0x0C + { 0x1D, 0xC2 }, + { 0x1E, 0x0C }, OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundVoice::SetVolume // ****************************************************************** @@ -263,7 +265,7 @@ OOVPA_XREF(CDirectSoundVoice_SetVolume, 5233, 8, XREF_CDirectSoundVoice_SetVolume, XRefOne) - XREF_ENTRY( 0x15, XREF_DSSTREAMSETVOLUME ), + XREF_ENTRY( 0x15, XREF_CMcpxVoiceClient_SetVolume ), { 0x02, 0x24 }, { 0x06, 0x10 }, @@ -301,7 +303,7 @@ OOVPA_XREF(CDirectSoundStream_SetFrequency, 5233, 11, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, XREF_DSBUFFERSETFREQUENCYB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetFrequency ), { 0x0E, 0xB6 }, // je XXXXXXXX + 0x0B @@ -321,6 +323,7 @@ OOVPA_XREF(CDirectSoundStream_SetFrequency, 5233, 11, { 0x50, 0x08 }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * CDirectSoundStream::SetMixBins // ****************************************************************** @@ -329,7 +332,7 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 5233, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, XREF_DSSETMIXBINSB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMixBins ), { 0x0E, 0xB6 }, { 0x15, 0x0B }, @@ -339,7 +342,9 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 5233, 8, { 0x4D, 0x5F }, { 0x50, 0x08 }, OOVPA_END; +#endif +#if 0 // Don't use. Duplicate detection CDirectSoundVoice_SetConeAngles. // ****************************************************************** // * CDirectSoundVoice::SetRolloffCurve // ****************************************************************** @@ -357,174 +362,174 @@ OOVPA_XREF(CDirectSoundVoice_SetRolloffCurve, 5233, 8, { 0x34, 0x10 }, { 0x3E, 0x33 }, OOVPA_END; - +#endif // ****************************************************************** // * DSound_5233 // ****************************************************************** OOVPATable DSound_5233[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), - REGISTER_OOVPA(DirectSoundGetSampleTime, 4627, PATCH), + REGISTER_OOVPA(DirectSoundGetSampleTime, 4361, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), REGISTER_OOVPA(CMcpxAPU_SynchPlayback, 5233, XREF), REGISTER_OOVPA(CDirectSound_SynchPlayback, 5233, XREF), REGISTER_OOVPA(IDirectSound_SynchPlayback, 5233, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Pause, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Pause, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Pause, 4928, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4928, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4831, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 5233, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 4627, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH), - REGISTER_OOVPA(CDirectSound_SetPositionA, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), + REGISTER_OOVPA(CDirectSound_SetPosition, 4627, XREF), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 5233, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 5233, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Lock, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Play, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 5233, XREF), REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 5233, PATCH), REGISTER_OOVPA(CDirectSound_EnableHeadphones, 5233, XREF), - REGISTER_OOVPA(IDirectSound8_EnableHeadphones, 5233, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 4627, XREF), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetDistanceFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 4627, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 4134, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 4627, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 4134, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetPosition, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4039, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), // (This is actually the XREF we are using) - REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 5233, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4721, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4242, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMode, 5233, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 5233, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 5233, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDistanceFactor, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDistanceFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 3936, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3936, PATCH), + REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), - REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 4627, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 4627, XREF), - REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 4627, XREF), REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetOutputBuffer, 4627, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4039, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOrientation, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 4134, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH) + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl index 1f065ab5f..f67cfed58 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl @@ -35,15 +35,17 @@ // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetMinDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 5344, 7, +OOVPA_XREF(CDirectSoundVoice_SetMinDistance, 5344, 9, - XREF_DSVOICESETMINDISTANCE, + XREF_CDirectSoundVoice_SetMinDistance, XRefZero) { 0x05, 0x41 }, { 0x0C, 0x00 }, { 0x13, 0x38 }, - { 0x1A, 0x00 }, + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x02 }, { 0x21, 0xF6 }, { 0x28, 0x51 }, { 0x2F, 0xC0 }, @@ -53,11 +55,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 5344, 11, - XREF_DSBUFFERSETMINDISTANCE, + XREF_CDirectSoundBuffer_SetMinDistance, XRefOne) // CDirectSoundBuffer_SetMinDistance+0x39 : call [CDirectSoundVoice::SetMinDistance] - XREF_ENTRY( 0x3A, XREF_DSVOICESETMINDISTANCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMinDistance ), { 0x00, 0x56 }, // CDirectSoundBuffer_SetMinDistance+0x21 : mov eax, 80004005h @@ -84,7 +86,7 @@ OOVPA_XREF(CDirectSoundStream_SetMinDistance, 5344, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x3E, XREF_DSVOICESETMINDISTANCE ), + XREF_ENTRY( 0x3E, XREF_CDirectSoundVoice_SetMinDistance ), { 0x0C, 0x00 }, { 0x16, 0x68 }, @@ -100,7 +102,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetI3DL2Listener, 5344, 8, - XREF_DSSETI3DL2LISTENER, + XREF_CDirectSound_SetI3DL2Listener, XRefZero) { 0x1E, 0x15 }, @@ -116,7 +118,7 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetDistanceFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 5344, 7, +OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 5344, 9, XREF_DSVOICESETDISTANCEFACTOR, XRefZero) @@ -128,6 +130,8 @@ OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 5344, 7, { 0x12, 0x50 }, { 0x13, 0x44 }, { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x02 }, OOVPA_END; // ****************************************************************** @@ -171,17 +175,29 @@ OOVPA_END; // ****************************************************************** // * DirectSound::CDirectSound::SetDistanceFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetDistanceFactor, 5344, 9, +OOVPA_XREF(CDirectSound_SetDistanceFactor, 5344, 17, - XREF_SETDISTANCEFACTORA, + XREF_CDirectSound_SetDistanceFactor, XRefZero) { 0x0C, 0x00 }, { 0x16, 0x68 }, { 0x22, 0x05 }, { 0x2E, 0x08 }, + + { 0x33, 0x89 }, + { 0x34, 0x50 }, { 0x35, 0x6C }, + + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, + + { 0x39, 0x83 }, { 0x3A, 0x48 }, + { 0x3B, 0x34 }, + { 0x3C, 0x08 }, + { 0x4A, 0x85 }, { 0x53, 0xFF }, { 0x5E, 0x00 }, @@ -190,7 +206,7 @@ OOVPA_END; // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetDopplerFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 5344, 9, +OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 5344, 12, XREF_CDirectSoundVoice_SetDopplerFactor, XRefZero) @@ -206,6 +222,10 @@ OOVPA_XREF(CDirectSoundVoice_SetDopplerFactor, 5344, 9, { 0x12, 0x50 }, { 0x13, 0x4C }, + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x03 }, + // CDirectSoundVoice_SetDopplerFactor+0x31 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -216,7 +236,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetDopplerFactor, 5344, 9, - XREF_SETDOPPLERFACTOR, + XREF_CDirectSound_SetDopplerFactor, XRefZero) { 0x0C, 0x00 }, @@ -234,15 +254,17 @@ OOVPA_END; // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetMaxDistance // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 5344, 7, +OOVPA_XREF(CDirectSoundVoice_SetMaxDistance, 5344, 9, - XREF_DSVOICESETMAXDISTANCE, + XREF_CDirectSoundVoice_SetMaxDistance, XRefZero) { 0x05, 0x41 }, { 0x0C, 0x00 }, { 0x13, 0x3C }, - { 0x1A, 0x00 }, + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x02 }, { 0x21, 0xF6 }, { 0x28, 0x51 }, { 0x2F, 0xC0 }, @@ -252,11 +274,11 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 5344, 11, - XREF_DSBUFFERSETMAXDISTANCE, + XREF_CDirectSoundBuffer_SetMaxDistance, XRefOne) // CDirectSoundBuffer_SetMaxDistance+0x39 : call [CDirectSoundVoice::SetMaxDistance] - XREF_ENTRY( 0x3A, XREF_DSVOICESETMAXDISTANCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMaxDistance ), { 0x00, 0x56 }, // CDirectSoundBuffer_SetMaxDistance+0x21 : mov eax, 80004005h @@ -274,7 +296,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 5344, 11, { 0x54, 0x0C }, { 0x55, 0x00 } OOVPA_END; - +#if 0 // Duplicate OOVPA, replacing with generic OOVPA // ****************************************************************** // * IDirectSoundBuffer_SetMaxDistance // ****************************************************************** @@ -284,7 +306,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 5344, 11, XRefOne) // IDirectSoundBuffer_SetMaxDistance+0x1C : call [CDirectSoundBuffer::SetMaxDistance] - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMAXDISTANCE ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMaxDistance ), { 0x00, 0xFF }, // IDirectSoundBuffer_SetMaxDistance+0x04 : fld [esp+4+arg_4] @@ -302,26 +324,43 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 5344, 11, { 0x22, 0x0C }, { 0x23, 0x00 } OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSound::SetRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetRolloffFactor, 5344, 9, +OOVPA_XREF(CDirectSound_SetRolloffFactor, 5344, 17, - XREF_SETROLLOFFFACTORA, + XREF_CDirectSound_SetRolloffFactor, XRefZero) - - { 0x0C, 0x00 }, - { 0x16, 0x68 }, + // CDirectSound_SetRolloffFactor+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, { 0x22, 0x05 }, - { 0x2E, 0x08 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSound_SetRolloffFactor+0x33 : mov [eax+70h], edx + { 0x33, 0x89 }, + { 0x34, 0x50 }, { 0x35, 0x70 }, + + // CDirectSound_SetRolloffFactor+0x36 : mov eax, [ecx+8] + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, + + // CDirectSound_SetRolloffFactor+0x39 : or dword ptr [eax+34h], 10h + { 0x39, 0x83 }, { 0x3A, 0x48 }, - { 0x4A, 0x85 }, - { 0x53, 0xFF }, - { 0x5E, 0x00 }, + { 0x3B, 0x34 }, + { 0x3C, 0x10 }, + + // CDirectSound_SetRolloffFactor+0x4C : jz +0x0B + { 0x4C, 0x74 }, + { 0x4D, 0x0B }, OOVPA_END; +#if 0 // Used 4134 // ****************************************************************** // * IDirectSound_SetRolloffFactor // ****************************************************************** @@ -330,7 +369,7 @@ OOVPA_XREF(IDirectSound_SetRolloffFactor, 5344, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x1D, XREF_SETROLLOFFFACTORA ), + XREF_ENTRY( 0x1D, XREF_CDirectSound_SetRolloffFactor ), { 0x03, 0x0C }, { 0x08, 0x8B }, @@ -340,48 +379,52 @@ OOVPA_XREF(IDirectSound_SetRolloffFactor, 5344, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; +#endif // ****************************************************************** // CDirectSoundVoice::SetMode // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetMode, 5344, 8, +OOVPA_XREF(CDirectSoundVoice_SetMode, 5344, 11, - XREF_DSBUFFERSETMODEB, + XREF_CDirectSoundVoice_SetMode, XRefZero) - { 0x09, 0xB4 }, // (Offset,Value)-Pair #1 - { 0x10, 0x08 }, // (Offset,Value)-Pair #2 - { 0x13, 0x40 }, // (Offset,Value)-Pair #3 - { 0x15, 0x41 }, // (Offset,Value)-Pair #4 - { 0x18, 0x80 }, // (Offset,Value)-Pair #5 - { 0x19, 0xB4 }, // (Offset,Value)-Pair #6 - { 0x2E, 0x33 }, // (Offset,Value)-Pair #7 - { 0x31, 0x0C }, // (Offset,Value)-Pair #8 + { 0x09, 0xB4 }, + { 0x10, 0x08 }, + { 0x13, 0x40 }, + { 0x14, 0x8B }, + { 0x15, 0x41 }, + { 0x18, 0x80 }, + { 0x19, 0xB4 }, + { 0x1D, 0x80 }, + { 0x1F, 0x02 }, + { 0x2E, 0x33 }, + { 0x31, 0x0C }, OOVPA_END; // ****************************************************************** -// * CDirectSound::SetPositionA +// * CDirectSound_SetPosition // ****************************************************************** -OOVPA_XREF(CDirectSound_SetPositionA, 5344, 10, +OOVPA_XREF(CDirectSound_SetPosition, 5344, 10, - XREF_DSSETPOSITIONA, + XREF_CDirectSound_SetPosition, XRefZero) - // CDirectSound_SetPositionA+0x2B : mov ecx, [ebp+0x08] - { 0x2B, 0x8B }, // (Offset,Value)-Pair #1 - { 0x2C, 0x4D }, // (Offset,Value)-Pair #2 - { 0x2D, 0x08 }, // (Offset,Value)-Pair #3 + // CDirectSound_SetPosition+0x2B : mov ecx, [ebp+0x08] + { 0x2B, 0x8B }, + { 0x2C, 0x4D }, + { 0x2D, 0x08 }, - // CDirectSound_SetPositionA+0x37 : mov [edx+0x3C], edi - { 0x37, 0x89 }, // (Offset,Value)-Pair #4 - { 0x38, 0x7A }, // (Offset,Value)-Pair #5 - { 0x39, 0x3C }, // (Offset,Value)-Pair #6 + // CDirectSound_SetPosition+0x37 : mov [edx+0x3C], edi + { 0x37, 0x89 }, + { 0x38, 0x7A }, + { 0x39, 0x3C }, - // CDirectSound_SetPositionA+0x4C : or dword ptr [eax+34h], 1 - { 0x4C, 0x83 }, // (Offset,Value)-Pair #7 - { 0x4D, 0x48 }, // (Offset,Value)-Pair #8 - { 0x4E, 0x34 }, // (Offset,Value)-Pair #9 - { 0x4F, 0x01 }, // (Offset,Value)-Pair #10 + // CDirectSound_SetPosition+0x4C : or dword ptr [eax+34h], 1 + { 0x4C, 0x83 }, + { 0x4D, 0x48 }, + { 0x4E, 0x34 }, + { 0x4F, 0x01 }, OOVPA_END; // ****************************************************************** @@ -389,30 +432,30 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetVelocity, 5344, 14, - XREF_DSSETVELOCITYA, + XREF_CDirectSound_SetVelocity, XRefZero) // CDirectSound_SetVelocity+0x24 : mov eax, 0x80004005 - { 0x24, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x25, 0x05 }, // (Offset,Value)-Pair #2 - { 0x26, 0x40 }, // (Offset,Value)-Pair #3 - { 0x27, 0x00 }, // (Offset,Value)-Pair #4 - { 0x28, 0x80 }, // (Offset,Value)-Pair #5 + { 0x24, 0xB8 }, + { 0x25, 0x05 }, + { 0x26, 0x40 }, + { 0x27, 0x00 }, + { 0x28, 0x80 }, // CDirectSound_SetVelocity+0x37 : mov [edx+0x48], edi - { 0x37, 0x89 }, // (Offset,Value)-Pair #6 - { 0x38, 0x7A }, // (Offset,Value)-Pair #7 - { 0x39, 0x48 }, // (Offset,Value)-Pair #8 + { 0x37, 0x89 }, + { 0x38, 0x7A }, + { 0x39, 0x48 }, // CDirectSound_SetVelocity+0x4C : or dword ptr [eax+34h], 2 - { 0x4C, 0x83 }, // (Offset,Value)-Pair #9 - { 0x4D, 0x48 }, // (Offset,Value)-Pair #10 - { 0x4E, 0x34 }, // (Offset,Value)-Pair #11 - { 0x4F, 0x02 }, // (Offset,Value)-Pair #12 + { 0x4C, 0x83 }, + { 0x4D, 0x48 }, + { 0x4E, 0x34 }, + { 0x4F, 0x02 }, // CDirectSound_SetVelocity+0x70 : retn 0x14 - { 0x70, 0xC2 }, // (Offset,Value)-Pair #13 - { 0x71, 0x14 }, // (Offset,Value)-Pair #14 + { 0x70, 0xC2 }, + { 0x71, 0x14 }, OOVPA_END; // ****************************************************************** @@ -420,7 +463,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBins, 5344, 7, - XREF_DSSETMIXBINSC, + XREF_CDirectSoundVoiceSettings_SetMixBins, XRefZero) { 0x10, 0x10 }, @@ -437,7 +480,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetPosition, 5344, 8, - XREF_DSVOICESETPOSITION, + XREF_CDirectSoundVoice_SetPosition, XRefZero) // CDirectSoundVoice_SetPosition+0x0F : mov edx, [ebp+arg_4] @@ -460,7 +503,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetVelocity, 5344, 8, - XREF_DSVOICESETVELOCITY, + XREF_CDirectSoundVoice_SetVelocity, XRefZero) // CDirectSoundVoice_SetVelocity+0x0F : mov edx, [ebp+arg_4] @@ -501,7 +544,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetI3DL2Source, 5344, 10, - XREF_DSVOICESETI3DL2SOURCE, + XREF_CDirectSoundVoice_SetI3DL2Source, XRefZero) // CDirectSoundVoice_SetI3DL2Source+0x12 : mov esi, [ecx] @@ -526,28 +569,32 @@ OOVPA_END; // ****************************************************************** // * CDirectSound::CommitDeferredSettings // ****************************************************************** -OOVPA_NO_XREF(CDirectSound_CommitDeferredSettings, 5344, 11) +OOVPA_XREF(CDirectSound_CommitDeferredSettings, 5344, 11, + + XREF_CDirectSound_CommitDeferredSettings, + XRefZero) // CDirectSound_CommitDeferredSettings+0x11 : movzx eax, al - { 0x11, 0x0F }, // (Offset,Value)-Pair #1 - { 0x12, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x13, 0xC0 }, // (Offset,Value)-Pair #3 + { 0x11, 0x0F }, + { 0x12, 0xB6 }, + { 0x13, 0xC0 }, // CDirectSound_CommitDeferredSettings+0x27 : mov eax, 0x80004005 - { 0x28, 0xB8 }, // (Offset,Value)-Pair #4 - { 0x29, 0x05 }, // (Offset,Value)-Pair #5 - { 0x2A, 0x40 }, // (Offset,Value)-Pair #6 - { 0x2C, 0x80 }, // (Offset,Value)-Pair #7 + { 0x28, 0xB8 }, + { 0x29, 0x05 }, + { 0x2A, 0x40 }, + { 0x2C, 0x80 }, // CDirectSound_CommitDeferredSettings+0x6D : mov [eax+0x34], edi - { 0x6E, 0x89 }, // (Offset,Value)-Pair #8 - { 0x6F, 0x78 }, // (Offset,Value)-Pair #9 - { 0x70, 0x34 }, // (Offset,Value)-Pair #10 + { 0x6E, 0x89 }, + { 0x6F, 0x78 }, + { 0x70, 0x34 }, // CDirectSound_CommitDeferredSettings+0x97 : leave - { 0x97, 0xC9 }, // (Offset,Value)-Pair #11 + { 0x97, 0xC9 }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * DirectSound::CMcpxVoiceClient::SetFilter // ****************************************************************** @@ -565,7 +612,9 @@ OOVPA_XREF(CMcpxVoiceClient_SetFilter, 5344, 8, { 0x5E, 0x3E }, { 0x7E, 0x0B }, OOVPA_END; +#endif +#if 0 // Used 4361 // ****************************************************************** // * DirectSound::CDirectSoundBuffer::StopEx // ****************************************************************** @@ -584,7 +633,8 @@ OOVPA_XREF(CDirectSoundBuffer_StopEx, 5344, 9, { 0x41, 0x85 }, { 0x47, 0x68 }, OOVPA_END; - +#endif +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_SetEffectData // ****************************************************************** @@ -598,7 +648,7 @@ OOVPA_NO_XREF(IDirectSound_SetEffectData, 5344, 7) { 0x26, 0x5D }, { 0x28, 0x18 }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSound::EnableHeadphones // ****************************************************************** @@ -626,24 +676,24 @@ OOVPA_XREF(CDirectSoundVoice_SetAllParameters, 5344, 10, XREF_CDirectSoundVoice_SetAllParameters, XRefZero) + { 0x00, 0x8B }, { 0x0C, 0x50 }, { 0x10, 0xB4 }, - { 0x14, 0xD9 }, - { 0x1E, 0x92 }, { 0x13, 0x00 }, { 0x14, 0xD9 }, { 0x15, 0x5A }, { 0x16, 0x08 }, { 0x17, 0xD9 }, + { 0x1E, 0x92 }, { 0x21, 0x00 }, OOVPA_END; // ****************************************************************** // * CDirectSoundVoice::SetConeOutsideVolume // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 5344, 9, +OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 5344, 12, - XREF_DSVOICESETCONEOUTSIDEVOLUME, + XREF_CDirectSoundVoice_SetConeOutsideVolume, XRefZero) // CDirectSoundVoice_SetConeOutsideVolume+0x0D : mov edx, [esp+arg_4] @@ -657,6 +707,10 @@ OOVPA_XREF(CDirectSoundVoice_SetConeOutsideVolume, 5344, 9, { 0x12, 0x50 }, { 0x13, 0x34 }, + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x02 }, + // CDirectSoundVoice_SetConeOutsideVolume+0x30 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -665,7 +719,7 @@ OOVPA_END; // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 5344, 9, +OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 5344, 12, XREF_DSVOICESETROLLOFFFACTOR, XRefZero) @@ -681,6 +735,10 @@ OOVPA_XREF(CDirectSoundVoice_SetRolloffFactor, 5344, 9, { 0x12, 0x50 }, { 0x13, 0x48 }, + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x03 }, + // CDirectSoundVoice_SetRolloffFactor+0x30 : retn 0Ch { 0x31, 0x0C }, { 0x32, 0x00 } @@ -739,7 +797,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetConeAngles, 5344, 9, - XREF_DSVOICESETCONEANGLES, + XREF_CDirectSoundVoice_SetConeAngles, XRefZero) // CDirectSoundVoice_SetConeAngles+0x0D : mov edx, [esp+arg_4] @@ -801,7 +859,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetConeOrientation, 5344, 8, - XREF_DSVOICESETCONEORIENTATION, + XREF_CDirectSoundVoice_SetConeOrientation, XRefZero) // CDirectSoundVoice_SetConeOrientation+0x0F : mov edx, [ebp+arg_4] @@ -826,166 +884,175 @@ OOVPATable DSound_5344[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), - REGISTER_OOVPA(DirectSoundGetSampleTime, 4627, PATCH), + REGISTER_OOVPA(DirectSoundGetSampleTime, 4361, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), REGISTER_OOVPA(CMcpxAPU_SynchPlayback, 5233, XREF), REGISTER_OOVPA(CDirectSound_SynchPlayback, 5344, XREF), REGISTER_OOVPA(IDirectSound_SynchPlayback, 5233, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Pause, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Pause, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Pause, 4928, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4928, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4831, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 5344, XREF), - REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 5344, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 5233, PATCH), - REGISTER_OOVPA(CDirectSound_SetPositionA, 5344, XREF), - REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH), - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), + REGISTER_OOVPA(CDirectSound_SetPosition, 5344, XREF), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 5233, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 5233, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_Lock, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Play, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 5233, XREF), REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), REGISTER_OOVPA(CDirectSound_EnableHeadphones, 5344, XREF), - REGISTER_OOVPA(IDirectSound_EnableHeadphones, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDistanceFactor, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDistanceFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 5344, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDopplerFactor, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDopplerFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 5344, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5344, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5344, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 5344, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 5344, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundStream_SetMinDistance, 5344, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetPosition, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 5233, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4039, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 4721, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4242, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMode, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 5233, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 5344, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 5344, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 5344, PATCH), // Was 4134 + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), // Was 4134 REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 4627, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 4627, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 5344, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 5344, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 5344, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 5344, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 4361, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 4627, XREF), REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_SetEffectData, 5344, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH), + REGISTER_OOVPA(IDirectSound_SetEffectData, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetOutputBuffer, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOutsideVolume, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4039, PATCH), REGISTER_OOVPA(WaveFormat_CreateXboxAdpcmFormat, 5344, XREF), REGISTER_OOVPA(XAudioCreateAdpcmFormat, 5344, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4039, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 4361, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeOrientation, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeOrientation, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 4134, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH) + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl index 555df68ed..d97e1afd2 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl @@ -35,7 +35,9 @@ // ****************************************************************** // * CDirectSound::SynchPlayback // ****************************************************************** -OOVPA_NO_XREF(CDirectSound_SynchPlayback, 5558, 7) +OOVPA_XREF(CDirectSound_SynchPlayback, 5558, 7, + XREF_DSSYNCHPLAYBACKA, + XRefZero) { 0x0C, 0x00 }, { 0x12, 0x85 }, @@ -49,78 +51,101 @@ OOVPA_END; // ****************************************************************** // * CDirectSound::CommitDeferredSettings // ****************************************************************** -OOVPA_NO_XREF(CDirectSound_CommitDeferredSettings, 5558, 11) +OOVPA_XREF(CDirectSound_CommitDeferredSettings, 5558, 11, + + XREF_CDirectSound_CommitDeferredSettings, + XRefZero) // CDirectSound_CommitDeferredSettings+0x10 : movzx eax, al - { 0x10, 0x0F }, // (Offset,Value)-Pair #1 - { 0x11, 0xB6 }, // (Offset,Value)-Pair #2 - { 0x12, 0xC0 }, // (Offset,Value)-Pair #3 + { 0x10, 0x0F }, + { 0x11, 0xB6 }, + { 0x12, 0xC0 }, // CDirectSound_CommitDeferredSettings+0x27 : mov eax, 0x80004005 - { 0x27, 0xB8 }, // (Offset,Value)-Pair #4 - { 0x28, 0x05 }, // (Offset,Value)-Pair #5 - { 0x29, 0x40 }, // (Offset,Value)-Pair #6 - { 0x2B, 0x80 }, // (Offset,Value)-Pair #7 + { 0x27, 0xB8 }, + { 0x28, 0x05 }, + { 0x29, 0x40 }, + { 0x2B, 0x80 }, // CDirectSound_CommitDeferredSettings+0x6D : mov [eax+0x30], edi - { 0x6D, 0x89 }, // (Offset,Value)-Pair #8 - { 0x6E, 0x78 }, // (Offset,Value)-Pair #9 - { 0x6F, 0x30 }, // (Offset,Value)-Pair #10 + { 0x6D, 0x89 }, + { 0x6E, 0x78 }, + { 0x6F, 0x30 }, // CDirectSound_CommitDeferredSettings+0x96 : leave - { 0x96, 0xC9 }, // (Offset,Value)-Pair #11 + { 0x96, 0xC9 }, OOVPA_END; // ****************************************************************** // * CDirectSound::SetDistanceFactorA // ****************************************************************** -OOVPA_XREF(CDirectSound_SetDistanceFactorA, 5558, 11, +OOVPA_XREF(CDirectSound_SetDistanceFactor, 5558, 17, - XREF_SETDISTANCEFACTORA, + XREF_CDirectSound_SetDistanceFactor, XRefZero) - // CDirectSound_SetDistanceFactorA+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + // CDirectSound_SetDistanceFactor+0x21 : mov eax, 0x80004005 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, - // CDirectSound_SetDistanceFactorA+0x39 : or dword ptr[eax+0x30], 0x08 - { 0x39, 0x83 }, // (Offset,Value)-Pair #6 - { 0x3A, 0x48 }, // (Offset,Value)-Pair #7 - { 0x3B, 0x30 }, // (Offset,Value)-Pair #8 - { 0x3C, 0x08 }, // (Offset,Value)-Pair #9 + // CDirectSound_SetDistanceFactor+0x33 : mov [eax+68h], edx + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x68 }, - // CDirectSound_SetDistanceFactorA+0x4C : jz +0x0B - { 0x4C, 0x74 }, // (Offset,Value)-Pair #10 - { 0x4D, 0x0B }, // (Offset,Value)-Pair #11 + // CDirectSound_SetDistanceFactor+0x36 : mov eax, [ecx+8] + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, + + // CDirectSound_SetDistanceFactor+0x39 : or dword ptr[eax+0x30], 0x08 + { 0x39, 0x83 }, + { 0x3A, 0x48 }, + { 0x3B, 0x30 }, + { 0x3C, 0x08 }, + + // CDirectSound_SetDistanceFactor+0x4C : jz +0x0B + { 0x4C, 0x74 }, + { 0x4D, 0x0B }, OOVPA_END; // ****************************************************************** // * CDirectSound::SetRolloffFactor // ****************************************************************** -OOVPA_XREF(CDirectSound_SetRolloffFactor, 5558, 11, +OOVPA_XREF(CDirectSound_SetRolloffFactor, 5558, 17, - XREF_SETROLLOFFFACTORA, + XREF_CDirectSound_SetRolloffFactor, XRefZero) // CDirectSound_SetRolloffFactor+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, + + // CDirectSound_SetRolloffFactor+0x33 : mov [eax+6Ch], edx + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x6C }, + + // CDirectSound_SetRolloffFactor+0x36 : mov eax, [ecx+8] + { 0x36, 0x8B }, + { 0x37, 0x41 }, + { 0x38, 0x08 }, // CDirectSound_SetRolloffFactor+0x39 : or dword ptr[eax+0x30], 0x10 - { 0x39, 0x83 }, // (Offset,Value)-Pair #6 - { 0x3A, 0x48 }, // (Offset,Value)-Pair #7 - { 0x3B, 0x30 }, // (Offset,Value)-Pair #8 - { 0x3C, 0x10 }, // (Offset,Value)-Pair #9 + { 0x39, 0x83 }, + { 0x3A, 0x48 }, + { 0x3B, 0x30 }, + { 0x3C, 0x10 }, // CDirectSound_SetRolloffFactor+0x4C : jz +0x0B - { 0x4C, 0x74 }, // (Offset,Value)-Pair #10 - { 0x4D, 0x0B }, // (Offset,Value)-Pair #11 + { 0x4C, 0x74 }, + { 0x4D, 0x0B }, OOVPA_END; // ****************************************************************** @@ -128,41 +153,41 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetDopplerFactor, 5558, 14, - XREF_SETDOPPLERFACTOR, + XREF_CDirectSound_SetDopplerFactor, XRefZero) // CDirectSound_SetDopplerFactor+0x21 : mov eax, 0x80004005 - { 0x21, 0xB8 }, // (Offset,Value)-Pair #1 - { 0x22, 0x05 }, // (Offset,Value)-Pair #2 - { 0x23, 0x40 }, // (Offset,Value)-Pair #3 - { 0x24, 0x00 }, // (Offset,Value)-Pair #4 - { 0x25, 0x80 }, // (Offset,Value)-Pair #5 + { 0x21, 0xB8 }, + { 0x22, 0x05 }, + { 0x23, 0x40 }, + { 0x24, 0x00 }, + { 0x25, 0x80 }, // CDirectSound_SetDopplerFactor+0x33 : mov [eax+0x70], edx - { 0x33, 0x89 }, // (Offset,Value)-Pair #6 - { 0x34, 0x50 }, // (Offset,Value)-Pair #7 - { 0x35, 0x70 }, // (Offset,Value)-Pair #8 + { 0x33, 0x89 }, + { 0x34, 0x50 }, + { 0x35, 0x70 }, // CDirectSound_SetDopplerFactor+0x39 : or dword ptr[eax+0x30], 0x20 - { 0x39, 0x83 }, // (Offset,Value)-Pair #9 - { 0x3A, 0x48 }, // (Offset,Value)-Pair #10 - { 0x3B, 0x30 }, // (Offset,Value)-Pair #11 - { 0x3C, 0x20 }, // (Offset,Value)-Pair #12 + { 0x39, 0x83 }, + { 0x3A, 0x48 }, + { 0x3B, 0x30 }, + { 0x3C, 0x20 }, // CDirectSound_SetDopplerFactor+0x4C : jz +0x0B - { 0x4C, 0x74 }, // (Offset,Value)-Pair #13 - { 0x4D, 0x0B }, // (Offset,Value)-Pair #14 + { 0x4C, 0x74 }, + { 0x4D, 0x0B }, OOVPA_END; // ****************************************************************** // * IDirectSound_SetMixBinHeadroom // ****************************************************************** -OOVPA_XREF(IDirectSound8_SetMixBinHeadroom, 5558, 9, +OOVPA_XREF(IDirectSound_SetMixBinHeadroom, 5558, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSSETMIXBINHEADROOMA ), + XREF_ENTRY( 0x19, XREF_CDirectSound_SetMixBinHeadroom ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -179,7 +204,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetI3DL2Listener, 5558, 8, - XREF_DSSETI3DL2LISTENER, + XREF_CDirectSound_SetI3DL2Listener, XRefZero) { 0x1D, 0xFF }, @@ -229,6 +254,7 @@ OOVPA_XREF(CHRTFSource_SetFullHRTF5Channel, 5558, 9, { 0x6E, 0xC3 }, OOVPA_END; +#if 0 // Moved to generic OOVPA 4134 // ****************************************************************** // * DirectSoundUseFullHRTF // ****************************************************************** @@ -247,7 +273,9 @@ OOVPA_XREF(DirectSoundUseFullHRTF, 5558, 8, { 0x18, 0xFF }, { 0x1E, 0xC3 }, OOVPA_END; +#endif +#if 0 // Duplicate OOVPA found in 4134 // ****************************************************************** // * DirectSoundDoWork // ****************************************************************** @@ -261,6 +289,7 @@ OOVPA_NO_XREF(DirectSoundDoWork, 5558, 7) { 0x22, 0xFF }, { 0x28, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetBufferData @@ -335,6 +364,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 5558, 8, { 0x4B, 0xC7 }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSoundBuffer_SetCurrentPosition // ****************************************************************** @@ -353,13 +383,14 @@ OOVPA_XREF(IDirectSoundBuffer_SetCurrentPosition, 5558, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundVoiceSettings::SetMixBins // ****************************************************************** OOVPA_XREF(CDirectSoundVoiceSettings_SetMixBins, 5558, 7, - XREF_DSSETMIXBINSC, + XREF_CDirectSoundVoiceSettings_SetMixBins, XRefZero) { 0x1B, 0xEB }, @@ -376,10 +407,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetMixBins, 5558, 8, - XREF_DSSETMIXBINSB, + XREF_CDirectSoundVoice_SetMixBins, XRefOne) - XREF_ENTRY( 0x0D, XREF_DSSETMIXBINSC ), + XREF_ENTRY( 0x0D, XREF_CDirectSoundVoiceSettings_SetMixBins ), { 0x02, 0x74 }, { 0x06, 0x74 }, @@ -395,10 +426,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMixBins, 5558, 8, - XREF_DSSETMIXBINSA, + XREF_CDirectSoundBuffer_SetMixBins, XRefOne) - XREF_ENTRY( 0x32, XREF_DSSETMIXBINSB ), + XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetMixBins ), { 0x0C, 0x00 }, { 0x12, 0x85 }, @@ -409,6 +440,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMixBins, 5558, 8, { 0x47, 0x8B }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 4039 // ****************************************************************** // * IDirectSoundBuffer_SetMixBins // ****************************************************************** @@ -417,7 +449,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMixBins, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x15, XREF_DSSETMIXBINSA ), + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetMixBins ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -427,13 +459,14 @@ OOVPA_XREF(IDirectSoundBuffer_SetMixBins, 5558, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundBuffer::SetPlayRegion // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetPlayRegion, 5558, 8, - XREF_DSBUFFERSETPLAYREGIONA, + XREF_CDirectSoundBuffer_SetPlayRegion, XRefZero) { 0x0F, 0x00 }, @@ -466,18 +499,22 @@ OOVPA_END; // ****************************************************************** // * public: long __thiscall DirectSound::CMcpxBuffer::Play(__int64,unsigned long) // ****************************************************************** -OOVPA_XREF(CMcpxBuffer_Play2, 5558, 8, +OOVPA_XREF(CMcpxBuffer_Play2, 5558, 12, XREF_CMcpxBuffer_Play2, XRefZero) - { 0x06, 0x56 }, - { 0x0E, 0xF1 }, - { 0x16, 0xFF }, + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x18, 0x0C }, + { 0x19, 0xFF }, + { 0x1A, 0x75 }, + { 0x1B, 0x08 }, + { 0x1C, 0x6A }, { 0x1D, 0x03 }, { 0x1E, 0xFF }, - { 0x26, 0x75 }, - { 0x2F, 0x8B }, + { 0x1F, 0x50 }, { 0x36, 0xC2 }, OOVPA_END; @@ -530,35 +567,25 @@ OOVPA_XREF(CMcpxBuffer_GetStatus, 5558, 11, XRefZero) // CMcpxBuffer_GetStatus+0x04 : mov ecx, eax - { 0x04, 0x8B }, // (Offset,Value)-Pair #1 - { 0x05, 0xC8 }, // (Offset,Value)-Pair #2 + { 0x04, 0x8B }, + { 0x05, 0xC8 }, // CMcpxBuffer_GetStatus+0x0C : jnz +0x1B - { 0x0C, 0x75 }, // (Offset,Value)-Pair #3 - { 0x0D, 0x1B }, // (Offset,Value)-Pair #4 + { 0x0C, 0x75 }, + { 0x0D, 0x1B }, // CMcpxBuffer_GetStatus+0x12 : test ax, 0x444 - { 0x12, 0x66 }, // (Offset,Value)-Pair #5 - { 0x13, 0xA9 }, // (Offset,Value)-Pair #6 - { 0x14, 0x44 }, // (Offset,Value)-Pair #7 + { 0x12, 0x66 }, + { 0x13, 0xA9 }, + { 0x14, 0x44 }, // CMcpxBuffer_GetStatus+0x29 : mov ecx, 0x8001 - { 0x29, 0xB9 }, // (Offset,Value)-Pair #8 - { 0x2A, 0x01 }, // (Offset,Value)-Pair #9 - { 0x2B, 0x80 }, // (Offset,Value)-Pair #10 - { 0x2C, 0x00 }, // (Offset,Value)-Pair #11 + { 0x29, 0xB9 }, + { 0x2A, 0x01 }, + { 0x2B, 0x80 }, + { 0x2C, 0x00 }, OOVPA_END; -// ****************************************************************** -// * WaveFormat::CreateXboxAdpcmFormat -// ****************************************************************** -#define WaveFormat_CreateXboxAdpcmFormat_5558 WaveFormat_CreateXboxAdpcmFormat_5344 - -// ****************************************************************** -// * XAudioCreateAdpcmFormat -// ****************************************************************** -#define XAudioCreateAdpcmFormat_5558 XAudioCreateAdpcmFormat_5344 - // ****************************************************************** // * CDirectSoundVoice::SetFormat // ****************************************************************** @@ -688,7 +715,7 @@ OOVPA_XREF(CDirectSoundStream_SetMinDistance, 5558, 8, { 0x46, 0x74 }, { 0x53, 0x8B }, OOVPA_END; - +#if 0 // Duplicate OOVPA, replacing with generic OOVPA 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMinDistance // ****************************************************************** @@ -698,7 +725,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 5558, 11, XRefOne) // IDirectSoundBuffer_SetMinDistance+0x1C : call [CDirectSoundBuffer::SetMinDistance] - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMINDISTANCE ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMinDistance ), { 0x00, 0xFF }, // IDirectSoundBuffer_SetMinDistance+0x04 : fld [esp+4+arg_4] @@ -716,7 +743,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 5558, 11, { 0x22, 0x0C }, { 0x23, 0x00 } OOVPA_END; - +#endif // ****************************************************************** // * CDirectSoundVoice::CommitDeferredSettings // ****************************************************************** @@ -789,7 +816,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetPosition, 5558, 7, - XREF_DSVOICESETPOSITION, + XREF_CDirectSoundVoice_SetPosition, XRefZero) { 0x09, 0x8B }, @@ -806,10 +833,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetPosition, 5558, 9, - XREF_DSBUFFERSETPOSITION, + XREF_CDirectSoundBuffer_SetPosition, XRefOne) - XREF_ENTRY( 0x4A, XREF_DSVOICESETPOSITION ), + XREF_ENTRY( 0x4A, XREF_CDirectSoundVoice_SetPosition ), { 0x0F, 0x00 }, { 0x18, 0x0B }, @@ -829,7 +856,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetPosition, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x2D, XREF_DSBUFFERSETPOSITION ), + XREF_ENTRY( 0x2D, XREF_CDirectSoundBuffer_SetPosition ), { 0x05, 0x18 }, { 0x0C, 0x83 }, @@ -845,7 +872,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetVelocity, 5558, 7, - XREF_DSVOICESETVELOCITY, + XREF_CDirectSoundVoice_SetVelocity, XRefZero) { 0x09, 0x8B }, @@ -862,10 +889,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetVelocity, 5558, 9, - XREF_DSBUFFERSETVELOCITY, + XREF_CDirectSoundBuffer_SetVelocity, XRefOne) - XREF_ENTRY( 0x4A, XREF_DSVOICESETVELOCITY ), + XREF_ENTRY( 0x4A, XREF_CDirectSoundVoice_SetVelocity ), { 0x0F, 0x00 }, { 0x18, 0x0B }, @@ -884,7 +911,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetVelocity, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x2D, XREF_DSBUFFERSETVELOCITY ), + XREF_ENTRY( 0x2D, XREF_CDirectSoundBuffer_SetVelocity ), { 0x05, 0x18 }, { 0x0C, 0x83 }, @@ -913,6 +940,7 @@ OOVPA_XREF(CMcpxStream_Pause, 5558, 7, } };*/ +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * CDirectSoundStream::Pause // ****************************************************************** @@ -921,7 +949,7 @@ OOVPA_XREF(CDirectSoundStream_Pause, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x35, XREF_DSSTREAMPAUSE ), + XREF_ENTRY( 0x35, XREF_CMcpxStream_Pause ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -931,19 +959,25 @@ OOVPA_XREF(CDirectSoundStream_Pause, 5558, 8, { 0x44, 0xFF }, { 0x4B, 0xC7 }, OOVPA_END; +#endif // ****************************************************************** // * CDirectSoundVoice::SetDistanceFactor // ****************************************************************** -OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 5558, 7, +OOVPA_XREF(CDirectSoundVoice_SetDistanceFactor, 5558, 12, XREF_DSVOICESETDISTANCEFACTOR, XRefZero) { 0x05, 0x41 }, { 0x0C, 0x00 }, + { 0x10, 0x08 }, + { 0x11, 0x89 }, + { 0x12, 0x50 }, { 0x13, 0x44 }, - { 0x1A, 0x00 }, + { 0x14, 0x8B }, + { 0x1D, 0x80 }, + { 0x1F, 0x02 }, { 0x21, 0xF6 }, { 0x28, 0x51 }, { 0x2F, 0xC0 }, @@ -1045,7 +1079,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetI3DL2Source, 5558, 7, - XREF_DSVOICESETI3DL2SOURCE, + XREF_CDirectSoundVoice_SetI3DL2Source, XRefZero) { 0x18, 0x00 }, @@ -1062,10 +1096,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetI3DL2Source, 5558, 8, - XREF_DSBUFFERSETI3DL2SOURCE, + XREF_CDirectSoundBuffer_SetI3DL2Source, XRefOne) - XREF_ENTRY( 0x36, XREF_DSVOICESETI3DL2SOURCE ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetI3DL2Source ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -1084,7 +1118,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 5558, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x19, XREF_DSBUFFERSETI3DL2SOURCE ), + XREF_ENTRY( 0x19, XREF_CDirectSoundBuffer_SetI3DL2Source ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -1209,7 +1243,7 @@ OOVPA_XREF(CDirectSoundBuffer_GetCurrentPosition, 5558, 7, { 0x40, 0xF8 }, { 0x4E, 0x8B }, OOVPA_END; - +#if 0 //Replaced with generic 3911 // ****************************************************************** // * IDirectSoundBuffer_GetCurrentPosition@12 // ****************************************************************** @@ -1229,12 +1263,9 @@ OOVPA_XREF(IDirectSoundBuffer_GetCurrentPosition, 5558, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; +#endif -// ****************************************************************** -// * DirectSound::CDirectSoundStream::SetFormat -// ****************************************************************** -#define CDirectSoundStream_SetFormat_5558 CDirectSoundStream_SetFormat_4361 - +#if 0 // Replaced with generic OOVPA 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetMixBins // ****************************************************************** @@ -1243,7 +1274,7 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 5558, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, XREF_DSSETMIXBINSB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMixBins ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -1254,13 +1285,14 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 5558, 9, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSound::SetMixBinHeadroom // ****************************************************************** OOVPA_XREF(CDirectSound_SetMixBinHeadroom, 5558, 8, - XREF_DSSETMIXBINHEADROOMA, + XREF_CDirectSound_SetMixBinHeadroom, XRefZero) { 0x0C, 0x00 }, @@ -1273,32 +1305,12 @@ OOVPA_XREF(CDirectSound_SetMixBinHeadroom, 5558, 8, { 0x5E, 0x00 }, OOVPA_END; -// ****************************************************************** -// * IDirectSound_SetMixBinHeadroom -// ****************************************************************** -OOVPA_XREF(IDirectSound_SetMixBinHeadroom, 5558, 9, - - XRefNoSaveIndex, - XRefOne) - - XREF_ENTRY( 0x19, XREF_DSSETMIXBINHEADROOMA ), - - { 0x02, 0x24 }, - { 0x06, 0x24 }, - { 0x0A, 0xFF }, - { 0x0E, 0x83 }, - { 0x12, 0xD9 }, - { 0x16, 0xC8 }, - { 0x1D, 0xC2 }, - { 0x1E, 0x0C }, -OOVPA_END; - // ****************************************************************** // * DirectSound::CDirectSound::EnableHeadphones // ****************************************************************** OOVPA_XREF(CDirectSound_EnableHeadphones, 5558, 8, - XREF_DSENABLEHEADPHONES, + XREF_CDirectSound_EnableHeadphones, XRefZero) { 0x1E, 0x3B }, @@ -1310,16 +1322,16 @@ OOVPA_XREF(CDirectSound_EnableHeadphones, 5558, 8, { 0xDE, 0x59 }, { 0xFE, 0x75 }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_EnableHeadphones // ****************************************************************** -OOVPA_XREF(IDirectSound8_EnableHeadphones, 5558, 8, +OOVPA_XREF(IDirectSound_EnableHeadphones, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x15, XREF_DSENABLEHEADPHONES ), + XREF_ENTRY( 0x15, XREF_CDirectSound_EnableHeadphones ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -1329,7 +1341,7 @@ OOVPA_XREF(IDirectSound8_EnableHeadphones, 5558, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSound::GetOutputLevels // ****************************************************************** @@ -1387,7 +1399,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetPosition, 5558, 7, - XREF_DSSETPOSITIONA, + XREF_CDirectSound_SetPosition, XRefZero) { 0x0F, 0x00 }, @@ -1398,7 +1410,7 @@ OOVPA_XREF(CDirectSound_SetPosition, 5558, 7, { 0x58, 0xE8 }, { 0x67, 0x15 }, OOVPA_END; - +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_SetPosition // ****************************************************************** @@ -1407,7 +1419,7 @@ OOVPA_XREF(IDirectSound_SetPosition, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x2D, XREF_DSSETPOSITIONA ), + XREF_ENTRY( 0x2D, XREF_CDirectSound_SetPosition ), { 0x05, 0x18 }, { 0x0C, 0x83 }, @@ -1417,13 +1429,13 @@ OOVPA_XREF(IDirectSound_SetPosition, 5558, 8, { 0x28, 0xD9 }, { 0x31, 0x5D }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSound::SetVelocity // ****************************************************************** OOVPA_XREF(CDirectSound_SetVelocity, 5558, 7, - XREF_DSSETVELOCITYA, + XREF_CDirectSound_SetVelocity, XRefZero) { 0x0F, 0x00 }, @@ -1443,7 +1455,7 @@ OOVPA_XREF(IDirectSound_SetVelocity, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x2D, XREF_DSSETVELOCITYA ), + XREF_ENTRY( 0x2D, XREF_CDirectSound_SetVelocity ), { 0x05, 0x18 }, { 0x0C, 0x83 }, @@ -1459,7 +1471,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_CreateSoundStream, 5558, 7, - XREF_DSCREATESOUNDSTREAM, + XREF_CDirectSound_CreateSoundStream, XRefZero) { 0x11, 0xD8 }, @@ -1470,7 +1482,7 @@ OOVPA_XREF(CDirectSound_CreateSoundStream, 5558, 7, { 0x70, 0x85 }, { 0x83, 0xFF }, OOVPA_END; - +#if 0 //Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSound_CreateSoundStream // ****************************************************************** @@ -1479,7 +1491,7 @@ OOVPA_XREF(IDirectSound_CreateSoundStream, 5558, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x1D, XREF_DSCREATESOUNDSTREAM ), + XREF_ENTRY( 0x1D, XREF_CDirectSound_CreateSoundStream ), { 0x03, 0x10 }, { 0x08, 0xFF }, @@ -1489,7 +1501,7 @@ OOVPA_XREF(IDirectSound_CreateSoundStream, 5558, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSoundStream::SetRolloffCurve // ****************************************************************** @@ -1514,7 +1526,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetAllParameters, 5558, 8, - XREF_DSSETALLPARAMETERSA, + XREF_CDirectSound_SetAllParameters, XRefZero) { 0x0C, 0x00 }, @@ -1527,6 +1539,7 @@ OOVPA_XREF(CDirectSound_SetAllParameters, 5558, 8, { 0x2B, 0x8B }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 4134, this OOVPA is not a reliable signature // ****************************************************************** // * DirectSound::CMcpxVoiceClient::SetFilter // ****************************************************************** @@ -1546,31 +1559,7 @@ OOVPA_XREF(CMcpxVoiceClient_SetFilter, 5558, 10, { 0x1D, 0xFF }, { 0x1F, 0x00 }, OOVPA_END; - -// ****************************************************************** -// * DirectSound::CMcpxVoiceClient::SetEG -// ****************************************************************** -#define CMcpxVoiceClient_SetEG_5558 CMcpxVoiceClient_SetEG_4627 - -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetEG -// ****************************************************************** -#define CDirectSoundVoice_SetEG_5558 CDirectSoundVoice_SetEG_4627 - -// ****************************************************************** -// * DirectSound::CDirectSoundStream::SetEG -// ****************************************************************** -#define CDirectSoundStream_SetEG_5558 CDirectSoundStream_SetEG_4627 - -// ****************************************************************** -// * DirectSound::CDirectSoundBuffer::SetEG -// ****************************************************************** -#define CDirectSoundBuffer_SetEG_5558 CDirectSoundBuffer_SetEG_4627 - -// ****************************************************************** -// * IDirectSoundBuffer_SetEG -// ****************************************************************** -#define IDirectSoundBuffer_SetEG_5558 IDirectSoundBuffer_SetEG_4627 +#endif // ****************************************************************** // * DirectSound::CDirectSoundVoice::Use3DVoiceData @@ -1658,95 +1647,99 @@ OOVPATable DSound_5558[] = { REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundBuffer, 4134, XREF), - REGISTER_OOVPA(CDirectSound_SynchPlayback, 5558, PATCH), - REGISTER_OOVPA(CMcpxStream_Pause, 4928, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_Pause, 4361, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5558, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(CDirectSound_SynchPlayback, 5558, XREF), + REGISTER_OOVPA(IDirectSound_SynchPlayback, 5233, PATCH), + REGISTER_OOVPA(CMcpxStream_Pause, 4831, XREF), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5558, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 5558, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), // TODO : Use 5344? + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 5558, XREF), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 5233, PATCH), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 5233, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), - REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4361, XREF), - REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH), + REGISTER_OOVPA(CDirectSound_CreateSoundStream, 4134, XREF), + REGISTER_OOVPA(DirectSoundCreateStream, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetOutputBuffer, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetOutputBuffer, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetOutputBuffer, 4627, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 5344, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 5344, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundStream_SetRolloffCurve, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 4134, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDopplerFactor, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDopplerFactor, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 5558, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), REGISTER_OOVPA(CFullHRTFSource_GetCenterVolume, 5558, XREF), REGISTER_OOVPA(CHRTFSource_SetFullHRTF5Channel, 5558, XREF), - REGISTER_OOVPA(DirectSoundUseFullHRTF, 5558, PATCH), - REGISTER_OOVPA(DirectSoundDoWork, 5558, PATCH), + REGISTER_OOVPA(DirectSoundUseFullHRTF, 4134, PATCH), + REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetBufferData, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 5558, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 5558, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 5233, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 5558, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play2, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 5558, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), - REGISTER_OOVPA(WaveFormat_CreateXboxAdpcmFormat, 5558, XREF), - REGISTER_OOVPA(XAudioCreateAdpcmFormat, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), + REGISTER_OOVPA(WaveFormat_CreateXboxAdpcmFormat, 5344, XREF), + REGISTER_OOVPA(XAudioCreateAdpcmFormat, 5344, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 5233, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(CDirectSoundStream_SetRolloffCurve, 5558, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 4627, PATCH), @@ -1761,54 +1754,62 @@ OOVPATable DSound_5558[] = { REGISTER_OOVPA(CDirectSoundBuffer_SetDistanceFactor, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), // (This is actually the XREF we are using) - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_Lock, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFormat, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4242, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 5558, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSound_EnableHeadphones, 5558, XREF), - REGISTER_OOVPA(IDirectSound8_EnableHeadphones, 5558, PATCH), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 5558, XREF), REGISTER_OOVPA(IDirectSound_GetOutputLevels, 5558, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 5558, PATCH), REGISTER_OOVPA(CDirectSound_SetPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetPosition, 5558, PATCH), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 5558, XREF), REGISTER_OOVPA(IDirectSound_SetVelocity, 5558, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundStream, 5558, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 5558, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 5558, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 5558, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 5558, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetAllParameters, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 5558, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Use3DVoiceData, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH) + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl index 8cb2489c9..be858469e 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl @@ -41,23 +41,23 @@ OOVPA_XREF(CMcpxBuffer_SetBufferData, 5788, 9, XRefZero) // CMcpxBuffer_SetBufferData+0x1E : cmp eax, ebx - { 0x1E, 0x3B }, // (Offset,Value)-Pair #1 - { 0x1F, 0xC3 }, // (Offset,Value)-Pair #2 + { 0x1E, 0x3B }, + { 0x1F, 0xC3 }, // CMcpxBuffer_SetBufferData+0x20 : jz +0x0C - { 0x20, 0x74 }, // (Offset,Value)-Pair #3 - { 0x21, 0x0C }, // (Offset,Value)-Pair #4 + { 0x20, 0x74 }, + { 0x21, 0x0C }, // CMcpxBuffer_SetBufferData+0x45 : mov [esi+0xBC], ecx - { 0x45, 0x89 }, // (Offset,Value)-Pair #5 - { 0x46, 0x8E }, // (Offset,Value)-Pair #6 - { 0x47, 0xBC }, // (Offset,Value)-Pair #7 + { 0x45, 0x89 }, + { 0x46, 0x8E }, + { 0x47, 0xBC }, // CMcpxBuffer_SetBufferData+0x89 : retn 0x08 - { 0x89, 0xC2 }, // (Offset,Value)-Pair #8 - { 0x8A, 0x08 }, // (Offset,Value)-Pair #9 + { 0x89, 0xC2 }, + { 0x8A, 0x08 }, OOVPA_END; - +#if 0 // Used CMcpxBuffer_Play 4831 // ****************************************************************** // * DirectSound::CMcpxBuffer::Play // ****************************************************************** @@ -74,7 +74,7 @@ OOVPA_XREF(CMcpxBuffer_Play2, 5788, 7, { 0xAE, 0x04 }, { 0xAF, 0x00 }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSoundBuffer::Play // ****************************************************************** @@ -99,7 +99,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_CommitDeferredSettings, 5788, 7, - XREF_COMMITDEFERREDSETTINGSA, + XREF_CDirectSound_CommitDeferredSettings, XRefZero) { 0x12, 0xC0 }, @@ -116,7 +116,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CMcpxBuffer_SetCurrentPosition, 5788, 7, - XREF_DSBUFFERSETCURRENTPOSITIONB, + XREF_CMcpxBuffer_SetCurrentPosition, XRefZero) { 0x1D, 0x00 }, @@ -133,10 +133,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 5788, 8, - XREF_DSBUFFERSETCURRENTPOSITIONA, + XREF_CDirectSoundBuffer_SetCurrentPosition, XRefOne) - XREF_ENTRY( 0x35, XREF_DSBUFFERSETCURRENTPOSITIONB ), + XREF_ENTRY( 0x35, XREF_CMcpxBuffer_SetCurrentPosition ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -147,6 +147,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetCurrentPosition, 5788, 8, { 0x4B, 0xC7 }, OOVPA_END; +#if 0 // Replaced with generic OOVPA 3911 // ****************************************************************** // * IDirectSoundBuffer_SetCurrentPosition // ****************************************************************** @@ -155,7 +156,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetCurrentPosition, 5788, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x15, XREF_DSBUFFERSETCURRENTPOSITIONA ), + XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetCurrentPosition ), { 0x02, 0x24 }, { 0x06, 0x24 }, @@ -165,13 +166,14 @@ OOVPA_XREF(IDirectSoundBuffer_SetCurrentPosition, 5788, 8, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * DirectSound::CDirectSound::SetRolloffFactor // ****************************************************************** OOVPA_XREF(CDirectSound_SetRolloffFactor, 5788, 9, - XREF_SETROLLOFFFACTORA, + XREF_CDirectSound_SetRolloffFactor, XRefZero) { 0x0C, 0x00 }, @@ -190,7 +192,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSound_SetDopplerFactor, 5788, 9, - XREF_SETDOPPLERFACTOR, + XREF_CDirectSound_SetDopplerFactor, XRefZero) { 0x0C, 0x00 }, @@ -209,10 +211,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMaxDistance, 5788, 8, - XREF_DSBUFFERSETMAXDISTANCE, + XREF_CDirectSoundBuffer_SetMaxDistance, XRefOne) - XREF_ENTRY( 0x3A, XREF_DSVOICESETMAXDISTANCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMaxDistance ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -228,10 +230,10 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 5788, 8, - XREF_DSBUFFERSETMINDISTANCE, + XREF_CDirectSoundBuffer_SetMinDistance, XRefOne) - XREF_ENTRY( 0x3A, XREF_DSVOICESETMINDISTANCE ), + XREF_ENTRY( 0x3A, XREF_CDirectSoundVoice_SetMinDistance ), { 0x0C, 0x00 }, { 0x14, 0x74 }, @@ -241,7 +243,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetMinDistance, 5788, 8, { 0x40, 0x8B }, { 0x4F, 0x8B }, OOVPA_END; - +#if 0 // Duplicate OOVPA, replacing with generic OOVPA 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMaxDistance // ****************************************************************** @@ -250,7 +252,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 5788, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMAXDISTANCE ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMaxDistance ), { 0x03, 0x0C }, { 0x08, 0x8B }, @@ -260,7 +262,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 5788, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Duplicate OOVPA, replacing with generic OOVPA 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMinDistance // ****************************************************************** @@ -269,7 +272,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 5788, 8, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMINDISTANCE ), + XREF_ENTRY( 0x1D, XREF_CDirectSoundBuffer_SetMinDistance ), { 0x03, 0x0C }, { 0x08, 0x8B }, @@ -279,7 +282,8 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 5788, 8, { 0x1C, 0xE8 }, { 0x21, 0xC2 }, OOVPA_END; - +#endif +#if 0 // Not 5788 // ****************************************************************** // * DirectSound::CDirectSoundVoice::SetVolume // ****************************************************************** @@ -296,7 +300,8 @@ OOVPA_XREF(CDirectSoundVoice_SetVolume, 5788, 7, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Used 5233 // ****************************************************************** // * DirectSound::CDirectSoundBuffer::SetVolume // ****************************************************************** @@ -315,7 +320,7 @@ OOVPA_XREF(CDirectSoundBuffer_SetVolume, 5788, 8, { 0x3A, 0x74 }, { 0x47, 0x8B }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CDirectSoundStream::SetVolume // ****************************************************************** @@ -438,7 +443,7 @@ OOVPA_XREF(DirectSoundCreateStream, 5788, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x2F, XREF_DSCREATESOUNDSTREAM ), + XREF_ENTRY( 0x2F, XREF_CDirectSound_CreateSoundStream ), { 0x09, 0x56 }, { 0x14, 0x45 }, @@ -449,16 +454,16 @@ OOVPA_XREF(DirectSoundCreateStream, 5788, 9, { 0x4E, 0x5F }, { 0x56, 0x00 }, OOVPA_END; - +#if 0 // Replaced by generic 4039 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetMixBinVolumes // ****************************************************************** -OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes2, 5788, 9, +OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes_8, 5788, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, XREF_DSSETMIXBINVOLUMESB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetMixBinVolumes ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -469,13 +474,13 @@ OOVPA_XREF(CDirectSoundStream_SetMixBinVolumes2, 5788, 9, { 0x40, 0x68 }, { 0x4B, 0x8B }, OOVPA_END; - +#endif // ****************************************************************** // * DirectSound::CMcpxStream::Pause // ****************************************************************** OOVPA_XREF(CMcpxStream_Pause, 5788, 7, - XREF_DSSTREAMPAUSE, + XREF_CMcpxStream_Pause, XRefZero) { 0x10, 0x07 }, @@ -504,18 +509,12 @@ OOVPA_XREF(CDirectSoundStream_FlushEx, 5788, 7, { 0x62, 0x8B }, OOVPA_END; -// ****************************************************************** -// * IDirectSound_SetEffectData -// ****************************************************************** -// * No XRefs! Woohoo! -// ****************************************************************** -#define IDirectSound_SetEffectData_5788 IDirectSound_SetEffectData_5344 - // ****************************************************************** // * DirectSound::CMemoryManager::PoolAlloc // ****************************************************************** -OOVPA_NO_XREF(CMemoryManager_PoolAlloc, 5788, 10) +OOVPA_NO_XREF(DS_CMemoryManager_PoolAlloc, 5788, 11) + { 0x00, 0x56 }, { 0x24, 0x83 }, { 0x25, 0x7C }, { 0x26, 0x24 }, @@ -544,35 +543,11 @@ OOVPA_NO_XREF(XFileCreateMediaObjectAsync, 5788, 8) OOVPA_END; // ****************************************************************** -// * DirectSound::CDirectSoundStream::SetPitch +// * Rollback support signature(s) // ****************************************************************** -#define CDirectSoundStream_SetPitch_5788 CDirectSoundStream_SetPitch_4627 - -// ****************************************************************** -// * DirectSound::CDirectSound::SetAllParameters -// ****************************************************************** -#define CDirectSound_SetAllParameters_5788 CDirectSound_SetAllParameters_5558 - -// ****************************************************************** -// * DirectSound::CMcpxVoiceClient::SetFilter -// ****************************************************************** -#define CMcpxVoiceClient_SetFilter_5788 CMcpxVoiceClient_SetFilter_5558 - - -// ****************************************************************** -// DirectSound_CDirectSoundVoice::SetMode -// ****************************************************************** -#define CDirectSoundVoice_SetMode_5788 CDirectSoundVoice_SetMode_5344 - -// ****************************************************************** -// DirectSound_CDirectSoundBuffer::SetMode -// ****************************************************************** -#define CDirectSoundBuffer_SetMode_5788 CDirectSoundBuffer_SetMode_5233 - -// ****************************************************************** -// * IDirectSoundBuffer_SetMode -// ****************************************************************** -#define IDirectSoundBuffer_SetMode_5788 IDirectSoundBuffer_SetMode_5233 +#define CDirectSoundBuffer_SetBufferData_5788 CDirectSoundBuffer_SetBufferData_4134 +#define IDirectSoundBuffer_SetBufferData_5788 IDirectSoundBuffer_SetBufferData_4134 +#define XAudioDownloadEffectsImage_5788 XAudioDownloadEffectsImage_4627 // ****************************************************************** // * DSound_5788 @@ -587,54 +562,56 @@ OOVPATable DSound_5788[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetConeAngles, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetConeAngles, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes2, 5788, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 5233, XREF), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetRolloffCurve, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffCurve, 4627, XREF), REGISTER_OOVPA(CDirectSoundStream_SetRolloffCurve, 5558, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 5788, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 5788, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF), - REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF), REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), // (Possibly weak, but quite OK for 4627 DSOUND) - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), REGISTER_OOVPA(CFullHRTFSource_GetCenterVolume, 5558, XREF), REGISTER_OOVPA(CHRTFSource_SetFullHRTF5Channel, 5558, XREF), - REGISTER_OOVPA(DirectSoundUseFullHRTF, 5558, PATCH), + REGISTER_OOVPA(DirectSoundUseFullHRTF, 4134, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_Lock, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 5558, XREF), @@ -642,48 +619,50 @@ OOVPATable DSound_5788[] = { REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 5558, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 5558, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSound_SetPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetPosition, 5558, PATCH), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 5558, XREF), REGISTER_OOVPA(IDirectSound_SetVelocity, 5558, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetDistanceFactor, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetDistanceFactor, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 5558, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5788, PATCH), - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5788, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 5788, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 5788, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4039, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetPlayRegion, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 5558, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 5788, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), // TODO : Use 5344? + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 5788, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 5233, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 5233, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), // This is actually the XREF we are using REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 5788, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 5788, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 5788, PATCH), @@ -699,58 +678,60 @@ OOVPATable DSound_5788[] = { REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 5558, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Pause, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Pause, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Pause, 4928, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH), REGISTER_OOVPA(DirectSoundCreateStream, 5788, PATCH), - REGISTER_OOVPA(DirectSoundCreateStream, 5788, PATCH), REGISTER_OOVPA(CMcpxStream_Pause, 5788, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 5558, PATCH), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 5788, XREF), REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), - REGISTER_OOVPA(DirectSoundDoWork, 5558, PATCH), + REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SynchPlayback, 5558, PATCH), REGISTER_OOVPA(CDirectSound_EnableHeadphones, 5558, XREF), - REGISTER_OOVPA(IDirectSound8_EnableHeadphones, 5558, PATCH), + REGISTER_OOVPA(IDirectSound_EnableHeadphones, 3911, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 5558, XREF), REGISTER_OOVPA(CDirectSound_GetOutputLevels, 5558, XREF), REGISTER_OOVPA(IDirectSound_GetOutputLevels, 5558, PATCH), - REGISTER_OOVPA(IDirectSound_SetEffectData, 5788, PATCH), - REGISTER_OOVPA(CMemoryManager_PoolAlloc, 5788, XREF), + REGISTER_OOVPA(IDirectSound_SetEffectData, 3911, PATCH), + REGISTER_OOVPA(DS_CMemoryManager_PoolAlloc, 5788, XREF), REGISTER_OOVPA(XFileCreateMediaObjectAsync, 5788, PATCH), - REGISTER_OOVPA(WaveFormat_CreateXboxAdpcmFormat, 5558, XREF), - REGISTER_OOVPA(XAudioCreateAdpcmFormat, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFormat, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetPitch, 5788, PATCH), + REGISTER_OOVPA(WaveFormat_CreateXboxAdpcmFormat, 5344, XREF), + REGISTER_OOVPA(XAudioCreateAdpcmFormat, 5344, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4242, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundStream, 5558, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 5558, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Play2, 5788, XREF), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Play2, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 5788, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 5558, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4627, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetAllParameters, 5788, XREF), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 5788, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetAllParameters, 5558, XREF), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetMode, 5788, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 5788, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetMode, 5344, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 5233, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Use3DVoiceData, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH) + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl index a72645e2c..2810e9945 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl @@ -39,7 +39,7 @@ // ****************************************************************** OOVPA_XREF(CDirectSound_SetRolloffFactor, 5849, 20, - XREF_SETROLLOFFFACTORA, + XREF_CDirectSound_SetRolloffFactor, XRefZero) { 0x00, 0x56 }, @@ -63,7 +63,7 @@ OOVPA_XREF(CDirectSound_SetRolloffFactor, 5849, 20, { 0x3C, 0x10 }, { 0x5C, 0xC2 }, OOVPA_END; - +#if 0 // Duplicate OOVPA base on 4134 // ****************************************************************** // * DirectSound::CDirectSoundStream::SetPitch // ****************************************************************** @@ -72,7 +72,7 @@ OOVPA_XREF(CDirectSoundStream_SetPitch, 5849, 12, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x36, XREF_DSBUFFERSETPITCHB ), + XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetPitch ), { 0x00, 0x56 }, { 0x0C, 0x00 }, @@ -86,77 +86,7 @@ OOVPA_XREF(CDirectSoundStream_SetPitch, 5849, 12, { 0x50, 0x08 }, { 0x51, 0x00 }, OOVPA_END; - -// ****************************************************************** -// * DirectSound::CDirectSound::SetAllParameters -// ****************************************************************** -#define CDirectSound_SetAllParameters_5849 CDirectSound_SetAllParameters_5558 - -// ****************************************************************** -// * DirectSound::CMcpxVoiceClient::SetFilter -// ****************************************************************** -#define CMcpxVoiceClient_SetFilter_5849 CMcpxVoiceClient_SetFilter_5558 - -// ****************************************************************** -// * DirectSound::CMcpxVoiceClient::SetEG -// ****************************************************************** -#define CMcpxVoiceClient_SetEG_5849 CMcpxVoiceClient_SetEG_4627 - -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetEG -// ****************************************************************** -#define CDirectSoundVoice_SetEG_5849 CDirectSoundVoice_SetEG_4627 - -// ****************************************************************** -// * DirectSound::CDirectSoundStream::SetEG -// ****************************************************************** -#define CDirectSoundStream_SetEG_5849 CDirectSoundStream_SetEG_4627 - -// ****************************************************************** -// * DirectSound::CDirectSoundBuffer::SetEG -// ****************************************************************** -#define CDirectSoundBuffer_SetEG_5849 CDirectSoundBuffer_SetEG_4627 - -// ****************************************************************** -// * IDirectSoundBuffer_SetEG -// ****************************************************************** -#define IDirectSoundBuffer_SetEG_5849 IDirectSoundBuffer_SetEG_4627 - -// ****************************************************************** -// CDirectSoundVoice::SetMode -// ****************************************************************** -#define CDirectSoundVoice_SetMode_5849 CDirectSoundVoice_SetMode_5344 - -// ****************************************************************** -// CDirectSoundBuffer::SetMode -// ****************************************************************** -#define CDirectSoundBuffer_SetMode_5849 CDirectSoundBuffer_SetMode_5233 - -// ****************************************************************** -// * IDirectSoundBuffer_SetMode -// ****************************************************************** -#define IDirectSoundBuffer_SetMode_5849 IDirectSoundBuffer_SetMode_5233 - -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetI3DL2Source -// ****************************************************************** -#define CDirectSoundVoice_SetI3DL2Source_5849 CDirectSoundVoice_SetI3DL2Source_5558 - -// ****************************************************************** -// * DirectSound::CDirectSoundBuffer::SetI3DL2Source -// ****************************************************************** -#define CDirectSoundBuffer_SetI3DL2Source_5849 CDirectSoundBuffer_SetI3DL2Source_5558 - -// ****************************************************************** -// * IDirectSoundBuffer_SetI3DL2Source -// ****************************************************************** -#define IDirectSoundBuffer_SetI3DL2Source_5849 IDirectSoundBuffer_SetI3DL2Source_5558 - -// ****************************************************************** -// * DirectSound::CDirectSoundVoice::SetAllParameters -// ****************************************************************** -#define CDirectSoundVoice_SetAllParameters_5849 CDirectSoundVoice_SetAllParameters_5558 - +#endif // ****************************************************************** // * DSound_5849 // ****************************************************************** @@ -171,42 +101,44 @@ OOVPATable DSound_5849[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetStatus, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetI3DL2Listener, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFormat, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFormat, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes2, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes2, 5788, PATCH), - REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetMixBinVolumes, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBinVolumes_8, 4039, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetFrequency, 4134, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFrequency, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4039, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 5788, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 4134, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetVolume, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4039, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetVolume, 4134, PATCH), - REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH), - REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH), + REGISTER_OOVPA(IDirectSound_Release, 3911, PATCH), + REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetOrientation, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMaxDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMaxDistance, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 5788, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetMinDistance, 5344, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMinDistance, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 5788, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF), - REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF), REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_StopEx, 4361, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH), // (Possibly weak, but quite OK for 4627 DSOUND) - REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 3911, PATCH), + REGISTER_OOVPA(CMcpxBuffer_Stop, 4242, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_Stop, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Release, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetHeadroom, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetHeadroom, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 5558, PATCH), @@ -214,33 +146,35 @@ OOVPATable DSound_5849[] = { REGISTER_OOVPA(CDirectSoundVoiceSettings_SetMixBins, 5558, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetMixBins, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SetMixBinHeadroom, 5558, XREF), REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 5558, PATCH), REGISTER_OOVPA(CDirectSound_SetPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetPosition, 5558, PATCH), + REGISTER_OOVPA(IDirectSound_SetPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetVelocity, 5558, XREF), REGISTER_OOVPA(IDirectSound_SetVelocity, 5558, PATCH), - REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5788, PATCH), - REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH), + REGISTER_OOVPA(CDirectSound_CommitDeferredSettings, 5788, XREF), + REGISTER_OOVPA(IDirectSound_CommitDeferredSettings, 3911, PATCH), + REGISTER_OOVPA(DirectSoundCreateBuffer, 4242, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 5788, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 5788, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 5558, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetLoopRegion, 5558, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetRolloffFactor, 5849, XREF), - REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH), // TODO : Use 5344? + REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 3911, PATCH), REGISTER_OOVPA(CDirectSound_SetDopplerFactor, 5788, XREF), - REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4134, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH), + REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetPitch, 4134, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetPitch, 4134, XREF), REGISTER_OOVPA(CMcpxBuffer_Play2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_PlayEx, 5788, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3936, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetRolloffFactor, 5788, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetRolloffFactor, 5788, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 5788, PATCH), @@ -253,60 +187,63 @@ OOVPATable DSound_5849[] = { REGISTER_OOVPA(CDirectSoundVoice_SetVelocity, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetVelocity, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 5558, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Pause, 4928, XREF), + REGISTER_OOVPA(CMcpxBuffer_Pause, 4831, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Pause, 4928, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH), REGISTER_OOVPA(CDirectSound_CreateSoundStream, 5558, XREF), - REGISTER_OOVPA(IDirectSound_CreateSoundStream, 5558, PATCH), + REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3911, PATCH), REGISTER_OOVPA(DirectSoundCreateStream, 5788, PATCH), REGISTER_OOVPA(CMcpxStream_Pause, 5788, XREF), - REGISTER_OOVPA(CDirectSoundStream_Pause, 5558, PATCH), + REGISTER_OOVPA(CDirectSoundStream_Pause, 4134, PATCH), REGISTER_OOVPA(CDirectSoundStream_FlushEx, 5788, XREF), REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH), - REGISTER_OOVPA(DirectSoundDoWork, 5558, PATCH), + REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH), REGISTER_OOVPA(CDirectSound_SynchPlayback, 5558, PATCH), REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH), - REGISTER_OOVPA(IDirectSound_SetEffectData, 5344, PATCH), - REGISTER_OOVPA(CMemoryManager_PoolAlloc, 5788, XREF), + REGISTER_OOVPA(CDirectSound_SetEffectData, 4134, XREF), + REGISTER_OOVPA(IDirectSound_SetEffectData, 3911, PATCH), + REGISTER_OOVPA(DS_CMemoryManager_PoolAlloc, 5788, XREF), REGISTER_OOVPA(XFileCreateMediaObjectAsync, 5788, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFormat, 5558, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetPitch, 5849, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFormat, 4242, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetHeadroom, 5558, PATCH), - REGISTER_OOVPA(CMcpxBuffer_Play2, 5788, XREF), + REGISTER_OOVPA(CMcpxBuffer_Play2, 4361, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Play, 5788, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Play, 5558, PATCH), - REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH), - REGISTER_OOVPA(CDirectSound_SetDistanceFactorA, 5558, XREF), - REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH), - REGISTER_OOVPA(CDirectSound_SetAllParameters, 5849, XREF), - REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 5849, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4134, XREF), + REGISTER_OOVPA(IDirectSound_AddRef, 3911, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetDistanceFactor, 5558, XREF), + REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_SetAllParameters, 5558, XREF), + REGISTER_OOVPA(IDirectSound_SetAllParameters, 3911, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetFilter, 4134, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetFilter, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetFilter, 4134, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4627, PATCH), - REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH), - REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 5849, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetEG, 5849, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetEG, 5849, PATCH), - REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 5849, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 5849, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetMode, 5849, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 5849, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 5849, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 5849, XREF), - REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 5849, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 5849, PATCH), - REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 5849, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetFilter, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4039, PATCH), + REGISTER_OOVPA(CMcpxVoiceClient_SetEG, 4242, XREF), + REGISTER_OOVPA(CDirectSoundVoice_SetEG, 4039, XREF), + REGISTER_OOVPA(CDirectSoundStream_SetEG, 4134, PATCH), + REGISTER_OOVPA(CDirectSoundBuffer_SetEG, 4242, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetMode, 5344, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetMode, 5233, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4039, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetI3DL2Source, 5558, XREF), + REGISTER_OOVPA(CDirectSoundBuffer_SetI3DL2Source, 5558, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 5558, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetAllParameters, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetAllParameters, 4134, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4039, PATCH), REGISTER_OOVPA(CDirectSoundVoice_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Use3DVoiceData, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 5233, PATCH) + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 5233, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), + REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), + REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl new file mode 100644 index 000000000..5c5cf48b0 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl @@ -0,0 +1,470 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->DSound.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 RadWolfie +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// Titles which did compiled with full libary version +// [LibV] Title Name | Verify | Comments +//------------------------------------------------------------------- +// * [3925] Cel Damage | 100% | Contain full library. +// * [3936] Silent Hill 2 | 100% | Contain full library. +// * [4039] Nightcaster | 100% | Only has 90% of the library compiled with xbe build. +// * [4134] RaceX (Demo) | -% | Only has a few library. +// * [4134] Blood Omen 2 | 80% | Does not have full library. +// * [4134] JSRF | 1% | Does not have Stream class. DS and Buffer might be full. + +// TODO: Known DSound OOVPA issue list +// * 3911 to 5933: Cannot make OOVPAs +// * IDirectSound_SetCooperativeLevel (Xbox doesn't use it, can't make OOVPA for it) +// * IDirectSound_Compact (Xbox doesn't use it, can't make OOVPA for it) +// * IDirectSoundBuffer_Restore (Xbox doesn't use it, can't make OOVPA for it) +// * IDirectSoundBuffer_Unlock (Xbox doesn't use it, however can make OOVPA; NOTE: OOVPA is registered for it) +// * IDirectSoundStream_AddRef (Using IUnknown_AddRef) +// * IDirectSoundStream_Release (Using IUnknown_Release) +// * 3911 to ????: These functions does not exist until newer XDK revision +// * IDirectSound_GetOutputLevels +// * IDirectSound_SynchPlayback +// * IDirectSoundBuffer_GetVoiceProperties +// * IDirectSoundBuffer_SetFormat +// * IDirectSoundBuffer_SetDistanceFactor +// * IDirectSoundBuffer_SetDopplerFactor +// * IDirectSoundBuffer_SetRolloffFactor +// * IDirectSoundBuffer_SetRolloffCurve +// * IDirectSoundBuffer_Pause +// * IDirectSoundBuffer_PauseEx +// * IDirectSoundBuffer_SetPlayRegion (Introduce in 4039, last known earliest revision) +// * IDirectSoundStream_FlushEx +// * IDirectSoundStream_GetVoiceProperties +// * IDirectSoundStream_PauseEx +// * IDirectSoundStream_SetDistanceFactor +// * IDirectSoundStream_SetDopplerFactor +// * IDirectSoundStream_SetFormat +// * IDirectSoundStream_SetRolloffCurve +// * IDirectSoundStream_SetRolloffFactor +// * DirectSoundDumpMemoryUsage +// * DirectSoundGetSampleTime +// * DirectSoundOverrideSpeakerConfig +// * XAudioDownloadEffectsImage +// * XAudioGetSpeakerConfig +// * XAudioSetEffectData +// * DirectSoundUseFullHRTF4Channel +// * DirectSoundUseLightHRTF4Channel +// * 3911 to 3936: Following separater functions has exact asm codes as whole function are... +// * IDirectSoundStream_SetVolume & CDirectSoundStream_SetVolume +// * IDirectSoundStream_SetPitch & CDirectSoundStream_SetPitch +// * IDirectSoundStream_SetLFO & CDirectSoundStream_SetLFO +// * IDirectSoundStream_SetEG & CDirectSoundStream_SetEG +// * IDirectSoundStream_SetFilter & CDirectSoundStream_SetFilter +// * IDirectSoundStream_SetHeadroom & CDirectSoundStream_SetHeadroom +// * IDirectSoundStream_SetFrequency & CDirectSoundStream_SetFrequency +// * IDirectSoundStream_SetMixBins & CDirectSoundStream_SetMixBins +// * Need to include func export support for IDirectSoundStream_Setxxxxx from above. +// * 3911 - Not part of API, yet is a non-member function : (might be useful) +// * GetFormatSize +// * CopyFormat +// * CompareFormats +// * CalculateXboxAdpcmAlignment +// * IsValidPcmFormat +// * IsValidXboxAdpcmFormat +// * CopyFormatAlloc +// * List of functions might need to be register: +// * IDirectSoundBuffer_QueryInterface +// * IDirectSoundBuffer_QueryInterfaceC +// * List of internal functions are not register: +// * CDirectSoundBuffer_Release (Is unique, however need multiple OOVPAs to register all revisions) +// * Using XREF_DS_CRefCount_Release +// * CDirectSound_Release (Is unique, however need multiple OOVPAs to register all revisions) +// * Using XREF_DS_CRefCount_Release +// * 4039 verification needed: +// * DirectSoundUseLightHRTF +// * IDirectSound_CommitEffectData +// * IDirectSound_GetEffectData +// * IDirectSound_GetSpeakerConfig +// * IDirectSound_GetTime (It is generic) +// * IDirectSound_SetAllParameters +// * IDirectSound_SetEffectData +// * IDirectSound_SetMixBinHeadroom +// * IDirectSoundBuffer_PlayEx +// * IDirectSoundBuffer_SetNotificationPositions +// * CDirectSoundStream_SetFormat +// * CDirectSoundStream_SetHeadroom +// * CDirectSoundStream_SetI3DL2Source +// * CDirectSoundStream_SetRolloffCurve +// * CDirectSoundStream_SetRolloffFactor +// * IDirectSoundStream_SetHeadroom +// * 4134 verification needed: (Verifying with Blood Omen 2 title is done, need different title to find the remaining...) +// * CDirectSoundBuffer_SetEG +// * IDirectSoundBuffer_SetEG +// * CMcpxVoiceClient_SetLFO +// * CDirectSoundStream_SetConeAngles +// * CDirectSoundStream_SetFrequency +// * CDirectSoundStream_SetHeadroom +// * CDirectSoundStream_SetLFO +// * CDirectSoundStream_SetMixBinVolumes_8 +// * CDirectSoundStream_SetOutputBuffer +// * CDirectSoundBuffer_PlayEx +// * CDirectSoundBuffer_SetNotificationPositions +// * CDirectSoundBuffer_StopEx +// * CDirectSound_CommitEffectData +// * CDirectSound_EnableHeadphones +// * CDirectSound_GetEffectData +// * CDirectSound_SetMixBinHeadroom +// * DirectSoundCreateBuffer +// * DirectSoundUseLightHRTF +// * IsValidFormat +// * XAudioCreateAdpcmFormat +// * XAudioCreatePcmFormat +// * CDirectSound_SetAllParameters and CDirectSound_SetAllParametersA currently separated +// * Need to review what's the difference and why is it necessary to be separated. +// * It also have various revisions, we should be able to narrow it down to remove duplicates. +// * 4039 CDirectSoundVoice_SetPitch need to be strengthen by using XREF to CMcpxVoiceClient_SetPitch function. + + +#ifndef DSOUND_OOVPA_INL +#define DSOUND_OOVPA_INL + +#include "../OOVPA.h" + +#include "DSound.1.0.3911.inl" +#include "DSound.1.0.3936.inl" +#include "DSound.1.0.4039.inl" +#include "DSound.1.0.4134.inl" +#include "DSound.1.0.4242.inl" +#include "DSound.1.0.4361.inl" +#include "DSound.1.0.4432.inl" +#include "DSound.1.0.4627.inl" +#include "DSound.1.0.5028.inl" +#include "DSound.1.0.5233.inl" +#include "DSound.1.0.5344.inl" +#include "DSound.1.0.5558.inl" +#include "DSound.1.0.5788.inl" +#include "DSound.1.0.5849.inl" + + +// ****************************************************************** +// * DSOUND_OOVPA +// ****************************************************************** +OOVPATable DSound_OOVPAV2[] = { + + REGISTER_OOVPAS(XAudioCalculatePitch, XREF, 3911, 4039), + REGISTER_OOVPAS(DirectSoundEnterCriticalSection, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Commit3dSettings, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_ServiceDeferredCommandsLow, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Set3dDistanceFactor, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Set3dDopplerFactor, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Set3dParameters, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Set3dPosition, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Set3dRolloffFactor, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_Set3dVelocity, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_SetI3DL2Listener, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_SetMixBinHeadroom, XREF, 3911), + REGISTER_OOVPAS(CMcpxAPU_SynchPlayback, XREF, 5233), + REGISTER_OOVPAS(CMcpxBuffer_GetCurrentPosition, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CMcpxBuffer_GetStatus, XREF, 3911, 4039, 4134, 4721, 4831, 5558), + REGISTER_OOVPAS(CMcpxBuffer_Pause, XREF, 4831), + REGISTER_OOVPAS(CMcpxBuffer_Play, XREF, 3911, 4361, 4721, 4831), // NOTE: ?Play@CMcpxBuffer@DirectSound@@QAEJK@Z + REGISTER_OOVPAS(CMcpxBuffer_Play2, XREF, 4361, 5558), // NOTE: ?Play@CMcpxBuffer@DirectSound@@QAEJ_JK@Z + REGISTER_OOVPAS(CMcpxBuffer_SetBufferData, XREF, 4134, 5788), + REGISTER_OOVPAS(CMcpxBuffer_SetCurrentPosition, XREF, 3911, 4039, 4134, 5558, 5788), + REGISTER_OOVPAS(CMcpxBuffer_Stop, XREF, 3911, 4134, 4242), // NOTE: ?Stop@CMcpxBuffer@DirectSound@@QAEJK@Z + REGISTER_OOVPAS(CMcpxBuffer_Stop2, XREF, 4361), // NOTE: ?Stop@CMcpxBuffer@DirectSound@@QAEJ_JK@Z + REGISTER_OOVPAS(CMcpxStream_Discontinuity, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CMcpxStream_Flush, XREF, 3911, 3936, 4039, 4134, 4242), + REGISTER_OOVPAS(CMcpxStream_GetStatus, XREF, 4134), + REGISTER_OOVPAS(CMcpxStream_Pause, XREF, 3911, 4039, 4134, /*4361,*/ 4831, 5788), + REGISTER_OOVPAS(CSensaura3d_GetFullHRTFFilterPair, XREF, 3911, 3936), + REGISTER_OOVPAS(CSensaura3d_GetLiteHRTFFilterPair, XREF, 3911, 3936), + REGISTER_OOVPAS(CMcpxVoiceClient_Commit3dSettings, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dConeOrientation, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dConeOutsideVolume, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dMaxDistance, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dMinDistance, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dMode, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dParameters, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dPosition, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_Set3dVelocity, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_SetEG, XREF, 3911, 4039, 4134, 4242), + REGISTER_OOVPAS(CMcpxVoiceClient_SetFilter, XREF, 3911, 4039, 4134 /*, 5344, 5558*/), + REGISTER_OOVPAS(CMcpxVoiceClient_SetI3DL2Source, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_SetLFO, XREF, 3911, 4039, 4242), + REGISTER_OOVPAS(CMcpxVoiceClient_SetMixBins, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_SetPitch, XREF, 3911), + REGISTER_OOVPAS(CMcpxVoiceClient_SetVolume, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(DS_CRefCount_AddRef, XREF, 3911, 4039), + REGISTER_OOVPAS(DS_CRefCount_Release, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoiceSettings_SetMixBins, XREF, 4039, 4134, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoiceSettings_SetMixBinVolumes, XREF, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundVoice_CommitDeferredSettings, XREF, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetAllParameters, XREF, 3911, 4039, 4134, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetConeAngles, XREF, 3911, 4039, 4134, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetConeOrientation, XREF, 3911, 4039, 4134, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetConeOutsideVolume, XREF, 3911, 4039, 4134, 4361, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetDistanceFactor, XREF, 4134, 4361, 4627, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetDopplerFactor, XREF, 4134, 4361, 4627, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetEG, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoice_SetFilter, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoice_SetFormat, XREF, 4242, 4721, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetFrequency, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundVoice_SetHeadroom, XREF, 3911, 4039, 4134, 4627, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetI3DL2Source, XREF, 3911, 4039, 4134, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetLFO, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoice_SetMaxDistance, XREF, 3911, 4039, 4134, 4361, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetMinDistance, XREF, 3911, 4039, 4134, 4361, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetMixBins, XREF, 3911, 4039, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetMixBinVolumes, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoice_SetMode, XREF, 3911, 4039, 4134, 5233, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetOutputBuffer, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoice_SetPitch, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundVoice_SetPosition, XREF, 3911, 4039, 4134, 4627, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundVoice_SetRolloffCurve, XREF, 4627, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetRolloffFactor, XREF, 4134, 4361, 5344, 5788), // s+ (from 4134's comment) + REGISTER_OOVPAS(CDirectSoundVoice_SetVelocity, XREF, 3911, 4039, 4134, 5344), + REGISTER_OOVPAS(CDirectSoundVoice_SetVolume, XREF, 3911, 4039, 4134, 5233), + REGISTER_OOVPAS(CDirectSoundVoice_Use3DVoiceData, XREF, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_GetCurrentPosition, XREF, 3911, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_GetStatus, XREF, 3911, 4039, 4134, 4721), + REGISTER_OOVPAS(CDirectSoundBuffer_Lock, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_Pause, XREF, 4928), + REGISTER_OOVPAS(CDirectSoundBuffer_Play, XREF, 3911, 4039, 4134, 4361, 5558, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_PlayEx, XREF, 3911, 4361, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_SetAllParameters, XREF, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetBufferData, XREF, 3911, 4039, 4134, 5558, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_SetConeAngles, XREF, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetConeOrientation, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetConeOutsideVolume, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetCurrentPosition, XREF, 3911, 4039, 4134, 5558, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_SetDistanceFactor, XREF, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetDopplerFactor, XREF, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetEG, XREF, 4039, 4242), + REGISTER_OOVPAS(CDirectSoundBuffer_SetFilter, XREF, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetFormat, XREF, 4242, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetFrequency, XREF, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetHeadroom, XREF, 4039, 4134, 5344, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetI3DL2Source, XREF, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetLFO, XREF, 4039, 4242), + REGISTER_OOVPAS(CDirectSoundBuffer_SetLoopRegion, XREF, 3911, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetMaxDistance, XREF, 3911, 4039, 4134, 5344, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_SetMinDistance, XREF, 3911, 4039, 4134, 5344, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_SetMixBins, XREF, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetMixBinVolumes, XREF, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetMode, XREF, 4039, 4134, 5233), + REGISTER_OOVPAS(CDirectSoundBuffer_SetNotificationPositions, XREF, 3911, 4627), // Uncommenting these fixes dashboard 4920 (from 4627 comment) + REGISTER_OOVPAS(CDirectSoundBuffer_SetOutputBuffer, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetPitch, XREF, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_SetPlayRegion, XREF, 4039, 4361, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetPosition, XREF, 3911, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetRolloffCurve, XREF, 4627), + REGISTER_OOVPAS(CDirectSoundBuffer_SetRolloffFactor, XREF, 4134, 5788), + REGISTER_OOVPAS(CDirectSoundBuffer_SetVelocity, XREF, 3911, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSoundBuffer_SetVolume, XREF, 4039, 4134, 5233), + REGISTER_OOVPAS(CDirectSoundBuffer_Stop, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundBuffer_StopEx, XREF, 3911, 4039, 4361), + REGISTER_OOVPAS(CDirectSoundBuffer_Use3DVoiceData, XREF, 5558), + REGISTER_OOVPAS(CDirectSoundStream_AddRef, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_Discontinuity, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_Flush, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_FlushEx, XREF, 4627, 5233, 5788), + REGISTER_OOVPAS(CDirectSoundStream_GetInfo, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_GetStatus, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_Pause, PATCH, 3911, 4039, 4134 /*, 4361, 5558*/), + REGISTER_OOVPAS(CDirectSoundStream_Process, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_Release, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetAllParameters, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetConeAngles, PATCH, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundStream_SetConeOrientation, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetConeOutsideVolume, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetEG, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetFilter, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetFormat, PATCH, 4242), + REGISTER_OOVPAS(CDirectSoundStream_SetFrequency, PATCH, 3911, 4039, 5233), + REGISTER_OOVPAS(CDirectSoundStream_SetHeadroom, PATCH, 3911, 4627, 5558), + REGISTER_OOVPAS(CDirectSoundStream_SetI3DL2Source, PATCH, 3911, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetLFO, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetMaxDistance, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetMinDistance, PATCH, 3911, 4039, 4134, 5344), + REGISTER_OOVPAS(CDirectSoundStream_SetMixBins, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetMixBinVolumes_12, PATCH, 3911), //This revision is only used in XDK 3911 to 3936. + REGISTER_OOVPAS(CDirectSoundStream_SetMixBinVolumes_8, PATCH, 4039), //Then it has changed in XDK 4039 and higher. + REGISTER_OOVPAS(CDirectSoundStream_SetMode, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetOutputBuffer, PATCH, 3911, 4039, 4627), + REGISTER_OOVPAS(CDirectSoundStream_SetPitch, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetPosition, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetRolloffCurve, XREF, 4627, 5558), + REGISTER_OOVPAS(CDirectSoundStream_SetRolloffFactor, PATCH, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetVelocity, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_SetVolume, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSoundStream_Use3DVoiceData, XREF, 5558), + REGISTER_OOVPAS(CDirectSound_CommitDeferredSettings, XREF, 3911, 4039, 4134, 5344, 5558, 5788), + REGISTER_OOVPAS(CDirectSound_CommitEffectData, XREF, 3911), + REGISTER_OOVPAS(CDirectSound_CreateSoundBuffer, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSound_CreateSoundStream, XREF, 3911, 4039, 4134, 5558), + REGISTER_OOVPAS(CDirectSound_DownloadEffectsImage, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSound_DoWork, XREF, 3911, 4039), + REGISTER_OOVPAS(CDirectSound_EnableHeadphones, XREF, 3911, 4039, 4627, 5233, 5344, 5558), + REGISTER_OOVPAS(CDirectSound_GetCaps, XREF, 3911, 4039, 4134, 4361), + REGISTER_OOVPAS(CDirectSound_GetEffectData, XREF, 3911), + REGISTER_OOVPAS(CDirectSound_GetOutputLevels, XREF, 4627, 5558), + REGISTER_OOVPAS(CDirectSound_GetSpeakerConfig, PATCH, 3911, 4627), + REGISTER_OOVPAS(CDirectSound_GetTime, XREF, 3911), + REGISTER_OOVPAS(CDirectSound_SetAllParameters, XREF, 3911, 4134, 4831, 5558), + REGISTER_OOVPAS(CDirectSound_SetAllParametersA, XREF, 4627, 4721, 4831), + REGISTER_OOVPAS(CDirectSound_SetDistanceFactor, XREF, 3911, 4039, 4134, 4627, 5344, 5558), + REGISTER_OOVPAS(CDirectSound_SetDopplerFactor, XREF, 3911, 4039, 4134, 4627, 5344, 5558, 5788), + REGISTER_OOVPAS(CDirectSound_SetEffectData, XREF, 3911, 4134), + REGISTER_OOVPAS(CDirectSound_SetI3DL2Listener, XREF, 3911, 4039, 4134, 5344, 5558), + REGISTER_OOVPAS(CDirectSound_SetMixBinHeadroom, XREF, 3911, 4627, 5558), + REGISTER_OOVPAS(CDirectSound_SetOrientation, XREF, 3911, 4039, 4134), + REGISTER_OOVPAS(CDirectSound_SetPosition, XREF, 3911, 4039, 4134, 4627, 5344, 5558), + REGISTER_OOVPAS(CDirectSound_SetRolloffFactor, XREF, 3911, 4039, 4134, 5344, 5558, 5788, 5849), + REGISTER_OOVPAS(CDirectSound_SetVelocity, XREF, 3911, 4039, 4134, 4627, 5344, 5558), + REGISTER_OOVPAS(CDirectSound_SynchPlayback, XREF, 5233, 5344, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_AddRef, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_GetCurrentPosition, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_GetStatus, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_Lock, PATCH, 3911, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_Pause, PATCH, 4928), + REGISTER_OOVPAS(IDirectSoundBuffer_Play, PATCH, 3911, 4361, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_PlayEx, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_Release, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_SetAllParameters, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetBufferData, PATCH, 3911, 4134, 5558, 5788), + REGISTER_OOVPAS(IDirectSoundBuffer_SetConeAngles, PATCH, 3911, 4039, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetConeOrientation, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_SetConeOutsideVolume, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetCurrentPosition, PATCH, 3911 /*, 4134, 5558, 5788*/), + REGISTER_OOVPAS(IDirectSoundBuffer_SetDistanceFactor, PATCH, 4134, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetDopplerFactor, PATCH, 4134, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetEG, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetFilter, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetFormat, PATCH, 4242, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetFrequency, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetHeadroom, PATCH, 3911, 4039, 5344, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetI3DL2Source, PATCH, 3911, 4039, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetLFO, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetLoopRegion, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_SetMaxDistance, PATCH, 3911 /*,5344, 5788*/), + REGISTER_OOVPAS(IDirectSoundBuffer_SetMinDistance, PATCH, 3911 /*, 5558, 5788*/), + REGISTER_OOVPAS(IDirectSoundBuffer_SetMixBins, PATCH, 3911, 4039 /*, 4134, 5558*/), + REGISTER_OOVPAS(IDirectSoundBuffer_SetMixBinVolumes_12, PATCH, 3911), //This revision is only used in XDK 3911 to 3936. + REGISTER_OOVPAS(IDirectSoundBuffer_SetMixBinVolumes_8, PATCH, 4039), //Then it has changed in XDK 4039 and higher. + REGISTER_OOVPAS(IDirectSoundBuffer_SetMode, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetNotificationPositions, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_SetOutputBuffer, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_SetPitch, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetPlayRegion, PATCH, 4039, 4361), + REGISTER_OOVPAS(IDirectSoundBuffer_SetPosition, PATCH, 3911, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetRolloffCurve, PATCH, 4627), + REGISTER_OOVPAS(IDirectSoundBuffer_SetRolloffFactor, PATCH, 4134, 5788), + REGISTER_OOVPAS(IDirectSoundBuffer_SetVelocity, PATCH, 3911, 5558), + REGISTER_OOVPAS(IDirectSoundBuffer_SetVolume, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_Stop, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_StopEx, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_Unlock, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundBuffer_Use3DVoiceData, PATCH, 5558), + REGISTER_OOVPAS(IDirectSoundStream_FlushEx, PATCH, 4627), + REGISTER_OOVPAS(IDirectSoundStream_Pause, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetAllParameters, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetConeAngles, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetConeOrientation, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetConeOutsideVolume, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetEG, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundStream_SetLFO, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundStream_SetFilter, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundStream_SetFrequency, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundStream_SetHeadroom, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetI3DL2Source, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetMaxDistance, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetMinDistance, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetMixBins, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundStream_SetMixBinVolumes_12, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, see more note for CDirectSoundStream_SetMixBinVolumes_12 + REGISTER_OOVPAS(IDirectSoundStream_SetMixBinVolumes_8, UNPATCHED, 4039), //NOTE: 4039 and newer only perform a jmp. + REGISTER_OOVPAS(IDirectSoundStream_SetMode, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetOutputBuffer, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? + REGISTER_OOVPAS(IDirectSoundStream_SetPitch, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSoundStream_SetPosition, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetVelocity, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetVolume, PATCH, 3911, 4039), + REGISTER_OOVPAS(IDirectSound_AddRef, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_CommitDeferredSettings, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_CommitEffectData, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_CreateSoundBuffer, PATCH, 3911 /*3936, 4134, 4361*/), + REGISTER_OOVPAS(IDirectSound_CreateSoundStream, PATCH, 3911 /*5558*/), + REGISTER_OOVPAS(IDirectSound_DownloadEffectsImage, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_EnableHeadphones, PATCH, 3911 /*, 3936, 4627, 5233, 5558*/), + REGISTER_OOVPAS(IDirectSound_GetCaps, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_GetEffectData, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_GetOutputLevels, PATCH, 4627, 5558), + REGISTER_OOVPAS(IDirectSound_GetSpeakerConfig, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_GetTime, UNPATCHED, 3911), + REGISTER_OOVPAS(IDirectSound_Release, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_SetAllParameters, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_SetDistanceFactor, PATCH, 3911 /*, 4134*/), + REGISTER_OOVPAS(IDirectSound_SetDopplerFactor, PATCH, 3911 /*, 4134*/), + REGISTER_OOVPAS(IDirectSound_SetEffectData, PATCH, 3911 /*, 4134, 5344*/), + REGISTER_OOVPAS(IDirectSound_SetI3DL2Listener, PATCH, 3911 /*, 4134*/), + REGISTER_OOVPAS(IDirectSound_SetMixBinHeadroom, PATCH, 3911 /*, 4627, 5558*/), + REGISTER_OOVPAS(IDirectSound_SetOrientation, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_SetPosition, PATCH, 3911), + REGISTER_OOVPAS(IDirectSound_SetRolloffFactor, PATCH, 3911/*, 4134, 5344*/), + REGISTER_OOVPAS(IDirectSound_SetVelocity, PATCH, 3911 /*, 5558*/), + REGISTER_OOVPAS(IDirectSound_SynchPlayback, PATCH, 5233), + + REGISTER_OOVPAS(CFullHRTFSource_GetCenterVolume, XREF, 4039, 4134, 5558), + REGISTER_OOVPAS(CHRTFSource_SetFullHRTF5Channel, XREF, 4039, 5558), + + REGISTER_OOVPAS(DirectSoundCreate, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(DirectSoundCreateBuffer, PATCH, 3911, 4039, 4242), + REGISTER_OOVPAS(DirectSoundCreateStream, PATCH, 3911, 4039, 4134, 5788), + REGISTER_OOVPAS(DirectSoundDoWork, PATCH, 3911, 4134), + REGISTER_OOVPAS(DirectSoundGetSampleTime, PATCH, 3911, 4361), + REGISTER_OOVPAS(DirectSoundUseFullHRTF, PATCH, 3911, 4039, 4134), + REGISTER_OOVPAS(DirectSoundUseLightHRTF, PATCH, 3911), + + REGISTER_OOVPAS(WaveFormat_CreateXboxAdpcmFormat, XREF, 5344), + REGISTER_OOVPAS(XAudioDownloadEffectsImage, PATCH, 4627, 5558, 5788), + REGISTER_OOVPAS(IsValidFormat, UNPATCHED, 3911), + REGISTER_OOVPAS(XAudioCreatePcmFormat, UNPATCHED, 3911), + REGISTER_OOVPAS(XAudioCreateAdpcmFormat, PATCH, 3911, 5344), + REGISTER_OOVPAS(XFileCreateMediaObjectAsync, PATCH, 5788), + REGISTER_OOVPAS(XFileCreateMediaObjectEx, PATCH, 4627, 5028), + REGISTER_OOVPAS(XWaveFileCreateMediaObject, PATCH, 4627), + + REGISTER_OOVPAS(DS_CMemoryManager_PoolAlloc, XREF, 4134, 5788), // For reference purpose only, does not have XREF value. +}; + +// ****************************************************************** +// * DSOUND_OOVPA_SIZE +// ****************************************************************** +uint32 DSound_OOVPA_SIZEV2 = sizeof(DSound_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl index 2f22766fc..26be78802 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl @@ -76,7 +76,6 @@ OOVPA_NO_XREF(XGSwizzleBox, 3911, 8) { 0xFE, 0x45 }, OOVPA_END; -/* Leave unpatched // ****************************************************************** // * XGUnswizzleRect // ****************************************************************** @@ -91,7 +90,6 @@ OOVPA_NO_XREF(XGUnswizzleRect, 3911, 8) { 0xDE, 0x89 }, { 0xFE, 0x60 }, OOVPA_END; -*/ // ****************************************************************** // * XGWriteSurfaceOrTextureToXPR @@ -152,6 +150,29 @@ OOVPA_NO_XREF(XGUnswizzleBox, 3911, 8) { 0xFE, 0x20 }, OOVPA_END; +// ****************************************************************** +// * XGCompressRect +// ****************************************************************** +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(XGCompressRect, 3911, 12) + + { 0x00, 0x55 }, + { 0x01, 0x8D }, + + { 0x14, 0x83 }, + { 0x15, 0x7D }, + { 0x16, 0x6C }, + { 0x17, 0x00 }, + { 0x18, 0x56 }, + { 0x19, 0x57 }, + { 0x1A, 0xC7 }, + { 0x1B, 0x45 }, + + { 0xC0, 0x7E }, + { 0xC1, 0x01 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * XGCompressRect // ****************************************************************** @@ -166,7 +187,7 @@ OOVPA_NO_XREF(XGCompressRect, 3911, 8) { 0xBE, 0x80 }, { 0xDA, 0xAF }, OOVPA_END; - +#endif // ****************************************************************** // * XGSetIndexBufferHeader // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4134.inl new file mode 100644 index 000000000..29b80426c --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4134.inl @@ -0,0 +1,81 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XG.1.0.4134.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XGSetVertexBufferHeader +// ****************************************************************** +//Generic OOVPA as of 4134 and newer. +OOVPA_NO_XREF(XGSetVertexBufferHeader, 4134, 15) + + { 0x01, 0x44 }, + { 0x04, 0x8B }, + { 0x07, 0x18 }, + { 0x0A, 0x08 }, + + { 0x0C, 0xC7 }, + { 0x0D, 0x00 }, + { 0x0E, 0x01 }, + { 0x0F, 0x00 }, + { 0x10, 0x00 }, // XGSetVertexBufferHeader 0x00 vs XGSetIndexBufferHeader 0x01 + { 0x11, 0x00 }, + { 0x12, 0x89 }, + { 0x13, 0x48 }, + { 0x14, 0x04 }, + { 0x15, 0xC2 }, + { 0x16, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * XGSetIndexBufferHeader +// ****************************************************************** +//Generic OOVPA as of 4134 and newer. +OOVPA_NO_XREF(XGSetIndexBufferHeader, 4134, 15) + + { 0x01, 0x44 }, + { 0x04, 0x8B }, + { 0x07, 0x18 }, + { 0x0A, 0x08 }, + + { 0x0C, 0xC7 }, + { 0x0D, 0x00 }, + { 0x0E, 0x01 }, + { 0x0F, 0x00 }, + { 0x10, 0x01 }, // XGSetVertexBufferHeader 0x00 vs XGSetIndexBufferHeader 0x01 + { 0x11, 0x00 }, + { 0x12, 0x89 }, + { 0x13, 0x48 }, + { 0x14, 0x04 }, + { 0x15, 0xC2 }, + { 0x16, 0x18 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl index c334b2c5d..ae1f6e6d6 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4361.inl @@ -86,6 +86,7 @@ OOVPA_NO_XREF(XGSwizzleRect, 4361, 10) { 0xED, 0x0B }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * XGSetVertexBufferHeader // ****************************************************************** @@ -100,6 +101,7 @@ OOVPA_NO_XREF(XGSetVertexBufferHeader, 4361, 8) // 4134 { 0x13, 0x48 }, { 0x16, 0x18 }, OOVPA_END; +#endif #if 0 // Moved to 3911 // ****************************************************************** // * XGCompressRect @@ -116,7 +118,7 @@ OOVPA_NO_XREF(XGCompressRect, 4361, 8) { 0xFE, 0x8B }, OOVPA_END; #endif - +#if 0 // Moved to 4134 // ****************************************************************** // * XGSetIndexBufferHeader // ****************************************************************** @@ -138,6 +140,7 @@ OOVPA_NO_XREF(XGSetIndexBufferHeader, 4361, 13) { 0x16, 0x18 }, OOVPA_END; +#endif // ****************************************************************** // * XFONT_OpenBitmapFontFromMemory @@ -165,8 +168,8 @@ OOVPATable XG_4361[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl index 6c08bbec9..39772642c 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4432.inl @@ -45,8 +45,8 @@ OOVPATable XG_4432[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl index 33c8fafe0..29faf2fed 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl @@ -83,8 +83,8 @@ OOVPATable XG_4627[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl index fb8dad14d..2576e8db7 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl @@ -42,8 +42,8 @@ OOVPATable XG_5028[] = { // REGISTER_OOVPA(XGUnswizzleRect, 3911, DISABLED), // TODO : Uncomment REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl index 2300f9c74..94be2358d 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5233.inl @@ -43,8 +43,8 @@ OOVPATable XG_5233[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl index 17bcfc828..ac32843d0 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5344.inl @@ -43,8 +43,8 @@ OOVPATable XG_5344[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl index 3ba2263a6..60453b26d 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5558.inl @@ -73,8 +73,8 @@ OOVPATable XG_5558[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl index 12de2621d..eb35a12a9 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5788.inl @@ -60,8 +60,8 @@ OOVPATable XG_5788[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl index 8169dbd0a..9b9fbe55b 100644 --- a/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5849.inl @@ -43,8 +43,8 @@ OOVPATable XG_5849[] = { REGISTER_OOVPA(XGSwizzleBox, 3911, PATCH), REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 3911, PATCH), REGISTER_OOVPA(XGSetTextureHeader, 3911, PATCH), - REGISTER_OOVPA(XGSetVertexBufferHeader, 4361, XREF), - REGISTER_OOVPA(XGSetIndexBufferHeader, 4361, XREF), + REGISTER_OOVPA(XGSetVertexBufferHeader, 4134, XREF), + REGISTER_OOVPA(XGSetIndexBufferHeader, 4134, XREF), REGISTER_OOVPA(XGCompressRect, 3911, XREF), REGISTER_OOVPA(XGUnswizzleBox, 3911, DISABLED), REGISTER_OOVPA(XFONT_OpenBitmapFontFromMemory, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl new file mode 100644 index 000000000..53d8123c2 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XG.OOVPA.inl @@ -0,0 +1,89 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;; .,;; ;;;'';;' `;;; .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o oP"``"Yo _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->XG.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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 Bostom MA 02111-1307 USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// TODO: Known Xgraphics OOVPA issue list +// * 3922 XGCompressRect is XREF in v1 database, any reason for this? +// * 4034 is not verified each OOVPA. +// * Following OOVPA revision are not verified +// * XGCompressRect (4242, 4721, 5028, 5120) +// * XGSetIndexBufferHeader (4039) +// * XGSetVertexBufferHeader (4039) +// * XGSwizzleBox (4242) +// * XGUnswizzleBox (4039) +// * XGWriteSurfaceOrTextureToXPR (4242, 5028) +// NOTE: Known Xgraphics OOVPA not included in initial revision. +// * XFONT_OpenBitmapFontFromMemory (4361) + +#ifndef XGRAPHC_OOVPA_INL +#define XGRAPHC_OOVPA_INL + +#include "../OOVPA.h" + +#include "HLEDataBase/XG.1.0.3911.inl" +#include "HLEDataBase/XG.1.0.4034.inl" +#include "HLEDataBase/XG.1.0.4134.inl" +#include "HLEDataBase/XG.1.0.4361.inl" +#include "HLEDataBase/XG.1.0.4432.inl" +#include "HLEDataBase/XG.1.0.4627.inl" +#include "HLEDataBase/XG.1.0.5028.inl" +#include "HLEDataBase/XG.1.0.5233.inl" +#include "HLEDataBase/XG.1.0.5344.inl" +#include "HLEDataBase/XG.1.0.5558.inl" +#include "HLEDataBase/XG.1.0.5788.inl" +#include "HLEDataBase/XG.1.0.5849.inl" + +// ****************************************************************** +// * XGRAPHC_OOVPA +// ****************************************************************** +OOVPATable XGRAPHC_OOVPAV2[] = { + + REGISTER_OOVPAS(XFONT_OpenBitmapFontFromMemory, XREF, 4361), + REGISTER_OOVPAS(XGCompressRect, UNPATCHED, 3911), // TODO: Do we need to patch this? + REGISTER_OOVPAS(XGIsSwizzledFormat, PATCH, 3911), + REGISTER_OOVPAS(XGSetIndexBufferHeader, XREF, 3911, 4134/*4361*/), + REGISTER_OOVPAS(XGSetTextureHeader, PATCH, 3911), + REGISTER_OOVPAS(XGSetVertexBufferHeader, XREF, 3911, 4134/*4361*/), + REGISTER_OOVPAS(XGSwizzleBox, PATCH, 3911), + REGISTER_OOVPAS(XGSwizzleRect, UNPATCHED, 3911), + REGISTER_OOVPAS(XGUnswizzleBox, UNPATCHED, 3911), + REGISTER_OOVPAS(XGUnswizzleRect, UNPATCHED, 3911), + REGISTER_OOVPAS(XGWriteSurfaceOrTextureToXPR, PATCH, 3911), +}; + +// ****************************************************************** +// * XGRAPHC_OOVPA_SIZE +// ****************************************************************** +uint32 XGRAPHC_OOVPA_SIZEV2 = sizeof(XGRAPHC_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/XNet.1.0.3911.inl index 8a4ae0a89..38e06c78b 100644 --- a/src/CxbxKrnl/HLEDataBase/XNet.1.0.3911.inl +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.3911.inl @@ -41,7 +41,7 @@ OOVPA_XREF(XNetStartup, 3911, 9, XRefOne) // XNetStartup+0x07 : call [XnInit] - XREF_ENTRY( 0x07, XREF_XNINIT ), + XREF_ENTRY( 0x07, XREF_XnInit ), // XNetStartup+0x00 : push 0 { 0x00, 0x6A }, @@ -67,7 +67,7 @@ OOVPA_XREF(WSAStartup, 3911, 11, XRefOne) // WSAStartup+0x07 : call [XnInit] - XREF_ENTRY( 0x07, XREF_XNINIT ), + XREF_ENTRY( 0x07, XREF_XnInit ), // WSAStartup+0x01 : push 1; xor ebx, ebx { 0x01, 0x6A }, @@ -87,9 +87,10 @@ OOVPA_END; // ****************************************************************** // * XnInit // ****************************************************************** +// For only XNETS library, XNET library is different OOVPA. OOVPA_XREF(XnInit, 3911, 11, - XREF_XNINIT, + XREF_XnInit, XRefZero) // XnInit+0x31 : push 0x3554454E @@ -110,6 +111,31 @@ OOVPA_XREF(XnInit, 3911, 11, { 0xBE, 0x08 }, OOVPA_END; +// ****************************************************************** +// * XNetGetEthernetLinkStatus +// ****************************************************************** +OOVPA_NO_XREF(XNetGetEthernetLinkStatus, 3911, 14) + + { 0x00, 0x56 }, + { 0x01, 0x33 }, + { 0x02, 0xF6 }, + { 0x03, 0xB8 }, + { 0x04, 0x00 }, + { 0x05, 0x00 }, + { 0x06, 0x00 }, + { 0x07, 0x00 }, + { 0x08, 0xB9 }, + + { 0x0D, 0xBA }, + { 0x1A, 0xE8 }, + + { 0x27, 0x75 }, + { 0x2C, 0x15 }, + + { 0x3F, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * XNetGetEthernetLinkStatus // ****************************************************************** @@ -131,7 +157,7 @@ OOVPA_NO_XREF(XNetGetEthernetLinkStatus, 3911, 8) // XNetStartup+0x3F : retn { 0x3F, 0xC3 }, OOVPA_END; - +#endif // ****************************************************************** // * CXnSock::socket @@ -228,7 +254,8 @@ OOVPA_END; // ****************************************************************** // * CXnSock::send // ****************************************************************** -OOVPA_NO_XREF(send, 3911, 14) // Up to 5849 +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(send, 3911, 14) { 0x00, 0x55 }, { 0x01, 0x8B }, @@ -272,7 +299,8 @@ OOVPA_END; // ****************************************************************** // * CXnSock::recv // ****************************************************************** -OOVPA_NO_XREF(recv, 3911, 14) // Up to 5849 +//Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(recv, 3911, 14) { 0x00, 0x55 }, { 0x01, 0x8B }, diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4361.inl new file mode 100644 index 000000000..411d52f4a --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4361.inl @@ -0,0 +1,140 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XNet.1.0.4361.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XnInit +// ****************************************************************** +//Generic OOVPA as of 4361 and newer. +OOVPA_XREF(XnInit, 4361, 15, + + XREF_XnInit, + XRefZero) + + { 0x00, 0x55 }, + { 0x0F, 0xB9 }, + + { 0x14, 0xBA }, + { 0x15, 0x01 }, + { 0x16, 0x00 }, + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0x0F }, + { 0x1A, 0xB1 }, + { 0x1B, 0x11 }, + { 0x1C, 0x33 }, + //{ 0x1D, 0xF6 }, + { 0x1E, 0x3B }, + //{ 0x1F, 0xC6 }, + + { 0x23, 0xE8 }, + { 0x28, 0xEB }, + { 0x3F, 0x54 }, +OOVPA_END; + +// ****************************************************************** +// * WSAStartup +// ****************************************************************** +OOVPA_XREF(WSAStartup, 4361, 9, + + XRefNoSaveIndex, + XRefOne) + + // WSAStartup+0x0F : call [XnInit] + XREF_ENTRY( 0x14, XREF_XnInit ), + + // WSAStartup+0x00 : push [esp+0x08] + { 0x00, 0xFF }, + { 0x01, 0x74 }, + { 0x02, 0x24 }, + { 0x03, 0x08 }, + + // WSAStartup+0x04 : push [esp+0x08] + { 0x04, 0xFF }, + { 0x05, 0x74 }, + { 0x06, 0x24 }, + { 0x07, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XNetStartup +// ****************************************************************** +OOVPA_XREF(XNetStartup, 4361, 8, + + XRefNoSaveIndex, + XRefOne) + + // XNetStartup+0x0F : call [XnInit] + XREF_ENTRY( 0x10, XREF_XnInit ), + + // XNetStartup+0x00 : xor eax, eax + { 0x00, 0x33 }, + { 0x01, 0xC0 }, + + // XNetStartup+0x02 : push eax + { 0x02, 0x50 }, + + // XNetStartup+0x03 : push eax + { 0x03, 0x50 }, + + // XNetStartup+0x04 : push eax + { 0x04, 0x50 }, + + // XNetStartup+0x14 : retn 0x04 + { 0x14, 0xC2 }, + { 0x15, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version +// ****************************************************************** +// * XNetGetEthernetLinkStatus +// ****************************************************************** +OOVPA_NO_XREF(XNetGetEthernetLinkStatus, 4361, 13) + + { 0x00, 0x56 }, + { 0x01, 0x33 }, + { 0x02, 0xF6 }, + { 0x03, 0xB8 }, + { 0x04, 0x00 }, + { 0x05, 0x00 }, + { 0x06, 0x00 }, + { 0x07, 0x00 }, + { 0x08, 0xB9 }, + + { 0x0D, 0xBA }, + { 0x1A, 0xE8 }, + + { 0x27, 0x75 }, + { 0x2C, 0x15 }, +OOVPA_END; +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl index 5fbbf58c6..cb1b9b4c9 100644 --- a/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.4627.inl @@ -32,12 +32,13 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic 4361 version // ****************************************************************** // * XnInit // ****************************************************************** OOVPA_XREF(XnInit, 4627, 18, - XREF_XNINIT, + XREF_XnInit, XRefZero) // XnInit+0x0000 : push ebp @@ -70,7 +71,8 @@ OOVPA_XREF(XnInit, 4627, 18, { 0x0204, 0x18 }, { 0x0205, 0x00 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4361 version // ****************************************************************** // * XNetStartup // ****************************************************************** @@ -80,7 +82,7 @@ OOVPA_XREF(XNetStartup, 4627, 8, XRefOne) // XNetStartup+0x0F : call [XnInit] - XREF_ENTRY( 0x10, XREF_XNINIT ), + XREF_ENTRY( 0x10, XREF_XnInit ), // XNetStartup+0x00 : xor eax, eax { 0x00, 0x33 }, @@ -99,7 +101,8 @@ OOVPA_XREF(XNetStartup, 4627, 8, { 0x14, 0xC2 }, { 0x15, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4361 version // ****************************************************************** // * WSAStartup // ****************************************************************** @@ -109,7 +112,7 @@ OOVPA_XREF(WSAStartup, 4627, 9, XRefOne) // WSAStartup+0x0F : call [XnInit] - XREF_ENTRY( 0x14, XREF_XNINIT ), + XREF_ENTRY( 0x14, XREF_XnInit ), // WSAStartup+0x00 : push [esp+0x08] { 0x00, 0xFF }, @@ -123,6 +126,7 @@ OOVPA_XREF(WSAStartup, 4627, 9, { 0x06, 0x24 }, { 0x07, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CXnSock::socket @@ -185,8 +189,9 @@ OOVPA_NO_XREF(socket, 4627, 20) { 0x012F, 0x00 }, OOVPA_END; #endif + // ****************************************************************** -// * connect +// * CXnSock::connect // ****************************************************************** OOVPA_NO_XREF(connect, 4627, 24) @@ -232,7 +237,7 @@ OOVPA_NO_XREF(connect, 4627, 24) OOVPA_END; // ****************************************************************** -// * send +// * CXnSock::send // ****************************************************************** OOVPA_NO_XREF(send, 4627, 24) @@ -278,7 +283,7 @@ OOVPA_NO_XREF(send, 4627, 24) OOVPA_END; // ****************************************************************** -// * recv +// * CXnSock::recv // ****************************************************************** OOVPA_NO_XREF(recv, 4627, 24) @@ -326,7 +331,8 @@ OOVPA_END; // ****************************************************************** // * CXnSock::ioctlsocket // ****************************************************************** -OOVPA_NO_XREF(ioctlsocket, 4627, 12) // Up to 5849 +//Generic OOVPA as of 4627 and newer. +OOVPA_NO_XREF(ioctlsocket, 4627, 12) { 0x0C, 0x99 }, { 0x1D, 0x83 }, @@ -343,6 +349,7 @@ OOVPA_NO_XREF(ioctlsocket, 4627, 12) // Up to 5849 { 0x57, 0x15 }, OOVPA_END; + #if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * ioctlsocket @@ -372,7 +379,8 @@ OOVPA_END; // ****************************************************************** // * CXnSock::bind // ****************************************************************** -OOVPA_NO_XREF(bind, 4627, 12) // Up to 5849 +//Generic OOVPA as of 4627 and newer. +OOVPA_NO_XREF(bind, 4627, 12) { 0x00, 0x56 }, { 0x1D, 0xE8 }, @@ -393,7 +401,8 @@ OOVPA_END; // ****************************************************************** // * CXnSock::listen // ****************************************************************** -OOVPA_NO_XREF(listen, 4627, 12) // Up to 5849 +//Generic OOVPA as of 4627 and newer. +OOVPA_NO_XREF(listen, 4627, 12) { 0x09, 0xBF }, { 0x1B, 0x83 }, @@ -411,14 +420,29 @@ OOVPA_NO_XREF(listen, 4627, 12) // Up to 5849 { 0x55, 0xE8 }, OOVPA_END; +// ****************************************************************** +// * XNetGetEthernetLinkStatus +// ****************************************************************** +OOVPA_NO_XREF(XNetGetEthernetLinkStatus, 4627, 8) + + { 0x08, 0x33 }, + { 0x10, 0x8A }, + { 0x19, 0x00 }, + { 0x22, 0x56 }, + { 0x2B, 0xFF }, + { 0x34, 0xF0 }, + { 0x3D, 0x24 }, + { 0x46, 0x5B }, +OOVPA_END; + // ****************************************************************** // * XNet_4627 // ****************************************************************** OOVPATable XNet_4627[] = { - REGISTER_OOVPA(XnInit, 4627, XREF), - REGISTER_OOVPA(XNetStartup, 4627, PATCH), // same as xonline 4361 - REGISTER_OOVPA(WSAStartup, 4627, PATCH), // same as xonline 4361 + REGISTER_OOVPA(XnInit, 4361, XREF), + REGISTER_OOVPA(XNetStartup, 4361, PATCH), + REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(socket, 4627, PATCH), REGISTER_OOVPA(bind, 4627, PATCH), REGISTER_OOVPA(listen, 4627, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.5120.inl b/src/CxbxKrnl/HLEDataBase/XNet.1.0.5120.inl new file mode 100644 index 000000000..e953363a1 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.5120.inl @@ -0,0 +1,55 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XNet.1.0.5120.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * CXnSock::connect +// ****************************************************************** +//Generic OOVPA as of 5120 and newer. +OOVPA_NO_XREF(connect, 5120, 12) + + { 0x00, 0x55 }, + { 0x19, 0xE8 }, + + { 0x30, 0xF0 }, + { 0x31, 0x85 }, + { 0x32, 0xF6 }, + { 0x33, 0x75 }, + { 0x34, 0x08 }, + { 0x35, 0x83 }, + { 0x36, 0xC8 }, + { 0x37, 0xFF }, + { 0x38, 0xE9 }, + + { 0x61, 0xE8 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XNet.1.0.5455.inl b/src/CxbxKrnl/HLEDataBase/XNet.1.0.5455.inl new file mode 100644 index 000000000..b0b8c0c27 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XNet.1.0.5455.inl @@ -0,0 +1,52 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XNet.1.0.5455.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * CXnSock::socket +// ****************************************************************** +//Generic OOVPA as of 5455 and newer. +OOVPA_NO_XREF(socket, 5455, 10) + + { 0x00, 0x51 }, + { 0x0A, 0xB9 }, + + { 0xB8, 0x83 }, + { 0xB9, 0xC8 }, + { 0xBA, 0xFF }, + { 0xBB, 0xEB }, + { 0xBC, 0x73 }, + { 0xBD, 0x53 }, + { 0xBE, 0xFF }, + { 0xBF, 0x15 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XNet.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/XNet.OOVPA.inl new file mode 100644 index 000000000..63f906104 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XNet.OOVPA.inl @@ -0,0 +1,86 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;; .,;; ;;;'';;' `;;; .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o oP"``"Yo _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->XNet.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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 Bostom MA 02111-1307 USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// Titles which did compiled with full library +// [revi] Title Name | Verify | Comments +//------------------------------------------------------------------- +// * [3911] Halo | 100% | None +// * [4039] Tony Hawk's Pro Skater 3 | 10/11 | Need verify non-exist function is there or not +// * [4361] MotoGP | 100% | None +// * [4721] TimeSplitters 2 | 8/11 | Need verify too +// * [5344] Stake | 10/11 | Use XNETN library. Need verify too + +// TODO: Known XNET OOVPA issue list +// * XnInit 3911 is for only XNETS library. XNET library is different one. +// * Following OOVPA revision are not verified +// * connect (4721) +// * listen (4039, 4721) +// * send (4721) +// * XNetGetEthernetLinkStatus (5344) + +#ifndef XNET_OOVPA_INL +#define XNET_OOVPA_INL + +#include "../OOVPA.h" + +#include "HLEDataBase/XNet.1.0.3911.inl" +#include "HLEDataBase/XNet.1.0.4361.inl" +#include "HLEDataBase/XNet.1.0.4627.inl" +#include "HLEDataBase/XNet.1.0.5120.inl" +#include "HLEDataBase/XNet.1.0.5455.inl" + +// ****************************************************************** +// * XNET_OOVPA +// ****************************************************************** +OOVPATable XNET_OOVPAV2[] = { + + REGISTER_OOVPAS(XnInit, XREF, 3911, 4361/*, 4627*/), // 3911 is only XNETS library, XNET library is different OOVPA. + REGISTER_OOVPAS(WSAStartup, PATCH, 3911, 4361/*, 4627*/), + REGISTER_OOVPAS(XNetStartup, PATCH, 3911, 4361/*, 4627*/), + REGISTER_OOVPAS(XNetGetEthernetLinkStatus, PATCH, 3911/*, 4361*/, 4627), + REGISTER_OOVPAS(bind, PATCH, 3911, 4627), + REGISTER_OOVPAS(connect, PATCH, 3911/*, 4627*/, 5120), + REGISTER_OOVPAS(ioctlsocket, PATCH, 3911, 4627), + REGISTER_OOVPAS(listen, PATCH, 3911, 4627), + REGISTER_OOVPAS(recv, PATCH, 3911/*, 4627*/), + REGISTER_OOVPAS(send, PATCH, 3911/*, 4627*/), + REGISTER_OOVPAS(socket, PATCH, 3911, 4627, 5455), +}; + +// ****************************************************************** +// * XNET_OOVPA_SIZE +// ****************************************************************** +uint32 XNET_OOVPA_SIZEV2 = sizeof(XNET_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4361.inl index 3a5769c8b..3ba8ac52b 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4361.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4361.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // Moved to XNet 4361 // ****************************************************************** // * XNetStartup // ****************************************************************** @@ -41,7 +42,7 @@ OOVPA_XREF(XNetStartup, 4361, 8, XRefOne) // XNetStartup+0x0F : call [XnInit] - XREF_ENTRY( 0x10, XREF_XNINIT ), + XREF_ENTRY( 0x10, XREF_XnInit ), // XNetStartup+0x00 : xor eax, eax { 0x00, 0x33 }, @@ -60,7 +61,8 @@ OOVPA_XREF(XNetStartup, 4361, 8, { 0x14, 0xC2 }, { 0x15, 0x04 }, OOVPA_END; - +#endif +#if 0 // Moved to XNet 4361 // ****************************************************************** // * WSAStartup // ****************************************************************** @@ -70,7 +72,7 @@ OOVPA_XREF(WSAStartup, 4361, 9, XRefOne) // WSAStartup+0x0F : call [XnInit] - XREF_ENTRY( 0x14, XREF_XNINIT ), + XREF_ENTRY( 0x14, XREF_XnInit ), // WSAStartup+0x00 : push [esp+0x08] { 0x00, 0xFF }, @@ -84,13 +86,14 @@ OOVPA_XREF(WSAStartup, 4361, 9, { 0x06, 0x24 }, { 0x07, 0x08 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic XNet 4361 version // ****************************************************************** // * XnInit // ****************************************************************** OOVPA_XREF(XnInit, 4361, 10, - XREF_XNINIT, + XREF_XnInit, XRefZero) // XnInit+0x03 : sub esp, 0x0214 @@ -109,6 +112,7 @@ OOVPA_XREF(XnInit, 4361, 10, { 0xBD, 0xEC }, { 0xBE, 0x01 }, OOVPA_END; +#endif #if 0 // Moved to XNet 3911 // ****************************************************************** // * CXnSock::socket @@ -205,6 +209,7 @@ OOVPA_NO_XREF(ioctlsocket, 4361, 10) { 0xC6, 0x0C }, OOVPA_END; #endif + // ****************************************************************** // * CXo::XOnlineLogon // ****************************************************************** @@ -245,6 +250,7 @@ OOVPA_XREF(XOnlineLogon, 4361, 5, { 0x0A, 0xE9 }, OOVPA_END; +#if 0 // No longer used, replaced by generic XNet 3911 version // ****************************************************************** // * XNetGetEthernetLinkStatus // ****************************************************************** @@ -266,6 +272,7 @@ OOVPA_NO_XREF(XNetGetEthernetLinkStatus, 4361, 13) { 0x27, 0x75 }, { 0x2C, 0x15 }, OOVPA_END; +#endif // ****************************************************************** // * XOnline_4361 @@ -277,7 +284,7 @@ OOVPATable XOnline_4361[] = { REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(CXo_XOnlineLogon, 4361, XREF), REGISTER_OOVPA(XOnlineLogon, 4361, PATCH), - REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4361, PATCH), + REGISTER_OOVPA(XNetGetEthernetLinkStatus, 3911, PATCH), REGISTER_OOVPA(socket, 3911, PATCH), REGISTER_OOVPA(bind, 3911, PATCH), REGISTER_OOVPA(listen, 3911, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl index 2926e231c..fe2ace301 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl @@ -32,33 +32,35 @@ // * // ****************************************************************** +#if 0 // Belongs in XNet lib // ****************************************************************** -// * XnInit -> Belongs in XNet lib +// * XnInit // ****************************************************************** -//OOVPA_XREF(XnInit, 4627, 12, -// -// XREF_XNINIT, -// XRefZero) -// -// // XnInit+0x03 : sub esp, 0x0218 -// { 0x03, 0x81 }, -// { 0x04, 0xEC }, -// { 0x05, 0x18 }, -// { 0x06, 0x02 }, -// -// // XnInit+0x19 : cmpxchg [ecx], edx -// { 0x19, 0x0F }, -// { 0x1A, 0xB1 }, -// { 0x1B, 0x11 }, -// -// // XnInit+0x3C : push 0x4454454E -// { 0x3C, 0x68 }, -// { 0x3D, 0x4E }, -// { 0x3E, 0x45 }, -// { 0x3F, 0x54 }, -// { 0x40, 0x44 }, -//OOVPA_END; +OOVPA_XREF(XnInit, 4627, 12, + XREF_XnInit, + XRefZero) + + XnInit+0x03 : sub esp, 0x0218 + { 0x03, 0x81 }, + { 0x04, 0xEC }, + { 0x05, 0x18 }, + { 0x06, 0x02 }, + + XnInit+0x19 : cmpxchg [ecx], edx + { 0x19, 0x0F }, + { 0x1A, 0xB1 }, + { 0x1B, 0x11 }, + + XnInit+0x3C : push 0x4454454E + { 0x3C, 0x68 }, + { 0x3D, 0x4E }, + { 0x3E, 0x45 }, + { 0x3F, 0x54 }, + { 0x40, 0x44 }, +OOVPA_END; +#endif +#if 0 // Moved to XNet 4627 // ****************************************************************** // * XNetGetEthernetLinkStatus // ****************************************************************** @@ -73,6 +75,7 @@ OOVPA_NO_XREF(XNetGetEthernetLinkStatus, 4627, 8) { 0x3D, 0x24 }, { 0x46, 0x5B }, OOVPA_END; +#endif // ****************************************************************** // * XoUpdateLaunchNewImageInternal @@ -96,7 +99,8 @@ OOVPA_XREF(XoUpdateLaunchNewImageInternal, 4627, 11, { 0x65, 0xE8 }, OOVPA_END; -/* + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * XoUpdateLaunchNewImageInternal // ****************************************************************** @@ -114,7 +118,8 @@ OOVPA_XREF(XoUpdateLaunchNewImageInternal, 4627, 8, { 0xDE, 0xE8 }, { 0xFE, 0x15 }, OOVPA_END; -*/ +#endif + // ****************************************************************** // * CXo::XOnlineLogon // ****************************************************************** @@ -145,7 +150,7 @@ OOVPA_END; // ****************************************************************** OOVPATable XOnline_4627[] ={ - REGISTER_OOVPA(XnInit, 4627, XREF), + REGISTER_OOVPA(XnInit, 4361, XREF), REGISTER_OOVPA(XNetStartup, 4361, PATCH), REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(socket, 4627, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4831.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4831.inl new file mode 100644 index 000000000..034b7dd44 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.4831.inl @@ -0,0 +1,60 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XOnline.1.0.4831.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * CXo::XOnlineLogon +// ****************************************************************** +OOVPA_XREF(CXo_XOnlineLogon, 4831, 15, + + XREF_CXo_XOnlineLogon, + XRefZero) + + { 0x02, 0xEC }, + + { 0x15, 0x00 }, + { 0x1C, 0xE8 }, + + { 0x21, 0xA8 }, + { 0x22, 0x01 }, + { 0x23, 0x75 }, + { 0x24, 0x0C }, + { 0x25, 0xC7 }, + { 0x26, 0x45 }, + { 0x27, 0xF8 }, + { 0x28, 0x00 }, + { 0x29, 0x10 }, + { 0x2A, 0x15 }, + { 0x2B, 0x80 }, + { 0x2C, 0xE9 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.inl index 21d604a45..56fef6b74 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.inl @@ -64,7 +64,7 @@ OOVPA_END; // ****************************************************************** OOVPATable XOnline_5028[] ={ - REGISTER_OOVPA(XnInit, 4627, XREF), + REGISTER_OOVPA(XnInit, 4361, XREF), REGISTER_OOVPA(XNetStartup, 4361, PATCH), REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(socket, 4627, PATCH), @@ -76,7 +76,7 @@ OOVPATable XOnline_5028[] ={ REGISTER_OOVPA(recv, 3911, PATCH), REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH), REGISTER_OOVPA(XoUpdateLaunchNewImageInternal, 4627, XREF), - REGISTER_OOVPA(CXo_XOnlineLogon, 5028, XREF), + REGISTER_OOVPA(CXo_XOnlineLogon, 4831, XREF), REGISTER_OOVPA(XOnlineLogon, 4361, PATCH), }; diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.inl index 84758672e..68b465b03 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic XNet 4361 version // ****************************************************************** // * XNetStartup // ****************************************************************** @@ -46,6 +47,7 @@ OOVPA_NO_XREF(XNetStartup, 5233, 8) { 0x15, 0x04 }, { 0x16, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * CXo::XOnlineLogon @@ -64,6 +66,7 @@ OOVPA_XREF(CXo_XOnlineLogon, 5233, 8, { 0xDE, 0xF9 }, { 0xFE, 0x33 }, OOVPA_END; + #if 0 // No longer used, replaced by generic 4361 version // ****************************************************************** // * XOnlineLogon @@ -84,6 +87,7 @@ OOVPA_XREF(XOnlineLogon, 5233, 8, { 0x0A, 0xE9 }, OOVPA_END; #endif +#if 0 // Moved to XNet 5120 // ****************************************************************** // * CXnSock::connect // ****************************************************************** @@ -104,20 +108,21 @@ OOVPA_NO_XREF(connect, 5233, 12) // Up to 5849 { 0x61, 0xE8 }, OOVPA_END; +#endif // ****************************************************************** // * XOnline_5233 // ****************************************************************** OOVPATable XOnline_5233[] = { - REGISTER_OOVPA(XnInit, 4627, XREF), - REGISTER_OOVPA(XNetStartup, 5233, PATCH), + REGISTER_OOVPA(XnInit, 4361, XREF), + REGISTER_OOVPA(XNetStartup, 4361, PATCH), REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(socket, 4627, PATCH), REGISTER_OOVPA(bind, 4627, PATCH), REGISTER_OOVPA(listen, 4627, PATCH), REGISTER_OOVPA(ioctlsocket, 4627, PATCH), - REGISTER_OOVPA(connect, 5233, PATCH), + REGISTER_OOVPA(connect, 5120, PATCH), REGISTER_OOVPA(send, 3911, PATCH), REGISTER_OOVPA(recv, 3911, PATCH), REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5344.inl index e49350e9e..dd8357d9a 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5344.inl @@ -37,14 +37,14 @@ // ****************************************************************** OOVPATable XOnline_5344[] = { - REGISTER_OOVPA(XnInit, 4627, XREF), - REGISTER_OOVPA(XNetStartup, 5233, PATCH), + REGISTER_OOVPA(XnInit, 4361, XREF), + REGISTER_OOVPA(XNetStartup, 4361, PATCH), REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(socket, 4627, PATCH), REGISTER_OOVPA(bind, 4627, PATCH), REGISTER_OOVPA(listen, 4627, PATCH), REGISTER_OOVPA(ioctlsocket, 4627, PATCH), - REGISTER_OOVPA(connect, 5233, PATCH), + REGISTER_OOVPA(connect, 5120, PATCH), REGISTER_OOVPA(send, 3911, PATCH), REGISTER_OOVPA(recv, 3911, PATCH), REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5455.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5455.inl new file mode 100644 index 000000000..3b559a076 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5455.inl @@ -0,0 +1,58 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XOnline.1.0.5455.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * CXo::XOnlineLogon +// ****************************************************************** +OOVPA_XREF(CXo_XOnlineLogon, 5455, 14, + + XREF_CXo_XOnlineLogon, + XRefZero) + + { 0x02, 0xEC }, + { 0x15, 0xE9 }, + + { 0x23, 0xA8 }, + { 0x24, 0x01 }, + { 0x25, 0x75 }, + { 0x26, 0x0C }, + { 0x27, 0xC7 }, + { 0x28, 0x45 }, + { 0x29, 0x10 }, + { 0x2A, 0x00 }, + { 0x2B, 0x10 }, + { 0x2C, 0x15 }, + { 0x2D, 0x80 }, + { 0x2E, 0xE9 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5558.inl index 1fb1d3513..7e41decfc 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5558.inl @@ -59,6 +59,7 @@ OOVPA_XREF(CXo_XOnlineLogon, 5558, 14, { 0x32, 0xE9 }, OOVPA_END; +#if 0 // No longer used, replaced by generic XNet 4361 version // ****************************************************************** // * WSAStartup // ****************************************************************** @@ -72,7 +73,8 @@ OOVPA_NO_XREF(WSAStartup, 5558, 7) { 0x18, 0xC2 }, { 0x1A, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to XNet 5455 // ****************************************************************** // * CXnSock::socket // ****************************************************************** @@ -90,7 +92,7 @@ OOVPA_NO_XREF(socket, 5558, 10) // Up to 5849 { 0xBE, 0xFF }, { 0xBF, 0x15 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4361 version // ****************************************************************** // * XOnlineLogon @@ -119,19 +121,19 @@ OOVPA_END; // ****************************************************************** OOVPATable XOnline_5558[] = { - REGISTER_OOVPA(XnInit, 4627, XREF), - REGISTER_OOVPA(XNetStartup, 5233, PATCH), - REGISTER_OOVPA(WSAStartup, 5558, PATCH), - REGISTER_OOVPA(socket, 5558, PATCH), + REGISTER_OOVPA(XnInit, 4361, XREF), + REGISTER_OOVPA(XNetStartup, 4361, PATCH), + REGISTER_OOVPA(WSAStartup, 4361, PATCH), + REGISTER_OOVPA(socket, 5455, PATCH), REGISTER_OOVPA(bind, 4627, PATCH), REGISTER_OOVPA(listen, 4627, PATCH), REGISTER_OOVPA(ioctlsocket, 4627, PATCH), - REGISTER_OOVPA(connect, 5233, PATCH), + REGISTER_OOVPA(connect, 5120, PATCH), REGISTER_OOVPA(send, 3911, PATCH), REGISTER_OOVPA(recv, 3911, PATCH), REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH), REGISTER_OOVPA(XoUpdateLaunchNewImageInternal, 4627, XREF), - REGISTER_OOVPA(CXo_XOnlineLogon, 5558, XREF), + REGISTER_OOVPA(CXo_XOnlineLogon, 5455, XREF), REGISTER_OOVPA(XOnlineLogon, 4361, PATCH), }; diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5659.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5659.inl new file mode 100644 index 000000000..a400022a1 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5659.inl @@ -0,0 +1,56 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XOnline.1.0.5659.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XoUpdateLaunchNewImageInternal +// ****************************************************************** +OOVPA_XREF(XoUpdateLaunchNewImageInternal, 5659, 11, + + XREF_XoUpdateLaunchNewImageInternal, + XRefZero) + + { 0x00, 0x55 }, + { 0x03, 0x81 }, + + { 0x6C, 0xEB }, + { 0x6D, 0x04 }, + { 0x6E, 0x83 }, + { 0x6F, 0x63 }, + { 0x70, 0x10 }, + { 0x71, 0x00 }, + { 0x72, 0xF6 }, + { 0x73, 0x45 }, + + { 0x79, 0xE8 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5788.inl index 9a2186193..af43a697c 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5788.inl @@ -32,12 +32,13 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic XNet 4361 version // ****************************************************************** // * XnInit // ****************************************************************** OOVPA_XREF(XnInit, 5788, 8, - XREF_XNINIT, + XREF_XnInit, XRefZero) { 0x1E, 0x3B }, @@ -49,6 +50,7 @@ OOVPA_XREF(XnInit, 5788, 8, { 0xDE, 0xFE }, { 0xFE, 0x48 }, OOVPA_END; +#endif // ****************************************************************** // * XoUpdateLaunchNewImageInternal @@ -82,19 +84,19 @@ OOVPA_END; // ****************************************************************** OOVPATable XOnline_5788[] = { - REGISTER_OOVPA(XnInit, 5788, XREF), - REGISTER_OOVPA(XNetStartup, 5233, PATCH), - REGISTER_OOVPA(WSAStartup, 5558, PATCH), + REGISTER_OOVPA(XnInit, 4361, XREF), + REGISTER_OOVPA(XNetStartup, 4361, PATCH), + REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH), - REGISTER_OOVPA(socket, 5558, PATCH), + REGISTER_OOVPA(socket, 5455, PATCH), REGISTER_OOVPA(bind, 4627, PATCH), REGISTER_OOVPA(listen, 4627, PATCH), REGISTER_OOVPA(ioctlsocket, 4627, PATCH), - REGISTER_OOVPA(connect, 5233, PATCH), + REGISTER_OOVPA(connect, 5120, PATCH), REGISTER_OOVPA(send, 3911, PATCH), REGISTER_OOVPA(recv, 3911, PATCH), REGISTER_OOVPA(XoUpdateLaunchNewImageInternal, 5788, XREF), - REGISTER_OOVPA(CXo_XOnlineLogon, 5558, XREF), + REGISTER_OOVPA(CXo_XOnlineLogon, 5455, XREF), REGISTER_OOVPA(XOnlineLogon, 4361, PATCH), }; diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5849.inl index c96b6573f..e979acf4e 100644 --- a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5849.inl @@ -32,7 +32,6 @@ // * // ****************************************************************** - // ****************************************************************** // * CXo::XOnlineLogon // ****************************************************************** @@ -65,16 +64,16 @@ OOVPA_END; // ****************************************************************** OOVPATable XOnline_5849[] = { - REGISTER_OOVPA(XnInit, 5788, XREF), - REGISTER_OOVPA(XNetStartup, 5233, PATCH), - REGISTER_OOVPA(WSAStartup, 5558, PATCH), + REGISTER_OOVPA(XnInit, 4361, XREF), + REGISTER_OOVPA(XNetStartup, 4361, PATCH), + REGISTER_OOVPA(WSAStartup, 4361, PATCH), REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH), REGISTER_OOVPA(XoUpdateLaunchNewImageInternal, 5788, XREF), - REGISTER_OOVPA(socket, 5558, PATCH), + REGISTER_OOVPA(socket, 5455, PATCH), REGISTER_OOVPA(bind, 4627, PATCH), REGISTER_OOVPA(listen, 4627, PATCH), REGISTER_OOVPA(ioctlsocket, 4627, PATCH), - REGISTER_OOVPA(connect, 5233, PATCH), + REGISTER_OOVPA(connect, 5120, PATCH), REGISTER_OOVPA(send, 3911, PATCH), REGISTER_OOVPA(recv, 3911, PATCH), REGISTER_OOVPA(CXo_XOnlineLogon, 5849, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/XOnline.OOVPA.inl new file mode 100644 index 000000000..bbebf1c69 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XOnline.OOVPA.inl @@ -0,0 +1,102 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;; .,;; ;;;'';;' `;;; .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o oP"``"Yo _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->XOnline.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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 Bostom MA 02111-1307 USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// Titles which did compiled with full library +// [revi] Title Name | Verify | Comments +//------------------------------------------------------------------- +// * [4831] NBA2K3 | 100% | None +// * [4928] Unreal Championship | 100% | None +// * [5028] Capcom vs. SNK 2 EO | 100% | None +// * [5120] Muzzle Flash | 11/14 | Need verify non-exist function is there or not +// * [5233] MotoGP 2 | 11/14 | Need verify non-exist function is there or not +// * [5344] Burnout 2 | 11/14 | Check the Dxbx Patterns +// * [5455] Ghost Recon Island Thunder | 100% | None +// * [5558] XIII | 100% | None +// * [5659] Plus Plum 2 | 100% | None +// * [5788] All-Star Baseball '05 | 100% | None +// * [5849] Kingdom Under Fire: The Crusaders | 100% | None + +// TODO: Known XOnlines OOVPA issue list +// * Following OOVPA revision are not verified +// * listen (5120, 5233) +// * recv (5120, 5233) +// * send (5120, 5233) + +#ifndef XONLINES_OOVPA_INL +#define XONLINES_OOVPA_INL + +#include "../OOVPA.h" + +#include "HLEDataBase/XOnline.1.0.4361.inl" +#include "HLEDataBase/XOnline.1.0.4627.inl" +#include "HLEDataBase/XOnline.1.0.4831.inl" +#include "HLEDataBase/XOnline.1.0.5028.inl" +#include "HLEDataBase/XOnline.1.0.5233.inl" +#include "HLEDataBase/XOnline.1.0.5344.inl" +#include "HLEDataBase/XOnline.1.0.5455.inl" +#include "HLEDataBase/XOnline.1.0.5558.inl" +#include "HLEDataBase/XOnline.1.0.5659.inl" +#include "HLEDataBase/XOnline.1.0.5788.inl" +#include "HLEDataBase/XOnline.1.0.5849.inl" + +// ****************************************************************** +// * XONLINES_OOVPA +// ****************************************************************** +OOVPATable XONLINES_OOVPAV2[] = { + + // XOnline section + REGISTER_OOVPAS(CXo_XOnlineLogon, XREF, 4361, 4627, 4831/*, 5028*/, 5233, 5455, 5558, 5849), + REGISTER_OOVPAS(XOnlineLogon, PATCH, 4361), + REGISTER_OOVPAS(XoUpdateLaunchNewImageInternal, XREF, 4627, 5659, 5788), + + // XNet section + REGISTER_OOVPAS(XnInit, XREF, 4361/*, 4627, 5788*/), + REGISTER_OOVPAS(WSAStartup, PATCH, 4361/*, 5558*/), + REGISTER_OOVPAS(XNetStartup, PATCH, 4361/*, 5233*/), + REGISTER_OOVPAS(XNetGetEthernetLinkStatus, PATCH, 3911/*, 4361*/, 4627), //NOTE: Found in .text section, confirmed it is correct. + REGISTER_OOVPAS(bind, PATCH, 3911, 4627), + REGISTER_OOVPAS(connect, PATCH, 3911, 5120/*, 5233*/), + REGISTER_OOVPAS(ioctlsocket, PATCH, 3911, 4627), + REGISTER_OOVPAS(listen, PATCH, 3911, 4627), + REGISTER_OOVPAS(recv, PATCH, 3911), + REGISTER_OOVPAS(send, PATCH, 3911), + REGISTER_OOVPAS(socket, PATCH, 3911, 4627, 5455/*, 5558*/), +}; + +// ****************************************************************** +// * XONLINES_OOVPA_SIZE +// ****************************************************************** +uint32 XONLINES_OOVPA_SIZEV2 = sizeof(XONLINES_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4627.inl index 66cc9e291..ad858123e 100644 --- a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4627.inl @@ -57,31 +57,6 @@ OOVPA_NO_XREF(XACTEngineCreate, 4627, 11) { 0x9B, 0x08 }, OOVPA_END; -// ****************************************************************** -// * XACTEngineCreate -// ****************************************************************** -OOVPA_NO_XREF(XACTEngineCreate, 4928, 11) - - // XACTEngineCreate+0x09 : movzx ebx, al - { 0x09, 0x0F }, - { 0x0A, 0xB6 }, - { 0x0B, 0xD8 }, - - // XACTEngineCreate+0x2B : push edi - { 0x2B, 0x57 }, - - // XACTEngineCreate+0x2C : push 0x120 - { 0x2C, 0x68 }, - { 0x2D, 0x20 }, - { 0x2E, 0x01 }, - { 0x2F, 0x00 }, - { 0x30, 0x00 }, - - // XACTEngineCreate+0x9E : retn 0x8 - { 0x9E, 0xC2 }, - { 0x9F, 0x08 }, -OOVPA_END; - // ****************************************************************** // * XACT::CEngine::RegisterWaveBank // ****************************************************************** @@ -150,33 +125,6 @@ OOVPA_XREF(XACT_CEngine_RegisterStreamedWaveBank, 4627, 8, { 0x8E, 0x0C }, OOVPA_END; -// ****************************************************************** -// * XACT::CEngine::RegisterStreamedWaveBank -// ****************************************************************** -OOVPA_XREF(XACT_CEngine_RegisterStreamedWaveBank, 4928, 13, - - XREF_XACT_CEngine_RegisterStreamedWaveBank, - XRefZero) - - // XACT_CEngine_RegisterStreamedWaveBank+0x07 : push 0x7C - { 0x07, 0x6A }, - { 0x08, 0x7C }, - // XACT_CEngine_RegisterStreamedWaveBank+0x30 : add esi, 0x8007000E - { 0x30, 0x81 }, - { 0x31, 0xC7 }, - { 0x32, 0x0E }, - { 0x33, 0x00 }, - { 0x34, 0x07 }, - { 0x35, 0x80 }, - // XACT_CEngine_RegisterStreamedWaveBank+0x50 : add ecx, 0x44 - { 0x50, 0x83 }, - { 0x51, 0xC1 }, - { 0x52, 0x44 }, - // XACT_CEngine_RegisterStreamedWaveBank+0x71 : retn 0x0C - { 0x71, 0xC2 }, - { 0x72, 0x0C }, -OOVPA_END; - // ****************************************************************** // * IXACTEngine_RegisterStreamedWaveBank // ****************************************************************** @@ -197,31 +145,6 @@ OOVPA_XREF(IXACTEngine_RegisterStreamedWaveBank, 4627, 9, { 0x1E, 0x0C }, OOVPA_END; -// ****************************************************************** -// * IXACTEngine_RegisterStreamedWaveBank -// ****************************************************************** -OOVPA_XREF(IXACTEngine_RegisterStreamedWaveBank, 4928, 10, - - XRefNoSaveIndex, - XRefOne) - - // IXACTEngine_RegisterStreamedWaveBank+0x22 : call XACT::CEngine::RegisterStreamedWaveBank - XREF_ENTRY( 0x23, XREF_XACT_CEngine_RegisterStreamedWaveBank ), - - // IXACTEngine_RegisterStreamedWaveBank+0x0B : movzx esi, al - { 0x0B, 0x0F }, - { 0x0C, 0xB6 }, - { 0x0D, 0xF0 }, - // IXACTEngine_RegisterStreamedWaveBank+0x0E : mov eax, [esp+0x0C+4] - { 0x0E, 0x8B }, - { 0x0F, 0x44 }, - { 0x10, 0x24 }, - { 0x11, 0x10 }, - // IXACTEngine_RegisterStreamedWaveBank+0x3C : retn 0x0C - { 0x3C, 0xC2 }, - { 0x3D, 0x0C }, -OOVPA_END; - // ****************************************************************** // * XACT::CEngine::CreateSoundBank // ****************************************************************** @@ -240,32 +163,6 @@ OOVPA_XREF(XACT_CEngine_CreateSoundBank, 4627, 8, { 0x7E, 0x10 }, OOVPA_END; -// ****************************************************************** -// * XACT::CEngine::CreateSoundBank -// ****************************************************************** -OOVPA_XREF(XACT_CEngine_CreateSoundBank, 4928, 13, - - XREF_XACT_CEngine_CreateSoundBank, - XRefZero) - // XACT::CEngine::CreateSoundBank+0x02 : push 0x34 - { 0x02, 0x6A }, - { 0x03, 0x34 }, - // XACT::CEngine::CreateSoundBank+0x2B : add edi, 0x8007000E - { 0x2B, 0x81 }, - { 0x2C, 0xC7 }, - { 0x2D, 0x0E }, - { 0x2E, 0x00 }, - { 0x2F, 0x07 }, - { 0x30, 0x80 }, - // XACT::CEngine::CreateSoundBank+0x4F : add ecx, 0x4C - { 0x4F, 0x83 }, - { 0x50, 0xC1 }, - { 0x51, 0x4C }, - // XACT::CEngine::CreateSoundBank+0x73 : retn 0x10 - { 0x73, 0xC2 }, - { 0x74, 0x10 }, -OOVPA_END; - // ****************************************************************** // * IXACTEngine_CreateSoundBank // ****************************************************************** @@ -285,30 +182,6 @@ OOVPA_XREF(IXACTEngine_CreateSoundBank, 4627, 8, { 0x21, 0xC2 }, OOVPA_END; -// ****************************************************************** -// * IXACTEngine_CreateSoundBank -// ****************************************************************** -OOVPA_XREF(IXACTEngine_CreateSoundBank, 4928, 10, - - XRefNoSaveIndex, - XRefOne) - - XREF_ENTRY( 0x27, XREF_XACT_CEngine_CreateSoundBank ), - - // IXACTEngine_CreateSoundBank+0x07 : push [ebp+8+0x10] - { 0x07, 0xFF }, - { 0x08, 0x74 }, - { 0x09, 0x24 }, - { 0x0A, 0x18 }, - // IXACTEngine_CreateSoundBank+0x0B : movzx esi, al - { 0x0B, 0x0F }, - { 0x0C, 0xB6 }, - { 0x0D, 0xF0 }, - // IXACTEngine_CreateSoundBank+0x40 : retn 0x10 - { 0x40, 0xC2 }, - { 0x41, 0x10 }, -OOVPA_END; - // ****************************************************************** // * XACT::CEngine::DownloadEffectsImage // ****************************************************************** @@ -524,28 +397,6 @@ OOVPA_XREF(XACT_CEngine_UnRegisterWaveBank, 4627, 8, { 0x46, 0x08 }, OOVPA_END; -// ****************************************************************** -// * XACT::CEngine::UnRegisterWaveBank -// ****************************************************************** -OOVPA_XREF(XACT_CEngine_UnRegisterWaveBank, 4928, 8, - - XREF_XACT_CEngine_UnRegisterWaveBank, - XRefZero) - - // XACT_CEngine_UnRegisterWaveBank+0x06 : lea eax, [ecx+0x58] - { 0x06, 0x8D }, - { 0x07, 0x41 }, - { 0x08, 0x58 }, - // XACT_CEngine_UnRegisterWaveBank+0x28 : lea edi, [ebx+0x4C] - { 0x28, 0x8D }, - { 0x29, 0x7B }, - { 0x2A, 0x4C }, - // XACT_CEngine_UnRegisterWaveBank+0xBF : retn 0x8 - { 0xBF, 0xC2 }, - { 0xC0, 0x08 }, -OOVPA_END; - - // ****************************************************************** // * IXACTEngine_UnRegisterWaveBank // ****************************************************************** @@ -565,44 +416,19 @@ OOVPA_XREF(IXACTEngine_UnRegisterWaveBank, 4627, 8, { 0x1A, 0x08 }, OOVPA_END; -// ****************************************************************** -// * IXACTEngine_UnRegisterWaveBank -// ****************************************************************** -OOVPA_XREF(IXACTEngine_UnRegisterWaveBank, 4928, 8, - - XRefNoSaveIndex, - XRefOne) - - // IXACTEngine_UnRegisterWaveBank+0x1E : call XACT::CEngine::UnRegisterWaveBank - XREF_ENTRY( 0x1F, XREF_XACT_CEngine_UnRegisterWaveBank ), - - { 0x07, 0xFF }, - { 0x0E, 0x8B }, - { 0x16, 0xF8 }, - { 0x1E, 0xE8 }, - { 0x26, 0xF8 }, - { 0x2E, 0xFF }, - { 0x36, 0x5F }, -OOVPA_END; - // ****************************************************************** // * XactEng_4627 // ****************************************************************** OOVPATable XactEng_4627[] = { REGISTER_OOVPA(XACTEngineCreate, 4627, PATCH), - REGISTER_OOVPA(XACTEngineCreate, 4928, PATCH), REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 4627, XREF), REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 4627, PATCH), REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 4627, XREF), - REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 4928, XREF), REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4627, PATCH), - REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4627, XREF), - REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4627, PATCH), - REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 4627, XREF), REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 4627, PATCH), REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4627, XREF), @@ -615,9 +441,7 @@ OOVPATable XactEng_4627[] = { REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), REGISTER_OOVPA(IXACTEngine_GetNotification, 4627, PATCH), REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 4627, XREF), - REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 4928, XREF), REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4627, PATCH), - REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4928.h b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4928.h new file mode 100644 index 000000000..53ccca85f --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4928.h @@ -0,0 +1,42 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.4928.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XACTENG_4928_H +#define XACTENG_4928_H + +#include "OOVPA.h" + +extern OOVPATable XactEng_4928[]; +extern uint32 XactEng_4928_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4928.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4928.inl new file mode 100644 index 000000000..c32c613e2 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.4928.inl @@ -0,0 +1,415 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.4928.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XACTEngineCreate +// ****************************************************************** +OOVPA_NO_XREF(XACTEngineCreate, 4928, 11) + + // XACTEngineCreate+0x09 : movzx ebx, al + { 0x09, 0x0F }, + { 0x0A, 0xB6 }, + { 0x0B, 0xD8 }, + + // XACTEngineCreate+0x2B : push edi + { 0x2B, 0x57 }, + + // XACTEngineCreate+0x2C : push 0x120 + { 0x2C, 0x68 }, + { 0x2D, 0x20 }, + { 0x2E, 0x01 }, + { 0x2F, 0x00 }, + { 0x30, 0x00 }, + + // XACTEngineCreate+0x9E : retn 0x8 + { 0x9E, 0xC2 }, + { 0x9F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CEngine::RegisterStreamedWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_RegisterStreamedWaveBank, 4928, 11, + + XREF_XACT_CEngine_RegisterStreamedWaveBank, + XRefZero) + + { 0x04, 0x10 }, //RegisterStreamedWaveBank 0x10 vs RegisterWaveBank 0x14 + { 0x22, 0x8B }, + + { 0x37, 0x2E }, //RegisterStreamedWaveBank 0x2E vs RegisterWaveBank 0x32 + { 0x38, 0xFF }, + { 0x39, 0x74 }, + { 0x3A, 0x24 }, + { 0x3B, 0x14 }, + { 0x3C, 0x8B }, + { 0x3D, 0xCE }, + { 0x3E, 0xE8 }, + + { 0x64, 0xEB }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 4928 version +// ****************************************************************** +// * XACT::CEngine::RegisterStreamedWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_RegisterStreamedWaveBank, 4928, 13, + + XREF_XACT_CEngine_RegisterStreamedWaveBank, + XRefZero) + + // XACT_CEngine_RegisterStreamedWaveBank+0x07 : push 0x7C + { 0x07, 0x6A }, + { 0x08, 0x7C }, + // XACT_CEngine_RegisterStreamedWaveBank+0x30 : add esi, 0x8007000E + { 0x30, 0x81 }, + { 0x31, 0xC7 }, + { 0x32, 0x0E }, + { 0x33, 0x00 }, + { 0x34, 0x07 }, + { 0x35, 0x80 }, + // XACT_CEngine_RegisterStreamedWaveBank+0x50 : add ecx, 0x44 + { 0x50, 0x83 }, + { 0x51, 0xC1 }, + { 0x52, 0x44 }, + // XACT_CEngine_RegisterStreamedWaveBank+0x71 : retn 0x0C + { 0x71, 0xC2 }, + { 0x72, 0x0C }, +OOVPA_END; +#endif + +// ****************************************************************** +// * IXACTEngine_RegisterStreamedWaveBank +// ****************************************************************** +OOVPA_XREF(IXACTEngine_RegisterStreamedWaveBank, 4928, 10, + + XRefNoSaveIndex, + XRefOne) + + // IXACTEngine_RegisterStreamedWaveBank+0x22 : call XACT::CEngine::RegisterStreamedWaveBank + XREF_ENTRY( 0x23, XREF_XACT_CEngine_RegisterStreamedWaveBank ), + + // IXACTEngine_RegisterStreamedWaveBank+0x0B : movzx esi, al + { 0x0B, 0x0F }, + { 0x0C, 0xB6 }, + { 0x0D, 0xF0 }, + // IXACTEngine_RegisterStreamedWaveBank+0x0E : mov eax, [esp+0x0C+4] + { 0x0E, 0x8B }, + { 0x0F, 0x44 }, + { 0x10, 0x24 }, + { 0x11, 0x10 }, + // IXACTEngine_RegisterStreamedWaveBank+0x3C : retn 0x0C + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CEngine::CreateSoundBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_CreateSoundBank, 4928, 11, + + XREF_XACT_CEngine_CreateSoundBank, + XRefZero) + + { 0x0E, 0x85 }, + { 0x1F, 0x8B }, + { 0x42, 0x8B }, + + { 0x50, 0xC1 }, + { 0x51, 0x4C }, + { 0x52, 0x89 }, + { 0x53, 0x08 }, + { 0x54, 0x8B }, + { 0x55, 0x49 }, + { 0x56, 0x04 }, + { 0x57, 0x89 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 4928 version +// ****************************************************************** +// * XACT::CEngine::CreateSoundBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_CreateSoundBank, 4928, 13, + + XREF_XACT_CEngine_CreateSoundBank, + XRefZero) + // XACT::CEngine::CreateSoundBank+0x02 : push 0x34 + { 0x02, 0x6A }, + { 0x03, 0x34 }, + // XACT::CEngine::CreateSoundBank+0x2B : add edi, 0x8007000E + { 0x2B, 0x81 }, + { 0x2C, 0xC7 }, + { 0x2D, 0x0E }, + { 0x2E, 0x00 }, + { 0x2F, 0x07 }, + { 0x30, 0x80 }, + // XACT::CEngine::CreateSoundBank+0x4F : add ecx, 0x4C + { 0x4F, 0x83 }, + { 0x50, 0xC1 }, + { 0x51, 0x4C }, + // XACT::CEngine::CreateSoundBank+0x73 : retn 0x10 + { 0x73, 0xC2 }, + { 0x74, 0x10 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * IXACTEngine_CreateSoundBank +// ****************************************************************** +OOVPA_XREF(IXACTEngine_CreateSoundBank, 4928, 10, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x27, XREF_XACT_CEngine_CreateSoundBank ), + + // IXACTEngine_CreateSoundBank+0x07 : push [ebp+8+0x10] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x18 }, + // IXACTEngine_CreateSoundBank+0x0B : movzx esi, al + { 0x0B, 0x0F }, + { 0x0C, 0xB6 }, + { 0x0D, 0xF0 }, + // IXACTEngine_CreateSoundBank+0x40 : retn 0x10 + { 0x40, 0xC2 }, + { 0x41, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CEngine::UnRegisterWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_UnRegisterWaveBank, 4928, 8, + + XREF_XACT_CEngine_UnRegisterWaveBank, + XRefZero) + + // XACT_CEngine_UnRegisterWaveBank+0x06 : lea eax, [ecx+0x58] + { 0x06, 0x8D }, + { 0x07, 0x41 }, + { 0x08, 0x58 }, + // XACT_CEngine_UnRegisterWaveBank+0x28 : lea edi, [ebx+0x4C] + { 0x28, 0x8D }, + { 0x29, 0x7B }, + { 0x2A, 0x4C }, + // XACT_CEngine_UnRegisterWaveBank+0xBF : retn 0x8 + { 0xBF, 0xC2 }, + { 0xC0, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IXACTEngine_UnRegisterWaveBank +// ****************************************************************** +OOVPA_XREF(IXACTEngine_UnRegisterWaveBank, 4928, 8, + + XRefNoSaveIndex, + XRefOne) + + // IXACTEngine_UnRegisterWaveBank+0x1E : call XACT::CEngine::UnRegisterWaveBank + XREF_ENTRY( 0x1F, XREF_XACT_CEngine_UnRegisterWaveBank ), + + { 0x07, 0xFF }, + { 0x0E, 0x8B }, + { 0x16, 0xF8 }, + { 0x1E, 0xE8 }, + { 0x26, 0xF8 }, + { 0x2E, 0xFF }, + { 0x36, 0x5F }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CEngine::CreateSoundSource +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_CreateSoundSource, 4928, 11, + + XREF_XACT_CEngine_CreateSoundSource, + XRefZero) + + { 0x0A, 0x8B }, + { 0x15, 0xE8 }, + + { 0x2C, 0x05 }, + { 0x2D, 0x8B }, + { 0x2E, 0x4D }, + { 0x2F, 0x10 }, + { 0x30, 0x89 }, + { 0x31, 0x31 }, + { 0x32, 0x5E }, + { 0x33, 0x5D }, + { 0x34, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * IXACTEngine_CreateSoundSource +// ****************************************************************** +OOVPA_XREF(IXACTEngine_CreateSoundSource, 4928, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x23, XREF_XACT_CEngine_CreateSoundSource ), + + { 0x02, 0xE8 }, + { 0x09, 0x24 }, + { 0x12, 0xFF }, + { 0x18, 0x83 }, + { 0x1C, 0xD9 }, + { 0x20, 0xC8 }, + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IXACTEngine_GetNotification +// ****************************************************************** +OOVPA_XREF(IXACTEngine_GetNotification, 4928, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x23, XREF_XACT_CEngine_GetNotification ), + + { 0x02, 0xE8 }, + { 0x09, 0x24 }, + { 0x12, 0xFF }, + { 0x18, 0x83 }, + { 0x1C, 0xD9 }, + { 0x20, 0xC8 }, + { 0x3C, 0xC2 }, + { 0x3D, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CSoundBank::GetSoundCueIndexFromFriendlyName +// ****************************************************************** +OOVPA_XREF(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, 13, + + XREF_XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, + XRefZero) + + { 0x03, 0x51 }, + { 0x1F, 0x80 }, + + { 0x30, 0x8D }, + { 0x31, 0x3C }, + { 0x32, 0xC1 }, + { 0x33, 0x85 }, + { 0x34, 0xFF }, + { 0x35, 0x74 }, + { 0x36, 0x4D }, + { 0x37, 0x53 }, + { 0x38, 0x8B }, + + { 0x4A, 0x03 }, + { 0x5F, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * IXACTSoundBank_GetSoundCueIndexFromFriendlyName +// ****************************************************************** +OOVPA_XREF(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x17, XREF_XACT_CSoundBank_GetSoundCueIndexFromFriendlyName ), + + { 0x02, 0xE8 }, + { 0x09, 0x24 }, + { 0x12, 0xFF }, + { 0x16, 0xE8 }, + { 0x1B, 0x85 }, + { 0x2C, 0x8B }, + { 0x30, 0xC2 }, + { 0x31, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * IXACTEngine_RegisterNotification +// ****************************************************************** +OOVPA_XREF(IXACTEngine_RegisterNotification, 4928, 8, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x1F, XREF_XACT_CEngine_RegisterNotification ), + + { 0x02, 0xE8 }, + { 0x09, 0x24 }, + { 0x14, 0x83 }, + { 0x18, 0xD9 }, + { 0x1C, 0xC8 }, + { 0x38, 0xC2 }, + { 0x39, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XactEng_4928 +// ****************************************************************** +OOVPATable XactEng_4928[] = { + + REGISTER_OOVPA(XACTEngineCreate, 4928, PATCH), + REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_GetNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, XREF), + REGISTER_OOVPA(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundSource, 4928, PATCH), + + // ****************************************************************** + // Provisional registration functions in XDK 4928 + // TODO: Need test cases + // ****************************************************************** + REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 4627, PATCH), + REGISTER_OOVPA(IXACTSoundBank_Play, 4627, PATCH), + // ****************************************************************** +}; + +// ****************************************************************** +// * XACTENG_4928_SIZE +// ****************************************************************** +uint32 XactEng_4928_SIZE = sizeof(XactEng_4928); diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5120.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5120.inl new file mode 100644 index 000000000..be4022829 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5120.inl @@ -0,0 +1,130 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5120.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ***************************************************************** +// * XACTEngineCreate +// ****************************************************************** +OOVPA_NO_XREF(XACTEngineCreate, 5120, 12) + + { 0x11, 0x85 }, + { 0x29, 0xEB }, + + { 0x5F, 0x24 }, + { 0x60, 0xFF }, + { 0x61, 0x74 }, + { 0x62, 0x24 }, + { 0x63, 0x10 }, + { 0x64, 0x8B }, + { 0x65, 0xCF }, + { 0x66, 0xE8 }, + + { 0xA2, 0xC2 }, + { 0xA3, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CEngine::UnRegisterWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_UnRegisterWaveBank, 5120, 13, + + XREF_XACT_CEngine_UnRegisterWaveBank, + XRefZero) + + + { 0x0E, 0x51 }, + { 0x1F, 0x00 }, + + { 0x25, 0x8B }, + { 0x26, 0x7C }, + { 0x27, 0x24 }, + { 0x28, 0x10 }, + { 0x29, 0x83 }, + { 0x2A, 0xC7 }, + { 0x2B, 0x4C }, + { 0x2C, 0x8B }, + { 0x2D, 0x37 }, + + { 0x45, 0xF6 }, + { 0x62, 0xC2 }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CEngine::RegisterWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_RegisterWaveBank, 5120, 12, + + XREF_XACT_CEngine_RegisterWaveBank, + XRefZero) + + { 0x04, 0x14 }, //RegisterStreamedWaveBank 0x10 vs RegisterWaveBank 0x14 + { 0x17, 0x3B }, + + { 0x37, 0x32 }, + { 0x38, 0xFF }, + { 0x39, 0x74 }, + { 0x3A, 0x24 }, + { 0x3B, 0x18 }, + { 0x3C, 0x8B }, + { 0x3D, 0xCE }, + { 0x3E, 0xFF }, + + { 0x79, 0xC2 }, + { 0x7A, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * IXACTEngine_RegisterWaveBank +// ****************************************************************** +OOVPA_XREF(IXACTEngine_RegisterWaveBank, 5120, 10, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x27, XREF_XACT_CEngine_RegisterWaveBank ), + + // IXACTEngine_RegisterWaveBank+0x07 : push [ebp+8+0x10] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x18 }, + + // IXACTEngine_RegisterWaveBank+0x0B : movzx esi, al + { 0x0B, 0x0F }, + { 0x0C, 0xB6 }, + { 0x0D, 0xF0 }, + + // IXACTEngine_RegisterWaveBank+0x40 : retn 0x10 + { 0x40, 0xC2 }, + { 0x41, 0x10 }, +OOVPA_END; \ No newline at end of file diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5233.h b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5233.h new file mode 100644 index 000000000..79c23d1ea --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5233.h @@ -0,0 +1,42 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5233.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XACTENG_5233_H +#define XACTENG_5233_H + +#include "OOVPA.h" + +extern OOVPATable XactEng_5233[]; +extern uint32 XactEng_5233_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5233.inl new file mode 100644 index 000000000..5419ccce7 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5233.inl @@ -0,0 +1,225 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5233.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +#if 0 // Moved to 5120 +// ***************************************************************** +// * XACTEngineCreate +// ****************************************************************** +OOVPA_NO_XREF(XACTEngineCreate, 5120, 12) + + { 0x11, 0x85 }, + { 0x29, 0xEB }, + + { 0x5F, 0x24 }, + { 0x60, 0xFF }, + { 0x61, 0x74 }, + { 0x62, 0x24 }, + { 0x63, 0x10 }, + { 0x64, 0x8B }, + { 0x65, 0xCF }, + { 0x66, 0xE8 }, + + { 0xA2, 0xC2 }, + { 0xA3, 0x08 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * XACT::CEngine::RegisterStreamedWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_RegisterStreamedWaveBank, 5233, 11, + + XREF_XACT_CEngine_RegisterStreamedWaveBank, + XRefZero) + + { 0x04, 0x10 }, //RegisterStreamedWaveBank 0x10 vs RegisterWaveBank 0x14 + { 0x25, 0x8B }, + + { 0x3A, 0x2E }, //RegisterStreamedWaveBank 0x2E vs RegisterWaveBank 0x32 + { 0x3B, 0xFF }, + { 0x3C, 0x74 }, + { 0x3D, 0x24 }, + { 0x3E, 0x14 }, + { 0x3F, 0x8B }, + { 0x40, 0xCE }, + { 0x41, 0xE8 }, + + { 0x67, 0xEB }, +OOVPA_END; + +#if 0 // Moved to 5120 +// ****************************************************************** +// * XACT::CEngine::UnRegisterWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_UnRegisterWaveBank, 5120, 13, + + XREF_XACT_CEngine_UnRegisterWaveBank, + XRefZero) + + + { 0x0E, 0x51 }, + { 0x1F, 0x00 }, + + { 0x25, 0x8B }, + { 0x26, 0x7C }, + { 0x27, 0x24 }, + { 0x28, 0x10 }, + { 0x29, 0x83 }, + { 0x2A, 0xC7 }, + { 0x2B, 0x4C }, + { 0x2C, 0x8B }, + { 0x2D, 0x37 }, + + { 0x45, 0xF6 }, + { 0x62, 0xC2 }, +OOVPA_END; +#endif +#if 0 // Moved to 5120 +// ****************************************************************** +// * XACT::CEngine::RegisterWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_RegisterWaveBank, 5120, 12, + + XREF_XACT_CEngine_RegisterWaveBank, + XRefZero) + + { 0x04, 0x14 }, //RegisterStreamedWaveBank 0x10 vs RegisterWaveBank 0x14 + { 0x17, 0x3B }, + + { 0x37, 0x32 }, + { 0x38, 0xFF }, + { 0x39, 0x74 }, + { 0x3A, 0x24 }, + { 0x3B, 0x18 }, + { 0x3C, 0x8B }, + { 0x3D, 0xCE }, + { 0x3E, 0xFF }, + + { 0x79, 0xC2 }, + { 0x7A, 0x10 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * XACT::CEngine::RegisterWaveBank +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_RegisterWaveBank, 5233, 12, + + XREF_XACT_CEngine_RegisterWaveBank, + XRefZero) + + { 0x04, 0x14 }, //RegisterStreamedWaveBank 0x10 vs RegisterWaveBank 0x14 + { 0x1A, 0x3B }, + + { 0x3A, 0x32 }, + { 0x3B, 0xFF }, + { 0x3C, 0x74 }, + { 0x3D, 0x24 }, + { 0x3E, 0x18 }, + { 0x3F, 0x8B }, + { 0x40, 0xCE }, + { 0x41, 0xFF }, + + { 0x7C, 0xC2 }, + { 0x7D, 0x10 }, +OOVPA_END; + +#if 0 // Moved to 5120 +// ****************************************************************** +// * IXACTEngine_RegisterWaveBank +// ****************************************************************** +OOVPA_XREF(IXACTEngine_RegisterWaveBank, 5120, 10, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x27, XREF_XACT_CEngine_RegisterWaveBank ), + + // IXACTEngine_RegisterWaveBank+0x07 : push [ebp+8+0x10] + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x18 }, + + // IXACTEngine_RegisterWaveBank+0x0B : movzx esi, al + { 0x0B, 0x0F }, + { 0x0C, 0xB6 }, + { 0x0D, 0xF0 }, + + // IXACTEngine_RegisterWaveBank+0x40 : retn 0x10 + { 0x40, 0xC2 }, + { 0x41, 0x10 }, +OOVPA_END; +#endif + +// ****************************************************************** +// * XactEng_5233 +// ****************************************************************** +OOVPATable XactEng_5233[] = { + + REGISTER_OOVPA(XACTEngineCreate, 5120, PATCH), + REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 4928, XREF), // For 5120 + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 5120, XREF), + REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_GetNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 5120, XREF), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 5120, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundSource, 4928, PATCH), + + // ****************************************************************** + // Provisional registration functions in XDK 5233 + // TODO: Need test cases + // ****************************************************************** + REGISTER_OOVPA(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, XREF), + REGISTER_OOVPA(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 4627, PATCH), + REGISTER_OOVPA(IXACTSoundBank_Play, 4627, PATCH), + // ****************************************************************** +}; + +// ****************************************************************** +// * XACTENG_5233_SIZE +// ****************************************************************** +uint32 XactEng_5233_SIZE = sizeof(XactEng_5233); diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5344.h b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5344.h new file mode 100644 index 000000000..ab1a3c121 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5344.h @@ -0,0 +1,42 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5344.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XACTENG_5344_H +#define XACTENG_5344_H + +#include "OOVPA.h" + +extern OOVPATable XactEng_5344[]; +extern uint32 XactEng_5344_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5344.inl new file mode 100644 index 000000000..4638bfcdc --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5344.inl @@ -0,0 +1,168 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5344.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XACT::CEngine::DownloadEffectsImage +// ****************************************************************** +OOVPA_XREF(XACT_CEngine_DownloadEffectsImage, 5344, 12, + + XREF_XACT_CEngine_DownloadEffectsImage, + XRefZero) + + { 0x02, 0xEC }, + + { 0x08, 0x46 }, + { 0x09, 0x10 }, + { 0x0A, 0x57 }, + { 0x0B, 0x8B }, + { 0x0C, 0x7D }, + { 0x0D, 0x18 }, + { 0x0E, 0x57 }, + { 0x0F, 0xFF }, + + { 0x1E, 0x85 }, + { 0x2A, 0xC2 }, + { 0x2B, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * IXACTEngine_DownloadEffectsImage +// ****************************************************************** +OOVPA_XREF(IXACTEngine_DownloadEffectsImage, 5344, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x29, XREF_XACT_CEngine_DownloadEffectsImage ), + + { 0x05, 0xE8 }, + + { 0x19, 0x8B }, + { 0x1A, 0xC8 }, + { 0x1B, 0xFF }, + { 0x1C, 0x75 }, + { 0x1D, 0x0C }, + { 0x1E, 0x83 }, + { 0x1F, 0xC0 }, + + { 0x43, 0xC2 }, + { 0x44, 0x14 }, +OOVPA_END; + +// ****************************************************************** +// * XACT::CSoundBank::Play +// ****************************************************************** +OOVPA_XREF(XACT_CSoundBank_Play, 5344, 12, + + XREF_XACT_CSoundBank_Play, + XRefZero) + + { 0x08, 0x57 }, + { 0x1F, 0x89 }, + + { 0x7B, 0x89 }, + { 0x7C, 0x45 }, + { 0x7D, 0xFC }, + { 0x7E, 0xEB }, + { 0x7F, 0x53 }, + { 0x80, 0x3B }, + { 0x81, 0xC7 }, + { 0x82, 0x74 }, + + { 0x9B, 0x68 }, + { 0xA5, 0x83 }, +OOVPA_END; + +// ****************************************************************** +// * IXACTSoundBank_PlayEx +// ****************************************************************** +OOVPA_XREF(IXACTSoundBank_PlayEx, 5344, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x17, XREF_XACT_CSoundBank_Play ), + + { 0x01, 0x57 }, + { 0x0E, 0xFF }, + { 0x0F, 0x74 }, + { 0x10, 0x24 }, + { 0x11, 0x14 }, + { 0x1B, 0x85 }, + { 0x1C, 0xF6 }, + { 0x1D, 0x8B }, + { 0x30, 0xC2 }, + { 0x31, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * XactEng_5344 +// ****************************************************************** +OOVPATable XactEng_5344[] = { + + REGISTER_OOVPA(XACTEngineCreate, 5120, PATCH), + REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 5120, XREF), + REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_GetNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, XREF), + REGISTER_OOVPA(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 5120, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundSource, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 5344, XREF), + REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 5344, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_Play, 5344, XREF), + REGISTER_OOVPA(IXACTSoundBank_PlayEx, 5344, XREF), // Not Implemented yet. + + // ****************************************************************** + // Provisional registration functions in XDK 5344 + // TODO: Need test cases + // ****************************************************************** + REGISTER_OOVPA(IXACTSoundBank_Play, 4627, PATCH), + // ****************************************************************** +}; + +// ****************************************************************** +// * XACTENG_5344_SIZE +// ****************************************************************** +uint32 XactEng_5344_SIZE = sizeof(XactEng_5344); diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5558.h b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5558.h new file mode 100644 index 000000000..3dfdd636f --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5558.h @@ -0,0 +1,42 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5558.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XACTENG_5558_H +#define XACTENG_5558_H + +#include "OOVPA.h" + +extern OOVPATable XactEng_5558[]; +extern uint32 XactEng_5558_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5558.inl new file mode 100644 index 000000000..cac9248e0 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5558.inl @@ -0,0 +1,98 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5558.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XACT::CSoundBank::Play +// ****************************************************************** +OOVPA_XREF(XACT_CSoundBank_Play, 5558, 12, + + XREF_XACT_CSoundBank_Play, + XRefZero) + + { 0x06, 0x8B }, + + { 0x10, 0x75 }, + { 0x11, 0x0C }, + { 0x12, 0x8B }, + { 0x13, 0x5E }, + { 0x14, 0x04 }, + { 0x15, 0x8B }, + { 0x16, 0x46 }, + { 0x17, 0x08 }, + + { 0x27, 0x85 }, + { 0x3B, 0xE9 }, + { 0x55, 0x35 }, +OOVPA_END; + +// ****************************************************************** +// * XactEng_5558 +// ****************************************************************** +OOVPATable XactEng_5558[] = { + + REGISTER_OOVPA(XACTEngineCreate, 5120, PATCH), + REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 5120, XREF), + REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_GetNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, XREF), + REGISTER_OOVPA(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 5120, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundSource, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 5344, XREF), + REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 5344, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_Play, 5558, XREF), + REGISTER_OOVPA(IXACTSoundBank_PlayEx, 5344, XREF), // Not Implemented yet. + + // ****************************************************************** + // Provisional registration functions in XDK 5558 + // TODO: Need test cases + // ****************************************************************** + REGISTER_OOVPA(IXACTSoundBank_Play, 4627, PATCH), + // ****************************************************************** +}; + +// ****************************************************************** +// * XACTENG_5558_SIZE +// ****************************************************************** +uint32 XactEng_5558_SIZE = sizeof(XactEng_5558); diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5788.h b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5788.h new file mode 100644 index 000000000..8097dc116 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5788.h @@ -0,0 +1,42 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5788.h +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2002-2003 Aaron Robinson +// * +// * All rights reserved +// * +// ****************************************************************** +#ifndef XACTENG_5788_H +#define XACTENG_5788_H + +#include "OOVPA.h" + +extern OOVPATable XactEng_5788[]; +extern uint32 XactEng_5788_SIZE; + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5788.inl new file mode 100644 index 000000000..d52a3b976 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5788.inl @@ -0,0 +1,74 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->XactEng.1.0.5788.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XactEng_5788 +// ****************************************************************** +OOVPATable XactEng_5788[] = { + + REGISTER_OOVPA(XACTEngineCreate, 5120, PATCH), + REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 5120, XREF), + REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_GetNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, XREF), + REGISTER_OOVPA(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 5120, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundSource, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 5344, XREF), + REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 5344, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_Play, 5558, XREF), + REGISTER_OOVPA(IXACTSoundBank_PlayEx, 5344, XREF), // Not Implemented yet. + + // ****************************************************************** + // Provisional registration functions in XDK 5788 + // TODO: Need test cases + // ****************************************************************** + REGISTER_OOVPA(IXACTSoundBank_Play, 4627, PATCH), + // ****************************************************************** +}; + +// ****************************************************************** +// * XACTENG_5788_SIZE +// ****************************************************************** +uint32 XactEng_5788_SIZE = sizeof(XactEng_5788); diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5849.inl index 5288bdc09..df4088312 100644 --- a/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/XactEng.1.0.5849.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic 5120 version // ***************************************************************** // * XACTEngineCreate // ****************************************************************** @@ -55,13 +56,42 @@ OOVPA_NO_XREF(XACTEngineCreate, 5849, 11) { 0xA2, 0xC2 }, { 0xA3, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * XactEng_5849 // ****************************************************************** OOVPATable XactEng_5849[] = { - REGISTER_OOVPA(XACTEngineCreate, 5849, PATCH), + + REGISTER_OOVPA(XACTEngineCreate, 5120, PATCH), REGISTER_OOVPA(XACTEngineDoWork, 4627, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterStreamedWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterStreamedWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundBank, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_UnRegisterWaveBank, 5120, XREF), + REGISTER_OOVPA(IXACTEngine_UnRegisterWaveBank, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_GetNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_GetNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, 4928, XREF), + REGISTER_OOVPA(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterWaveBank, 5233, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterWaveBank, 5120, PATCH), + REGISTER_OOVPA(XACT_CEngine_RegisterNotification, 4627, XREF), + REGISTER_OOVPA(IXACTEngine_RegisterNotification, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_CreateSoundSource, 4928, XREF), + REGISTER_OOVPA(IXACTEngine_CreateSoundSource, 4928, PATCH), + REGISTER_OOVPA(XACT_CEngine_DownloadEffectsImage, 5344, XREF), + REGISTER_OOVPA(IXACTEngine_DownloadEffectsImage, 5344, PATCH), + REGISTER_OOVPA(XACT_CSoundBank_Play, 5558, XREF), + REGISTER_OOVPA(IXACTSoundBank_PlayEx, 5344, XREF), // Not Implemented yet. + + // ****************************************************************** + // Provisional registration functions in XDK 5849 + // TODO: Need test cases + // ****************************************************************** + REGISTER_OOVPA(IXACTSoundBank_Play, 4627, PATCH), + // ****************************************************************** }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/XactEng.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/XactEng.OOVPA.inl new file mode 100644 index 000000000..c489839f4 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/XactEng.OOVPA.inl @@ -0,0 +1,98 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->XactEng.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// TODO: Known XactEng OOVPA issue list +// * 4627 and 5028 are not verified each OOVPA. (Last known revision found is 4928. revision 5028 is obscure) +// * Following OOVPA revision are not verified +// * XACT_CEngine_CreateSoundSource (5455) +// * XACT_CEngine_DownloadEffectsImage (5455) +// * XACT_CSoundBank_GetSoundCueIndexFromFriendlyName (5455) +// * XACT_CSoundBank_Play (5455) +// * IXACTEngine_CreateSoundSource (5455) +// * IXACTEngine_DownloadEffectsImage (5455) +// * IXACTEngine_RegisterWaveBank (5455) +// * IXACTSoundBank_GetSoundCueIndexFromFriendlyName (5455) +// * IXACTSoundBank_Play (4928 to 5849) + +#ifndef XACTENG_OOVPA_INL +#define XACTENG_OOVPA_INL + +#include "../OOVPA.h" + +#include "HLEDataBase/XactEng.1.0.4627.inl" +#include "HLEDataBase/XactEng.1.0.4928.inl" +#include "HLEDataBase/XactEng.1.0.5120.inl" +#include "HLEDataBase/XactEng.1.0.5233.inl" +#include "HLEDataBase/XactEng.1.0.5344.inl" +#include "HLEDataBase/XactEng.1.0.5558.inl" +#include "HLEDataBase/XactEng.1.0.5788.inl" +#include "HLEDataBase/XactEng.1.0.5849.inl" + + +// ****************************************************************** +// * XACTENG_OOVPA +// ****************************************************************** +OOVPATable XACTENG_OOVPAV2[] = { + + REGISTER_OOVPAS(XACTEngineCreate, PATCH, 4627, 4928, 5120), + REGISTER_OOVPAS(XACTEngineDoWork, PATCH, 4627), + REGISTER_OOVPAS(XACT_CEngine_CreateSoundBank, XREF, 4627, 4928), + REGISTER_OOVPAS(XACT_CEngine_CreateSoundSource, XREF, 4627, 4928), + REGISTER_OOVPAS(XACT_CEngine_DownloadEffectsImage, XREF, 4627, 5344), + REGISTER_OOVPAS(XACT_CEngine_GetNotification, XREF, 4627), + REGISTER_OOVPAS(XACT_CEngine_RegisterNotification, XREF, 4627), + REGISTER_OOVPAS(XACT_CEngine_RegisterStreamedWaveBank, XREF, 4627, 4928, 5233), + REGISTER_OOVPAS(XACT_CEngine_RegisterWaveBank, XREF, 4627, 5120, 5233), + REGISTER_OOVPAS(XACT_CEngine_UnRegisterWaveBank, XREF, 4627, 4928, 5120), + REGISTER_OOVPAS(XACT_CSoundBank_GetSoundCueIndexFromFriendlyName, XREF, 4627, 4928), + REGISTER_OOVPAS(XACT_CSoundBank_Play, XREF, 5344, 5558), + REGISTER_OOVPAS(IXACTEngine_CreateSoundBank, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTEngine_CreateSoundSource, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTEngine_DownloadEffectsImage, PATCH, 4627, 5344), + REGISTER_OOVPAS(IXACTEngine_GetNotification, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTEngine_RegisterNotification, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTEngine_RegisterStreamedWaveBank, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTEngine_RegisterWaveBank, PATCH, 4627, 5120), + REGISTER_OOVPAS(IXACTEngine_UnRegisterWaveBank, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTSoundBank_GetSoundCueIndexFromFriendlyName, PATCH, 4627, 4928), + REGISTER_OOVPAS(IXACTSoundBank_Play, PATCH, 4627), + REGISTER_OOVPAS(IXACTSoundBank_PlayEx, XREF, 5344), // Not Implemented yet. +}; + +// ****************************************************************** +// * XACTENG_OOVPA_SIZE +// ****************************************************************** +uint32 XACTENG_OOVPA_SIZEV2 = sizeof(XACTENG_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl index f20e72d15..294caccdc 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl @@ -111,6 +111,36 @@ OOVPA_NO_XREF(CreateMutex, 3911, 13) { 0x49, 0x10 }, OOVPA_END; +// ****************************************************************** +// * CreateThread +// ****************************************************************** +OOVPA_NO_XREF(CreateThread, 3911, 21) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x8B }, + { 0x04, 0x45 }, + { 0x05, 0x0C }, + { 0x06, 0x85 }, + { 0x07, 0xC0 }, + { 0x08, 0x75 }, + { 0x09, 0x05 }, + { 0x0A, 0xA1 }, + { 0x0B, 0x30 }, + { 0x0C, 0x01 }, + { 0x0D, 0x01 }, + { 0x0E, 0x00 }, + { 0x0F, 0x8B }, + { 0x10, 0x4D }, + { 0x11, 0x18 }, + { 0x12, 0x68 }, + + { 0x32, 0x50 }, + { 0x33, 0x6A }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * CreateThread // ****************************************************************** @@ -130,6 +160,7 @@ OOVPA_NO_XREF(CreateThread, 3911, 8) { 0x51, 0xC2 }, { 0x52, 0x18 }, OOVPA_END; +#endif // ****************************************************************** // * SetThreadPriority @@ -214,6 +245,7 @@ OOVPA_NO_XREF(XapiInitProcess, 3911, 7) { 0x43, 0x0A }, OOVPA_END; +#if 0 // Moved to 3950 // ****************************************************************** // * XapiInitProcess // ****************************************************************** @@ -234,6 +266,7 @@ OOVPA_NO_XREF(XapiInitProcess, 3950, 7) { 0x43, 0x75 }, { 0x44, 0x0A }, OOVPA_END; +#endif // ****************************************************************** // * XapiBootDash @@ -299,7 +332,7 @@ OOVPA_NO_XREF(GetTimeZoneInformation, 3911, 7) { 0xF7, 0x99 }, OOVPA_END; -/* not necessary? +// not necessary? // ****************************************************************** // * XCalculateSignatureBegin // ****************************************************************** @@ -323,7 +356,6 @@ OOVPA_NO_XREF(XCalculateSignatureBegin, 3911, 10) { 0x3B, 0xC2 }, { 0x3C, 0x04 }, OOVPA_END; -*/ // ****************************************************************** // * XGetDevices @@ -409,7 +441,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(XID_fCloseDevice, 3911, 10, - XREF_FCLOSEDEVICE, + XREF_XID_fCloseDevice, XRefZero) // XID_fCloseDevice+0x19 : jz +0x5C @@ -440,7 +472,7 @@ OOVPA_XREF(XInputClose, 3911, 8, XRefOne) // XInputClose+0x05 : call [fCloseDevice] - XREF_ENTRY( 0x05, XREF_FCLOSEDEVICE ), + XREF_ENTRY( 0x05, XREF_XID_fCloseDevice ), // XInputClose+0x00 : mov ecx, [esp+0x04] { 0x00, 0x8B }, @@ -901,6 +933,25 @@ OOVPA_NO_XREF(CloseHandle, 3911, 8) { 0x1A, 0xC0 }, OOVPA_END; +// Generic OOVPA as of 3911 and newer. +// ****************************************************************** +// * ExitThread +// ****************************************************************** +OOVPA_NO_XREF(ExitThread, 3911, 10) + + { 0x00, 0x6A }, + { 0x01, 0x00 }, + { 0x02, 0xE8 }, + { 0x07, 0xFF }, + { 0x08, 0x74 }, + { 0x09, 0x24 }, + { 0x0A, 0x04 }, + { 0x0B, 0xFF }, + { 0x0C, 0x15 }, + { 0x11, 0xCC }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * ExitThread // ****************************************************************** @@ -912,6 +963,7 @@ OOVPA_NO_XREF(ExitThread, 3911, 5) { 0x0A, 0x04 }, { 0x11, 0xCC }, OOVPA_END; +#endif // ****************************************************************** // * XLaunchNewImageA @@ -1020,13 +1072,32 @@ OOVPA_END; // ****************************************************************** // * XAutoPowerDownResetTimer // ****************************************************************** -OOVPA_NO_XREF(XAutoPowerDownResetTimer, 3911, 6) +// Assembly line at 0x00 and 0x09 are unique. It will prevent any false detection it might find in the future. +OOVPA_NO_XREF(XAutoPowerDownResetTimer, 3911, 12) + //XAutoPowerDownResetTimer+0x00 : push 0FFFFFFCDh + { 0x00, 0x6A }, + { 0x01, 0xCD }, + + //XAutoPowerDownResetTimer+0x02 : pop ecx { 0x02, 0x59 }, + + //XAutoPowerDownResetTimer+0x08 : push ecx { 0x08, 0x51 }, + + //XAutoPowerDownResetTimer+0x09 : mov eax, 0B5659000h + { 0x09, 0xB8 }, { 0x0A, 0x00 }, + { 0x0B, 0x90 }, + { 0x0C, 0x65 }, + { 0x0D, 0xB5 }, + + //XAutoPowerDownResetTimer+0x0E : push eax { 0x0E, 0x50 }, + { 0x14, 0xFF }, + + //XAutoPowerDownResetTimer+0x1A : ret { 0x1A, 0xC3 }, OOVPA_END; @@ -1210,6 +1281,101 @@ OOVPA_NO_XREF(RaiseException, 3911, 7) { 0x4B, 0xFF }, OOVPA_END; +// Generic OOVPA as of 3911 and newer. +// ****************************************************************** +// * SwitchToThread +// ****************************************************************** +OOVPA_NO_XREF(SwitchToThread, 3911, 15) + + { 0x00, 0xFF }, + { 0x01, 0x15 }, + { 0x06, 0x33 }, + { 0x07, 0xC9 }, + { 0x08, 0x3D }, + { 0x09, 0x24 }, + { 0x0A, 0x00 }, + { 0x0B, 0x00 }, + { 0x0C, 0x40 }, + { 0x0D, 0x0F }, + { 0x0E, 0x95 }, + { 0x0F, 0xC1 }, + { 0x10, 0x8B }, + { 0x11, 0xC1 }, + { 0x12, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * XapiThreadStartup +// ****************************************************************** +// Generic OOVPA as of 3911 and newer. +OOVPA_NO_XREF(XapiThreadStartup, 3911, 17) + + { 0x00, 0x6A }, + { 0x01, 0x18 }, + { 0x02, 0x68 }, + { 0x07, 0xE8 }, + { 0x0C, 0x83 }, + { 0x0D, 0x65 }, + { 0x0E, 0xFC }, + { 0x0F, 0x00 }, + { 0x10, 0x64 }, + { 0x11, 0xA1 }, + { 0x12, 0x28 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x89 }, + { 0x17, 0x45 }, + // { 0x18, 0xE4 }, 3911 0xE4 vs 5558 0xE0 + + { 0x1F, 0x89 }, +OOVPA_END; + +// Generic OOVPA as of 3911 and newer. +// ****************************************************************** +// * MoveFileA +// ****************************************************************** +OOVPA_NO_XREF(MoveFileA, 3911, 12) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x2C }, + { 0x06, 0x56 }, + { 0x07, 0x8B }, + { 0x08, 0x35 }, + + { 0x1F, 0x8D }, + { 0x93, 0xC2 }, + { 0x94, 0x08 }, +OOVPA_END; + +// Generic OOVPA as of 3911 and newer. +// ****************************************************************** +// * XapiFiberStartup +// ****************************************************************** +OOVPA_NO_XREF(XapiFiberStartup, 3911, 14) + + { 0x00, 0x6A }, + { 0x01, 0x08 }, + + { 0x25, 0xFF }, + { 0x26, 0x30 }, + { 0x27, 0xFF }, + { 0x28, 0x55 }, + { 0x29, 0x08 }, + { 0x2A, 0xEB }, + { 0x2B, 0x0C }, + { 0x2C, 0xFF }, + { 0x2D, 0x75 }, + { 0x2E, 0xEC }, + { 0x2F, 0xE8 }, + + { 0x44, 0xCC }, +OOVPA_END; + // ****************************************************************** // * XAPI_3911 // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3950.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3950.inl new file mode 100644 index 000000000..a1354bfd6 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.3950.inl @@ -0,0 +1,54 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.3950.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XapiInitProcess +// ****************************************************************** +OOVPA_NO_XREF(XapiInitProcess, 3950, 7) + + // XapiInitProcess+0x03 : sub esp, 30h + { 0x05, 0x30 }, + + // XapiInitProcess+0x0F : push 0x0C + { 0x10, 0x6A }, + { 0x11, 0x0C }, + + // XapiInitProcess+0x17 : repe stosd + { 0x18, 0xF3 }, + { 0x19, 0xAB }, + + // XapiInitProcess+0x42 : jnz +0x0A + { 0x43, 0x75 }, + { 0x44, 0x0A }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4039.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4039.inl new file mode 100644 index 000000000..e0a4080ff --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4039.inl @@ -0,0 +1,58 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.4039.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// Generic OOVPA as of 4039 and newer. +// ****************************************************************** +// * XCalculateSignatureBegin +// ****************************************************************** +OOVPA_NO_XREF(XCalculateSignatureBegin, 4039, 16) + + { 0x00, 0xA1 }, + { 0x01, 0x18 }, + { 0x02, 0x01 }, + { 0x03, 0x01 }, + { 0x04, 0x00 }, + { 0x05, 0xFF }, + { 0x06, 0x70 }, + { 0x07, 0x08 }, + { 0x08, 0xFF }, + { 0x09, 0x74 }, + { 0x0A, 0x24 }, + { 0x0B, 0x08 }, + { 0x0C, 0xE8 }, + + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4242.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4242.inl new file mode 100644 index 000000000..0457bcd94 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4242.inl @@ -0,0 +1,255 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.4242.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XInputOpen +// ****************************************************************** +OOVPA_NO_XREF(XInputOpen, 4242, 12) + + // XInputOpen+0x14 : push 0x57 + { 0x14, 0x6A }, + { 0x15, 0x57 }, + + // XInputOpen+0x1D : jmp +0x33 + { 0x1D, 0xEB }, + { 0x1E, 0x33 }, + + // XInputOpen+0x33 : add edx, 0x10 + { 0x33, 0x83 }, + { 0x34, 0xC2 }, + { 0x35, 0x10 }, + + // XInputOpen+0x47 : jmp +0x06 + { 0x47, 0x75 }, + { 0x48, 0x06 }, + + // XInputOpen+0x52 : leave + { 0x52, 0xC9 }, + + // XInputOpen+0x53 : retn 0x10 + { 0x53, 0xC2 }, + { 0x54, 0x10 }, +OOVPA_END; + +// ****************************************************************** +// * XID_fCloseDevice +// ****************************************************************** +OOVPA_XREF(XID_fCloseDevice, 4242, 11, + + XREF_XID_fCloseDevice, + XRefZero) + + // XID_fCloseDevice+0x1B : mov eax, [esi+0x00A3] + { 0x1B, 0x8B }, + { 0x1C, 0x86 }, + { 0x1D, 0xA3 }, + + // XID_fCloseDevice+0x91 : mov [esi+0x00A7], eax + { 0x91, 0x89 }, + { 0x92, 0x86 }, + { 0x93, 0xA7 }, + + // XID_fCloseDevice+0x91 : mov [esi+0x00A7], eax // FIXME: Same instruction repeated. + { 0x91, 0x89 }, + { 0x92, 0x86 }, + { 0x93, 0xA7 }, + + // XID_fCloseDevice+0x9F : leave; retn + { 0x9F, 0xC9 }, + { 0xA0, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * XInputGetCapabilities +// ****************************************************************** +OOVPA_NO_XREF(XInputGetCapabilities, 4242, 14) + + // XInputGetCapabilities+0x03 : sub esp, 0x48 + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x48 }, + + // XInputGetCapabilities+0x24 : test byte ptr [esi+4], 2 + { 0x24, 0xF6 }, + { 0x25, 0x46 }, + { 0x26, 0x04 }, + { 0x27, 0x02 }, + + // XInputGetCapabilities+0x3A : stosb + { 0x3A, 0xAA }, + + // XInputGetCapabilities+0x7D : mov [ebp+var_48], 0x30 + { 0x7D, 0xC6 }, + { 0x7E, 0x45 }, + { 0x7F, 0xB8 }, + { 0x80, 0x30 }, + + // XInputGetCapabilities+0xEE : cmp [eax], ebx + { 0xEE, 0x39 }, + { 0xEF, 0x18 }, +OOVPA_END; + +// ****************************************************************** +// * XInputGetState +// ****************************************************************** +OOVPA_NO_XREF(XInputGetState, 4242, 12) + + // XInputGetState+0x0E : mov ecx, [edx+0x0A3] + { 0x0E, 0x8B }, + { 0x0F, 0x8A }, + { 0x10, 0xA3 }, + + // XInputGetState+0x1D : push 0x57 + { 0x1D, 0x6A }, + { 0x1E, 0x57 }, + + // XInputGetState+0x20 : jmp +0x3E + { 0x20, 0xEB }, + { 0x21, 0x3E }, + + // XInputGetState+0x2E : mov ebx, 0x048F + { 0x2E, 0xBB }, + { 0x2F, 0x8F }, + { 0x30, 0x04 }, + + // XInputGetState+0x6C : retn 8 + { 0x6C, 0xC2 }, + { 0x6D, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XInputSetState +// ****************************************************************** +OOVPA_NO_XREF(XInputSetState, 4242, 12) + + // XInputSetState+0x04 : lea eax, [ecx+0x0A3] + { 0x04, 0x8D }, + { 0x05, 0x81 }, + { 0x06, 0xA3 }, + + // XInputSetState+0x15 : push 0x57 + { 0x15, 0x6A }, + { 0x16, 0x57 }, + + // XInputSetState+0x18 : jmp +0x19 + { 0x18, 0xEB }, + { 0x19, 0x19 }, + + // XInputSetState+0x2B : mov [edx+0x41], al + { 0x2B, 0x88 }, + { 0x2C, 0x42 }, + { 0x2D, 0x41 }, + + // XInputSetState+0x33 : retn 0x08 + { 0x33, 0xC2 }, + { 0x34, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XMountMUA +// ****************************************************************** +OOVPA_NO_XREF(XMountMUA, 4242, 8) // generic version + + { 0x22, 0x8A }, + { 0x3E, 0x89 }, + { 0x5E, 0x5C }, + { 0x7E, 0xF4 }, + { 0x9E, 0x50 }, + { 0xBE, 0xF8 }, + { 0xDE, 0x8D }, + { 0xFE, 0x09 }, +OOVPA_END; + +// ****************************************************************** +// * XFormatUtilityDrive +// ****************************************************************** +OOVPA_NO_XREF(XFormatUtilityDrive, 4242, 12) + + { 0x02, 0xEC }, + { 0x10, 0x50 }, + { 0x1E, 0xEC }, + + { 0x40, 0xF8 }, + { 0x41, 0x8D }, + { 0x42, 0x45 }, + { 0x43, 0xE4 }, + { 0x44, 0x50 }, + { 0x45, 0x8D }, + { 0x46, 0x45 }, + { 0x47, 0xF4 }, + + { 0x6D, 0x33 }, +OOVPA_END; + +// ****************************************************************** +// * XMountMURootA +// ****************************************************************** +OOVPA_NO_XREF(XMountMURootA, 4242, 12) + + { 0x16, 0xBF }, + { 0x22, 0x8A }, + { 0x39, 0x05 }, + + { 0x50, 0x55 }, + { 0x51, 0x58 }, + { 0x52, 0xE9 }, + { 0x53, 0x0E }, + { 0x54, 0x01 }, + { 0x55, 0x00 }, + { 0x56, 0x00 }, + { 0x57, 0x66 }, + + { 0x72, 0xE8 }, +OOVPA_END; + +// ****************************************************************** +// * XapiInitProcess +// ****************************************************************** +OOVPA_NO_XREF(XapiInitProcess, 4242, 7) + + // XapiInitProcess+0x03 : sub esp, 30h + { 0x05, 0x30 }, + + // XapiInitProcess+0x0F : push 0x0C + { 0x0F, 0x6A }, + { 0x10, 0x0C }, + + // XapiInitProcess+0x17 : repe stosd + { 0x17, 0xF3 }, + { 0x18, 0xAB }, + + // XapiInitProcess+0x42 : jnz +0x0B + { 0x42, 0x75 }, + { 0x43, 0x0B }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4361.inl index 0c6cb944b..bd1635382 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4361.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4361.inl @@ -32,10 +32,11 @@ // * // ****************************************************************** +#if 0 // Moved to 4242 // ****************************************************************** // * XInputOpen // ****************************************************************** -OOVPA_NO_XREF(XInputOpen, 4361, 12) +OOVPA_NO_XREF(XInputOpen, 4242, 12) // XInputOpen+0x14 : push 0x57 { 0x14, 0x6A }, @@ -61,13 +62,14 @@ OOVPA_NO_XREF(XInputOpen, 4361, 12) { 0x53, 0xC2 }, { 0x54, 0x10 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * XID_fCloseDevice // ****************************************************************** -OOVPA_XREF(XID_fCloseDevice, 4361, 11, +OOVPA_XREF(XID_fCloseDevice, 4242, 11, - XREF_FCLOSEDEVICE, + XREF_XID_fCloseDevice, XRefZero) // XID_fCloseDevice+0x1B : mov eax, [esi+0x00A3] @@ -89,11 +91,12 @@ OOVPA_XREF(XID_fCloseDevice, 4361, 11, { 0x9F, 0xC9 }, { 0xA0, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * XInputGetCapabilities // ****************************************************************** -OOVPA_NO_XREF(XInputGetCapabilities, 4361, 14) +OOVPA_NO_XREF(XInputGetCapabilities, 4242, 14) // XInputGetCapabilities+0x03 : sub esp, 0x48 { 0x03, 0x83 }, @@ -119,11 +122,12 @@ OOVPA_NO_XREF(XInputGetCapabilities, 4361, 14) { 0xEE, 0x39 }, { 0xEF, 0x18 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * XInputGetState // ****************************************************************** -OOVPA_NO_XREF(XInputGetState, 4361, 12) +OOVPA_NO_XREF(XInputGetState, 4242, 12) // XInputGetState+0x0E : mov ecx, [edx+0x0A3] { 0x0E, 0x8B }, @@ -147,11 +151,12 @@ OOVPA_NO_XREF(XInputGetState, 4361, 12) { 0x6C, 0xC2 }, { 0x6D, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * XInputSetState // ****************************************************************** -OOVPA_NO_XREF(XInputSetState, 4361, 12) +OOVPA_NO_XREF(XInputSetState, 4242, 12) // XInputSetState+0x04 : lea eax, [ecx+0x0A3] { 0x04, 0x8D }, @@ -175,11 +180,12 @@ OOVPA_NO_XREF(XInputSetState, 4361, 12) { 0x33, 0xC2 }, { 0x34, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4831 // ****************************************************************** // * XInputSetState // ****************************************************************** -OOVPA_NO_XREF(XInputSetState, 4928, 12) +OOVPA_NO_XREF(XInputSetState, 4831, 12) // XInputSetState+0x04 : lea eax, [ecx+0x0A3] { 0x04, 0x8D }, @@ -203,6 +209,7 @@ OOVPA_NO_XREF(XInputSetState, 4928, 12) { 0x30, 0xC2 }, { 0x31, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * CreateThread @@ -247,7 +254,7 @@ OOVPA_NO_XREF(CloseHandle, 4361, 10) { 0x1B, 0xC2 }, { 0x1C, 0x04 }, OOVPA_END; - +#if 0 // Moved to 4242 // ****************************************************************** // * XapiInitProcess // ****************************************************************** @@ -268,7 +275,8 @@ OOVPA_NO_XREF(XapiInitProcess, 4361, 7) { 0x42, 0x75 }, { 0x43, 0x0B }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * XapiThreadStartup // ****************************************************************** @@ -294,7 +302,7 @@ OOVPA_NO_XREF(XapiThreadStartup, 4361, 10) // XapiThreadStartup+0x86 : retn { 0x86, 0xC3 }, OOVPA_END; - +#endif // ****************************************************************** // * XapiSetupPerTitleDriveLetters // ****************************************************************** @@ -319,10 +327,11 @@ OOVPA_NO_XREF(XapiSetupPerTitleDriveLetters, 4361, 10) { 0x53, 0x08 }, OOVPA_END; +#if 0 // Moved to 4242 // ****************************************************************** // * XMountMUA // ****************************************************************** -OOVPA_NO_XREF(XMountMUA, 4361, 8) // generic version +OOVPA_NO_XREF(XMountMUA, 4242, 8) // generic version { 0x22, 0x8A }, { 0x3E, 0x89 }, @@ -333,11 +342,12 @@ OOVPA_NO_XREF(XMountMUA, 4361, 8) // generic version { 0xDE, 0x8D }, { 0xFE, 0x09 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * XFormatUtilityDrive // ****************************************************************** -OOVPA_NO_XREF(XFormatUtilityDrive, 4361, 12) +OOVPA_NO_XREF(XFormatUtilityDrive, 4242, 12) { 0x02, 0xEC }, { 0x10, 0x50 }, @@ -354,11 +364,12 @@ OOVPA_NO_XREF(XFormatUtilityDrive, 4361, 12) { 0x6D, 0x33 }, OOVPA_END; - +#endif +#if 0 // Moved to 4242 // ****************************************************************** // * XMountMURootA // ****************************************************************** -OOVPA_NO_XREF(XMountMURootA, 4361, 12) +OOVPA_NO_XREF(XMountMURootA, 4242, 12) { 0x16, 0xBF }, { 0x22, 0x8A }, @@ -375,6 +386,7 @@ OOVPA_NO_XREF(XMountMURootA, 4361, 12) { 0x72, 0xE8 }, OOVPA_END; +#endif // ****************************************************************** // * XAPI_4361 @@ -384,13 +396,13 @@ OOVPATable XAPI_4361[] = { REGISTER_OOVPA(XInitDevices, 3911, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 4361, XREF), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), + REGISTER_OOVPA(XID_fCloseDevice, 4242, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 4361, PATCH), - REGISTER_OOVPA(XInputGetState, 4361, PATCH), - REGISTER_OOVPA(XInputSetState, 4361, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 4242, PATCH), + REGISTER_OOVPA(XInputGetState, 4242, PATCH), + REGISTER_OOVPA(XInputSetState, 4242, PATCH), + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), REGISTER_OOVPA(XMountUtilityDrive, 4134, PATCH), // TODO: This needs to be verified on 4361, not just 4242! REGISTER_OOVPA(CreateFiber, 3911, DISABLED), REGISTER_OOVPA(DeleteFiber, 3911, DISABLED), @@ -403,17 +415,17 @@ OOVPATable XAPI_4361[] = { REGISTER_OOVPA(SetThreadPriorityBoost, 3911, PATCH), REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(timeSetEvent, 3911, PATCH), REGISTER_OOVPA(timeKillEvent, 3911, PATCH), REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH), REGISTER_OOVPA(GetThreadPriority, 3911, PATCH), REGISTER_OOVPA(XMountAlternateTitleA, 3911, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 3911, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4432.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4432.inl index 45bbd2540..30501a9ba 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4432.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4432.inl @@ -62,14 +62,14 @@ OOVPATable XAPI_4432[] = { REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), REGISTER_OOVPA(XInitDevices, 3911, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 4361, XREF), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), + REGISTER_OOVPA(XID_fCloseDevice, 4242, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 4361, PATCH), - REGISTER_OOVPA(XInputGetState, 4361, PATCH), - REGISTER_OOVPA(XInputSetState, 4361, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 4242, PATCH), + REGISTER_OOVPA(XInputGetState, 4242, PATCH), + REGISTER_OOVPA(XInputSetState, 4242, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 3911, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH), REGISTER_OOVPA(GetTimeZoneInformation, 3911, DISABLED), REGISTER_OOVPA(SetThreadPriority, 3911, PATCH), @@ -89,10 +89,10 @@ OOVPATable XAPI_4432[] = { REGISTER_OOVPA(GetTypeInformation, 4134, XREF), REGISTER_OOVPA(XMountAlternateTitleA, 3911, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), REGISTER_OOVPA(RaiseException, 3911, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl index fa3af6d6d..30f911a92 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl @@ -53,7 +53,7 @@ OOVPA_END; // ****************************************************************** OOVPA_XREF(XID_fCloseDevice, 4627, 7, - XREF_FCLOSEDEVICE, + XREF_XID_fCloseDevice, XRefZero) { 0x13, 0x1E }, @@ -65,12 +65,13 @@ OOVPA_XREF(XID_fCloseDevice, 4627, 7, { 0x91, 0x89 }, OOVPA_END; +#if 0 // Moved to 4831 // ****************************************************************** // * XID_fCloseDevice // ****************************************************************** -OOVPA_XREF(XID_fCloseDevice, 4928, 11, +OOVPA_XREF(XID_fCloseDevice, 4831, 11, - XREF_FCLOSEDEVICE, + XREF_XID_fCloseDevice, XRefZero) { 0x13, 0x8B }, @@ -88,11 +89,12 @@ OOVPA_XREF(XID_fCloseDevice, 4928, 11, { 0x95, 0xC9 }, { 0x96, 0xC3 }, OOVPA_END; - +#endif +#if 0 // Moved to 4831 // ****************************************************************** // * XInputGetState // ****************************************************************** -OOVPA_NO_XREF(XInputGetState, 4928, 12) +OOVPA_NO_XREF(XInputGetState, 4831, 12) { 0x0E, 0x8B }, { 0x0F, 0x8A }, @@ -111,7 +113,8 @@ OOVPA_NO_XREF(XInputGetState, 4928, 12) { 0x69, 0xC2 }, { 0x6A, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 4831 // ****************************************************************** // * XInputGetCapabilities // ****************************************************************** @@ -128,7 +131,7 @@ OOVPA_NO_XREF(XInputGetCapabilities, 4831, 10) { 0x99, 0x55 }, { 0x9A, 0xD0 }, OOVPA_END; - +#endif #if 0 // Moved to 3911 // ****************************************************************** // * GetOverlappedResult @@ -145,7 +148,7 @@ OOVPA_NO_XREF(GetOverlappedResult, 4627, 7) OOVPA_END; #endif - +#if 0 // Moved to 4721 // ****************************************************************** // * XLaunchNewImageA // ****************************************************************** @@ -170,7 +173,7 @@ OOVPA_NO_XREF(XLaunchNewImageA, 4721, 15) { 0xC1, 0x15 }, OOVPA_END; - +#endif #if 0 // No longer used, replaced by generic 4721 version // ****************************************************************** // * XLaunchNewImageA @@ -271,6 +274,7 @@ OOVPA_NO_XREF(XMountAlternateTitleA, 4928, 7) { 0xDE, 0x45 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * MoveFileA // ****************************************************************** @@ -284,7 +288,8 @@ OOVPA_NO_XREF(MoveFileA, 4627, 7) { 0x74, 0xFF }, { 0x83, 0x33 }, OOVPA_END; -#if 0 // No longer used, this was _XInputGetCapabilities@8 +#endif +#if 0 // No longer used, this was _XInputGetCapabilities@8. Moved to 4831 // ****************************************************************** // * XInputGetDeviceDescription // ****************************************************************** @@ -301,7 +306,7 @@ OOVPA_NO_XREF(XInputGetDeviceDescription, 4831, 9) { 0x35, 0x06 }, OOVPA_END; #endif - +#if 0 // Moved to 4831 // ****************************************************************** // * XGetDeviceEnumerationStatus // ****************************************************************** @@ -324,13 +329,15 @@ OOVPA_NO_XREF(XGetDeviceEnumerationStatus, 4831, 14) { 0x25, 0x8B }, { 0x28, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * XAPI_4627 // ****************************************************************** OOVPATable XAPI_4627[] = { +// No longer supported XDK 4721 to 4928 by HLEDB_v1 - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(SetThreadPriorityBoost, 3911, PATCH), REGISTER_OOVPA(SetThreadPriority, 3911, PATCH), REGISTER_OOVPA(GetThreadPriority, 3911, PATCH), @@ -339,19 +346,19 @@ OOVPATable XAPI_4627[] = { REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), REGISTER_OOVPA(XInitDevices, 3911, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), REGISTER_OOVPA(XID_fCloseDevice, 4627, XREF), - REGISTER_OOVPA(XID_fCloseDevice, 4928, XREF), + // REGISTER_OOVPA(XID_fCloseDevice, 4831, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 4361, PATCH), - REGISTER_OOVPA(XInputGetState, 4361, PATCH), - REGISTER_OOVPA(XInputGetState, 4928, PATCH), - REGISTER_OOVPA(XInputSetState, 4361, PATCH), - REGISTER_OOVPA(XInputSetState, 4928, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 4242, PATCH), + REGISTER_OOVPA(XInputGetState, 4242, PATCH), + // REGISTER_OOVPA(XInputGetState, 4831, PATCH), + REGISTER_OOVPA(XInputSetState, 4242, PATCH), + // REGISTER_OOVPA(XInputSetState, 4831, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 3911, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete? - REGISTER_OOVPA(XInputGetCapabilities, 4831, PATCH), + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), // obsolete? + // REGISTER_OOVPA(XInputGetCapabilities, 4831, PATCH), // REGISTER_OOVPA(XCalculateSignatureBeginEx, 4627, PATCH), // +s, not necessary? // REGISTER_OOVPA(XCalculateSignatureBegin, 4627, PATCH), // REGISTER_OOVPA(XCalculateSignatureUpdate, 4627, PATCH), @@ -364,7 +371,7 @@ OOVPATable XAPI_4627[] = { REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 3911, PATCH), - REGISTER_OOVPA(XLaunchNewImageA, 4721, PATCH), + // REGISTER_OOVPA(XLaunchNewImageA, 4721, PATCH), REGISTER_OOVPA(XGetLaunchInfo, 3911, DISABLED), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), @@ -374,12 +381,12 @@ OOVPATable XAPI_4627[] = { REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), REGISTER_OOVPA(XMountAlternateTitleA, 3911, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - //REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), // NOT XInputGetDeviceDescription + // REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH), - // REGISTER_OOVPA(MoveFileA, 4627, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), - REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), + // REGISTER_OOVPA(MoveFileA, 3911, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), + // REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl index 44370bb5a..aee52b6ff 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4721.inl @@ -32,6 +32,31 @@ // * // ****************************************************************** +// ****************************************************************** +// * XLaunchNewImageA +// ****************************************************************** +OOVPA_NO_XREF(XLaunchNewImageA, 4721, 15) + + { 0x03, 0x81 }, + { 0x04, 0xEC }, + { 0x05, 0x84 }, + { 0x06, 0x03 }, + { 0x07, 0x00 }, + { 0x08, 0x00 }, + + { 0x33, 0x3C }, + { 0x34, 0x44 }, + + { 0xA0, 0x3B }, + { 0xA1, 0xC3 }, + { 0xA2, 0x7C }, + { 0xA3, 0x5A }, + { 0xA4, 0x57 }, + { 0xA5, 0x8D }, + + { 0xC1, 0x15 }, +OOVPA_END; + // ****************************************************************** // * XAPI_4721 // ****************************************************************** @@ -47,14 +72,14 @@ OOVPATable XAPI_4721[] = { REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), REGISTER_OOVPA(XInitDevices, 3911, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 4361, PATCH), - REGISTER_OOVPA(XInputGetState, 4361, PATCH), - REGISTER_OOVPA(XInputSetState, 4361, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 4361, XREF), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 4242, PATCH), + REGISTER_OOVPA(XInputGetState, 4242, PATCH), + REGISTER_OOVPA(XInputSetState, 4242, PATCH), + REGISTER_OOVPA(XID_fCloseDevice, 4242, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 3911, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), // obsolete // REGISTER_OOVPA(XapiInitProcess, 4361, PATCH), // obsolete, Too High Level // REGISTER_OOVPA(XapiBootDash, 3911, PATCH), // obsolete REGISTER_OOVPA(CreateFiber, 3911, DISABLED), @@ -71,13 +96,13 @@ OOVPATable XAPI_4721[] = { REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), REGISTER_OOVPA(XMountAlternateTitleA, 3911, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 4721, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), REGISTER_OOVPA(timeSetEvent, 3911, PATCH), REGISTER_OOVPA(timeKillEvent, 3911, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), REGISTER_OOVPA(RaiseException, 3911, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4831.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4831.inl new file mode 100644 index 000000000..0b473b627 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.4831.inl @@ -0,0 +1,213 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.4831.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + + +// ****************************************************************** +// * XInputSetState +// ****************************************************************** +OOVPA_NO_XREF(XInputSetState, 4831, 12) + + // XInputSetState+0x04 : lea eax, [ecx+0x0A3] + { 0x04, 0x8D }, + { 0x05, 0x81 }, + { 0x06, 0xA3 }, + + // XInputSetState+0x12 : push 0x57 + { 0x12, 0x6A }, + { 0x13, 0x57 }, + + // XInputSetState+0x15 : jmp +0x19 + { 0x15, 0xEB }, + { 0x16, 0x19 }, + + // XInputSetState+0x28 : mov [edx+0x41], al + { 0x28, 0x88 }, + { 0x29, 0x42 }, + { 0x2A, 0x41 }, + + // XInputSetState+0x30 : retn 0x08 + { 0x30, 0xC2 }, + { 0x31, 0x08 }, +OOVPA_END; + + +// ****************************************************************** +// * XID_fCloseDevice +// ****************************************************************** +OOVPA_XREF(XID_fCloseDevice, 4831, 11, + + XREF_XID_fCloseDevice, + XRefZero) + + { 0x13, 0x8B }, + { 0x14, 0x86 }, + { 0x15, 0xA3 }, + + { 0x4C, 0x89 }, + { 0x4D, 0x86 }, + { 0x4E, 0x9E }, + + { 0x87, 0x89 }, + { 0x88, 0x86 }, + { 0x89, 0xA7 }, + + { 0x95, 0xC9 }, + { 0x96, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * XInputGetState +// ****************************************************************** +OOVPA_NO_XREF(XInputGetState, 4831, 12) + + { 0x0E, 0x8B }, + { 0x0F, 0x8A }, + { 0x10, 0xA3 }, + + { 0x1A, 0x6A }, + { 0x1B, 0x57 }, + + { 0x1D, 0xEB }, + { 0x1E, 0x3E }, + + { 0x3A, 0x8B }, + { 0x3B, 0x8A }, + { 0x3C, 0xA3 }, + + { 0x69, 0xC2 }, + { 0x6A, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * XInputGetCapabilities +// ****************************************************************** +OOVPA_NO_XREF(XInputGetCapabilities, 4831, 10) + + { 0x08, 0xF8 }, + { 0x0C, 0x1D }, + { 0x11, 0x56 }, + { 0x1F, 0x0F }, + { 0x95, 0x89 }, + { 0x96, 0x7D }, + { 0x97, 0xC0 }, + { 0x98, 0x89 }, + { 0x99, 0x55 }, + { 0x9A, 0xD0 }, +OOVPA_END; + +// ****************************************************************** +// * XGetDeviceEnumerationStatus +// ****************************************************************** +OOVPA_NO_XREF(XGetDeviceEnumerationStatus, 4831, 14) + + { 0x04, 0x15 }, + { 0x0A, 0x35 }, + { 0x10, 0x09 }, + + { 0x17, 0x00 }, + { 0x18, 0x74 }, + { 0x19, 0x03 }, + { 0x1A, 0x33 }, + { 0x1B, 0xF6 }, + { 0x1C, 0x46 }, + { 0x1D, 0x8A }, + { 0x1E, 0xC8 }, + { 0x1F, 0xFF }, + + { 0x25, 0x8B }, + { 0x28, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * XapiInitProcess +// ****************************************************************** +OOVPA_NO_XREF(XapiInitProcess, 4831, 12) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + { 0x13, 0x6A }, + { 0x14, 0x0C }, + { 0x15, 0x59 }, + { 0x16, 0x33 }, + { 0x17, 0xC0 }, + { 0x18, 0x8D }, + { 0x19, 0x7D }, + { 0x1A, 0xCC }, + + { 0x1D, 0x8D }, + { 0x1E, 0x45 }, +OOVPA_END; + +// ****************************************************************** +// * XInputGetDeviceDescription +// ****************************************************************** +OOVPA_NO_XREF(XInputGetDeviceDescription, 4831, 14) + + { 0x04, 0xEC }, + { 0x0B, 0x15 }, + + { 0x13, 0x45 }, + { 0x14, 0x08 }, + { 0x15, 0x8B }, + { 0x16, 0x30 }, + { 0x17, 0x3B }, + { 0x18, 0xF3 }, + { 0x19, 0x88 }, + { 0x1A, 0x4D }, + { 0x1B, 0xFF }, + { 0x1C, 0x0F }, + { 0x1D, 0x84 }, + + { 0x30, 0x45 }, + //{ 0x31, 0xF8 }, // 4831 0xF4 vs 5344 0xF8 +OOVPA_END; + +#if 0 // No longer used, this was _XInputGetCapabilities@8 +// ****************************************************************** +// * XInputGetDeviceDescription +// ****************************************************************** +OOVPA_NO_XREF(XInputGetDeviceDescription, 4831, 9) + + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x48 }, + { 0x06, 0x83 }, + { 0x07, 0x65 }, + { 0x08, 0xF8 }, + { 0x09, 0x00 }, + { 0x34, 0x6A }, + { 0x35, 0x06 }, +OOVPA_END; +#endif diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl index 385879b2e..3dfe859e2 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl @@ -56,12 +56,33 @@ OOVPA_NO_XREF(XMountAlternateTitleA, 5028, 14) { 0x96, 0x8D }, OOVPA_END; +// ****************************************************************** +// * XapiInitProcess +// ****************************************************************** +OOVPA_NO_XREF(XapiInitProcess, 5028, 12) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + { 0x0E, 0xF6 }, + { 0x0F, 0x68 }, + + { 0x22, 0x6A }, + { 0x23, 0x0C }, + { 0x24, 0x59 }, + { 0x25, 0x33 }, + { 0x26, 0xC0 }, + { 0x27, 0x8D }, + { 0x28, 0x7D }, + { 0x29, 0xCC }, +OOVPA_END; + // ****************************************************************** // * XAPI_5028 // ****************************************************************** OOVPATable XAPI_5028[] = { - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(SetThreadPriorityBoost, 3911, PATCH), REGISTER_OOVPA(SetThreadPriority, 3911, PATCH), REGISTER_OOVPA(GetThreadPriority, 3911, PATCH), @@ -70,15 +91,15 @@ OOVPATable XAPI_5028[] = { REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), REGISTER_OOVPA(XInitDevices, 3911, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 4928, XREF), + REGISTER_OOVPA(XID_fCloseDevice, 4831, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), - REGISTER_OOVPA(XInputGetState, 4928, PATCH), + REGISTER_OOVPA(XInputGetState, 4831, PATCH), REGISTER_OOVPA(XInputGetCapabilities, 4831, PATCH), - REGISTER_OOVPA(XInputSetState, 4928, PATCH), + REGISTER_OOVPA(XInputSetState, 4831, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 3911, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete? + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), // obsolete? // REGISTER_OOVPA(XCalculateSignatureBeginEx, 4627, PATCH), // +s, not necessary? // REGISTER_OOVPA(XCalculateSignatureBegin, 4627, PATCH), // REGISTER_OOVPA(XCalculateSignatureUpdate, 4627, PATCH), @@ -101,8 +122,8 @@ OOVPATable XAPI_5028[] = { REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), // REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), // Was NOT XInputGetDeviceDescription REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH), - // REGISTER_OOVPA(MoveFileA, 4627, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + // REGISTER_OOVPA(MoveFileA, 3911, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), // ****************************************************************** @@ -110,7 +131,7 @@ OOVPATable XAPI_5028[] = { // TODO: Need test cases // ****************************************************************** REGISTER_OOVPA(timeKillEvent, 3911, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), // ****************************************************************** }; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5120.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5120.inl new file mode 100644 index 000000000..f55db09c0 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5120.inl @@ -0,0 +1,50 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.5120.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// ****************************************************************** +// * XInitDevices +// ****************************************************************** +// * NOTE: We are actually intercepting USBD_Init, because +// * XInitDevices Simply redirects to that function +// ****************************************************************** +OOVPA_NO_XREF(XInitDevices, 5120, 7) + + { 0x0E, 0x75 }, + { 0x20, 0xBE }, + { 0x2E, 0xC0 }, + { 0x3E, 0xEC }, + { 0x50, 0x0F }, + { 0x5F, 0xE8 }, + { 0x70, 0x5F }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5233.inl index 4804c2a25..214b453ab 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5233.inl @@ -32,14 +32,14 @@ // * // ****************************************************************** - +#if 0 // Moved to 5120 // ****************************************************************** // * XInitDevices // ****************************************************************** // * NOTE: We are actually intercepting USBD_Init, because // * XInitDevices Simply redirects to that function // ****************************************************************** -OOVPA_NO_XREF(XInitDevices, 5233, 7) +OOVPA_NO_XREF(XInitDevices, 5120, 7) { 0x0E, 0x75 }, { 0x20, 0xBE }, @@ -49,6 +49,7 @@ OOVPA_NO_XREF(XInitDevices, 5233, 7) { 0x5F, 0xE8 }, { 0x70, 0x5F }, OOVPA_END; +#endif // ****************************************************************** // * XInputGetCapabilities @@ -105,14 +106,14 @@ OOVPATable XAPI_5233[] = { REGISTER_OOVPA(GetTypeInformation, 4134, XREF), REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH), REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), - REGISTER_OOVPA(XInitDevices, 5233, PATCH), + REGISTER_OOVPA(XInitDevices, 5120, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 5233, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), REGISTER_OOVPA(XInputGetCapabilities, 5233, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 4928, XREF), + REGISTER_OOVPA(XID_fCloseDevice, 4831, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), - REGISTER_OOVPA(XInputGetState, 4928, PATCH), + REGISTER_OOVPA(XInputGetState, 4831, PATCH), REGISTER_OOVPA(XInputSetState, 5233, PATCH), REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), REGISTER_OOVPA(CreateFiber, 3911, DISABLED), @@ -124,10 +125,10 @@ OOVPATable XAPI_5233[] = { REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), REGISTER_OOVPA(XMountAlternateTitleA, 5028, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 4721, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), REGISTER_OOVPA(RaiseException, 3911, PATCH), @@ -137,7 +138,7 @@ OOVPATable XAPI_5233[] = { // Provisional registration functions in XDK 5233 // TODO: Need test cases // ****************************************************************** - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(timeSetEvent, 3911, PATCH), REGISTER_OOVPA(timeKillEvent, 3911, PATCH), // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5344.inl index fa1ed6b86..8bc4c3373 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5344.inl @@ -32,10 +32,11 @@ // * // ****************************************************************** +#if 0 // Moved to 4831 // ****************************************************************** // * XInputGetDeviceDescription // ****************************************************************** -OOVPA_NO_XREF(XInputGetDeviceDescription, 5344, 15) +OOVPA_NO_XREF(XInputGetDeviceDescription, 5344, 14) { 0x04, 0xEC }, { 0x0B, 0x15 }, @@ -53,8 +54,9 @@ OOVPA_NO_XREF(XInputGetDeviceDescription, 5344, 15) { 0x1D, 0x84 }, { 0x30, 0x45 }, - { 0x31, 0xF8 }, + //{ 0x31, 0xF8 }, // 4831 0xF4 vs 5344 0xF8 OOVPA_END; +#endif // ****************************************************************** // * XLaunchNewImageA @@ -88,14 +90,14 @@ OOVPATable XAPI_5344[] = { REGISTER_OOVPA(GetTypeInformation, 4134, XREF), REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH), REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), - REGISTER_OOVPA(XInitDevices, 5233, PATCH), + REGISTER_OOVPA(XInitDevices, 5120, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 5233, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), REGISTER_OOVPA(XInputGetCapabilities, 5233, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 4928, XREF), + REGISTER_OOVPA(XID_fCloseDevice, 4831, XREF), REGISTER_OOVPA(XInputClose, 3911, PATCH), - REGISTER_OOVPA(XInputGetState, 4928, PATCH), + REGISTER_OOVPA(XInputGetState, 4831, PATCH), REGISTER_OOVPA(XInputSetState, 5233, PATCH), REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), REGISTER_OOVPA(CreateFiber, 3911, DISABLED), @@ -107,17 +109,17 @@ OOVPATable XAPI_5344[] = { REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), REGISTER_OOVPA(XMountAlternateTitleA, 5028, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 5344, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), REGISTER_OOVPA(timeSetEvent, 3911, PATCH), REGISTER_OOVPA(timeKillEvent, 3911, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), REGISTER_OOVPA(RaiseException, 3911, PATCH), - REGISTER_OOVPA(XInputGetDeviceDescription, 5344, PATCH), + REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), }; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5455.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5455.inl new file mode 100644 index 000000000..70fc83873 --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5455.inl @@ -0,0 +1,145 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.5455.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + + +// ****************************************************************** +// * XInputGetCapabilities +// ****************************************************************** +OOVPA_NO_XREF(XInputGetCapabilities, 5455, 8) + + { 0x1D, 0x85 }, + { 0x3C, 0x8A }, + { 0x5B, 0x00 }, + { 0x7A, 0x45 }, + { 0x99, 0xD4 }, + { 0xB8, 0x02 }, + { 0xD7, 0x8D }, + { 0xF6, 0x46 }, +OOVPA_END; + +// ****************************************************************** +// * XInputGetState +// ****************************************************************** +OOVPA_NO_XREF(XInputGetState, 5455, 7) + + { 0x0D, 0x0C }, + { 0x1C, 0x5E }, + { 0x2B, 0xBB }, + { 0x3A, 0x80 }, + { 0x49, 0x08 }, + { 0x58, 0xF3 }, + { 0x67, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * XID_fCloseDevice +// ****************************************************************** +OOVPA_XREF(XID_fCloseDevice, 5455, 7, + + XREF_XID_fCloseDevice, + XRefZero) + + { 0x11, 0x45 }, + { 0x24, 0xFF }, + { 0x37, 0x89 }, + { 0x4A, 0x86 }, + { 0x5D, 0x53 }, + { 0x70, 0xFF }, + { 0x84, 0x89 }, +OOVPA_END; + +// ****************************************************************** +// * XInputClose +// ****************************************************************** +OOVPA_XREF(XInputClose, 5455, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x05, XREF_XID_fCloseDevice ), + + { 0x00, 0x8B }, + { 0x01, 0x4C }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0xE8 }, + { 0x09, 0xC2 }, + { 0x0A, 0x04 }, + { 0x0B, 0x00 }, +OOVPA_END; + +// ****************************************************************** +// * XMountAlternateTitleA +// ****************************************************************** +OOVPA_NO_XREF(XMountAlternateTitleA, 5455, 11) + + { 0x0B, 0x08 }, + + { 0x18, 0x0B }, + { 0x19, 0x57 }, + { 0x1A, 0x33 }, + { 0x1B, 0xFF }, + { 0x1C, 0x80 }, + { 0x1D, 0xE3 }, + { 0x1E, 0xDF }, + { 0x1F, 0x80 }, + + { 0xC1, 0x83 }, + { 0xD0, 0x15 }, +OOVPA_END; + +// ****************************************************************** +// * timeSetEvent +// ****************************************************************** +//Xbe Explorer generated pattern, derived from address $0027927D in "EA SPORTSERUGBY 2005" : +//558BEC83EC14536880153200FF15........8B0D........33DB3BCB7548538D 1F 4046 0124 _timeSetEvent@20 ^ 000ED __imp__RtlEnterCriticalSection@4 ^ 0014D _XapiMmTimerThreadState ^ 003FR _CreateThread@24 ^ 0047D _timeSetEvent@20+0112 ^ 004DR _CloseHandle@4 ^ 005CD __imp__KeWaitForSingleObject@20 ^ 0062D _XapiMmTimerThreadState ^0082D _timeSetEvent@20+010F ^0090D _XapiMmTimerSerialNumber ^0097D _XapiMmTimerSerialNumber ^ 00C0R __allmul ^ 00CCD __imp__KeQueryInterruptTime@0 ^00E7D __imp__KeSetTimerEx@20 ^ 00ECD _XapiMmTimerThreadState ^ 00FBD __imp__KeSetEvent@12 ^0119D __imp__RtlLeaveCriticalSection@4 +//Improved pattern using timeSetEvent in "Kingdom Under Fire: The Crusaders" at address $00221F2E +OOVPA_NO_XREF(timeSetEvent, 5455, 14) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + { 0x02, 0xEC }, + { 0x04, 0xEC }, + { 0x0D, 0x15 }, + { 0x12, 0x8B }, + { 0x13, 0x0D }, + { 0x18, 0x33 }, + { 0x19, 0xDB }, + { 0x1A, 0x3B }, + + { 0x32, 0x53 }, + { 0x33, 0x53 }, + { 0x34, 0x88 }, + { 0x35, 0x5D }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5558.inl index ffebe831c..907a512d4 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5558.inl @@ -32,10 +32,11 @@ // * // ****************************************************************** +#if 0 // Moved to 5455 // ****************************************************************** // * XInputGetCapabilities // ****************************************************************** -OOVPA_NO_XREF(XInputGetCapabilities, 5558, 8) +OOVPA_NO_XREF(XInputGetCapabilities, 5455, 8) { 0x1D, 0x85 }, { 0x3C, 0x8A }, @@ -46,11 +47,12 @@ OOVPA_NO_XREF(XInputGetCapabilities, 5558, 8) { 0xD7, 0x8D }, { 0xF6, 0x46 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * XInputGetState // ****************************************************************** -OOVPA_NO_XREF(XInputGetState, 5558, 7) +OOVPA_NO_XREF(XInputGetState, 5455, 7) { 0x0D, 0x0C }, { 0x1C, 0x5E }, @@ -60,7 +62,8 @@ OOVPA_NO_XREF(XInputGetState, 5558, 7) { 0x58, 0xF3 }, { 0x67, 0x15 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 5028 version // ****************************************************************** // * XapiInitProcess // ****************************************************************** @@ -75,7 +78,8 @@ OOVPA_NO_XREF(XapiInitProcess, 5558, 8) { 0xDE, 0x6A }, { 0xFE, 0x02 }, OOVPA_END; - +#endif +#if 0 // Moved to 5659 // ****************************************************************** // * XapiInitProcess // ****************************************************************** @@ -90,6 +94,7 @@ OOVPA_NO_XREF(XapiInitProcess, 5659, 8) { 0xDE, 0x6A }, { 0xFE, 0x02 }, OOVPA_END; +#endif // ****************************************************************** // * XLaunchNewImageA @@ -104,7 +109,7 @@ OOVPA_NO_XREF(XLaunchNewImageA, 5558, 7) { 0x34, 0x6A }, { 0x3D, 0x10 }, OOVPA_END; - +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * XapiFiberStartup // ****************************************************************** @@ -118,13 +123,14 @@ OOVPA_NO_XREF(XapiFiberStartup, 5558, 7) { 0x34, 0xC3 }, { 0x3D, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * XID_fCloseDevice // ****************************************************************** -OOVPA_XREF(XID_fCloseDevice, 5558, 7, +OOVPA_XREF(XID_fCloseDevice, 5455, 7, - XREF_FCLOSEDEVICE, + XREF_XID_fCloseDevice, XRefZero) { 0x11, 0x45 }, @@ -135,16 +141,17 @@ OOVPA_XREF(XID_fCloseDevice, 5558, 7, { 0x70, 0xFF }, { 0x84, 0x89 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * XInputClose // ****************************************************************** -OOVPA_XREF(XInputClose, 5558, 9, +OOVPA_XREF(XInputClose, 5455, 9, XRefNoSaveIndex, XRefOne) - XREF_ENTRY( 0x05, XREF_FCLOSEDEVICE ), + XREF_ENTRY( 0x05, XREF_XID_fCloseDevice ), { 0x00, 0x8B }, { 0x01, 0x4C }, @@ -155,11 +162,12 @@ OOVPA_XREF(XInputClose, 5558, 9, { 0x0A, 0x04 }, { 0x0B, 0x00 }, OOVPA_END; - +#endif +#if 0 // Moved to 5455 // ****************************************************************** // * XMountAlternateTitleA // ****************************************************************** -OOVPA_NO_XREF(XMountAlternateTitleA, 5558, 11) +OOVPA_NO_XREF(XMountAlternateTitleA, 5455, 11) { 0x0B, 0x08 }, @@ -175,6 +183,7 @@ OOVPA_NO_XREF(XMountAlternateTitleA, 5558, 11) { 0xC1, 0x83 }, { 0xD0, 0x15 }, OOVPA_END; +#endif // ****************************************************************** // * XAPI_5558 @@ -184,14 +193,14 @@ OOVPATable XAPI_5558[] = { REGISTER_OOVPA(SetThreadPriority, 3911, PATCH), REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH), REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), - REGISTER_OOVPA(XInitDevices, 5233, PATCH), + REGISTER_OOVPA(XInitDevices, 5120, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 5233, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 5558, PATCH), - REGISTER_OOVPA(XInputGetState, 5558, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 5455, PATCH), + REGISTER_OOVPA(XInputGetState, 5455, PATCH), REGISTER_OOVPA(XInputSetState, 5233, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete? + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), // obsolete? REGISTER_OOVPA(XLaunchNewImageA, 5558, PATCH), REGISTER_OOVPA(XGetLaunchInfo, 3911, DISABLED), REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), @@ -199,28 +208,28 @@ OOVPATable XAPI_5558[] = { REGISTER_OOVPA(GetThreadPriority, 3911, PATCH), REGISTER_OOVPA(GetTimeZoneInformation, 3911, DISABLED), REGISTER_OOVPA(GetTypeInformation, 4134, XREF), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(CreateFiber, 3911, DISABLED), REGISTER_OOVPA(DeleteFiber, 3911, DISABLED), REGISTER_OOVPA(SwitchToFiber, 3911, DISABLED), REGISTER_OOVPA(ConvertThreadToFiber, 3911, DISABLED), - REGISTER_OOVPA(XapiFiberStartup, 5558, DISABLED), - REGISTER_OOVPA(XID_fCloseDevice, 5558, XREF), - REGISTER_OOVPA(XInputClose, 5558, PATCH), + REGISTER_OOVPA(XapiFiberStartup, 3911, DISABLED), + REGISTER_OOVPA(XID_fCloseDevice, 5455, XREF), + REGISTER_OOVPA(XInputClose, 5455, PATCH), REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH), REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH), REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), - REGISTER_OOVPA(XMountAlternateTitleA, 5558, PATCH), + REGISTER_OOVPA(XMountAlternateTitleA, 5455, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), - REGISTER_OOVPA(timeSetEvent, 3911, PATCH), + REGISTER_OOVPA(timeSetEvent, 5455, PATCH), REGISTER_OOVPA(timeKillEvent, 3911, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), REGISTER_OOVPA(RaiseException, 3911, PATCH), - REGISTER_OOVPA(XInputGetDeviceDescription, 5344, PATCH), + REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), }; diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5659.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5659.inl new file mode 100644 index 000000000..14c8554ef --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5659.inl @@ -0,0 +1,50 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.5659.cpp +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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, Bostom, MA 02111-1307, USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +#if 0 // No longer used, replaced by generic 5028 version +// ****************************************************************** +// * XapiInitProcess +// ****************************************************************** +OOVPA_NO_XREF(XapiInitProcess, 5659, 8) + + { 0x22, 0x6A }, + { 0x3E, 0x01 }, + { 0x5E, 0xEB }, + { 0x7E, 0x8B }, + { 0x9F, 0x68 }, + { 0xBE, 0x01 }, + { 0xDE, 0x6A }, + { 0xFE, 0x02 }, +OOVPA_END; +#endif \ No newline at end of file diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5788.inl index 59387b661..7c148fd90 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5788.inl @@ -32,6 +32,7 @@ // * // ****************************************************************** +#if 0 // No longer used, replaced by generic 5028 version // ****************************************************************** // * XapiInitProcess // ****************************************************************** @@ -46,6 +47,7 @@ OOVPA_NO_XREF(XapiInitProcess, 5788, 8) { 0xDE, 0x00 }, { 0xFE, 0x53 }, OOVPA_END; +#endif // ****************************************************************** // * GetThreadPriority @@ -103,6 +105,7 @@ OOVPA_NO_XREF(XGetDeviceEnumerationStatus, 5788, 7) OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * SwitchToThread // ****************************************************************** @@ -115,6 +118,7 @@ OOVPA_NO_XREF(SwitchToThread, 5788, 6) { 0x0D, 0x0F }, { 0x10, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * XAPI_5788 @@ -123,13 +127,13 @@ OOVPATable XAPI_5788[] = { REGISTER_OOVPA(SetThreadPriority, 3911, PATCH), REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), - REGISTER_OOVPA(XInitDevices, 5233, PATCH), + REGISTER_OOVPA(XInitDevices, 5120, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 5558, PATCH), - REGISTER_OOVPA(XInputGetState, 5558, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 5455, PATCH), + REGISTER_OOVPA(XInputGetState, 5455, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 5233, PATCH), // Was PATCH - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete? + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), // obsolete? REGISTER_OOVPA(XGetLaunchInfo, 3911, DISABLED), REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH), @@ -137,32 +141,32 @@ OOVPATable XAPI_5788[] = { REGISTER_OOVPA(SetThreadPriorityBoost, 5788, PATCH), REGISTER_OOVPA(GetTypeInformation, 4134, XREF), // REGISTER_OOVPA(GetThreadPriorityBoost, 5788, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), REGISTER_OOVPA(GetTimeZoneInformation, 3911, DISABLED), REGISTER_OOVPA(RaiseException, 3911, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 5558, PATCH), REGISTER_OOVPA(XInputSetState, 5233, PATCH), REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), - // REGISTER_OOVPA(SwitchToThread, 5788, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + // REGISTER_OOVPA(SwitchToThread, 3911, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(CreateFiber, 3911, DISABLED), REGISTER_OOVPA(DeleteFiber, 3911, DISABLED), REGISTER_OOVPA(SwitchToFiber, 3911, DISABLED), REGISTER_OOVPA(ConvertThreadToFiber, 3911, DISABLED), - REGISTER_OOVPA(XID_fCloseDevice, 5558, XREF), - REGISTER_OOVPA(XInputClose, 5558, PATCH), + REGISTER_OOVPA(XID_fCloseDevice, 5455, XREF), + REGISTER_OOVPA(XInputClose, 5455, PATCH), REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH), REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH), REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), - REGISTER_OOVPA(XMountAlternateTitleA, 5558, PATCH), + REGISTER_OOVPA(XMountAlternateTitleA, 5455, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), - REGISTER_OOVPA(timeSetEvent, 3911, PATCH), + REGISTER_OOVPA(timeSetEvent, 5455, PATCH), REGISTER_OOVPA(timeKillEvent, 3911, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), - REGISTER_OOVPA(XInputGetDeviceDescription, 5344, PATCH), + REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5849.inl index 90a39a857..79fc8ba35 100644 --- a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5849.inl @@ -32,6 +32,10 @@ // * // ****************************************************************** +#if 0 // Moved to 5455 +// ****************************************************************** +// * timeSetEvent +// ****************************************************************** //Xbe Explorer generated pattern, derived from address $0027927D in "EA SPORTSERUGBY 2005" : //558BEC83EC14536880153200FF15........8B0D........33DB3BCB7548538D 1F 4046 0124 _timeSetEvent@20 ^ 000ED __imp__RtlEnterCriticalSection@4 ^ 0014D _XapiMmTimerThreadState ^ 003FR _CreateThread@24 ^ 0047D _timeSetEvent@20+0112 ^ 004DR _CloseHandle@4 ^ 005CD __imp__KeWaitForSingleObject@20 ^ 0062D _XapiMmTimerThreadState ^0082D _timeSetEvent@20+010F ^0090D _XapiMmTimerSerialNumber ^0097D _XapiMmTimerSerialNumber ^ 00C0R __allmul ^ 00CCD __imp__KeQueryInterruptTime@0 ^00E7D __imp__KeSetTimerEx@20 ^ 00ECD _XapiMmTimerThreadState ^ 00FBD __imp__KeSetEvent@12 ^0119D __imp__RtlLeaveCriticalSection@4 //Improved pattern using timeSetEvent in "Kingdom Under Fire: The Crusaders" at address $00221F2E @@ -47,6 +51,7 @@ OOVPA_NO_XREF(timeSetEvent, 5849, 10) {0x19, 0xDB}, {0x1A, 0x3B} OOVPA_END; +#endif //; Xbe Explorer generated pattern, derived from address $002793A1 in "EA SPORTSERUGBY 2005" : //5657BF8015320057FF15........8B54240C8B0D........0FB7C24885C9743E 1D AD12 006F _timeKillEvent@4 ^ 000AD __imp__RtlEnterCriticalSection@4 ^ 0014D _XapiMmTimerThreadState ^ 003DD __imp__KeCancelTimer@4 ^ 0046D _XapiMmTimerThreadState ^ 0056D __imp__KeSetEvent@12 ^ 0064D __imp__RtlLeaveCriticalSection@4 @@ -77,6 +82,7 @@ OOVPA_NO_XREF(XGetDeviceEnumerationStatus, 5849, 7) { 0x28, 0xC3 }, OOVPA_END; #endif +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * SwitchToThread // ****************************************************************** @@ -89,6 +95,7 @@ OOVPA_NO_XREF(SwitchToThread, 5849, 6) { 0x0D, 0x0F }, { 0x10, 0x8B }, OOVPA_END; +#endif // ****************************************************************** // * XAPI_5849 @@ -97,28 +104,28 @@ OOVPATable XAPI_5849[] = { REGISTER_OOVPA(SetThreadPriority, 3911, PATCH), REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH), - REGISTER_OOVPA(XInitDevices, 5233, PATCH), + REGISTER_OOVPA(XInitDevices, 5120, PATCH), REGISTER_OOVPA(XGetDevices, 3911, PATCH), - REGISTER_OOVPA(XInputOpen, 4361, PATCH), - REGISTER_OOVPA(XID_fCloseDevice, 5558, XREF), - REGISTER_OOVPA(XInputClose, 5558, PATCH), - REGISTER_OOVPA(XInputGetCapabilities, 5558, PATCH), - REGISTER_OOVPA(XInputGetState, 5558, PATCH), + REGISTER_OOVPA(XInputOpen, 4242, PATCH), + REGISTER_OOVPA(XID_fCloseDevice, 5455, XREF), + REGISTER_OOVPA(XInputClose, 5455, PATCH), + REGISTER_OOVPA(XInputGetCapabilities, 5455, PATCH), + REGISTER_OOVPA(XInputGetState, 5455, PATCH), REGISTER_OOVPA(XGetDeviceChanges, 5233, PATCH), - // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete? + // REGISTER_OOVPA(XapiThreadStartup, 3911, PATCH), // obsolete? REGISTER_OOVPA(QueueUserAPC, 3911, PATCH), REGISTER_OOVPA(GetThreadPriority, 5788, PATCH), REGISTER_OOVPA(GetTypeInformation, 4134, XREF), REGISTER_OOVPA(SetThreadPriorityBoost, 5788, PATCH), // REGISTER_OOVPA(GetThreadPriorityBoost, 5849, PATCH), - REGISTER_OOVPA(timeSetEvent, 5849, PATCH), + REGISTER_OOVPA(timeSetEvent, 5455, PATCH), REGISTER_OOVPA(timeKillEvent, 5849, PATCH), REGISTER_OOVPA(RaiseException, 3911, PATCH), REGISTER_OOVPA(XLaunchNewImageA, 5558, PATCH), REGISTER_OOVPA(XInputSetState, 5233, PATCH), REGISTER_OOVPA(XGetDeviceEnumerationStatus, 4831, PATCH), - // REGISTER_OOVPA(SwitchToThread, 5849, PATCH), - REGISTER_OOVPA(XFormatUtilityDrive, 4361, PATCH), + // REGISTER_OOVPA(SwitchToThread, 3911, PATCH), + REGISTER_OOVPA(XFormatUtilityDrive, 4242, PATCH), REGISTER_OOVPA(CreateFiber, 3911, DISABLED), REGISTER_OOVPA(DeleteFiber, 3911, DISABLED), REGISTER_OOVPA(SwitchToFiber, 3911, DISABLED), @@ -127,14 +134,14 @@ OOVPATable XAPI_5849[] = { REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH), REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH), REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH), - REGISTER_OOVPA(XMountAlternateTitleA, 5558, PATCH), + REGISTER_OOVPA(XMountAlternateTitleA, 5455, PATCH), REGISTER_OOVPA(XUnmountAlternateTitleA, 3911, PATCH), - REGISTER_OOVPA(XMountMUA, 4361, PATCH), - REGISTER_OOVPA(XMountMURootA, 4361, PATCH), + REGISTER_OOVPA(XMountMUA, 4242, PATCH), + REGISTER_OOVPA(XMountMURootA, 4242, PATCH), REGISTER_OOVPA(XInputPoll, 3911, PATCH), REGISTER_OOVPA(GetOverlappedResult, 3911, PATCH), REGISTER_OOVPA(XSetProcessQuantumLength, 4134, PATCH), - REGISTER_OOVPA(XInputGetDeviceDescription, 5344, PATCH), + REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH), }; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/Xapi.OOVPA.inl new file mode 100644 index 000000000..7e2bc898a --- /dev/null +++ b/src/CxbxKrnl/HLEDataBase/Xapi.OOVPA.inl @@ -0,0 +1,177 @@ +// ****************************************************************** +// * +// * .,-::::: .,:: .::::::::. .,:: .: +// * ,;;;'````' `;;; .,;; ;;;'';;' `;;; .,;; +// * [[[ '[[,,[[' [[[__[[\. '[[,,[[' +// * $$$ Y$$$P $$""""Y$$ Y$$$P +// * `88bo,__,o oP"``"Yo _88o,,od8P oP"``"Yo, +// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm, +// * +// * Cxbx->Win32->CxbxKrnl->HLEDatabase->XAPI.OOVPA.inl +// * +// * This file is part of the Cxbx project. +// * +// * Cxbx and Cxbe are 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 Bostom MA 02111-1307 USA. +// * +// * (c) 2017 jarupxx +// * +// * All rights reserved +// * +// ****************************************************************** + +// TODO: Known Xapi OOVPA issue list +// * 4034 is not verified each OOVPA. +// * Following OOVPA revision are not verified +// * XMountMUA (3950) +// * XMountMURootA (3950, 4039, 5028, 5120, 5233) +// * timeKillEvent (3950, 5028, 5233) +// * timeSetEvent (5233) +// * SignalObjectAndWait (4039) +// * QueueUserAPC (4039) +// * XMountAlternateTitleA (4039) +// * XInputPoll (4039) +// * XInputGetDeviceDescription (4928, 5028, 5120, 5233, 5455) +// * ConvertThreadToFiber (4039, 4134, 4531, 4721, 5028, 5455) +// * CreateFiber (4039, 4134, 4531, 4721, 5028, 5455) +// * DeleteFiber (4039, 4134, 4531, 4721, 5028, 5455) +// * SwitchToFiber (4039, 4134, 4531, 4721, 5028, 5455) +// * XapiFiberStartup (4039, 4134, 4531, 4721, 5028, 5455) +// * Following OOVPA are invalid +// * ReadFileEx (3911) // Has exact asm codes _WriteFileEx@20 +// * WriteFileEx (3911) // Has exact asm codes _ReadFileEx@20 +// * lstrcmpiW (3911) // Necessary XREF _xCompareStringW@20 +// * Following OOVPA are missing (Obsolete?) +// * GetThreadPriorityBoost +// * RtlAllocateHeap +// * RtlCreateHeap +// * RtlDestroyHeap +// * RtlFreeHeap +// * RtlReAllocateHeap +// * RtlSizeHeap +// * XCalculateSignatureBeginEx +// * XCalculateSignatureEnd +// * XCalculateSignatureUpdate +// NOTE: Known Xapi OOVPA not included in initial revision. +// * XFormatUtilityDrive (4242) +// * XSetProcessQuantumLength (4134) +// * XInputGetDeviceDescription (4831) +// * XGetDeviceEnumerationStatus (4831) + +#ifndef XAPI_OOVPA_INL +#define XAPI_OOVPA_INL + +#include "../OOVPA.h" + +#include "Xapi.1.0.3911.inl" +#include "Xapi.1.0.3950.inl" +#include "Xapi.1.0.4034.inl" +#include "Xapi.1.0.4039.inl" +#include "Xapi.1.0.4134.inl" +#include "Xapi.1.0.4242.inl" +#include "Xapi.1.0.4361.inl" +#include "Xapi.1.0.4432.inl" +#include "Xapi.1.0.4627.inl" +#include "Xapi.1.0.4721.inl" +#include "Xapi.1.0.4831.inl" +#include "Xapi.1.0.5028.inl" +#include "Xapi.1.0.5120.inl" +#include "Xapi.1.0.5233.inl" +#include "Xapi.1.0.5344.inl" +#include "Xapi.1.0.5455.inl" +#include "Xapi.1.0.5558.inl" +#include "Xapi.1.0.5788.inl" +#include "Xapi.1.0.5659.inl" +#include "Xapi.1.0.5849.inl" + +// ****************************************************************** +// * XAPILIB_OOVPA +// ****************************************************************** +OOVPATable XAPILIB_OOVPAV2[] = { + + // REGISTER_OOVPAS(GetThreadPriorityBoost, PATCH, 5788), + // REGISTER_OOVPAS(GetThreadPriorityBoost, PATCH, 5849), + // REGISTER_OOVPAS(RtlAllocateHeap, PATCH, 3911), // obsolete (* unchanged since 1.0.4361 *) (* OR FARTHER *) (from 4721's comment) + // REGISTER_OOVPAS(RtlCreateHeap, PATCH, 3911), // obsolete, (* unchanged since 1.0.4361 *) (* OR FARTHER *) (from 4721's comment) + // REGISTER_OOVPAS(RtlDestroyHeap, PATCH, 4627), // obsolete (from 4721's comment) + // REGISTER_OOVPAS(RtlFreeHeap, PATCH, 4627), // obsolete (from 4721's comment) + // REGISTER_OOVPAS(RtlReAllocateHeap, PATCH, 4627), + // REGISTER_OOVPAS(RtlSizeHeap, PATCH, 4627), // obsolete (from 4721's comment) + // REGISTER_OOVPAS(XCalculateSignatureBegin, PATCH, 4627), + // REGISTER_OOVPAS(XCalculateSignatureBeginEx, PATCH, 4627), // +s, not necessary? (from 4627, 5028's comment) + // REGISTER_OOVPAS(XCalculateSignatureEnd, PATCH, 4627), // s+ (from 4627, 5028's comment) + // REGISTER_OOVPAS(XCalculateSignatureUpdate, PATCH, 4627), + // REGISTER_OOVPAS(ReadFileEx, UNPATCHED, 3911),// Has exact asm codes _WriteFileEx@20 + // REGISTER_OOVPAS(WriteFileEx, UNPATCHED, 3911), // Has exact asm codes _ReadFileEx@20 + // REGISTER_OOVPAS(lstrcmpiW, UNPATCHED, 3911), // TODO: need XREF _xCompareStringW@20 (Has exact asm codes as lstrcmpiW) + // REGISTER_OOVPAS(CloseHandle, UNPATCHED, 3911),// Has exact same asm codes as _ResetEvent@4 + REGISTER_OOVPAS(CreateMutex, UNPATCHED, 3911), // Too High Level (from 3911's comment) + REGISTER_OOVPAS(CreateThread, UNPATCHED, 3911), // Too High Level (from 3911's comment) + REGISTER_OOVPAS(ExitThread, UNPATCHED, 3911),// + REGISTER_OOVPAS(MoveFileA, UNPATCHED, 3911), + REGISTER_OOVPAS(SwitchToThread, UNPATCHED, 3911), + REGISTER_OOVPAS(XCalculateSignatureBegin, UNPATCHED, 3911, 4039), + REGISTER_OOVPAS(XapiBootDash, UNPATCHED, 3911), // obsolete (from 4721's comment) + REGISTER_OOVPAS(XapiInitProcess, UNPATCHED, 3911, 3950, 4242, 4831, 5028), // obsolete, Too High Level (from 4721's comment) + REGISTER_OOVPAS(XapiThreadStartup, UNPATCHED, 3911), // obsolete? (from 4627, 5028, 5558, 5788, 5849's comment) // obsolete (from 4721's comment) + REGISTER_OOVPAS(ConvertThreadToFiber, UNPATCHED, 3911), + REGISTER_OOVPAS(CreateFiber, UNPATCHED, 3911), + REGISTER_OOVPAS(DeleteFiber, UNPATCHED, 3911), + REGISTER_OOVPAS(GetExitCodeThread, PATCH, 3911), + REGISTER_OOVPAS(GetOverlappedResult, PATCH, 3911), + REGISTER_OOVPAS(GetThreadPriority, PATCH, 3911, 5788), + REGISTER_OOVPAS(GetTimeZoneInformation, UNPATCHED, 3911), + REGISTER_OOVPAS(GetTypeInformation, XREF, 4134), // TODO: Actually introduced in some unknown XDK between 4134 and 4361 + REGISTER_OOVPAS(OutputDebugStringA, PATCH, 3911), + REGISTER_OOVPAS(QueueUserAPC, PATCH, 3911), + REGISTER_OOVPAS(RaiseException, PATCH, 3911), + REGISTER_OOVPAS(SetThreadPriority, PATCH, 3911), + REGISTER_OOVPAS(SetThreadPriorityBoost, PATCH, 3911, 5788), + REGISTER_OOVPAS(SignalObjectAndWait, PATCH, 3911), + REGISTER_OOVPAS(SwitchToFiber, UNPATCHED, 3911), + REGISTER_OOVPAS(XAutoPowerDownResetTimer, UNPATCHED, 3911), // Just calls KeSetTimer (from 3911's comment) + REGISTER_OOVPAS(XFormatUtilityDrive, PATCH, 4242), + REGISTER_OOVPAS(XGetDeviceChanges, PATCH, 3911, 5233), // Was PATCH (from 5788's comment) + REGISTER_OOVPAS(XGetDeviceEnumerationStatus, PATCH, 4831), + REGISTER_OOVPAS(XGetDevices, PATCH, 3911), + REGISTER_OOVPAS(XGetLaunchInfo, UNPATCHED, 3911), + REGISTER_OOVPAS(XID_fCloseDevice, XREF, 3911, 4242, 4627, 4831, 5455), + REGISTER_OOVPAS(XInitDevices, PATCH, 3911, 5120), + REGISTER_OOVPAS(XInputClose, PATCH, 3911, 5455), + REGISTER_OOVPAS(XInputGetCapabilities, PATCH, 3911, 4242, 4831, 5233, 5455), + REGISTER_OOVPAS(XInputGetDeviceDescription, PATCH, 4831), + REGISTER_OOVPAS(XInputGetState, PATCH, 3911, 4134, 4242, 4831, 5455), + REGISTER_OOVPAS(XInputOpen, PATCH, 3911, 4134, 4242), + REGISTER_OOVPAS(XInputPoll, PATCH, 3911), + REGISTER_OOVPAS(XInputSetState, PATCH, 3911, 4242, 4831, 5233), + REGISTER_OOVPAS(XLaunchNewImageA, PATCH, 3911, 4721, 5344, 5558), + REGISTER_OOVPAS(XMountAlternateTitleA, PATCH, 3911, 5028, 5455), + REGISTER_OOVPAS(XMountMUA, PATCH, 3911, 4242), + REGISTER_OOVPAS(XMountMURootA, PATCH, 3911, 4242), + REGISTER_OOVPAS(XMountUtilityDrive, PATCH, 3911, 4134, 4432), // TODO: This needs to be verified on 4361, not just 4242! (from 4361's comment) + REGISTER_OOVPAS(XRegisterThreadNotifyRoutine, PATCH, 3911), + REGISTER_OOVPAS(XSetProcessQuantumLength, PATCH, 4134), + REGISTER_OOVPAS(XUnmountAlternateTitleA, PATCH, 3911), + REGISTER_OOVPAS(XapiFiberStartup, UNPATCHED, 3911), + REGISTER_OOVPAS(timeKillEvent, PATCH, 3911, 5849), + REGISTER_OOVPAS(timeSetEvent, PATCH, 3911, 5455), +}; + +// ****************************************************************** +// * XAPILIB_OOVPA_SIZE +// ****************************************************************** +uint32 XAPILIB_OOVPA_SIZEV2 = sizeof(XAPILIB_OOVPAV2); + +#endif diff --git a/src/CxbxKrnl/HLEIntercept.cpp b/src/CxbxKrnl/HLEIntercept.cpp index c14f79497..3320b437e 100644 --- a/src/CxbxKrnl/HLEIntercept.cpp +++ b/src/CxbxKrnl/HLEIntercept.cpp @@ -51,6 +51,7 @@ static xbaddr EmuLocateFunction(OOVPA *Oovpa, xbaddr lower, xbaddr upper); static void EmuInstallPatches(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xbe::Header *pXbeHeader); static inline void EmuInstallPatch(std::string FunctionName, xbaddr FunctionAddr, void *Patch); +void EmuInstallPatchesV2(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xbe::SectionHeader *pSectionHeader, uint16_t buildVersion); #include #include @@ -61,7 +62,7 @@ std::map g_SymbolAddresses; std::unordered_map g_FunctionHooks; bool g_HLECacheUsed = false; -uint32 g_BuildVersion; +uint32 g_BuildVersion = 0; bool bLLE_APU = false; // Set this to true for experimental APU (sound) LLE bool bLLE_GPU = false; // Set this to true for experimental GPU (graphics) LLE @@ -287,11 +288,22 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) LastUnResolvedXRefs = UnResolvedXRefs; + bool bDSoundLibSection = false; + uint16 preserveVersion = 0; + for(uint32 v=0;v(pXbeHeader->dwSectionHeadersAddr); + Xbe::SectionHeader* pSectionScan = nullptr; + std::string SectionName; if (strcmp(LibraryName.c_str(), Lib_D3D8LTCG) == 0) { @@ -325,30 +339,35 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) // Skip scanning for D3D8 symbols when LLE GPU is selected if (bLLE_GPU) continue; - +#if ENABLE_LEGACY_D3D8_DB // Some 3911 titles have different D3D8 builds if (BuildVersion <= 3948) BuildVersion = 3925; +#endif } if (strcmp(LibraryName.c_str(), Lib_DSOUND) == 0) { + bDSoundLibSection = true; // Skip scanning for DSOUND symbols when LLE APU is selected if (bLLE_APU) continue; - // Several 3911 titles has different DSound builds. - if(BuildVersion < 4034) - { +#if ENABLE_LEGACY_DSOUND_DB + // Several 3911 titles has different DSound builds. + if (BuildVersion < 4034) { BuildVersion = 3936; } - // Redirect other highly similar DSOUND library versions - if(BuildVersion == 4361 || BuildVersion == 4400 || BuildVersion == 4432 || - BuildVersion == 4531 ) - BuildVersion = 4627; + // Redirect other highly similar DSOUND library versions + if (BuildVersion == 4361 || BuildVersion == 4400 || BuildVersion == 4432 || + BuildVersion == 4531) + BuildVersion = 4627; +#endif + } if (strcmp(LibraryName.c_str(), Lib_XAPILIB) == 0) { +#if ENABLE_LEGACY_XAPI_DB // Change a few XAPILIB versions to similar counterparts if(BuildVersion == 3944) BuildVersion = 3911; @@ -356,6 +375,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) BuildVersion = 3911; if(OrigBuildVersion == 4531) BuildVersion = 4627; +#endif } if (strcmp(LibraryName.c_str(), Lib_XGRAPHC) == 0) { @@ -363,10 +383,24 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) if (bLLE_GPU) continue; +#if ENABLE_LEGACY_XGRAPHC_DB if (BuildVersion == 3944) BuildVersion = 3911; if (OrigBuildVersion == 4531) BuildVersion = 4361; +#endif + } + if (strcmp(LibraryName.c_str(), Lib_XACTENG) == 0) + { + // Skip scanning for XACTENG symbols when LLE APU is selected + if (bLLE_APU) + continue; + +#if ENABLE_LEGACY_XACTENG_DB + // Change a few XACTENG versions to similar counterparts + if (OrigBuildVersion == 4928 || BuildVersion == 5028) + BuildVersion = 4928; +#endif } if(bXRefFirstPass) @@ -379,10 +413,174 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) xbaddr lower = pXbeHeader->dwBaseAddr; xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; } +#ifndef ENABLE_LEGACY_D3D8_DB + else if (strcmp(LibraryName.c_str(), Lib_D3D8) == 0) + { + // Save D3D8 build version + g_BuildVersion = OrigBuildVersion; + + xbaddr lower = pXbeHeader->dwBaseAddr; + xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; + xbaddr pFunc = (xbaddr)nullptr; + + if(OrigBuildVersion >= 3911 && OrigBuildVersion < 4034) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_3911, lower, upper); + else + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_4034, lower, upper); + + // locate D3DDeferredRenderState + if(pFunc != (xbaddr)nullptr) + { + // offset for stencil cull enable render state in the deferred render state buffer + xbaddr DerivedAddr_D3DRS_CULLMODE = NULL; + int Decrement = 0; // TODO : Rename into something understandable + int Increment = 0; // TODO : Rename into something understandable + int patchOffset = 0; // TODO : Rename into something understandable + + // Read address of D3DRS_CULLMODE from D3DDevice_SetRenderState_CullMode + // TODO : Simplify this when XREF_D3DRS_CULLMODE derivation is deemed stable + { + if (OrigBuildVersion >= 3911 && OrigBuildVersion < 4034) + { + DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x25); + Decrement = 0x1FC; // TODO: Clean up (?) + Increment = 82 * 4; + patchOffset = 140 * 4; // Verified 3925 and 3948 + + //Decrement = 0x19F; // TODO: Clean up (?) + //Increment = 72 * 4; + //patchOffset = 142*4; // TODO: Verify + } + else if (OrigBuildVersion >= 4034 && OrigBuildVersion <= 4361) + { + DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B); + Decrement = 0x200; + Increment = 82 * 4; + patchOffset = 142 * 4; + } + else if (OrigBuildVersion >= 4432 && OrigBuildVersion < 4627) + { + DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B); + Decrement = 0x204; + Increment = 83 * 4; + patchOffset = 143 * 4; + } + else if (OrigBuildVersion >= 4627 && OrigBuildVersion <= 5933) + { + DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B); + Decrement = 0x24C; + Increment = 92 * 4; + patchOffset = 162 * 4; + } + + // Temporary verification - is XREF_D3DDEVICE derived correctly? + xbaddr DerivedAddr_D3DDevice = *(xbaddr*)((xbaddr)pFunc + 0x03); + if (XRefDataBase[XREF_D3DDEVICE] != DerivedAddr_D3DDevice) + { + if (XRefDataBase[XREF_D3DDEVICE] != XREF_ADDR_DERIVE) + CxbxPopupMessage("Second derived XREF_D3DDEVICE differs from first!"); + + XRefDataBase[XREF_D3DDEVICE] = DerivedAddr_D3DDevice; + } + + g_SymbolAddresses["D3DDEVICE"] = DerivedAddr_D3DDevice; + + // Temporary verification - is XREF_D3DRS_CULLMODE derived correctly? + if (XRefDataBase[XREF_D3DRS_CULLMODE] != DerivedAddr_D3DRS_CULLMODE) + { + if (XRefDataBase[XREF_D3DRS_CULLMODE] != XREF_ADDR_DERIVE) + CxbxPopupMessage("Second derived XREF_D3DRS_CULLMODE differs from first!"); + + XRefDataBase[XREF_D3DRS_CULLMODE] = DerivedAddr_D3DRS_CULLMODE; + } + } + + // Derive address of EmuD3DDeferredRenderState from D3DRS_CULLMODE + XTL::EmuD3DDeferredRenderState = (DWORD*)(DerivedAddr_D3DRS_CULLMODE - Decrement + Increment); + patchOffset -= Increment; + + // Derive address of a few other deferred render state slots (to help xref-based function location) + XRefDataBase[XREF_D3DRS_MULTISAMPLEMODE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset - 8*4; + XRefDataBase[XREF_D3DRS_MULTISAMPLERENDERTARGETMODE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset - 7*4; + XRefDataBase[XREF_D3DRS_STENCILCULLENABLE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 0*4; + XRefDataBase[XREF_D3DRS_ROPZCMPALWAYSREAD] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 1*4; + XRefDataBase[XREF_D3DRS_ROPZREAD] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 2*4; + XRefDataBase[XREF_D3DRS_DONOTCULLUNCOMPRESSED] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 3*4; + + for(int v=0;v<44;v++) + { + XTL::EmuD3DDeferredRenderState[v] = XTL::X_D3DRS_UNK; + } + + g_SymbolAddresses["D3DDeferredRenderState"] = (DWORD)XTL::EmuD3DDeferredRenderState; + printf("HLE: 0x%.08X -> EmuD3DDeferredRenderState\n", XTL::EmuD3DDeferredRenderState); + //DbgPrintf("HLE: 0x%.08X -> XREF_D3DRS_ROPZCMPALWAYSREAD\n", XRefDataBase[XREF_D3DRS_ROPZCMPALWAYSREAD] ); + } + else + { + XTL::EmuD3DDeferredRenderState = nullptr; + CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!"); + } + + // locate D3DDeferredTextureState + { + pFunc = (xbaddr)nullptr; + + if(OrigBuildVersion >= 3911 && OrigBuildVersion < 4034) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_3911, lower, upper); + else if(OrigBuildVersion >= 4034 && OrigBuildVersion < 4242) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4034, lower, upper); + else if(OrigBuildVersion >= 4242 && OrigBuildVersion < 4627) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4242, lower, upper); + else if(OrigBuildVersion >= 4627) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4627, lower, upper); + + if (pFunc != (xbaddr)nullptr) + { + xbaddr DerivedAddr_D3DTSS_TEXCOORDINDEX = NULL; + int Decrement = 0x70; // TODO : Rename into something understandable + + // TODO : Remove this when XREF_D3DTSS_TEXCOORDINDEX derivation is deemed stable + { + if (OrigBuildVersion >= 3911 && OrigBuildVersion < 4034) // 0x18F180 + DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x11); + else if (OrigBuildVersion >= 4034 && OrigBuildVersion < 4242) + DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x18); + else + DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x19); + + // Temporary verification - is XREF_D3DTSS_TEXCOORDINDEX derived correctly? + if (XRefDataBase[XREF_D3DTSS_TEXCOORDINDEX] != DerivedAddr_D3DTSS_TEXCOORDINDEX) + { + if (XRefDataBase[XREF_D3DTSS_TEXCOORDINDEX] != XREF_ADDR_DERIVE) + CxbxPopupMessage("Second derived XREF_D3DTSS_TEXCOORDINDEX differs from first!"); + + XRefDataBase[XREF_D3DTSS_TEXCOORDINDEX] = DerivedAddr_D3DTSS_TEXCOORDINDEX; + } + } + + XTL::EmuD3DDeferredTextureState = (DWORD*)(DerivedAddr_D3DTSS_TEXCOORDINDEX - Decrement); + + for(int s=0;s<4;s++) + { + for(int v=0;v<32;v++) + XTL::EmuD3DDeferredTextureState[v+s*32] = X_D3DTSS_UNK; + } + + g_SymbolAddresses["D3DDeferredTextureState"] = (DWORD)XTL::EmuD3DDeferredTextureState; + printf("HLE: 0x%.08X -> EmuD3DDeferredTextureState\n", XTL::EmuD3DDeferredTextureState); + } + else + { + XTL::EmuD3DDeferredTextureState = nullptr; + CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!"); + } + } +#else else if (strcmp(LibraryName.c_str(), Lib_D3D8) == 0 && - (BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432 - || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344 - || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849)) + (BuildVersion == 3925 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361 + || BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 + || BuildVersion == 5344 || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849)) { // Save D3D8 build version g_BuildVersion = BuildVersion; @@ -391,12 +589,10 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; xbaddr pFunc = (xbaddr)nullptr; - if(BuildVersion == 3925) - pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_3925, lower, upper); - else if(BuildVersion < 5233) - pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_4034, lower, upper); + if(BuildVersion < 4034) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_3911, lower, upper); else - pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_5233, lower, upper); + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_4034, lower, upper); // locate D3DDeferredRenderState if(pFunc != (xbaddr)nullptr) @@ -415,12 +611,13 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x25); Decrement = 0x1FC; // TODO: Clean up (?) Increment = 82 * 4; - patchOffset = 105 * 4; // TODO: Verify + patchOffset = 140 * 4; // Verified 3925 and 3948 //Decrement = 0x19F; // TODO: Clean up (?) //Increment = 72 * 4; //patchOffset = 142*4; // TODO: Verify } +#if 0 // Same as 4134 else if (BuildVersion == 4034) { DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B); @@ -428,7 +625,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) Increment = 82 * 4; patchOffset = 142 * 4; } - else if (BuildVersion == 4134 || BuildVersion == 4361) +#endif + else if (BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361) { DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B); Decrement = 0x200; @@ -505,13 +703,13 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) { pFunc = (xbaddr)nullptr; - if(BuildVersion == 3925) - pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_3925, lower, upper); + if(BuildVersion < 4034) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_3911, lower, upper); // TODO : What about 4034? Use it once it's offset to XREF_D3DTSS_TEXCOORDINDEX is verified - else if(BuildVersion == 4134) - pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4134, lower, upper); + else if(BuildVersion == 4034 || BuildVersion == 4134) + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4034, lower, upper); else if(BuildVersion == 4361 || BuildVersion == 4432) - pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4361, lower, upper); + pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4242, lower, upper); else if(BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849) pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4627, lower, upper); @@ -525,7 +723,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) { if (BuildVersion == 3925) // 0x18F180 DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x11); - else if (BuildVersion == 4134) + else if (BuildVersion == 4034 || BuildVersion == 4134) DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x18); else DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x19); @@ -558,25 +756,60 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!"); } } +#endif } } printf("HLE: * Searching HLE database for %s version 1.0.%d... ", LibraryName.c_str(), BuildVersion); - const HLEData *FoundHLEData = nullptr; + bool notFoundHLEDB = true; + //HLE Database v1 for(uint32 d = 0; d < HLEDataBaseCount; d++) { if (BuildVersion == HLEDataBase[d].BuildVersion && strcmp(LibraryName.c_str(), HLEDataBase[d].Library) == 0) { - FoundHLEData = &HLEDataBase[d]; + if (g_bPrintfOn) printf("Found\n"); + EmuInstallPatches(HLEDataBase[d].OovpaTable, HLEDataBase[d].OovpaTableSize, pXbeHeader); + notFoundHLEDB = false; break; } } - if (FoundHLEData) { - if (g_bPrintfOn) printf("Found\n"); - EmuInstallPatches(FoundHLEData->OovpaTable, FoundHLEData->OovpaTableSize, pXbeHeader); - } else { - if (g_bPrintfOn) printf("Skipped\n"); - } + //HLE Database v2 + if (notFoundHLEDB) { + //Initialize library scan against HLE database we want to search for address of patches and xreferences. + for (uint32 d2 = 0; d2 < HLEDataBaseCountV2; d2++) { + if (strcmp(LibraryName.c_str(), HLEDataBaseV2[d2].LibSec.library) == 0) { + bool bPrintOn = g_bPrintfOn; + for (uint32 v = 0; v < pXbeHeader->dwSections; v++) { + SectionName.assign((char*)pSectionHeaders[v].dwSectionNameAddr, (char*)pSectionHeaders[v].dwSectionNameAddr + 8); + + //Initialize a matching specific section is currently pair with library in order to scan specific section only. + //By doing this method will reduce false detection dramatically. If it had happened before. + for (uint32 d3 = 0; d3 < PAIRSCANSEC_MAX; d3++) { + if (HLEDataBaseV2[d2].LibSec.section[d3] != NULL && strcmp(SectionName.c_str(), HLEDataBaseV2[d2].LibSec.section[d3]) == 0) { + pSectionScan = pSectionHeaders + v; + + if (g_bPrintfOn) printf("Found\n"); + g_bPrintfOn = false; + + EmuInstallPatchesV2(HLEDataBaseV2[d2].OovpaTable, HLEDataBaseV2[d2].OovpaTableSize, pSectionScan, OrigBuildVersion); + notFoundHLEDB = false; + break; + } + } + } + g_bPrintfOn = bPrintOn; + break; + } + } + + } + if (g_bPrintfOn && notFoundHLEDB) printf("Skipped\n"); + + if (v == dwLibraryVersions - 1 && bDSoundLibSection == false) { + LibraryName = Lib_DSOUND; + OrigBuildVersion = BuildVersion = preserveVersion; + goto reProcessScan; + } } bXRefFirstPass = false; @@ -758,8 +991,9 @@ static xbaddr EmuLocateFunction(OOVPA *Oovpa, xbaddr lower, xbaddr upper) } default: { - if (XRefDataBase[Oovpa->XRefSaveIndex] != cur) + if (XRefDataBase[Oovpa->XRefSaveIndex] != cur) { EmuWarning("Found OOVPA on other address than in XRefDataBase!"); + } break; } } @@ -884,6 +1118,220 @@ static void EmuInstallPatches(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xbe } } +void EmuRegisterSymbol(OOVPATable *OovpaTable, xbaddr pFunc) +{ + // Ignore registered symbol in current database. + uint32_t hasSymbol = g_SymbolAddresses[OovpaTable->szFuncName]; + if (hasSymbol != 0) + return; + + // Now that we found the address, store it (regardless if we patch it or not) + g_SymbolAddresses[OovpaTable->szFuncName] = (uint32_t)pFunc; + + // Output some details + std::stringstream output; + output << "HLE: 0x" << std::setfill('0') << std::setw(8) << std::hex << pFunc + << " -> " << OovpaTable->szFuncName << " " << std::dec << OovpaTable->Version; + + bool IsXRef = OovpaTable->Oovpa->XRefSaveIndex != XRefNoSaveIndex; + if (IsXRef) { + output << "\t(XREF)"; + + // do we need to save the found address? + OOVPA* Oovpa = OovpaTable->Oovpa; + if (Oovpa->XRefSaveIndex != XRefNoSaveIndex) { + // is the XRef not saved yet? + switch (XRefDataBase[Oovpa->XRefSaveIndex]) { + case XREF_ADDR_NOT_FOUND: + { + EmuWarning("Found OOVPA after first finding nothing?"); + // fallthrough to XREF_ADDR_UNDETERMINED + } + case XREF_ADDR_UNDETERMINED: + { + // save and count the found address + UnResolvedXRefs--; + XRefDataBase[Oovpa->XRefSaveIndex] = pFunc; + break; + } + case XREF_ADDR_DERIVE: + { + EmuWarning("Cannot derive a save index!"); + break; + } + default: + { + if (XRefDataBase[OovpaTable->Oovpa->XRefSaveIndex] != pFunc) { + EmuWarning("Found OOVPA on other address than in XRefDataBase!"); + EmuWarning("%s: %4d - pFunc: %08X, stored: %08X", OovpaTable->szFuncName, Oovpa->XRefSaveIndex, pFunc, XRefDataBase[Oovpa->XRefSaveIndex]); + } + break; + } + } + } + } + + // Retrieve the associated patch, if any is available + void* addr = GetEmuPatchAddr(std::string(OovpaTable->szFuncName)); + + if (addr != nullptr) { + EmuInstallPatch(OovpaTable->szFuncName, pFunc, addr); + output << "\t*PATCHED*"; + } else { + const char* checkDisableStr = nullptr; + size_t getFuncStrLength = strlen(OovpaTable->szFuncName); + + if (getFuncStrLength > 10) { + checkDisableStr = &OovpaTable->szFuncName[getFuncStrLength - 10]; + } + + if (checkDisableStr != nullptr && strcmp(checkDisableStr, "_UNPATCHED") == 0) { + output << "\t*UNPATCHED*"; + + // Mention there's no patch available, if it was to be applied + } else if (!IsXRef) { + output << "\t*NO PATCH AVAILABLE!*"; + } + } + + output << "\n"; + printf(output.str().c_str()); +} + + +// locate the given function, searching within lower and upper bounds +xbaddr EmuLocateFunctionV2(OOVPA *Oovpa, xbaddr lower, xbaddr upper) +{ + // skip out if this is an unnecessary search + if (!bXRefFirstPass && Oovpa->XRefCount == XRefZero && Oovpa->XRefSaveIndex == XRefNoSaveIndex) + return (xbaddr)nullptr; + + uint32_t derive_indices = 0; + // Check all XRefs are known (if not, don't do a useless scan) : + for (uint32 v = 0; v < Oovpa->XRefCount; v++) { + uint32 XRef; + uint08 Offset; + + // get currently registered (un)known address + GetXRefEntry(Oovpa, v, XRef, Offset); + xbaddr XRefAddr = XRefDataBase[XRef]; + // Undetermined XRef cannot be checked yet + if (XRefAddr == XREF_ADDR_UNDETERMINED) + // Skip this scan over the address range + return (xbaddr)nullptr; + + // Don't verify an xref that has to be (but isn't yet) derived + if (XRefAddr == XREF_ADDR_DERIVE) { + // Mark (up to index 32) which xref needs to be derived + derive_indices |= (1 << v); + continue; + } + } + + // correct upper bound with highest Oovpa offset + uint32 count = Oovpa->Count; + { + uint32 Offset; + uint08 Value; // ignored + + GetOovpaEntry(Oovpa, count - 1, Offset, Value); + upper -= Offset; + } + + // search all of the image memory + for (xbaddr cur = lower; cur < upper; cur++) + if (CompareOOVPAToAddress(Oovpa, cur)) { + + while (derive_indices > 0) { + uint32 XRef; + uint08 Offset; + DWORD derive_index; + + // Extract an index from the indices mask : + _BitScanReverse(&derive_index, derive_indices); // MSVC intrinsic; GCC has __builtin_clz + derive_indices ^= (1 << derive_index); + + // get currently registered (un)known address + GetXRefEntry(Oovpa, derive_index, XRef, Offset); + + // Calculate the address where the XRef resides + xbaddr XRefAddr = cur + Offset; + // Read the address it points to + XRefAddr = *((xbaddr*)XRefAddr); + + /* For now assume it's a direct reference; + // TODO : Check if it's PC-relative reference? + if (XRefAddr + cur + Offset + 4 < XBE_MAX_VA) + XRefAddr = XRefAddr + cur + Offset + 4; + */ + + // Does the address seem valid? + if (XRefAddr < XBE_MAX_VA) { + // save and count the derived address + UnResolvedXRefs--; + XRefDataBase[XRef] = XRefAddr; + printf("Derived OOVPA!\n"); + } + } + + return cur; + } + + // found nothing + return (xbaddr)nullptr; +} + +// install function interception wrappers +static void EmuInstallPatchesV2(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xbe::SectionHeader *pSectionHeader, uint16_t buildVersion) +{ + xbaddr lower = pSectionHeader->dwVirtualAddr; + + // Find the highest address contained within an executable segment + xbaddr upper = pSectionHeader->dwVirtualAddr + pSectionHeader->dwVirtualSize; + + // traverse the full OOVPA table + OOVPATable *pLoopEnd = &OovpaTable[OovpaTableSize / sizeof(OOVPATable)]; + OOVPATable *pLoop = OovpaTable; + OOVPATable *pLastKnownSymbol = nullptr; + xbaddr pLastKnownFunc = 0; + const char *SymbolName = nullptr; + for (; pLoop < pLoopEnd; pLoop++) { + + if (SymbolName == nullptr) { + SymbolName = pLoop->szFuncName; + } else if (strcmp(SymbolName, pLoop->szFuncName) != 0) { + SymbolName = pLoop->szFuncName; + if (pLastKnownSymbol != nullptr) { + // Now that we found the address, store it (regardless if we patch it or not) + EmuRegisterSymbol(pLastKnownSymbol, pLastKnownFunc); + pLastKnownSymbol = nullptr; + pLastKnownFunc = 0; + } + } + + // Skip higher build version + if (buildVersion < pLoop->Version) + continue; + + // Search for each function's location using the OOVPA + xbaddr pFunc = (xbaddr)EmuLocateFunctionV2(pLoop->Oovpa, lower, upper); + if (pFunc == (xbaddr)nullptr) + continue; + + if (pFunc == pLastKnownFunc && pLastKnownSymbol == pLoop-1) { + if (g_SymbolAddresses[pLastKnownSymbol->szFuncName] == 0) { + printf("HLE: Duplicate OOVPA signature found for %s, %d vs %d!\n", pLastKnownSymbol->szFuncName, pLastKnownSymbol->Version, pLoop->Version); + } + } + + pLastKnownFunc = pFunc; + pLastKnownSymbol = pLoop; + } + if (pLastKnownSymbol != nullptr) { + EmuRegisterSymbol(pLastKnownSymbol, pLastKnownFunc); + } +} + #ifdef _DEBUG_TRACE struct HLEVerifyContext { diff --git a/src/CxbxKrnl/OOVPA.h b/src/CxbxKrnl/OOVPA.h index ab6657af1..a281126f6 100644 --- a/src/CxbxKrnl/OOVPA.h +++ b/src/CxbxKrnl/OOVPA.h @@ -36,6 +36,13 @@ #include "Cxbx.h" +// http://stackoverflow.com/questions/5134523/msvc-doesnt-expand-va-args-correctly +// MSVC_EXPAND works around a Visual C++ problem, expanding __VA_ARGS__ incorrectly: +#define MSVC_EXPAND(x) x + +#define STRINGIZEX(x) #x +#define STRINGIZE(x) STRINGIZEX(x) + #pragma pack(1) // ****************************************************************** @@ -154,22 +161,94 @@ const uint16_t Flag_DontPatch = 4;// Indicates an entry that's shouldn't be patc #define REGISTER_OOVPA(Symbol, Version, TYPE, ...) \ REGISTER_OOVPA_##TYPE(Symbol, Version, __VA_ARGS__) -#define PATCH /* most common registration, Symbol indicates both an OOVPA and Patch */ +#define PATCH PATCH/* most common registration, Symbol indicates both an OOVPA and Patch */ #define REGISTER_OOVPA_PATCH(Symbol, Version, ...) \ OOVPA_TABLE_ENTRY_FULL(Symbol, #Symbol ##, Version, 0) -#define XREF /* registration of an XRef-only OOVPA, for which no Patch is present */ +#define XREF XREF/* registration of an XRef-only OOVPA, for which no Patch is present */ #define REGISTER_OOVPA_XREF(Symbol, Version, ...) \ OOVPA_TABLE_ENTRY_FULL(Symbol, #Symbol ##, Version, Flag_XRef) -#define ALIAS /* registration of a Patch using an alternatively named OOVPA */ +#define ALIAS ALIAS/* registration of a Patch using an alternatively named OOVPA */ #define REGISTER_OOVPA_ALIAS(Symbol, Version, AliasOovpa) \ OOVPA_TABLE_ENTRY_FULL(AliasOovpa, #Symbol ##, Version, 0) -#define DISABLED /* registration is (temporarily) disabled by a flag */ +#define DISABLED DISABLED/* registration is (temporarily) disabled by a flag */ #define REGISTER_OOVPA_DISABLED(Symbol, Version, ...) \ OOVPA_TABLE_ENTRY_FULL(Symbol, #Symbol ##, Version, Flag_DontPatch) +//Below this is a revise version 2 to improve OOPVA scan as possible. + +#define UNPATCHED UNPATCHED/* registration is remain unpatched, + can be activate via HLE Cache file by removing _UNPATCHED at the end. */ + +/* Use XREF define to knowledge it is reference purpose only.*/ +#define REGISTER_OOVPA_V2_XREF(Symbol, TYPE, Version) \ + OOVPA_TABLE_ENTRY_FULL(Symbol, #Symbol, Version, 0) + +/* Use PATCH define only for functions with FUNC_EXPORTS included.*/ +#define REGISTER_OOVPA_V2_PATCH(Symbol, TYPE, Version) \ + OOVPA_TABLE_ENTRY_FULL(Symbol, #Symbol, Version, 0) + +/* DISABLED define will perform scan and append "_DISABLED" only. + * This is only effective for functions with "FUNC_EXPORTS" bypass purpose. + * XREF remain unaffected and will perform task normally. + * NOTICE: Do not use DISABLED on XREF OOVPA! Or developers will be confused. */ +#define REGISTER_OOVPA_V2_UNPATCHED(Symbol, TYPE, Version) \ + OOVPA_TABLE_ENTRY_FULL(Symbol, STRINGIZEX(Symbol## _ ##TYPE), Version, 0) + +#define REGISTER_OOVPA_V2(Symbol, TYPE, Version) \ + MSVC_EXPAND(REGISTER_OOVPA_V2_##TYPE(Symbol, TYPE, Version)) +// { &(Symbol ## _ ## Version).Header, #Symbol, Version, Flags } + +// ****************************************************************** +// * OOVPATable +// ****************************************************************** +struct OOVPATableV2 { + char *szSymbolName; + uint16_t Version; + OOVPA *pOovpa; +}; + +// 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 +#define REGISTER_OOVPA_0(...) + #define REGISTER_OOVPA_1(Symbol, TYPE, Version) REGISTER_OOVPA_V2(Symbol, TYPE, Version) + #define REGISTER_OOVPA_2(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_1(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_3(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_2(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_4(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_3(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_5(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_4(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_6(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_5(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_7(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_6(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_8(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_7(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_9(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_8(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_10(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_9(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_11(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_10(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_12(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_11(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_13(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_12(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_14(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_13(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_15(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_14(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_16(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_15(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_17(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_16(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_18(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_17(Symbol, TYPE, __VA_ARGS__)) + #define REGISTER_OOVPA_19(Symbol, TYPE, Version, ...) REGISTER_OOVPA_V2(Symbol, TYPE, Version), MSVC_EXPAND(REGISTER_OOVPA_18(Symbol, TYPE, __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( \ + _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(Symbol, TYPE, ...) 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, TYPE, __VA_ARGS__)) + #pragma pack()