diff --git a/build/win32/Cxbx.vcxproj b/build/win32/Cxbx.vcxproj
index e4eef935a..837776b2d 100644
--- a/build/win32/Cxbx.vcxproj
+++ b/build/win32/Cxbx.vcxproj
@@ -226,6 +226,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -237,6 +238,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -250,6 +252,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -260,6 +263,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -269,6 +273,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -307,6 +312,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -318,6 +324,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -330,6 +337,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -339,6 +347,7 @@ $(SOLUTIONDIR)Export.bat
+
@@ -347,6 +356,7 @@ $(SOLUTIONDIR)Export.bat
+
diff --git a/build/win32/Cxbx.vcxproj.filters b/build/win32/Cxbx.vcxproj.filters
index 5e3d73aaa..b3e18fd55 100644
--- a/build/win32/Cxbx.vcxproj.filters
+++ b/build/win32/Cxbx.vcxproj.filters
@@ -237,18 +237,12 @@
EmuD3D8
-
- HLEDatabase
-
HLEDatabase
HLEDatabase
-
- HLEDatabase
-
HLEDatabase
@@ -267,9 +261,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -297,9 +297,18 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
+
+ HLEDatabase
+
HLEDatabase
@@ -327,9 +336,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -354,9 +369,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -375,9 +396,18 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
+
+ HLEDatabase
+
HLEDatabase
@@ -510,21 +540,6 @@
Shared
-
- HLEDatabase
-
-
- HLEDatabase
-
-
- HLEDatabase
-
-
- HLEDatabase
-
-
- HLEDatabase
-
Shared
@@ -560,9 +575,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -590,9 +611,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -623,9 +650,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -647,9 +680,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -668,9 +707,15 @@
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
+
+ HLEDatabase
+
HLEDatabase
@@ -683,21 +728,6 @@
Shared
-
- HLEDatabase
-
-
- HLEDatabase
-
-
- HLEDatabase
-
-
- HLEDatabase
-
-
- HLEDatabase
-
diff --git a/src/CxbxKrnl/HLEDataBase.cpp b/src/CxbxKrnl/HLEDataBase.cpp
index 25dd110a1..686fe8b2f 100644
--- a/src/CxbxKrnl/HLEDataBase.cpp
+++ b/src/CxbxKrnl/HLEDataBase.cpp
@@ -64,6 +64,7 @@ const char *Lib_XONLINES = "XONLINES";
#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"
@@ -75,6 +76,7 @@ const char *Lib_XONLINES = "XONLINES";
#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"
@@ -86,6 +88,7 @@ const char *Lib_XONLINES = "XONLINES";
#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"
@@ -96,6 +99,7 @@ const char *Lib_XONLINES = "XONLINES";
#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"
@@ -105,6 +109,7 @@ const char *Lib_XONLINES = "XONLINES";
#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"
@@ -130,6 +135,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_XAPILIB, XAPI, 4432),
HLE_ENTRY(Lib_XAPILIB, XAPI, 4627),
HLE_ENTRY(Lib_XAPILIB, XAPI, 4721),
+ HLE_ENTRY(Lib_XAPILIB, XAPI, 5028),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5233),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5344),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5558),
@@ -142,6 +148,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_D3D8, D3D8, 4361),
HLE_ENTRY(Lib_D3D8, D3D8, 4432),
HLE_ENTRY(Lib_D3D8, D3D8, 4627),
+ HLE_ENTRY(Lib_D3D8, D3D8, 5028),
HLE_ENTRY(Lib_D3D8, D3D8, 5233),
HLE_ENTRY(Lib_D3D8, D3D8, 5344),
HLE_ENTRY(Lib_D3D8, D3D8, 5558),
@@ -155,6 +162,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_DSOUND, DSound, 4361),
HLE_ENTRY(Lib_DSOUND, DSound, 4432),
HLE_ENTRY(Lib_DSOUND, DSound, 4627),
+ HLE_ENTRY(Lib_DSOUND, DSound, 5028),
HLE_ENTRY(Lib_DSOUND, DSound, 5233),
HLE_ENTRY(Lib_DSOUND, DSound, 5344),
HLE_ENTRY(Lib_DSOUND, DSound, 5558),
@@ -166,6 +174,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_XGRAPHC, XG, 4361),
HLE_ENTRY(Lib_XGRAPHC, XG, 4432),
HLE_ENTRY(Lib_XGRAPHC, XG, 4627),
+ HLE_ENTRY(Lib_XGRAPHC, XG, 5028),
HLE_ENTRY(Lib_XGRAPHC, XG, 5233),
HLE_ENTRY(Lib_XGRAPHC, XG, 5344),
HLE_ENTRY(Lib_XGRAPHC, XG, 5558),
@@ -179,6 +188,7 @@ const HLEData HLEDataBase[] =
// TODO: Verify differences between XONLINE and XONLINES (if any)
HLE_ENTRY(Lib_XONLINES, XOnline, 4627),
+ HLE_ENTRY(Lib_XONLINES, XOnline, 5028),
HLE_ENTRY(Lib_XONLINES, XOnline, 5233),
HLE_ENTRY(Lib_XONLINES, XOnline, 5344),
HLE_ENTRY(Lib_XONLINES, XOnline, 5558),
diff --git a/src/CxbxKrnl/HLEDataBase.h b/src/CxbxKrnl/HLEDataBase.h
index 527a22724..abde1b357 100644
--- a/src/CxbxKrnl/HLEDataBase.h
+++ b/src/CxbxKrnl/HLEDataBase.h
@@ -40,6 +40,7 @@
#include "HLEDataBase/Xapi.1.0.4361.h"
#include "HLEDataBase/Xapi.1.0.4432.h"
#include "HLEDataBase/Xapi.1.0.4627.h"
+#include "HLEDataBase/Xapi.1.0.5028.h"
#include "HLEDataBase/Xapi.1.0.5233.h"
#include "HLEDataBase/Xapi.1.0.5344.h"
#include "HLEDataBase/Xapi.1.0.5558.h"
@@ -51,6 +52,7 @@
#include "HLEDataBase/D3D8.1.0.4361.h"
#include "HLEDataBase/D3D8.1.0.4432.h"
#include "HLEDataBase/D3D8.1.0.4627.h"
+#include "HLEDataBase/D3D8.1.0.5028.h"
#include "HLEDataBase/D3D8.1.0.5233.h"
#include "HLEDataBase/D3D8.1.0.5344.h"
#include "HLEDataBase/D3D8.1.0.5558.h"
@@ -62,6 +64,7 @@
#include "HLEDataBase/DSound.1.0.4361.h"
#include "HLEDataBase/DSound.1.0.4432.h"
#include "HLEDataBase/DSound.1.0.4627.h"
+#include "HLEDataBase/DSound.1.0.5028.h"
#include "HLEDataBase/DSound.1.0.5233.h"
#include "HLEDataBase/DSound.1.0.5344.h"
#include "HLEDataBase/DSound.1.0.5558.h"
@@ -72,6 +75,7 @@
#include "HLEDataBase/XG.1.0.4361.h"
#include "HLEDataBase/XG.1.0.4432.h"
#include "HLEDataBase/XG.1.0.4627.h"
+#include "HLEDataBase/XG.1.0.5028.h"
#include "HLEDataBase/XG.1.0.5233.h"
#include "HLEDataBase/XG.1.0.5344.h"
#include "HLEDataBase/XG.1.0.5558.h"
@@ -80,6 +84,7 @@
#include "HLEDataBase/XNet.1.0.3911.h"
#include "HLEDataBase/XOnline.1.0.4361.h"
#include "HLEDataBase/XOnline.1.0.4627.h"
+#include "HLEDataBase/XOnline.1.0.5028.h"
#include "HLEDataBase/XOnline.1.0.5233.h"
#include "HLEDataBase/XOnline.1.0.5344.h"
#include "HLEDataBase/XOnline.1.0.5558.h"
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl
index 3d94f2e61..e43c4592a 100644
--- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl
@@ -1948,6 +1948,37 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4134, 11)
{ 0xA5, 0x89 }, // (Offset,Value)-Pair #11
OOVPA_END;
+// ******************************************************************
+// * D3DDevice_GetModelView
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetModelView, 4134, 7)
+
+ { 0x05, 0x57 },
+ { 0x0A, 0x85 },
+ { 0x10, 0xB0 },
+ { 0x16, 0x10 },
+ { 0x1C, 0x5E },
+ { 0x22, 0xC1 },
+ { 0x28, 0xE0 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_FlushVertexCache
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 4134, 10)
+
+ { 0x00, 0x56 },
+ { 0x07, 0x8B },
+ { 0x08, 0x06 },
+ { 0x0D, 0x05 },
+ { 0x13, 0xC7 },
+ { 0x15, 0x10 },
+ { 0x17, 0x04 },
+ { 0x1C, 0x00 },
+ { 0x21, 0xC0 },
+ { 0x26, 0xC3 },
+OOVPA_END;
+
// ******************************************************************
// * D3D8_4134
// ******************************************************************
@@ -2103,6 +2134,8 @@ OOVPATable D3D8_4134[] = {
REGISTER_OOVPA(D3D_SetPushBufferSize, 4034, DISABLED),
REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH),
};
// ******************************************************************
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl
index 645693d1c..706811f24 100644
--- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl
@@ -1767,6 +1767,37 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderInput, 4361, 8)
{ 0xFE, 0x89 },
OOVPA_END;
+// ******************************************************************
+// * D3DDevice_SetVertexData2s
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetVertexData2s, 4361, 8)
+
+ { 0x08, 0x06 },
+ { 0x0E, 0xE8 },
+ { 0x16, 0x08 },
+ { 0x17, 0x8D },
+ { 0x18, 0x14 },
+ { 0x19, 0x8D },
+ { 0x1A, 0x00 },
+ { 0x1F, 0xBF },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetVertexData4s
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetVertexData4s, 4361, 9)
+
+ { 0x08, 0x06 },
+ { 0x0E, 0xE8 },
+ { 0x16, 0x08 },
+ { 0x17, 0x8D },
+ { 0x18, 0x14 },
+ { 0x19, 0xCD },
+ { 0x1A, 0x80 },
+ { 0x1B, 0x19 },
+ { 0x1F, 0xBF },
+OOVPA_END;
+
// ******************************************************************
// * D3D8_4361
// ******************************************************************
@@ -1916,6 +1947,8 @@ OOVPATable D3D8_4361[] = {
REGISTER_OOVPA(D3DDevice_GetVertexShader, 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),
};
// ******************************************************************
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl
index 2dc5a2e66..c8137dc44 100644
--- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl
@@ -99,28 +99,6 @@ OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 4627, 11)
{ 0x26, 0x0C }, // (Offset,Value)-Pair #11
OOVPA_END;
-// ******************************************************************
-// * Direct3D_CreateDevice
-// ******************************************************************
-OOVPA_NO_XREF(Direct3D_CreateDevice, 5028, 8)
-
- // Direct3D_CreateDevice+0x0A : jnz +0x0A
- { 0x0A, 0x75 }, // (Offset,Value)-Pair #1
- { 0x0B, 0x0A }, // (Offset,Value)-Pair #2
-
- // Direct3D_CreateDevice+0x80 : repe stosd
- { 0x80, 0xF3 }, // (Offset,Value)-Pair #3
- { 0x81, 0xAB }, // (Offset,Value)-Pair #4
-
- // Direct3D_CreateDevice+0x83 : mov eax, esi
- { 0x83, 0x8B }, // (Offset,Value)-Pair #5
- { 0x84, 0xC6 }, // (Offset,Value)-Pair #6
-
- // Direct3D_CreateDevice+0x91 : retn 0x18
- { 0x91, 0xC2 }, // (Offset,Value)-Pair #7
- { 0x92, 0x18 }, // (Offset,Value)-Pair #8
-OOVPA_END;
-
// ******************************************************************
// * D3DDevice_EndVisibilityTest
// ******************************************************************
@@ -3121,6 +3099,21 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 4627, 9)
{ 0x2E, 0x04 },
OOVPA_END;
+// ******************************************************************
+// * D3DDevice_PrimeVertexCache
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_PrimeVertexCache, 4627, 8)
+
+ { 0x1A, 0x8B },
+ { 0x1B, 0x4D },
+ { 0x1C, 0x04 },
+ { 0x1D, 0xD1 },
+ { 0x1E, 0xEE },
+ { 0x2E, 0xC7 },
+ { 0x3E, 0x00 },
+ { 0x4E, 0x89 },
+OOVPA_END;
+
// ******************************************************************
// * D3D8_4627
// ******************************************************************
@@ -3336,6 +3329,7 @@ REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH),
REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4627, PATCH),
// REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), // TODO: This needs to be verified on 4361, not just 4242!
REGISTER_OOVPA(D3D_SetPushBufferSize, 4034, DISABLED),
+ REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH),
};
// ******************************************************************
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.h b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.h
new file mode 100644
index 000000000..be60626ec
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.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->D3D8.1.0.5028.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 D3D8_5028_H
+#define D3D8_5028_H
+
+#include "OOVPA.h"
+
+extern OOVPATable D3D8_5028[];
+extern uint32 D3D8_5028_SIZE;
+
+#endif
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl
new file mode 100644
index 000000000..21f964f58
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl
@@ -0,0 +1,1020 @@
+// ******************************************************************
+// *
+// * .,-::::: .,:: .::::::::. .,:: .:
+// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
+// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
+// * $$$ 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.5028.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
+// *
+// ******************************************************************
+
+// ******************************************************************
+// * Direct3D_CreateDevice
+// ******************************************************************
+OOVPA_NO_XREF(Direct3D_CreateDevice, 5028, 8)
+
+ // Direct3D_CreateDevice+0x0A : jnz +0x0A
+ { 0x0A, 0x75 }, // (Offset,Value)-Pair #1
+ { 0x0B, 0x0A }, // (Offset,Value)-Pair #2
+
+ // Direct3D_CreateDevice+0x80 : repe stosd
+ { 0x80, 0xF3 }, // (Offset,Value)-Pair #3
+ { 0x81, 0xAB }, // (Offset,Value)-Pair #4
+
+ // Direct3D_CreateDevice+0x83 : mov eax, esi
+ { 0x83, 0x8B }, // (Offset,Value)-Pair #5
+ { 0x84, 0xC6 }, // (Offset,Value)-Pair #6
+
+ // Direct3D_CreateDevice+0x91 : retn 0x18
+ { 0x91, 0xC2 }, // (Offset,Value)-Pair #7
+ { 0x92, 0x18 }, // (Offset,Value)-Pair #8
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetRenderState_TextureFactor
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 5028, 9)
+
+ // D3DDevice_SetRenderState_TextureFactor+0x07 : mov eax, [esi+0x036C]
+ { 0x07, 0x8B }, // (Offset,Value)-Pair #1
+ { 0x08, 0x86 }, // (Offset,Value)-Pair #2
+ { 0x09, 0x6C }, // (Offset,Value)-Pair #3
+ { 0x0A, 0x03 }, // (Offset,Value)-Pair #4
+
+ // D3DDevice_SetRenderState_TextureFactor+0x2F : nop
+ { 0x2F, 0x90 }, // (Offset,Value)-Pair #5
+
+ // D3DDevice_SetRenderState_TextureFactor+0x41 : retn 0x04
+ { 0x41, 0xC2 }, // (Offset,Value)-Pair #6
+ { 0x42, 0x04 }, // (Offset,Value)-Pair #7
+
+ // D3DDevice_SetRenderState_TextureFactor+0x4E : retn 0x04
+ { 0x4E, 0xC2 }, // (Offset,Value)-Pair #8
+ { 0x4F, 0x04 }, // (Offset,Value)-Pair #9
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetRenderState_Dxt1NoiseEnable
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5028, 7)
+
+ { 0x0F, 0xB4 },
+ { 0x10, 0x15 },
+ { 0x16, 0x0D },
+ { 0x1F, 0x3C },
+ { 0x34, 0x36 },
+ { 0x58, 0x05 },
+ { 0x75, 0x04 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetRenderState_ZEnable
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 5028, 8)
+
+ { 0x13, 0x8B },
+ { 0x22, 0xC9 },
+ { 0x34, 0x89 },
+ { 0x46, 0x0C },
+ { 0x5A, 0x74 },
+ { 0x6D, 0x8B },
+ { 0x7C, 0xCE },
+ { 0x8E, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetRenderState_MultiSampleMask
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMask, 5028, 8)
+
+ { 0x0A, 0xA3 },
+ { 0x12, 0x56 },
+ { 0x1C, 0x8B },
+ { 0x2A, 0x85 },
+ { 0x30, 0x01 },
+ { 0x3D, 0xC7 },
+ { 0x44, 0x78 },
+ { 0x4E, 0x04 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetRenderState_SampleAlpha
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetRenderState_SampleAlpha, 5028, 7)
+
+ { 0x0B, 0xC1 },
+ { 0x15, 0x0B },
+ { 0x1C, 0x8B },
+ { 0x28, 0x85 },
+ { 0x30, 0x07 },
+ { 0x3B, 0xC7 },
+ { 0x44, 0x83 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_CreateTexture2
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_CreateTexture2, 5028, 8)
+
+ { 0x10, 0x0F },
+ { 0x14, 0x4C },
+ { 0x18, 0x33 },
+ { 0x1C, 0x05 },
+ { 0x1F, 0x24 },
+ { 0x43, 0xF8 },
+ { 0x4A, 0x01 },
+ { 0x4F, 0x64 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_BlockUntilVerticalBlank
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5028, 7)
+
+ { 0x05, 0x6A },
+ { 0x12, 0x00 },
+ { 0x15, 0x6A },
+ { 0x16, 0x06 },
+ { 0x17, 0x05 },
+ { 0x1C, 0x50 },
+ { 0x23, 0xC3 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetBackBuffer2
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5028, 12)
+
+ // D3DDevice_GetBackBuffer2+0x04 : cmp eax, 0xFFFFFFFF
+ { 0x04, 0x83 }, // (Offset,Value)-Pair #1
+ { 0x05, 0xF8 }, // (Offset,Value)-Pair #2
+ { 0x06, 0xFF }, // (Offset,Value)-Pair #3
+
+ // D3DDevice_GetBackBuffer+0x0D : jnz +0x19
+ { 0x0D, 0x75 }, // (Offset,Value)-Pair #4
+ { 0x0E, 0x19 }, // (Offset,Value)-Pair #5
+
+ // D3DDevice_GetBackBuffer+0x15 : mov esi, [ecx+eax*4+0x15C0]
+ { 0x15, 0x8B }, // (Offset,Value)-Pair #6
+ { 0x16, 0xB4 }, // (Offset,Value)-Pair #7
+ { 0x17, 0x81 }, // (Offset,Value)-Pair #8
+ { 0x18, 0xC0 }, // (Offset,Value)-Pair #9
+ { 0x19, 0x15 }, // (Offset,Value)-Pair #10
+
+ // D3DDevice_GetBackBuffer+0x40 : retn 0x04
+ { 0x40, 0xC2 }, // (Offset,Value)-Pair #11
+ { 0x41, 0x04 }, // (Offset,Value)-Pair #12
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetRenderTarget2
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetRenderTarget2, 5028, 6)
+
+ { 0x05, 0x56 },
+ { 0x06, 0x8B },
+ { 0x0A, 0x00 },
+ { 0x0E, 0x74 },
+ { 0x16, 0x8B },
+ { 0x17, 0xC6 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetDepthStencilSurface2
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 5028, 7)
+
+ { 0x05, 0x56 },
+ { 0x06, 0x8B },
+ { 0x0A, 0x00 },
+ { 0x0E, 0x75 },
+ { 0x12, 0x5E },
+ { 0x1A, 0x8B },
+ { 0x1B, 0xC6 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3D_GetDeviceCaps
+// ******************************************************************
+OOVPA_NO_XREF(D3D_GetDeviceCaps, 5028, 7)
+
+ { 0x04, 0x85 },
+ { 0x0A, 0x08 },
+ { 0x10, 0x83 },
+ { 0x16, 0x08 },
+ { 0x1C, 0xC2 },
+ { 0x22, 0x0C },
+ { 0x29, 0x33 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetViewport
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetViewport, 5028, 9)
+
+ // D3DDevice_SetViewport+0x0A : mov eax, [esi+0x15B4]
+ { 0x0A, 0x8B }, // (Offset,Value)-Pair #1
+ { 0x0B, 0x86 }, // (Offset,Value)-Pair #2
+ { 0x0C, 0xB4 }, // (Offset,Value)-Pair #3
+ { 0x0D, 0x15 }, // (Offset,Value)-Pair #4
+
+ // D3DDevice_SetViewport+0x63 : shl edi, cl
+ { 0x63, 0xD3 }, // (Offset,Value)-Pair #5
+ { 0x64, 0xE7 }, // (Offset,Value)-Pair #6
+
+ // D3DDevice_SetViewport+0xDF : and ecx, 0x0F
+ { 0xDF, 0x83 }, // (Offset,Value)-Pair #7
+ { 0xE0, 0xE1 }, // (Offset,Value)-Pair #8
+ { 0xE1, 0x0F }, // (Offset,Value)-Pair #9
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetLight
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetLight, 5028, 12)
+
+ // D3DDevice_SetLight+0x11 : mov edi, [ebp+0x390]
+ { 0x11, 0x8B }, // (Offset,Value)-Pair #1
+ { 0x12, 0xBD }, // (Offset,Value)-Pair #2
+ { 0x13, 0x90 }, // (Offset,Value)-Pair #3
+ { 0x14, 0x03 }, // (Offset,Value)-Pair #4
+
+ // D3DDevice_SetLight+0x30 : shl eax, 0x04
+ { 0x30, 0xC1 }, // (Offset,Value)-Pair #5
+ { 0x31, 0xE0 }, // (Offset,Value)-Pair #6
+ { 0x32, 0x04 }, // (Offset,Value)-Pair #7
+
+ // D3DDevice_SetLight+0xBD : rep stosb
+ { 0xBD, 0xF3 }, // (Offset,Value)-Pair #8
+ { 0xBE, 0xAB }, // (Offset,Value)-Pair #9
+
+ // D3DDevice_SetLight+0xFD : mov ecx, [ebx+0x68]
+ { 0xFD, 0x8B }, // (Offset,Value)-Pair #10
+ { 0xFE, 0x4B }, // (Offset,Value)-Pair #11
+ { 0xFF, 0x68 }, // (Offset,Value)-Pair #12
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_LightEnable
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_LightEnable, 5028, 13)
+
+ // D3DDevice_LightEnable+0x0F : cmp ebx, [esi+0x0390]
+ { 0x0F, 0x3B }, // (Offset,Value)-Pair #1
+ { 0x10, 0x9E }, // (Offset,Value)-Pair #2
+ { 0x11, 0x90 }, // (Offset,Value)-Pair #3
+ { 0x12, 0x03 }, // (Offset,Value)-Pair #4
+
+ // D3DDevice_LightEnable+0x6B : test eax, eax
+ { 0x6B, 0x85 }, // (Offset,Value)-Pair #5
+ { 0x6C, 0xC0 }, // (Offset,Value)-Pair #6
+
+ // D3DDevice_LightEnable+0x9E : mov eax, [eax+0x8C]
+ { 0x9E, 0x8B }, // (Offset,Value)-Pair #7
+ { 0x9F, 0x80 }, // (Offset,Value)-Pair #8
+ { 0xA0, 0x8C }, // (Offset,Value)-Pair #9
+
+ // D3DDevice_LightEnable+0xBC : jz +0x12
+ { 0xBC, 0x74 }, // (Offset,Value)-Pair #10
+ { 0xBD, 0x12 }, // (Offset,Value)-Pair #11
+
+ // D3DDevice_LightEnable+0xE1 : retn 0x08
+ { 0xE1, 0xC2 }, // (Offset,Value)-Pair #12
+ { 0xE2, 0x08 }, // (Offset,Value)-Pair #13
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetIndices
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetIndices, 5028, 7)
+
+ { 0x0F, 0x10 },
+ { 0x20, 0xC7 },
+ { 0x31, 0xC0 },
+ { 0x42, 0x78 },
+ { 0x53, 0xBE },
+ { 0x64, 0x89 },
+ { 0x75, 0x10 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetTileNoWait
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetTileNoWait, 5028, 11)
+
+ // D3DDevice_SetTileNoWait+0x06 : sub esp, 0x18
+ { 0x06, 0x83 }, // (Offset,Value)-Pair #1
+ { 0x07, 0xEC }, // (Offset,Value)-Pair #2
+ { 0x08, 0x18 }, // (Offset,Value)-Pair #3
+
+ // D3DDevice_SetTileNoWait+0x15 : cmp [esi+4], eax
+ { 0x15, 0x39 }, // (Offset,Value)-Pair #4
+ { 0x16, 0x46 }, // (Offset,Value)-Pair #5
+ { 0x17, 0x04 }, // (Offset,Value)-Pair #6
+
+ // D3DDevice_SetTileNoWait+0x3D : lea edi, [edx+ecx*8+0x1660]
+ { 0x3D, 0x8D }, // (Offset,Value)-Pair #7
+ { 0x3E, 0xBC }, // (Offset,Value)-Pair #8
+ { 0x3F, 0xCA }, // (Offset,Value)-Pair #9
+ { 0x40, 0x60 }, // (Offset,Value)-Pair #10
+ { 0x41, 0x16 }, // (Offset,Value)-Pair #11
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_Clear
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_Clear, 5028, 8)
+ { 0x1D, 0x8A },
+ { 0x3C, 0x8B },
+ { 0x5B, 0x00 },
+ { 0x7A, 0xFD },
+ { 0x99, 0x25 },
+ { 0xB8, 0x00 },
+ { 0xD7, 0x75 },
+ { 0xF6, 0xFF },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_DrawVertices
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_DrawVertices, 5028, 7)
+
+ { 0x12, 0x8B },
+ { 0x26, 0x8B },
+ { 0x37, 0x00 },
+ { 0x4A, 0x27 },
+ { 0x5D, 0x89 },
+ { 0x70, 0x75 },
+ { 0x83, 0x40 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_DrawIndexedVertices
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_DrawIndexedVertices, 5028, 8)
+
+ { 0x1E, 0x5E },
+ { 0x3E, 0x17 },
+ { 0x5E, 0x00 },
+ { 0x7E, 0x8B },
+ { 0x9E, 0x89 },
+ { 0xBE, 0x2B },
+ { 0xDE, 0x00 },
+ { 0xFE, 0x04 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetVertexData2f
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetVertexData2f, 5028, 8)
+
+ { 0x07, 0x8B },
+ { 0x0C, 0x72 },
+ { 0x13, 0x8B },
+ { 0x1A, 0x80 },
+ { 0x21, 0x0C },
+ { 0x28, 0x89 },
+ { 0x2F, 0xC0 },
+ { 0x36, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_Begin
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_Begin, 5028, 7)
+
+ { 0x07, 0xE8 },
+ { 0x0C, 0x8B },
+ { 0x13, 0xE8 },
+ { 0x1A, 0x24 },
+ { 0x21, 0x00 },
+ { 0x28, 0x89 },
+ { 0x2F, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_LoadVertexShader
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_LoadVertexShader, 5028, 7)
+
+ { 0x09, 0x45 },
+ { 0x14, 0x75 },
+ { 0x21, 0x8B },
+ { 0x2D, 0x8B },
+ { 0x35, 0x04 },
+ { 0x40, 0x00 },
+ { 0x4B, 0x5E },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetShaderConstantMode
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode, 5028, 8)
+
+ { 0x1D, 0xFD },
+ { 0x3C, 0x8B },
+ { 0x5B, 0x0B },
+ { 0x7A, 0x56 },
+ { 0x99, 0xC0 },
+ { 0xB8, 0x00 },
+ { 0xD7, 0x89 },
+ { 0xF6, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetVertexShader
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetVertexShader, 5028, 14)
+
+ // D3DDevice_SetVertexShader+0x06 : test bl, 1
+ { 0x06, 0xF6 }, // (Offset,Value)-Pair #1
+ { 0x07, 0xC3 }, // (Offset,Value)-Pair #2
+ { 0x08, 0x01 }, // (Offset,Value)-Pair #3
+
+ // D3DDevice_SetVertexShader+0x11 : mov eax, [esi+0x037C]
+ { 0x11, 0x8B }, // (Offset,Value)-Pair #4
+ { 0x12, 0x86 }, // (Offset,Value)-Pair #5
+ { 0x13, 0x7C }, // (Offset,Value)-Pair #6
+ { 0x14, 0x03 }, // (Offset,Value)-Pair #7
+
+ // D3DDevice_SetVertexShader+0x90 : retn 0x04
+ { 0x90, 0xC2 }, // (Offset,Value)-Pair #8
+ { 0x91, 0x04 }, // (Offset,Value)-Pair #9
+
+ // D3DDevice_SetVertexShader+0xB0 : mov dword ptr [eax], 0x4194C
+ { 0xB0, 0xC7 }, // (Offset,Value)-Pair #10
+ { 0xB1, 0x00 }, // (Offset,Value)-Pair #11
+ { 0xB2, 0x4C }, // (Offset,Value)-Pair #12
+ { 0xB3, 0x19 }, // (Offset,Value)-Pair #13
+ { 0xB4, 0x04 }, // (Offset,Value)-Pair #14
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_Swap
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_Swap, 5028, 7)
+
+ { 0x1B, 0xE8 },
+ { 0x38, 0xC3 },
+ { 0x55, 0xC0 },
+ { 0x72, 0x3F },
+ { 0x8F, 0x8E },
+ { 0xAC, 0xC6 },
+ { 0xC9, 0xC0 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3D::SetFence
+// ******************************************************************
+OOVPA_XREF(D3D_SetFence, 5028, 7,
+
+ XREF_D3D_SETFENCE,
+ XRefZero)
+
+ { 0x0E, 0x05 },
+ { 0x18, 0xC9 },
+ { 0x3E, 0x3F },
+ { 0x5E, 0x28 },
+ { 0x86, 0x5D },
+ { 0x98, 0xE8 },
+ { 0xA2, 0x04 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3D::BlockOnTime
+// ******************************************************************
+OOVPA_XREF(D3D_BlockOnTime, 5028, 6,
+
+ XREF_D3D_BLOCKONTIME,
+ XRefZero)
+
+ { 0x09, 0x30 },
+ { 0x27, 0x07 },
+ { 0x55, 0x7E },
+ { 0x7B, 0x58 },
+ { 0xE3, 0x80 },
+ { 0xF5, 0x2C },
+OOVPA_END;
+
+// ******************************************************************
+// * D3D_KickOffAndWaitForIdle
+// ******************************************************************
+OOVPA_NO_XREF(D3D_KickOffAndWaitForIdle, 5028, 9)
+
+ // D3D_KickOffAndWaitForIdle+0x00 : mov eax, [addr]
+ { 0x00, 0xA1 }, // (Offset,Value)-Pair #1
+
+ // D3D_KickOffAndWaitForIdle+0x05 : mov ecx, [eax+0x2C]
+ { 0x05, 0x8B }, // (Offset,Value)-Pair #2
+ { 0x06, 0x48 }, // (Offset,Value)-Pair #3
+ { 0x07, 0x2C }, // (Offset,Value)-Pair #4
+
+ // D3D_KickOffAndWaitForIdle+0x08 : push 2
+ { 0x08, 0x6A }, // (Offset,Value)-Pair #5
+ { 0x09, 0x02 }, // (Offset,Value)-Pair #6
+
+ // D3D_KickOffAndWaitForIdle+0x0A : push ecx
+ { 0x0A, 0x51 }, // (Offset,Value)-Pair #7
+
+ // D3D_KickOffAndWaitForIdle+0x0B : call [addr]
+ { 0x0B, 0xE8 }, // (Offset,Value)-Pair #8
+
+ // D3D_KickOffAndWaitForIdle+0x10 : retn
+ { 0x10, 0xC3 }, // (Offset,Value)-Pair #9
+OOVPA_END;
+
+// ******************************************************************
+// * Get2DSurfaceDesc
+// ******************************************************************
+OOVPA_NO_XREF(Get2DSurfaceDesc, 5028, 10)
+
+ // Get2DSurfaceDesc+0x2B : movzx edx, byte ptr [edi+0x0D]
+ { 0x2B, 0x0F }, // (Offset,Value)-Pair #1
+ { 0x2C, 0xB6 }, // (Offset,Value)-Pair #2
+ { 0x2D, 0x57 }, // (Offset,Value)-Pair #3
+ { 0x2E, 0x0D }, // (Offset,Value)-Pair #4
+
+ // Get2DSurfaceDesc+0x52 : mov edx, [eax+0x15C0]
+ { 0x52, 0x8B }, // (Offset,Value)-Pair #5
+ { 0x53, 0x90 }, // (Offset,Value)-Pair #6
+ { 0x54, 0xC0 }, // (Offset,Value)-Pair #7
+ { 0x55, 0x15 }, // (Offset,Value)-Pair #8
+
+ // Get2DSurfaceDesc+0xAE : retn 0x0C
+ { 0xAE, 0xC2 }, // (Offset,Value)-Pair #9
+ { 0xAF, 0x0C }, // (Offset,Value)-Pair #10
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_SetVertexShaderConstantNotInline
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstantNotInline, 5028, 9)
+
+ { 0x0B, 0x10 },
+ { 0x10, 0x75 },
+ { 0x11, 0x15 },
+ { 0x12, 0x56 },
+ { 0x13, 0x57 },
+ { 0x14, 0x8B },
+ { 0x1A, 0xC7 },
+ { 0x31, 0xC2 },
+ { 0x32, 0x04 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_AddRef
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_AddRef, 5028, 10)
+
+ // D3DDevice_AddRef+0x00 : mov eax, [addr]
+ { 0x00, 0xA1 }, // (Offset,Value)-Pair #1
+
+ // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x04FC]
+ { 0x05, 0x8B }, // (Offset,Value)-Pair #2
+ { 0x06, 0x88 }, // (Offset,Value)-Pair #3
+ { 0x07, 0xFC }, // (Offset,Value)-Pair #4
+ { 0x08, 0x04 }, // (Offset,Value)-Pair #5
+
+ // D3DDevice_AddRef+0x0B : inc ecx
+ { 0x0B, 0x41 }, // (Offset,Value)-Pair #6
+
+ // D3DDevice_AddRef+0x0C : mov [eax+0x04FC], ecx
+ { 0x0C, 0x89 }, // (Offset,Value)-Pair #7
+ { 0x0D, 0x88 }, // (Offset,Value)-Pair #8
+ { 0x0E, 0xFC }, // (Offset,Value)-Pair #9
+ { 0x0F, 0x04 }, // (Offset,Value)-Pair #10
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_InsertCallback
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_InsertCallback, 5028, 7)
+
+ { 0x0C, 0x72 },
+ { 0x1A, 0x10 },
+ { 0x28, 0x85 },
+ { 0x36, 0xC7 },
+ { 0x44, 0x0C },
+ { 0x52, 0x00 },
+ { 0x60, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetVertexShader
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5028, 7)
+
+ { 0x05, 0x8B },
+ { 0x06, 0x88 },
+ { 0x07, 0x80 },
+ { 0x0A, 0x00 },
+ { 0x0D, 0x24 },
+ { 0x10, 0x0A },
+ { 0x13, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetVertexShaderConstant
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 5028, 8)
+
+ { 0x07, 0x24 },
+ { 0x08, 0x08 },
+ { 0x09, 0xC1 },
+ { 0x0A, 0xE1 },
+ { 0x0B, 0x04 },
+ { 0x10, 0x7C },
+ { 0x14, 0xE6 },
+ { 0x18, 0x02 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetPixelShader
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5028, 7)
+
+ { 0x05, 0x8B },
+ { 0x06, 0x88 },
+ { 0x07, 0x6C },
+ { 0x0A, 0x00 },
+ { 0x0D, 0x24 },
+ { 0x10, 0x0A },
+ { 0x13, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3D_CommonSetRenderTarget
+// ******************************************************************
+OOVPA_XREF(D3D_CommonSetRenderTarget, 5028, 10,
+
+ XREF_COMMONSETRENDERTARGET,
+ XRefZero)
+
+ { 0x06, 0x24 },
+ { 0x07, 0x24 },
+ { 0x08, 0x55 },
+ { 0x09, 0x56 },
+ { 0x0A, 0x8B },
+ { 0x35, 0x8B },
+ { 0x3C, 0x96 },
+ { 0x47, 0xC4 },
+ { 0x57, 0x10 },
+ { 0x67, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_PersistDisplay
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5028, 10)
+
+ { 0x01, 0xEC },
+ { 0x02, 0x08 },
+ { 0x03, 0x53 },
+ { 0x04, 0x8B },
+ { 0x05, 0x1D },
+ { 0x11, 0xC0 },
+ { 0x12, 0x74 },
+ { 0x13, 0x0F },
+ { 0x23, 0x8B },
+ { 0x24, 0x83 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_BeginPush
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_BeginPush, 5028, 6)
+
+ { 0x06, 0x6A },
+ { 0x07, 0x00 },
+ { 0x0D, 0x8B },
+ { 0x0E, 0x44 },
+ { 0x12, 0x89 },
+ { 0x16, 0xE9 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_End
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_End, 5028, 12)
+
+ // D3DDevice_End+0x13 : mov dword ptr [eax], 0x417FC
+ { 0x13, 0xC7 }, // (Offset,Value)-Pair #1
+ { 0x14, 0x00 }, // (Offset,Value)-Pair #2
+ { 0x15, 0xFC }, // (Offset,Value)-Pair #3
+ { 0x16, 0x17 }, // (Offset,Value)-Pair #4
+ { 0x17, 0x04 }, // (Offset,Value)-Pair #5
+ { 0x18, 0x00 }, // (Offset,Value)-Pair #6
+
+ // D3DDevice_End+0x28 : test ah, 0x10
+ { 0x28, 0xF6 }, // (Offset,Value)-Pair #7
+ { 0x29, 0xC4 }, // (Offset,Value)-Pair #8
+ { 0x2A, 0x10 }, // (Offset,Value)-Pair #9
+
+ // D3DDevice_End+0x2B : jz +0x07
+ { 0x2B, 0x74 }, // (Offset,Value)-Pair #10
+ { 0x2C, 0x07 }, // (Offset,Value)-Pair #11
+
+ // D3DDevice_End+0x3C : retn
+ { 0x3C, 0xC3 }, // (Offset,Value)-Pair #12
+OOVPA_END;
+
+// ******************************************************************
+// * D3DVertexBuffer_GetDesc
+// ******************************************************************
+OOVPA_NO_XREF(D3DVertexBuffer_GetDesc, 5028, 7)
+
+ { 0x02, 0x24 },
+ { 0x06, 0x74 },
+ { 0x0A, 0xC7 },
+ { 0x0E, 0x00 },
+ { 0x15, 0x89 },
+ { 0x16, 0x46 },
+ { 0x1A, 0x08 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_IsFencePending
+// ******************************************************************
+OOVPA_XREF(D3DDevice_IsFencePending, 5028, 6,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x01, XREF_D3DDEVICE ),
+
+ { 0x07, 0x30 },
+ { 0x0A, 0x2C },
+ { 0x10, 0xD1 },
+ { 0x17, 0x1B },
+ { 0x1C, 0x04 },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_UpdateOverlay
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5028, 8)
+
+ { 0x0F, 0x89 },
+ { 0x10, 0x88 },
+ { 0x11, 0xA8 },
+ { 0x12, 0x1F },
+ { 0x70, 0x4F },
+ { 0x78, 0x8B },
+ { 0x80, 0xCA },
+ { 0x88, 0x8B },
+OOVPA_END;
+
+// ******************************************************************
+// * D3DDevice_GetOverlayUpdateStatus
+// ******************************************************************
+OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 5028, 12)
+
+ // D3DDevice_GetOverlayUpdateStatus+0x05 : mov ecx, [eax+0x2BA8]
+ { 0x05, 0x8B }, // (Offset,Value)-Pair #1
+ { 0x06, 0x88 }, // (Offset,Value)-Pair #2
+ { 0x07, 0xA8 }, // (Offset,Value)-Pair #3
+ { 0x08, 0x1F }, // (Offset,Value)-Pair #4
+
+ // D3DDevice_GetOverlayUpdateStatus+0x0C : mov esi, [eax+0x2580]
+ { 0x0C, 0x8B }, // (Offset,Value)-Pair #5
+ { 0x0D, 0xB0 }, // (Offset,Value)-Pair #6
+ { 0x0E, 0x80 }, // (Offset,Value)-Pair #7
+ { 0x0F, 0x19 }, // (Offset,Value)-Pair #8
+
+ // D3DDevice_GetOverlayUpdateStatus+0x16 : setnz dl
+ { 0x16, 0x0F }, // (Offset,Value)-Pair #9
+ { 0x17, 0x95 }, // (Offset,Value)-Pair #10
+ { 0x18, 0xC2 }, // (Offset,Value)-Pair #11
+
+ // D3DDevice_GetOverlayUpdateStatus+0x1C : retn
+ { 0x1C, 0xC3 }, // (Offset,Value)-Pair #12
+OOVPA_END;
+
+// ******************************************************************
+// * D3D8_5028
+// ******************************************************************
+OOVPATable D3D8_5028[] = {
+
+ REGISTER_OOVPA(Direct3D_CreateDevice, 5028, PATCH),
+ REGISTER_OOVPA(D3D_CheckDeviceFormat, 4361, DISABLED),
+ REGISTER_OOVPA(D3DDevice_BeginVisibilityTest, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetCreationParameters, 4034, PATCH),
+ REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 3925, PATCH),
+ REGISTER_OOVPA(D3D_KickOffAndWaitForIdle, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_BeginPush, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_EndPush, 4627, 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(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, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetTileNoWait, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreateIndexBuffer2, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreateVertexShader, 3925, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_DeletePixelShader, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetPixelShader, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreateTexture2, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetIndices, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetTexture, 4928, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetDisplayMode, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_RunPushBuffer, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_Begin, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexData2f, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_End, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_Clear, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_Swap, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_EnableOverlay, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVerticalBlankCallback, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetViewport, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_VertexBlend, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4432, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_ZBias, 3925, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 4361, 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_SetRenderState_Simple, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_LineWidth, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 4134, 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, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetStreamSource2, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetStreamSource, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexShader, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_DrawVertices, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetLight, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetMaterial, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_LightEnable, 5028, 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_IsBusy, 4361, PATCH),
+ // REGISTER_OOVPA(D3DResource_GetType, 4627, DISABLED), // I forget why I had this in here...
+ REGISTER_OOVPA(Get2DSurfaceDesc, 5028, PATCH),
+ REGISTER_OOVPA(D3DSurface_GetDesc, 4361, PATCH),
+ REGISTER_OOVPA(D3DSurface_LockRect, 3925, PATCH),
+ REGISTER_OOVPA(D3DBaseTexture_GetLevelCount, 4361, PATCH),
+ REGISTER_OOVPA(D3DTexture_GetSurfaceLevel2, 4627, PATCH),
+ REGISTER_OOVPA(D3DTexture_LockRect, 3925, PATCH),
+ REGISTER_OOVPA(D3DVolumeTexture_LockBox, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH),
+ REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVertexShader, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexShaderInputDirect, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 4627, 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_BeginStateBlock, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_EndStateBlock, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_Release, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_StencilFail, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetPixelShader, 4721, PATCH),
+ REGISTER_OOVPA(D3DDevice_Reset, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetScissors, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetPalette, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetBackBufferScale, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_Reset, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetPixelShaderProgram, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetDisplayFieldStatus, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreateStateBlock, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_InsertCallback, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_DrawRectPatch, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetProjectionViewportMatrix, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_BackFillMode, 4531, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetDeviceCaps, 3925, DISABLED),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMask, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_LogicOp, 4627, PATCH),
+ REGISTER_OOVPA(D3D_SetFence, 5028, XREF),
+ REGISTER_OOVPA(D3DDevice_InsertFence, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_IsFencePending, 5028, 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_GetTexture2, 4627, PATCH),
+ // REGISTER_OOVPA(D3DDevice_SetStateVB, 4627, PATCH),
+ // REGISTER_OOVPA(D3DDevice_SetStateUP, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetStipple, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_RopZCmpAlwaysRead, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_RopZRead, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_DoNotCullUncompressed, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_PersistDisplay, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetSwapCallback, 4928, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_FrontFace, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleMode, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_StencilCullEnable, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_BeginStateBlock, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_EndStateBlock, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_CaptureStateBlock, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_DeleteStateBlock, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexData4ub, 4361, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexData4f, 4134, PATCH),
+ REGISTER_OOVPA(D3D_BlockOnTime, 5028, XREF),
+ REGISTER_OOVPA(D3DDevice_BlockOnFence, 4627, PATCH),
+ REGISTER_OOVPA(Lock3DSurface, 4627, PATCH),
+ REGISTER_OOVPA(Lock2DSurface, 3925, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreateImageSurface, 4627, PATCH),
+ REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetSoftDisplayFilter, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetPixelShader, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_CreatePalette2, 4627, PATCH),
+ REGISTER_OOVPA(D3DPalette_Lock2, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_BeginPushBuffer, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_EndPushBuffer, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetPersistedSurface2, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetModelView, 4627, PATCH),
+ REGISTER_OOVPA(D3D_LazySetPointParams, 4134, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetDepthClipPlanes, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_GetMaterial, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_KickOff, 4627, ALIAS, D3DDevice_KickPushBuffer),
+ REGISTER_OOVPA(D3DDevice_GetBackMaterial, 4627, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4627, PATCH),
+ REGISTER_OOVPA(D3D_SetPushBufferSize, 4034, DISABLED),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_SampleAlpha, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4361, PATCH),
+ REGISTER_OOVPA(D3D_GetDeviceCaps, 5028, PATCH),
+ REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, 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, 5028, PATCH),
+};
+
+// ******************************************************************
+// * D3D8_5028_SIZE
+// ******************************************************************
+uint32 D3D8_5028_SIZE = sizeof(D3D8_5028);
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl
index 559352bf5..f9b7f1126 100644
--- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl
@@ -35,24 +35,7 @@
// ******************************************************************
// * Direct3D_CreateDevice
// ******************************************************************
-OOVPA_NO_XREF(Direct3D_CreateDevice, 5233, 8)
-
- // Direct3D_CreateDevice+0x0A : jnz +0x0A
- { 0x0A, 0x75 }, // (Offset,Value)-Pair #1
- { 0x0B, 0x0A }, // (Offset,Value)-Pair #2
-
- // Direct3D_CreateDevice+0x80 : repe stosd
- { 0x80, 0xF3 }, // (Offset,Value)-Pair #3
- { 0x81, 0xAB }, // (Offset,Value)-Pair #4
-
- // Direct3D_CreateDevice+0x83 : mov eax, esi
- { 0x83, 0x8B }, // (Offset,Value)-Pair #5
- { 0x84, 0xC6 }, // (Offset,Value)-Pair #6
-
- // Direct3D_CreateDevice+0x91 : retn 0x18
- { 0x91, 0xC2 }, // (Offset,Value)-Pair #7
- { 0x92, 0x18 }, // (Offset,Value)-Pair #8
-OOVPA_END;
+#define Direct3D_CreateDevice_5233 Direct3D_CreateDevice_5028
// ******************************************************************
// * D3DDevice_GetDisplayFieldStatus
@@ -236,40 +219,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetRenderState_TextureFactor
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 5233, 9)
-
- // D3DDevice_SetRenderState_TextureFactor+0x07 : mov eax, [esi+0x036C]
- { 0x07, 0x8B }, // (Offset,Value)-Pair #1
- { 0x08, 0x86 }, // (Offset,Value)-Pair #2
- { 0x09, 0x6C }, // (Offset,Value)-Pair #3
- { 0x0A, 0x03 }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetRenderState_TextureFactor+0x2F : nop
- { 0x2F, 0x90 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetRenderState_TextureFactor+0x41 : retn 0x04
- { 0x41, 0xC2 }, // (Offset,Value)-Pair #6
- { 0x42, 0x04 }, // (Offset,Value)-Pair #7
-
- // D3DDevice_SetRenderState_TextureFactor+0x4E : retn 0x04
- { 0x4E, 0xC2 }, // (Offset,Value)-Pair #8
- { 0x4F, 0x04 }, // (Offset,Value)-Pair #9
-OOVPA_END;
+#define D3DDevice_SetRenderState_TextureFactor_5233 D3DDevice_SetRenderState_TextureFactor_5028
// ******************************************************************
// * D3DDevice_SetRenderState_ZEnable
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 5233, 8)
-
- { 0x13, 0x8B },
- { 0x22, 0xC9 },
- { 0x34, 0x89 },
- { 0x46, 0x0C },
- { 0x5A, 0x74 },
- { 0x6D, 0x8B },
- { 0x7C, 0xCE },
- { 0x8E, 0x00 },
-OOVPA_END;
+#define D3DDevice_SetRenderState_ZEnable_5233 D3DDevice_SetRenderState_ZEnable_5028
// ******************************************************************
// * D3DDevice_SetIndices
@@ -375,16 +330,7 @@ OOVPA_END;
// ******************************************************************
// * D3DTexture_LockRect
// ******************************************************************
-OOVPA_NO_XREF(D3DTexture_LockRect, 5233, 7)
-
- { 0x03, 0x14 },
- { 0x08, 0x8B },
- { 0x0D, 0x8B },
- { 0x12, 0x8B },
- { 0x17, 0x50 },
- { 0x20, 0xC2 },
- { 0x21, 0x14 },
-OOVPA_END;
+#define D3DTexture_LockRect_5233 D3DTexture_LockRect_3925
// ******************************************************************
// * Get2DSurfaceDesc
@@ -411,28 +357,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetBackBuffer2
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5233, 12)
-
- // D3DDevice_GetBackBuffer2+0x04 : cmp eax, 0xFFFFFFFF
- { 0x04, 0x83 }, // (Offset,Value)-Pair #1
- { 0x05, 0xF8 }, // (Offset,Value)-Pair #2
- { 0x06, 0xFF }, // (Offset,Value)-Pair #3
-
- // D3DDevice_GetBackBuffer+0x0D : jnz +0x19
- { 0x0D, 0x75 }, // (Offset,Value)-Pair #4
- { 0x0E, 0x19 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_GetBackBuffer+0x15 : mov esi, [ecx+eax*4+0x15C0]
- { 0x15, 0x8B }, // (Offset,Value)-Pair #6
- { 0x16, 0xB4 }, // (Offset,Value)-Pair #7
- { 0x17, 0x81 }, // (Offset,Value)-Pair #8
- { 0x18, 0xC0 }, // (Offset,Value)-Pair #9
- { 0x19, 0x15 }, // (Offset,Value)-Pair #10
-
- // D3DDevice_GetBackBuffer+0x40 : retn 0x04
- { 0x40, 0xC2 }, // (Offset,Value)-Pair #11
- { 0x41, 0x04 }, // (Offset,Value)-Pair #12
-OOVPA_END;
+#define D3DDevice_GetBackBuffer2_5233 D3DDevice_GetBackBuffer2_5028
// ******************************************************************
// * D3DDevice_UpdateOverlay
@@ -539,30 +464,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetDepthStencilSurface2
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 5233, 7)
-
- { 0x05, 0x56 },
- { 0x06, 0x8B },
- { 0x0A, 0x00 },
- { 0x0E, 0x75 },
- { 0x12, 0x5E },
- { 0x1A, 0x8B },
- { 0x1B, 0xC6 },
-OOVPA_END;
+#define D3DDevice_GetDepthStencilSurface2_5233 D3DDevice_GetDepthStencilSurface2_5028
// ******************************************************************
// * D3D_GetDeviceCaps
// ******************************************************************
-OOVPA_NO_XREF(D3D_GetDeviceCaps, 5233, 7)
-
- { 0x04, 0x85 },
- { 0x0A, 0x08 },
- { 0x10, 0x83 },
- { 0x16, 0x08 },
- { 0x1C, 0xC2 },
- { 0x22, 0x0C },
- { 0x29, 0x33 },
-OOVPA_END;
+#define D3D_GetDeviceCaps_5233 D3D_GetDeviceCaps_5028
// ******************************************************************
// * D3DDevice_DrawVertices
@@ -581,71 +488,17 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetLight
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetLight, 5233, 12)
-
- // D3DDevice_SetLight+0x11 : mov edi, [ebp+0x390]
- { 0x11, 0x8B }, // (Offset,Value)-Pair #1
- { 0x12, 0xBD }, // (Offset,Value)-Pair #2
- { 0x13, 0x90 }, // (Offset,Value)-Pair #3
- { 0x14, 0x03 }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetLight+0x30 : shl eax, 0x04
- { 0x30, 0xC1 }, // (Offset,Value)-Pair #5
- { 0x31, 0xE0 }, // (Offset,Value)-Pair #6
- { 0x32, 0x04 }, // (Offset,Value)-Pair #7
-
- // D3DDevice_SetLight+0xBD : rep stosb
- { 0xBD, 0xF3 }, // (Offset,Value)-Pair #8
- { 0xBE, 0xAB }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetLight+0xFD : mov ecx, [ebx+0x68]
- { 0xFD, 0x8B }, // (Offset,Value)-Pair #10
- { 0xFE, 0x4B }, // (Offset,Value)-Pair #11
- { 0xFF, 0x68 }, // (Offset,Value)-Pair #12
-OOVPA_END;
+#define D3DDevice_SetLight_5233 D3DDevice_SetLight_5028
// ******************************************************************
// * D3DDevice_LightEnable
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_LightEnable, 5233, 13)
-
- // D3DDevice_LightEnable+0x0F : cmp ebx, [esi+0x0390]
- { 0x0F, 0x3B }, // (Offset,Value)-Pair #1
- { 0x10, 0x9E }, // (Offset,Value)-Pair #2
- { 0x11, 0x90 }, // (Offset,Value)-Pair #3
- { 0x12, 0x03 }, // (Offset,Value)-Pair #4
-
- // D3DDevice_LightEnable+0x6B : test eax, eax
- { 0x6B, 0x85 }, // (Offset,Value)-Pair #5
- { 0x6C, 0xC0 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_LightEnable+0x9E : mov eax, [eax+0x8C]
- { 0x9E, 0x8B }, // (Offset,Value)-Pair #7
- { 0x9F, 0x80 }, // (Offset,Value)-Pair #8
- { 0xA0, 0x8C }, // (Offset,Value)-Pair #9
-
- // D3DDevice_LightEnable+0xBC : jz +0x12
- { 0xBC, 0x74 }, // (Offset,Value)-Pair #10
- { 0xBD, 0x12 }, // (Offset,Value)-Pair #11
-
- // D3DDevice_LightEnable+0xE1 : retn 0x08
- { 0xE1, 0xC2 }, // (Offset,Value)-Pair #12
- { 0xE2, 0x08 }, // (Offset,Value)-Pair #13
-OOVPA_END;
+#define D3DDevice_LightEnable_5233 D3DDevice_LightEnable_5028
// ******************************************************************
// * D3DVertexBuffer_GetDesc
// ******************************************************************
-OOVPA_NO_XREF(D3DVertexBuffer_GetDesc, 5233, 7)
-
- { 0x02, 0x24 },
- { 0x06, 0x74 },
- { 0x0A, 0xC7 },
- { 0x0E, 0x00 },
- { 0x15, 0x89 },
- { 0x16, 0x46 },
- { 0x1A, 0x08 },
-OOVPA_END;
+#define D3DVertexBuffer_GetDesc_5233 D3DVertexBuffer_GetDesc_5028
// ******************************************************************
// * D3DDevice_SetVertexShader
@@ -678,49 +531,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetTileNoWait
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetTileNoWait, 5233, 11)
-
- // D3DDevice_SetTileNoWait+0x06 : sub esp, 0x18
- { 0x06, 0x83 }, // (Offset,Value)-Pair #1
- { 0x07, 0xEC }, // (Offset,Value)-Pair #2
- { 0x08, 0x18 }, // (Offset,Value)-Pair #3
-
- // D3DDevice_SetTileNoWait+0x15 : cmp [esi+4], eax
- { 0x15, 0x39 }, // (Offset,Value)-Pair #4
- { 0x16, 0x46 }, // (Offset,Value)-Pair #5
- { 0x17, 0x04 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_SetTileNoWait+0x3D : lea edi, [edx+ecx*8+0x1660]
- { 0x3D, 0x8D }, // (Offset,Value)-Pair #7
- { 0x3E, 0xBC }, // (Offset,Value)-Pair #8
- { 0x3F, 0xCA }, // (Offset,Value)-Pair #9
- { 0x40, 0x60 }, // (Offset,Value)-Pair #10
- { 0x41, 0x16 }, // (Offset,Value)-Pair #11
-OOVPA_END;
+#define D3DDevice_SetTileNoWait_5233 D3DDevice_SetTileNoWait_5028
// ******************************************************************
// * D3DDevice_AddRef
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_AddRef, 5233, 10)
-
- // D3DDevice_AddRef+0x00 : mov eax, [addr]
- { 0x00, 0xA1 }, // (Offset,Value)-Pair #1
-
- // D3DDevice_AddRef+0x05 : mov ecx, [eax+0x04FC]
- { 0x05, 0x8B }, // (Offset,Value)-Pair #2
- { 0x06, 0x88 }, // (Offset,Value)-Pair #3
- { 0x07, 0xFC }, // (Offset,Value)-Pair #4
- { 0x08, 0x04 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_AddRef+0x0B : inc ecx
- { 0x0B, 0x41 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_AddRef+0x0C : mov [eax+0x04FC], ecx
- { 0x0C, 0x89 }, // (Offset,Value)-Pair #7
- { 0x0D, 0x88 }, // (Offset,Value)-Pair #8
- { 0x0E, 0xFC }, // (Offset,Value)-Pair #9
- { 0x0F, 0x04 }, // (Offset,Value)-Pair #10
-OOVPA_END;
+#define D3DDevice_AddRef_5233 D3DDevice_AddRef_5028
// ******************************************************************
// * IDirectD3DDevice8_Release
@@ -885,19 +701,7 @@ OOVPA_END;
// ******************************************************************
// * D3D::SetFence
// ******************************************************************
-OOVPA_XREF(D3D_SetFence, 5233, 7,
-
- XREF_D3D_SETFENCE,
- XRefZero)
-
- { 0x0E, 0x05 },
- { 0x18, 0xC9 },
- { 0x3E, 0x3F },
- { 0x5E, 0x28 },
- { 0x86, 0x5D },
- { 0x98, 0xE8 },
- { 0xA2, 0x04 },
-OOVPA_END;
+#define D3D_SetFence_5233 D3D_SetFence_5028
// ******************************************************************
// * D3DDevice_InsertFence
@@ -918,19 +722,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_IsFencePending
// ******************************************************************
-OOVPA_XREF(D3DDevice_IsFencePending, 5233, 6,
-
- XRefNoSaveIndex,
- XRefOne)
-
- XREF_ENTRY( 0x01, XREF_D3DDEVICE ),
-
- { 0x07, 0x30 },
- { 0x0A, 0x2C },
- { 0x10, 0xD1 },
- { 0x17, 0x1B },
- { 0x1C, 0x04 },
-OOVPA_END;
+#define D3DDevice_IsFencePending_5233 D3DDevice_IsFencePending_5028
// ******************************************************************
// * D3D::BlockOnTime
@@ -1059,15 +851,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_BeginPush
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_BeginPush, 5233, 6)
-
- { 0x06, 0x6A },
- { 0x07, 0x00 },
- { 0x0D, 0x8B },
- { 0x0E, 0x44 },
- { 0x12, 0x89 },
- { 0x16, 0xE9 },
-OOVPA_END;
+#define D3DDevice_BeginPush_5233 D3DDevice_BeginPush_5028
// ******************************************************************
// * D3DDevice_EndPush
@@ -1186,28 +970,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_End
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_End, 5233, 12)
-
- // D3DDevice_End+0x13 : mov dword ptr [eax], 0x417FC
- { 0x13, 0xC7 }, // (Offset,Value)-Pair #1
- { 0x14, 0x00 }, // (Offset,Value)-Pair #2
- { 0x15, 0xFC }, // (Offset,Value)-Pair #3
- { 0x16, 0x17 }, // (Offset,Value)-Pair #4
- { 0x17, 0x04 }, // (Offset,Value)-Pair #5
- { 0x18, 0x00 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_End+0x28 : test ah, 0x10
- { 0x28, 0xF6 }, // (Offset,Value)-Pair #7
- { 0x29, 0xC4 }, // (Offset,Value)-Pair #8
- { 0x2A, 0x10 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_End+0x2B : jz +0x07
- { 0x2B, 0x74 }, // (Offset,Value)-Pair #10
- { 0x2C, 0x07 }, // (Offset,Value)-Pair #11
-
- // D3DDevice_End+0x3C : retn
- { 0x3C, 0xC3 }, // (Offset,Value)-Pair #12
-OOVPA_END;
+#define D3DDevice_End_5233 D3DDevice_End_5028
// ******************************************************************
// * D3D8_5233
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl
index 62fe55201..e98f4db96 100644
--- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl
@@ -632,16 +632,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_BlockUntilVerticalBlank
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5344, 7)
-
- { 0x05, 0x6A },
- { 0x12, 0x00 },
- { 0x15, 0x6A },
- { 0x16, 0x06 },
- { 0x17, 0x05 },
- { 0x1C, 0x50 },
- { 0x23, 0xC3 },
-OOVPA_END;
+#define D3DDevice_BlockUntilVerticalBlank_5344 D3DDevice_BlockUntilVerticalBlank_5028
// ******************************************************************
// * D3DDevice_PersistDisplay
@@ -660,18 +651,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetVertexShaderConstantNotInline
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstantNotInline, 5344, 9)
-
- { 0x0B, 0x10 },
- { 0x10, 0x75 },
- { 0x11, 0x15 },
- { 0x12, 0x56 },
- { 0x13, 0x57 },
- { 0x14, 0x8B },
- { 0x1A, 0xC7 },
- { 0x31, 0xC2 },
- { 0x32, 0x04 },
-OOVPA_END;
+#define D3DDevice_SetVertexShaderConstantNotInline_5344 D3DDevice_SetVertexShaderConstantNotInline_5028
// ******************************************************************
// * D3DDevice_DeleteVertexShader
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl
index a5726a0ac..f9aea1bce 100644
--- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl
+++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl
@@ -846,16 +846,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetModelView
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_GetModelView, 5558, 7)
-
- { 0x05, 0x57 },
- { 0x0A, 0x85 },
- { 0x10, 0xB0 },
- { 0x16, 0x10 },
- { 0x1C, 0x5E },
- { 0x22, 0xC1 },
- { 0x28, 0xE0 },
-OOVPA_END;
+#define D3DDevice_GetModelView_5558 D3DDevice_GetModelView_4134
// ******************************************************************
// * D3DDevice_SetBackMaterial
@@ -1113,16 +1104,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_InsertCallback
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_InsertCallback, 5558, 7)
-
- { 0x0C, 0x72 },
- { 0x1A, 0x10 },
- { 0x28, 0x85 },
- { 0x36, 0xC7 },
- { 0x44, 0x0C },
- { 0x52, 0x00 },
- { 0x60, 0x00 },
-OOVPA_END;
+#define D3DDevice_InsertCallback_5558 D3DDevice_InsertCallback_5028
// ******************************************************************
// * D3DDevice_SetRenderState_LineWidth
@@ -1157,19 +1139,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_FlushVertexCache
// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 5558, 10)
-
- { 0x00, 0x56 },
- { 0x07, 0x8B },
- { 0x08, 0x06 },
- { 0x0D, 0x05 },
- { 0x13, 0xC7 },
- { 0x15, 0x10 },
- { 0x17, 0x04 },
- { 0x1C, 0x00 },
- { 0x21, 0xC0 },
- { 0x26, 0xC3 },
-OOVPA_END;
+#define D3DDevice_FlushVertexCache_5558 D3DDevice_FlushVertexCache_4134
// ******************************************************************
// * D3DDevice_SetRenderState_LogicOp
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl
index d5d3d2042..1a1532b15 100644
--- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4134.inl
@@ -557,33 +557,53 @@ OOVPA_XREF(CMcpxVoiceClient_SetVolume, 4134, 13,
OOVPA_END;
// ******************************************************************
-// * DirectSound_CDirectSoundStream_SetVolume
+// * DirectSound_CDirectSoundVoice_SetVolume
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundStream_SetVolume, 4134, 11,
+OOVPA_XREF(DirectSound_CDirectSoundVoice_SetVolume, 4134, 11,
- XRefNoSaveIndex,
+ XREF_DirectSound_CDirectSoundVoice_SetVolume,
XRefOne)
- // DirectSound_CDirectSoundStream_SetVolume+0x15 : call [CMcpxVoiceClient::SetVolume]
+ // DirectSound_CDirectSoundVoice_SetVolume+0x15 : call [CMcpxVoiceClient::SetVolume]
XREF_ENTRY( 0x15, XREF_DSSTREAMSETVOLUME ), // (Offset,Value)-Pair #1
- // DirectSound_CDirectSoundStream_SetVolume+0x00 : mov ecx, [esp+0x04]
+ // DirectSound_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
- // DirectSound_CDirectSoundStream_SetVolume+0x0B : sub edx, [eax+0x20]
+ // DirectSound_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
- // DirectSound_CDirectSoundStream_SetVolume+0x11 : mov ecx, [ecx+0x0C]
+ // DirectSound_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
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetVolume
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetVolume, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x36, XREF_DirectSound_CDirectSoundVoice_SetVolume ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x35, 0xE8 },
+ { 0x40, 0x68 },
+ { 0x4B, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * IDirectSoundBuffer_LockA
// ******************************************************************
@@ -1092,6 +1112,7 @@ OOVPA_NO_XREF(DirectSound_CDirectSound_CommitDeferredSettings, 4134, 11)
{ 0x78, 0xC9 }, // (Offset,Value)-Pair #11
OOVPA_END;
+// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMaxDistance
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, 9,
@@ -1169,6 +1190,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 4134, 10,
{ 0x23, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetMaxDistance
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetMaxDistance, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3E, XREF_DSVOICESETMAXDISTANCE ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x3D, 0xE8 },
+ { 0x48, 0x68 },
+ { 0x53, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMinDistance
// ******************************************************************
@@ -1247,6 +1288,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 4134, 10,
{ 0x23, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetMinDistance
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetMinDistance, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3E, XREF_DSVOICESETMINDISTANCE ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x3D, 0xE8 },
+ { 0x48, 0x68 },
+ { 0x53, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetRolloffFactor
// ******************************************************************
@@ -1325,6 +1386,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetRolloffFactor, 4134, 10,
{ 0x23, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetRolloffFactor
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetRolloffFactor, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3E, XREF_DSVOICESETROLLOFFFACTOR ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x3D, 0xE8 },
+ { 0x48, 0x68 },
+ { 0x53, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetDistanceFactor
// ******************************************************************
@@ -1557,6 +1638,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeOrientation, 4134, 9,
{ 0x34, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetConeOrientation
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetConeOrientation, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x4E, XREF_DSVOICESETCONEORIENTATION ),
+
+ { 0x00, 0x55 },
+ { 0x0F, 0x00 },
+ { 0x17, 0x74 },
+ { 0x24, 0xB8 },
+ { 0x2A, 0x3B },
+ { 0x39, 0xEC },
+ { 0x44, 0x24 },
+ { 0x4D, 0xE8 },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetConeOutsideVolume
// ******************************************************************
@@ -1635,6 +1736,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeOutsideVolume, 4134, 9,
{ 0x1F, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetConeOutsideVolume
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetConeOutsideVolume, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3A, XREF_DSVOICESETCONEOUTSIDEVOLUME ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x21, 0xB8 },
+ { 0x24, 0x00 },
+ { 0x39, 0xE8 },
+ { 0x3E, 0x85 },
+ { 0x4F, 0x8B },
+ { 0x53, 0xC2 },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetPosition
// ******************************************************************
@@ -1684,6 +1805,25 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetPosition, 4134, 9,
{ 0x66, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetPosition
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetPosition, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x4E, XREF_DSVOICESETPOSITION ),
+
+ { 0x00, 0x55 },
+ { 0x0F, 0x00 },
+ { 0x17, 0x74 },
+ { 0x24, 0xB8 },
+ { 0x2A, 0x3B },
+ { 0x39, 0xEC },
+ { 0x58, 0x68 },
+ { 0x63, 0x8B },
+OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetVelocity
@@ -1734,6 +1874,26 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, 9,
{ 0x66, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetVelocity
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetVelocity, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x4E, XREF_DSVOICESETVELOCITY ),
+
+ { 0x00, 0x55 },
+ { 0x0F, 0x00 },
+ { 0x17, 0x74 },
+ { 0x24, 0xB8 },
+ { 0x2A, 0x3B },
+ { 0x35, 0x83 },
+ { 0x40, 0x45 },
+ { 0x63, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetDopplerFactor
// ******************************************************************
@@ -1893,6 +2053,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 4134, 10,
{ 0x1F, 0x00 }
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetI3DL2Source
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetI3DL2Source, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3A, XREF_DSVOICESETI3DL2SOURCE ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x39, 0xE8 },
+ { 0x44, 0x68 },
+ { 0x4F, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * IDirectSoundBuffer_Stop
// ******************************************************************
@@ -1975,6 +2155,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetAllParameters, 4134, 9,
{ 0x1E, 0x0C },
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetAllParameters
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetAllParameters, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3A, XREF_DirectSound_CDirectSoundVoice_SetAllParameters ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x39, 0xE8 },
+ { 0x44, 0x68 },
+ { 0x4F, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * IDirectSoundBuffer_GetStatus
// ******************************************************************
@@ -2057,6 +2257,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetMode, 4134, 9,
{ 0x1E, 0x0C },
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetMode
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetMode, 4134, 9,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x3A, XREF_DSBUFFERSETMODEB ),
+
+ { 0x00, 0x56 },
+ { 0x0C, 0x00 },
+ { 0x14, 0x74 },
+ { 0x21, 0xB8 },
+ { 0x2A, 0x24 },
+ { 0x39, 0xE8 },
+ { 0x44, 0x68 },
+ { 0x4F, 0x8B },
+OOVPA_END;
+
// ******************************************************************
// * DirectSound::CMcpxVoiceClient::SetFilter
// ******************************************************************
@@ -2288,6 +2508,161 @@ OOVPA_XREF(DirectSoundCreateStream, 4134, 12,
{ 0x55, 0x08 }, // (Offset,Value)-Pair #12
OOVPA_END;
+// ******************************************************************
+// * DirectSound_CDirectSoundVoiceSettings::SetMixBinVolumes
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, 10,
+
+ XREF_DSSETMIXBINVOLUMESC,
+ XRefZero)
+
+ // DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x09 : jbe +0x16
+ { 0x09, 0x76 }, // (Offset,Value)-Pair #1
+ { 0x0A, 0x16 }, // (Offset,Value)-Pair #2
+
+ // DirectSound_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
+
+ // DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x1E : jb +0xEC
+ { 0x1E, 0x72 }, // (Offset,Value)-Pair #7
+ { 0x1F, 0xEC }, // (Offset,Value)-Pair #8
+
+ // DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x22 : retn 0x04
+ { 0x22, 0xC2 }, // (Offset,Value)-Pair #9
+ { 0x23, 0x04 }, // (Offset,Value)-Pair #10
+OOVPA_END;
+
+// ******************************************************************
+// * DirectSound_CDirectSoundVoice::SetMixBinVolumes
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4134, 17,
+
+ XREF_DSSETMIXBINVOLUMESB,
+ XRefOne)
+
+ // DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x0D : call [CDirectSoundVoiceSettings::SetMixBinVolumes]
+ XREF_ENTRY( 0x0D, XREF_DSSETMIXBINVOLUMESC ), // (Offset,Value)-Pair #1
+
+ // DirectSound_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
+
+ // DirectSound_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
+
+ // DirectSound_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
+
+ // DirectSound_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
+
+ // DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x1A : retn 0x08
+ { 0x1A, 0xC2 }, // (Offset,Value)-Pair #16
+ { 0x1B, 0x08 }, // (Offset,Value)-Pair #17
+OOVPA_END;
+
+// ******************************************************************
+// * DirectSound_CDirectSoundBuffer::SetMixBinVolumes
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4134, 17,
+
+ XREF_DSSETMIXBINVOLUMESA,
+ XRefOne)
+
+ // DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x32 : call [CDirectSoundVoice::SetMixBinVolumes]
+ XREF_ENTRY( 0x32, XREF_DSSETMIXBINVOLUMESB ), // (Offset,Value)-Pair #1
+
+ // DirectSound_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
+
+ // DirectSound_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
+
+ // DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x49 : pop edi
+ { 0x49, 0x5F }, // (Offset,Value)-Pair #15
+
+ // DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x4B : retn 0x08
+ { 0x4B, 0xC2 }, // (Offset,Value)-Pair #16
+ { 0x4C, 0x08 }, // (Offset,Value)-Pair #17
+OOVPA_END;
+
+// ******************************************************************
+// * IDirectSoundBuffer_SetMixBinVolumes
+// ******************************************************************
+OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes, 4134, 12,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ // IDirectSoundBuffer_SetMixBinVolumes+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes]
+ XREF_ENTRY( 0x15, XREF_DSSETMIXBINVOLUMESA ), // (Offset,Value)-Pair #1
+
+ // IDirectSoundBuffer_SetMixBinVolumes+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+0x0A : add eax, 0xFFFFFFE4
+ { 0x0A, 0x83 }, // (Offset,Value)-Pair #6
+ { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7
+ { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8
+
+ // IDirectSoundBuffer_SetMixBinVolumes+0x0F : sbb ecx, ecx
+ { 0x0F, 0x1B }, // (Offset,Value)-Pair #9
+ { 0x10, 0xC9 }, // (Offset,Value)-Pair #10
+
+ // IDirectSoundBuffer_SetMixBinVolumes+0x11 : and ecx, eax
+ { 0x11, 0x23 }, // (Offset,Value)-Pair #11
+ { 0x12, 0xC8 }, // (Offset,Value)-Pair #12
+OOVPA_END;
+
+// ******************************************************************
+// * DirectSound_CDirectSoundStream_SetMixBinVolumes
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4134, 12,
+
+ XRefNoSaveIndex,
+ XRefOne)
+
+ XREF_ENTRY( 0x36, XREF_DSSETMIXBINVOLUMESB ),
+
+ { 0x0D, 0x0F },
+ { 0x0E, 0xB6 },
+ { 0x0F, 0xF0 },
+ { 0x21, 0xB8 },
+ { 0x22, 0x05 },
+ { 0x23, 0x40 },
+ { 0x24, 0x00 },
+ { 0x25, 0x80 },
+ { 0x4F, 0xC2 },
+ { 0x50, 0x08 },
+ { 0x51, 0x00 },
+OOVPA_END;
+
// ******************************************************************
// * Direct, 4134
// ******************************************************************
@@ -2319,6 +2694,9 @@ OOVPATable DSound_4134[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH),
@@ -2349,12 +2727,15 @@ OOVPATable DSound_4134[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMaxDistance, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMaxDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMinDistance, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMinDistance, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMinDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH),
@@ -2364,40 +2745,49 @@ OOVPATable DSound_4134[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOrientation, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOrientation, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOrientation, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPosition, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVelocity, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_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(DirectSound_CDirectSoundVoice_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(IDirectSound_SetAllParameters, 4134, ALIAS, IDirectSoundBuffer_SetAllParameters), // Use that for now. Okay, it's your call pal...
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetAllParameters, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMode, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMode, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4134, XREF),
- REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
- REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
- REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4134, PATCH),
};
// ******************************************************************
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl
index 5cce70738..92582e15e 100644
--- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl
@@ -215,13 +215,14 @@ OOVPA_END;
// ******************************************************************
// * CMcpxBuffer_PlayA
// ******************************************************************
-OOVPA_XREF(CMcpxBuffer_PlayA, 4361, 10,
+OOVPA_XREF(CMcpxBuffer_PlayA, 4361, 11,
XREF_CMcpxBuffer_PlayA,
XRefZero)
{ 0x03, 0x8B },
{ 0x0E, 0xF1 },
+ { 0x1B, 0x08 },
{ 0x1C, 0x6A },
{ 0x1D, 0x03 },
{ 0x1E, 0xFF },
@@ -297,16 +298,16 @@ OOVPA_XREF(CMcpxBuffer_Stop, 4361, 9,
{ 0x0E, 0x3C }, // (Offset,Value)-Pair #1
{ 0x0F, 0x03 }, // (Offset,Value)-Pair #2
- // CMcpxBuffer_Stop+0x1C : cmp ax, 0x0203
- { 0x28, 0x66 }, // (Offset,Value)-Pair #3
- { 0x29, 0x3D }, // (Offset,Value)-Pair #4
- { 0x2A, 0x03 }, // (Offset,Value)-Pair #5
- { 0x2B, 0x02 }, // (Offset,Value)-Pair #6
+ // CMcpxBuffer_Stop+0x17 : jz +0x2A
+ { 0x17, 0x74 }, // (Offset,Value)-Pair #3
+ { 0x18, 0x2A }, // (Offset,Value)-Pair #4
- // CMcpxBuffer_Stop+0x70 : mov eax, [esi+0x90]
- { 0x70, 0x8B }, // (Offset,Value)-Pair #7
- { 0x71, 0x86 }, // (Offset,Value)-Pair #8
- { 0x72, 0x90 }, // (Offset,Value)-Pair #9
+ // 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
OOVPA_END;
// ******************************************************************
@@ -460,22 +461,23 @@ OOVPA_END;
OOVPA_XREF(CMcpxBuffer_Stop2, 4361, 10,
XREF_CMcpxBuffer_Stop2,
- XRefZero)
+ XRefOne)
- // CMcpxBuffer_Stop2+0x03 : mov eax, [ebp+arg_0]
- { 0x03, 0x8B },
- { 0x04, 0x45 },
- { 0x05, 0x08 },
- // CMcpxBuffer_Stop2+0x14 : mov eax, [esi]
- { 0x14, 0x8B },
- { 0x15, 0x06 },
- // CMcpxBuffer_Stop2+0x25 : push [ebp+arg_8]
- { 0x25, 0xFF },
- { 0x26, 0x75 },
- { 0x27, 0x10 },
- // CMcpxBuffer_Stop2+0x36 : retn 0xC
- { 0x36, 0xC2 },
- { 0x37, 0x0C },
+ XREF_ENTRY( 0x2B, XREF_DSOUNDSTOP ),
+
+ // CMcpxBuffer_Stop2+0x03 : mov eax, [ebp+arg_0]
+ { 0x03, 0x8B },
+ { 0x04, 0x45 },
+ { 0x05, 0x08 },
+ // CMcpxBuffer_Stop2+0x14 : mov eax, [esi]
+ { 0x14, 0x8B },
+ { 0x15, 0x06 },
+ // CMcpxBuffer_Stop2+0x25 : mov edi, eax
+ { 0x2F, 0x8B },
+ { 0x30, 0xF8 },
+ // CMcpxBuffer_Stop2+0x36 : retn 0xC
+ { 0x36, 0xC2 },
+ { 0x37, 0x0C },
OOVPA_END;
// ******************************************************************
@@ -660,6 +662,7 @@ OOVPATable DSound_4361[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4361, XREF),
+ REGISTER_OOVPA(CMcpxBuffer_PlayA, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 4361, XREF),
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl
index ed18dca8e..e90691dbb 100644
--- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl
@@ -197,134 +197,22 @@ OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoiceSettings::SetMixBinVolumes
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, 10,
-
- XREF_DSSETMIXBINVOLUMESC,
- XRefZero)
-
- // DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x09 : jbe +0x16
- { 0x09, 0x76 }, // (Offset,Value)-Pair #1
- { 0x0A, 0x16 }, // (Offset,Value)-Pair #2
-
- // DirectSound_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
-
- // DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x1E : jb +0xEC
- { 0x1E, 0x72 }, // (Offset,Value)-Pair #7
- { 0x1F, 0xEC }, // (Offset,Value)-Pair #8
-
- // DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x22 : retn 0x04
- { 0x22, 0xC2 }, // (Offset,Value)-Pair #9
- { 0x23, 0x04 }, // (Offset,Value)-Pair #10
-OOVPA_END;
+#define DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes_4627 DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMixBinVolumes
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4627, 17,
-
- XREF_DSSETMIXBINVOLUMESB,
- XRefOne)
-
- // DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x0D : call [CDirectSoundVoiceSettings::SetMixBinVolumes]
- XREF_ENTRY( 0x0D, XREF_DSSETMIXBINVOLUMESC ), // (Offset,Value)-Pair #1
-
- // DirectSound_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
-
- // DirectSound_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
-
- // DirectSound_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
-
- // DirectSound_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
-
- // DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x1A : retn 0x08
- { 0x1A, 0xC2 }, // (Offset,Value)-Pair #16
- { 0x1B, 0x08 }, // (Offset,Value)-Pair #17
-OOVPA_END;
+#define DirectSound_CDirectSoundVoice_SetMixBinVolumes_4627 DirectSound_CDirectSoundVoice_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound_CDirectSoundBuffer::SetMixBinVolumes
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4627, 17,
-
- XREF_DSSETMIXBINVOLUMESA,
- XRefOne)
-
- // DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x32 : call [CDirectSoundVoice::SetMixBinVolumes]
- XREF_ENTRY( 0x32, XREF_DSSETMIXBINVOLUMESB ), // (Offset,Value)-Pair #1
-
- // DirectSound_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
-
- // DirectSound_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
-
- // DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x49 : pop edi
- { 0x49, 0x5F }, // (Offset,Value)-Pair #15
-
- // DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x4B : retn 0x08
- { 0x4B, 0xC2 }, // (Offset,Value)-Pair #16
- { 0x4C, 0x08 }, // (Offset,Value)-Pair #17
-OOVPA_END;
+#define DirectSound_CDirectSoundBuffer_SetMixBinVolumes_4627 DirectSound_CDirectSoundBuffer_SetMixBinVolumes_4134
// ******************************************************************
// * IDirectSoundBuffer_SetMixBinVolumes
// ******************************************************************
-OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes, 4627, 12,
-
- XRefNoSaveIndex,
- XRefOne)
-
- // IDirectSoundBuffer_SetMixBinVolumes+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes]
- XREF_ENTRY( 0x15, XREF_DSSETMIXBINVOLUMESA ), // (Offset,Value)-Pair #1
-
- // IDirectSoundBuffer_SetMixBinVolumes+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+0x0A : add eax, 0xFFFFFFE4
- { 0x0A, 0x83 }, // (Offset,Value)-Pair #6
- { 0x0B, 0xC0 }, // (Offset,Value)-Pair #7
- { 0x0C, 0xE4 }, // (Offset,Value)-Pair #8
-
- // IDirectSoundBuffer_SetMixBinVolumes+0x0F : sbb ecx, ecx
- { 0x0F, 0x1B }, // (Offset,Value)-Pair #9
- { 0x10, 0xC9 }, // (Offset,Value)-Pair #10
-
- // IDirectSoundBuffer_SetMixBinVolumes+0x11 : and ecx, eax
- { 0x11, 0x23 }, // (Offset,Value)-Pair #11
- { 0x12, 0xC8 }, // (Offset,Value)-Pair #12
-OOVPA_END;
+#define IDirectSoundBuffer_SetMixBinVolumes_4627 IDirectSoundBuffer_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound_CDirectSound::SetPositionA
@@ -695,27 +583,9 @@ OOVPA_XREF(CMcpxStream_Pause, 4928, 11,
OOVPA_END;
// ******************************************************************
-// * DirectSound_CDirectSoundStream_SetMixBinVolumes (untested)
+// * DirectSound_CDirectSoundStream_SetMixBinVolumes
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4627, 12,
-
- XRefNoSaveIndex,
- XRefOne)
-
- XREF_ENTRY( 0x36, XREF_DSSETMIXBINVOLUMESB ),
-
- { 0x0D, 0x0F },
- { 0x0E, 0xB6 },
- { 0x0F, 0xF0 },
- { 0x21, 0x8B },
- { 0x22, 0x05 },
- { 0x23, 0x40 },
- { 0x24, 0x00 },
- { 0x25, 0x80 },
- { 0x4F, 0xC2 },
- { 0x50, 0x08 },
- { 0x51, 0x00 },
-OOVPA_END;
+#define DirectSound_CDirectSoundStream_SetMixBinVolumes_4627 DirectSound_CDirectSoundStream_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound::CDirectSound::EnableHeadphones (incorrect?)
@@ -1438,7 +1308,7 @@ OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundBuffer::SetNotificationPositions
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, 7,
+OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, 10,
XREF_DirectSound_CDirectSoundBuffer_SetNotificationPositions,
XRefZero)
@@ -1446,9 +1316,12 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, 7,
{ 0x0C, 0x00 },
{ 0x1B, 0xFF },
{ 0x25, 0x80 },
- { 0x32, 0x74 },
- { 0x3F, 0xF8 },
- { 0x4C, 0x8B },
+ { 0x2C, 0x0C },
+ { 0x2D, 0x8B },
+ { 0x2E, 0x4E },
+ { 0x2F, 0x1C },
+ { 0x30, 0x57 },
+ { 0x47, 0xE8 },
{ 0x5D, 0x8B },
OOVPA_END;
@@ -1648,6 +1521,9 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH),
@@ -1711,7 +1587,7 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
- REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
@@ -1762,13 +1638,14 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetFilter, 4627, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_PlayA, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 4361, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF),
REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4134, XREF),
- REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH),
@@ -1792,8 +1669,6 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPitch, 4627, PATCH),
- REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
- REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
};
// ******************************************************************
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.h b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.h
new file mode 100644
index 000000000..92b7e9499
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.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->DSound.1.0.5028.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 DSOUND_5028_H
+#define DSOUND_5028_H
+
+#include "OOVPA.h"
+
+extern OOVPATable DSOUND_5028[];
+extern uint32 DSOUND_5028_SIZE;
+
+#endif
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl
new file mode 100644
index 000000000..1c43d36e6
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl
@@ -0,0 +1,259 @@
+// ******************************************************************
+// *
+// * .,-::::: .,:: .::::::::. .,:: .:
+// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
+// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
+// * $$$ 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.5028.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
+// *
+// ******************************************************************
+
+// ******************************************************************
+// * DirectSound::CDirectSoundVoice::SetFormat
+// ******************************************************************
+OOVPA_XREF(DirectSound_CDirectSoundVoice_SetFormat, 5028, 8,
+
+ XREF_DirectSound_CDirectSoundVoice_SetFormat,
+ XRefZero)
+
+ { 0x06, 0x4E },
+ { 0x0E, 0xE8 },
+ { 0x18, 0x4E },
+ { 0x25, 0xFF },
+ { 0x2E, 0x0C },
+ { 0x34, 0x85 },
+ { 0x38, 0x8B },
+ { 0x43, 0x00 },
+OOVPA_END;
+
+// ******************************************************************
+// * Direct, 5028
+// ******************************************************************
+OOVPATable DSound_5028[] = {
+
+ REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH),
+ REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH),
+ REGISTER_OOVPA(DirectSoundGetSampleTime, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_CreateSoundBuffer, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPlayRegion, 4361, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLoopRegion, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetI3DL2Listener, 4134, XREF),
+ REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetMixBinHeadroom, 4627, XREF),
+ REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroomA, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4627, XREF),
+ REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParametersA, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParametersA, 4721, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParametersA, 4831, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParameters, 4928, XREF),
+ REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBins, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBins, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBins, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetPositionA, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_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(DirectSound_CDirectSoundVoice_SetFrequency, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
+ REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
+ REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_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(DirectSound_CDirectSoundStream_Pause, 4361, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_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, 4928, XREF)
+ REGISTER_OOVPA(CMcpxBuffer_GetStatusB, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetStatus, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetCurrentPosition, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetCurrentPosition, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_GetSpeakerConfig, 4627, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF),
+ REGISTER_OOVPA(CMcpxBuffer_Play, 4721, XREF),
+ REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF),
+ REGISTER_OOVPA(DirectSound_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(DirectSound_CDirectSound_SetDistanceFactorA, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetDistanceFactorA, 4627, XREF),
+ REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 4134, XREF),
+ REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 4627, XREF),
+ REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_CommitDeferredSettings, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMaxDistance, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMaxDistance, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMinDistance, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMinDistance, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMinDistance, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffFactor, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetRolloffFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDistanceFactor, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDistanceFactor, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeAngles, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeAngles, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOrientation, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOrientation, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOrientation, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOutsideVolume, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPosition, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVelocity, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDopplerFactor, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDopplerFactor, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetI3DL2Source, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetI3DL2Source, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetI3DL2Source, 4134, PATCH),
+ REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH),
+ REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), // +s
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFormat, 5028, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFormat, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_EnableHeadphones, 4627, XREF),
+ REGISTER_OOVPA(IDirectSound_EnableHeadphones, 4627, PATCH),
+ // REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetHeadroom, 4627, XREF),
+ // REGISTER_OOVPA(IDirectSoundStream_SetHeadroom, 4627, ALIAS, DirectSound_CDirectSoundStream_SetHeadroom),
+ REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_GetOutputLevels, 4627, XREF),
+ REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetAllParameters, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetAllParameters, 4134, XREF),
+ REGISTER_OOVPA(IDirectSound_SetAllParameters, 4134, ALIAS, IDirectSoundBuffer_SetAllParameters), // Use that for now. Okay, it's your call pal...
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetAllParameters, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CMcpxBuffer_Pause, 4928, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_Pause, 4928, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH),
+ REGISTER_OOVPA(DirectSound_CMcpxBuffer_GetStatus, 4721, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4721, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBins, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetEG, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetEG, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetEG, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetEG, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_FlushEx, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH),
+ REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMode, 4134, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMode, 4134, PATCH),
+ REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetFilter, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFilter, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetFilter, 4627, PATCH),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_PlayA, 4361, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 4361, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 4361, PATCH),
+ REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF),
+ REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 4361, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetHeadroom, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundStream_SetHeadroom, 4627, ALIAS, DirectSound_CDirectSoundStream_SetHeadroom),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetOutputBuffer, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetOutputBuffer, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetOutputBuffer, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffCurve, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffCurve, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetRolloffCurve, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 4627, PATCH),
+ REGISTER_OOVPA(XFileCreateMediaObjectEx, 4627, PATCH),
+ REGISTER_OOVPA(XWaveFileCreateMediaObject, 4627, PATCH),
+ // REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, XREF),
+ // REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, XREF),
+ REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetLFO, 4627, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLFO, 4627, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetLFO, 4627, PATCH),
+ REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPitch, 4627, PATCH),
+};
+
+// ******************************************************************
+// * DSound_5028_SIZE
+// ******************************************************************
+uint32 DSound_5028_SIZE = sizeof(DSound_5028);
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl
index 7d7c7a8e1..fc275e32b 100644
--- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl
@@ -220,20 +220,7 @@ OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetFormat
// ******************************************************************
-OOVPA_XREF(DirectSound_CDirectSoundVoice_SetFormat, 5233, 8,
-
- XREF_DirectSound_CDirectSoundVoice_SetFormat,
- XRefZero)
-
- { 0x06, 0x4E },
- { 0x0E, 0xE8 },
- { 0x18, 0x4E },
- { 0x25, 0xFF },
- { 0x2E, 0x0C },
- { 0x34, 0x85 },
- { 0x38, 0x8B },
- { 0x43, 0x00 },
-OOVPA_END;
+#define DirectSound_CDirectSoundVoice_SetFormat_5233 DirectSound_CDirectSoundVoice_SetFormat_5028
// ******************************************************************
// DirectSound_CDirectSoundVoice::SetMode
diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl
index ef5072773..1a2312c36 100644
--- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl
+++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl
@@ -1725,6 +1725,9 @@ OOVPATable DSound_5849[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 5849, XREF),
+ REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 5849, XREF),
+ REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH),
REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH),
@@ -1774,9 +1777,6 @@ OOVPATable DSound_5849[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 5849, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 5849, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 5849, PATCH),
- REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 5849, XREF),
- REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 5849, XREF),
- REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 5849, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 5849, XREF),
diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.h b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.h
new file mode 100644
index 000000000..8f3347aff
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.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->XG.1.0.5028.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 XG_5028_H
+#define XG_5028_H
+
+#include "OOVPA.h"
+
+extern OOVPATable XG_5028[];
+extern uint32 XG_5028_SIZE;
+
+#endif
diff --git a/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.inl
new file mode 100644
index 000000000..9c6a11a60
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/XG.1.0.5028.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->XG.1.0.5028.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
+// *
+// ******************************************************************
+
+// ******************************************************************
+// * XG_5028
+// ******************************************************************
+OOVPATable XG_5028[] = {
+
+ REGISTER_OOVPA(XGIsSwizzledFormat, 4361, DISABLED),
+ // REGISTER_OOVPA(XGSwizzleRect, 4361, PATCH), // Leave unpatched
+ // REGISTER_OOVPA(XGUnswizzleRect, 4627, PATCH), // Leave unpatched
+ REGISTER_OOVPA(XGSwizzleBox, 4627, PATCH),
+ REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 4627, PATCH),
+};
+
+// ******************************************************************
+// * XG_5028_SIZE
+// ******************************************************************
+uint32 XG_5028_SIZE = sizeof(XG_5028);
diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.h b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.h
new file mode 100644
index 000000000..76976640e
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.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->XOnline.1.0.5028.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 XONLINE_5028_H
+#define XONLINE_5028_H
+
+#include "OOVPA.h"
+
+extern OOVPATable XOnline_5028[];
+extern uint32 XOnline_5028_SIZE;
+
+#endif
diff --git a/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.inl
new file mode 100644
index 000000000..d5f16f21d
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/XOnline.1.0.5028.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->XOnline.1.0.5028.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
+// *
+// ******************************************************************
+
+// ******************************************************************
+// * XOnline_5028
+// ******************************************************************
+OOVPATable XOnline_5028[] ={
+
+ REGISTER_OOVPA(XNetStartup, 4361, PATCH),
+ REGISTER_OOVPA(WSAStartup, 4361, PATCH),
+ REGISTER_OOVPA(XnInit, 4627, XREF),
+ REGISTER_OOVPA(socket, 4361, EMUTHIS),
+ REGISTER_OOVPA(bind, 4361, EMUTHIS),
+ REGISTER_OOVPA(listen, 4361, EMUTHIS),
+ REGISTER_OOVPA(ioctlsocket, 4361, EMUTHIS),
+ REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH),
+ REGISTER_OOVPA(XoUpdateLaunchNewImageInternal, 4627, XREF),
+};
+
+// ******************************************************************
+// * XOnline_5028_SIZE
+// ******************************************************************
+uint32 XOnline_5028_SIZE = sizeof(XOnline_5028);
diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.h b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.h
new file mode 100644
index 000000000..13a687bd0
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.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->Xapi.1.0.5028.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 XAPI_5028_H
+#define XAPI_5028_H
+
+#include "OOVPA.h"
+
+extern OOVPATable XAPI_5028[];
+extern uint32 XAPI_5028_SIZE;
+
+#endif
diff --git a/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl
new file mode 100644
index 000000000..f1e2c34c5
--- /dev/null
+++ b/src/CxbxKrnl/HLEDataBase/Xapi.1.0.5028.inl
@@ -0,0 +1,101 @@
+// ******************************************************************
+// *
+// * .,-::::: .,:: .::::::::. .,:: .:
+// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
+// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
+// * $$$ 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.5028.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
+// *
+// ******************************************************************
+
+// ******************************************************************
+// * XAPI_5028
+// ******************************************************************
+OOVPATable XAPI_5028[] = {
+
+ REGISTER_OOVPA(XFormatUtilityDrive, 4627, PATCH),
+ REGISTER_OOVPA(SetThreadPriorityBoost, 4627, PATCH),
+ REGISTER_OOVPA(SetThreadPriority, 3911, PATCH),
+ REGISTER_OOVPA(GetThreadPriority, 4627, PATCH),
+ REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH),
+ REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH),
+ REGISTER_OOVPA(XInitDevices, 3911, PATCH),
+ REGISTER_OOVPA(XGetDevices, 4134, PATCH),
+ REGISTER_OOVPA(XInputOpen, 4361, PATCH),
+ REGISTER_OOVPA(XInputPoll, 4134, PATCH),
+ REGISTER_OOVPA(XID_fCloseDevice, 4627, XREF),
+ REGISTER_OOVPA(XID_fCloseDevice, 4928, XREF),
+ REGISTER_OOVPA(XInputClose, 4928, PATCH),
+ REGISTER_OOVPA(XInputGetCapabilities, 4361, PATCH),
+ REGISTER_OOVPA(XInputGetState, 4361, PATCH),
+ REGISTER_OOVPA(XInputGetState, 4928, PATCH),
+ REGISTER_OOVPA(XInputGetCapabilities, 4928, PATCH),
+ REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities2),
+ REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities3),
+ REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities4),
+ REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities5),
+ REGISTER_OOVPA(XInputSetState, 4361, PATCH),
+ REGISTER_OOVPA(XInputSetState, 4928, PATCH),
+ // REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete?
+ REGISTER_OOVPA(XInputGetCapabilities, 4831, PATCH),
+ REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities2),
+ REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities3),
+ REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities4),
+ REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities5),
+ REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities6),
+ // REGISTER_OOVPA(XCalculateSignatureBeginEx, 4627, PATCH), // +s, not necessary?
+ // REGISTER_OOVPA(XCalculateSignatureBegin, 4627, PATCH),
+ // REGISTER_OOVPA(XCalculateSignatureUpdate, 4627, PATCH),
+ // REGISTER_OOVPA(XCalculateSignatureEnd, 4627, PATCH), // s+
+ REGISTER_OOVPA(CreateFiber, 3911, DISABLED),
+ REGISTER_OOVPA(DeleteFiber, 3911, DISABLED),
+ REGISTER_OOVPA(SwitchToFiber, 3911, DISABLED),
+ REGISTER_OOVPA(ConvertThreadToFiber, 3911, DISABLED),
+ REGISTER_OOVPA(GetTimeZoneInformation, 3911, DISABLED),
+ REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH),
+ REGISTER_OOVPA(GetOverlappedResult, 4627, PATCH),
+ REGISTER_OOVPA(XLaunchNewImage, 4627, ALIAS, XLaunchNewImageA),
+ REGISTER_OOVPA(XLaunchNewImage, 4928, ALIAS, XLaunchNewImageA),
+ REGISTER_OOVPA(XGetLaunchInfo, 4627, DISABLED),
+ REGISTER_OOVPA(XSetProcessQuantumLength, 4627, PATCH),
+ REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH),
+ REGISTER_OOVPA(timeSetEvent, 4627, PATCH),
+ REGISTER_OOVPA(timeKillEvent, 4627, PATCH),
+ REGISTER_OOVPA(RaiseException, 4627, PATCH),
+ REGISTER_OOVPA(QueueUserAPC, 3911, PATCH),
+ REGISTER_OOVPA(XMountAlternateTitle, 4627, ALIAS, XMountAlternateTitleA),
+ REGISTER_OOVPA(XMountAlternateTitle, 4928, ALIAS, XMountAlternateTitleA),
+ REGISTER_OOVPA(XUnmountAlternateTitle, 4627, ALIAS, XUnmountAlternateTitleA),
+ REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH),
+ REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH),
+ // REGISTER_OOVPA(MoveFileA, 4627, PATCH),
+};
+
+// ******************************************************************
+// * XAPI_5028_SIZE
+// ******************************************************************
+uint32 XAPI_5028_SIZE = sizeof(XAPI_5028);
diff --git a/src/CxbxKrnl/HLEIntercept.cpp b/src/CxbxKrnl/HLEIntercept.cpp
index 7d7d2483d..b9ac98445 100644
--- a/src/CxbxKrnl/HLEIntercept.cpp
+++ b/src/CxbxKrnl/HLEIntercept.cpp
@@ -202,7 +202,6 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
if(BuildVersion == 4928) { BuildVersion = 4627; }
if(BuildVersion == 5455) { BuildVersion = 5558; }
if(BuildVersion == 5659) { BuildVersion = 5558; }
- if(BuildVersion == 5028) { BuildVersion = 4627; }
if(BuildVersion == 5120) { BuildVersion = 5233; }
if(BuildVersion == 5933) { BuildVersion = 5849; } // These XDK versions are pretty much the same
/*
@@ -314,16 +313,16 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
{
if(strcmp(Lib_XAPILIB, szLibraryName) == 0 &&
(BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361
- || BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344
- || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
+ || BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233
+ || BuildVersion == 5344 || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
{
xbaddr lower = pXbeHeader->dwBaseAddr;
xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
}
else if(strcmp(Lib_D3D8, szLibraryName) == 0 /*&& strcmp(Lib_D3D8LTCG, szOrigLibraryName)*/ &&
(BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432
- || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558
- || BuildVersion == 5788 || BuildVersion == 5849))
+ || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
+ || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
{
// Save D3D8 build version
g_BuildVersion = BuildVersion;
@@ -369,8 +368,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
XTL::EmuD3DDeferredRenderState = (DWORD*)(*(DWORD*)(pFunc + 0x2B) - 0x204 + 83*4);
patchOffset = 143*4 - 83*4;
}
- else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558
- || BuildVersion == 5788 || BuildVersion == 5849)
+ else if(BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
+ || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849)
{
// WARNING: Not thoroughly tested (just seemed very correct right away)
XTL::EmuD3DDeferredRenderState = (DWORD*)(*(DWORD*)(pFunc + 0x2B) - 0x24C + 92*4);
@@ -409,8 +408,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4134, lower, upper);
else if(BuildVersion == 4361 || BuildVersion == 4432)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4361, lower, upper);
- else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558
- || BuildVersion == 5788 || BuildVersion == 5849)
+ 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);
if(pFunc != (xbaddr)nullptr)