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 SPORTSERUGBY 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 SPORTSERUGBY 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 SPORTSERUGBY 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()