diff --git a/build/win32/Cxbx.vcxproj b/build/win32/Cxbx.vcxproj
index e7b9e89bd..b8c484182 100644
--- a/build/win32/Cxbx.vcxproj
+++ b/build/win32/Cxbx.vcxproj
@@ -234,7 +234,6 @@ $(SOLUTIONDIR)Export.bat
-
@@ -323,7 +322,6 @@ $(SOLUTIONDIR)Export.bat
-
diff --git a/build/win32/Cxbx.vcxproj.filters b/build/win32/Cxbx.vcxproj.filters
index 92ba99d11..1aad14773 100644
--- a/build/win32/Cxbx.vcxproj.filters
+++ b/build/win32/Cxbx.vcxproj.filters
@@ -276,9 +276,6 @@
HLEDatabase
-
- HLEDatabase
-
HLEDatabase
@@ -593,9 +590,6 @@
HLEDatabase
-
- HLEDatabase
-
HLEDatabase
diff --git a/src/CxbxKrnl/HLEDataBase.cpp b/src/CxbxKrnl/HLEDataBase.cpp
index 686fe8b2f..df821f252 100644
--- a/src/CxbxKrnl/HLEDataBase.cpp
+++ b/src/CxbxKrnl/HLEDataBase.cpp
@@ -82,7 +82,6 @@ const char *Lib_XONLINES = "XONLINES";
#include "HLEDataBase/D3D8.1.0.5558.inl"
#include "HLEDataBase/D3D8.1.0.5788.inl"
#include "HLEDataBase/D3D8.1.0.5849.inl"
-#include "HLEDataBase/D3D8LTCG.1.0.5849.inl"
#include "HLEDataBase/DSound.1.0.3936.inl"
#include "HLEDataBase/DSound.1.0.4134.inl"
#include "HLEDataBase/DSound.1.0.4361.inl"
@@ -155,8 +154,6 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_D3D8, D3D8, 5788),
HLE_ENTRY(Lib_D3D8, D3D8, 5849),
- HLE_ENTRY(Lib_D3D8LTCG, D3D8LTCG, 5849),
-
HLE_ENTRY(Lib_DSOUND, DSound, 3936),
HLE_ENTRY(Lib_DSOUND, DSound, 4134),
HLE_ENTRY(Lib_DSOUND, DSound, 4361),
diff --git a/src/CxbxKrnl/HLEDataBase.h b/src/CxbxKrnl/HLEDataBase.h
index 9c84b8f12..00839e7d6 100644
--- a/src/CxbxKrnl/HLEDataBase.h
+++ b/src/CxbxKrnl/HLEDataBase.h
@@ -58,7 +58,6 @@
#include "HLEDataBase/D3D8.1.0.5558.h"
#include "HLEDataBase/D3D8.1.0.5788.h"
#include "HLEDataBase/D3D8.1.0.5849.h"
-#include "HLEDataBase/D3D8LTCG.1.0.5849.h"
#include "HLEDataBase/DSound.1.0.3936.h"
#include "HLEDataBase/DSound.1.0.4134.h"
#include "HLEDataBase/DSound.1.0.4361.h"
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.h b/src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.h
deleted file mode 100644
index f68daba68..000000000
--- a/src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// ******************************************************************
-// *
-// * .,-::::: .,:: .::::::::. .,:: .:
-// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
-// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
-// * $$$ Y$$$P $$""""Y$$ Y$$$P
-// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
-// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
-// *
-// * Cxbx->Win32->CxbxKrnl->D3D8LTCG.1.0.5849.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 D3D8LTCG_5849_H
-#define D3D8LTCG_5849_H
-
-#include "OOVPA.h"
-
-extern LOOVPA<2+13> D3DDevice_SetRenderState_CullMode_LTCG_5849;
-extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_LTCG_5849;
-
-extern OOVPATable D3D8LTCG_5849[];
-extern uint32 D3D8LTCG_5849_SIZE;
-
-#endif
diff --git a/src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.inl
deleted file mode 100644
index 513c6f53d..000000000
--- a/src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.inl
+++ /dev/null
@@ -1,1005 +0,0 @@
-// ******************************************************************
-// *
-// * .,-::::: .,:: .::::::::. .,:: .:
-// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
-// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
-// * $$$ Y$$$P $$""""Y$$ Y$$$P
-// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
-// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
-// *
-// * Cxbx->Win32->CxbxKrnl->D3D8LTCG.1.0.5849.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
-// *
-// ******************************************************************
-
-// Verteks 09/03/2009
-// For Burnout 3 Takedown
-
-// ******************************************************************
-// * Direct3D_CreateDevice
-// ******************************************************************
-OOVPA_NO_XREF(Direct3D_CreateDevice_LTCG, 5849, 8)
-
- // Direct3D_CreateDevice+0x07 : jnz +0x0A
- { 0x07, 0x75 }, // (Offset,Value)-Pair #1
- { 0x08, 0x0A }, // (Offset,Value)-Pair #2
-
- // Direct3D_CreateDevice+0x7F : rep stos
- { 0x7F, 0xF3 }, // (Offset,Value)-Pair #3
- { 0x80, 0xAB }, // (Offset,Value)-Pair #4
-
- // Direct3D_CreateDevice+0x82 : mov eax, esi
- { 0x82, 0x8B }, // (Offset,Value)-Pair #5
- { 0x83, 0xC6 }, // (Offset,Value)-Pair #6
-
- // Direct3D_CreateDevice+0x8F : retn 0x18
- { 0x8F, 0xC2 }, // (Offset,Value)-Pair #7
- { 0x90, 0x18 }, // (Offset,Value)-Pair #8
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetPixelShader
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetPixelShader_LTCG, 5849, 9)
-
- // D3D_SetPixelShader+0x1E : jnz +0x67
- { 0x1E, 0x75 }, // (Offset,Value)-Pair #1
- { 0x1F, 0x67 }, // (Offset,Value)-Pair #2
-
- // D3D_SetPixelShader+0x3E : or eax, 0x2000
- { 0x3E, 0x0D }, // (Offset,Value)-Pair #3
- { 0x3F, 0x00 }, // (Offset,Value)-Pair #4
-
- // D3D_SetPixelShader+0x60 : push eax
- { 0x60, 0x50 }, // (Offset,Value)-Pair #5
-
- // D3D_SetPixelShader+0x61 : shr eax, 1
- { 0x61, 0xD1 }, // (Offset,Value)-Pair #6
- { 0x62, 0xE8 }, // (Offset,Value)-Pair #7
-
- // D3D_SetPixelShader+0xE1 : jb +0x0E
- { 0xE1, 0x72 }, // (Offset,Value)-Pair #8
- { 0xE2, 0x0E }, // (Offset,Value)-Pair #9
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_CreateVertexShader
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_CreateVertexShader_LTCG, 5849, 8)
-
- { 0x1E, 0x85 },
- { 0x3E, 0xE8 },
- { 0x5E, 0x75 },
- { 0x7E, 0x04 },
- { 0x9E, 0x24 },
- { 0xBE, 0x8B },
- { 0xDE, 0x73 },
- { 0xFD, 0xC7 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_DrawIndexedVertices
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_DrawIndexedVertices_LTCG, 5849, 8)
-
- { 0x13, 0x89 },
- { 0x3E, 0x3B },
- { 0x5E, 0x05 },
- { 0x7E, 0xC3 },
- { 0x9E, 0xC1 },
- { 0xC4, 0x03 },
- { 0xDE, 0xE2 },
- { 0xFD, 0xEA },
-OOVPA_END;
-
-// Verteks 10/03/2009
-
-// ******************************************************************
-// * D3DDevice_SetTexture
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetTexture_LTCG, 5849, 8)
-
- { 0x1E, 0x7C },
- { 0x3C, 0xE8 },
- { 0x5F, 0xE8 },
- { 0x7E, 0x45 },
- { 0x9E, 0x08 },
- { 0xBE, 0x0C },
- { 0xDE, 0x0F },
- { 0xFE, 0x8D },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetViewport
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetViewport_LTCG, 5849, 8)
-
- { 0x1E, 0xAE },
- { 0x3E, 0x53 },
- { 0x5E, 0x00 },
- { 0x7E, 0x12 },
- { 0x9E, 0x75 },
- { 0xBE, 0x4C },
- { 0xDE, 0xE1 },
- { 0xF9, 0x7D },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetLight
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetLight_LTCG, 5849, 8)
-
- { 0x1E, 0x00 },
- { 0x3E, 0x89 },
- { 0x5E, 0x00 },
- { 0x7E, 0x07 },
- { 0x9E, 0xC8 },
- { 0xBE, 0xC9 },
- { 0xDE, 0x07 },
- { 0xFD, 0xC1 },
-OOVPA_END;
-
-/* Same as 5558
-// ******************************************************************
-// * D3DDevice_SetTransform
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetTransform_LTCG, 5849, 8)
-
- { 0x1D, 0xB9 },
- { 0x3E, 0x0F },
- { 0x5E, 0xD9 },
- { 0x7A, 0x00 },
- { 0x99, 0x83 },
- { 0xB8, 0xE0 },
- { 0xD7, 0xD9 },
- { 0xF6, 0xF6 },
-OOVPA_END;
-*/
-
-/* Same as 5849
-// ******************************************************************
-// * D3DDevice_SetMaterial
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetMaterial_LTCG, 5849, 9)
-
- { 0x04, 0x08 },
- { 0x0C, 0x81 },
- { 0x0E, 0x00 },
- { 0x10, 0x00 },
- { 0x16, 0x00 },
- { 0x1F, 0x81 },
- { 0x22, 0x90 },
- { 0x2C, 0x5E },
- { 0x2E, 0x04 },
-OOVPA_END;
-*/
-
-// ******************************************************************
-// * D3DDevice_SetStreamSource
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetStreamSource_LTCG, 5849, 14)
- // D3DDevice_SetStreamSource+0x07 : mov ebx, [esp+0x0C]
- { 0x07, 0x8B }, // (Offset,Value)-Pair #1
- { 0x08, 0x5C }, // (Offset,Value)-Pair #2
- { 0x09, 0x24 }, // (Offset,Value)-Pair #3
- { 0x0A, 0x0C }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetStreamSource+0x28 : jz +0x26
- { 0x28, 0x74 }, // (Offset,Value)-Pair #5
- { 0x29, 0x26 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_SetStreamSource+0x70 : or ecx, 0x40
- { 0x70, 0x83 }, // (Offset,Value)-Pair #7
- { 0x71, 0xC9 }, // (Offset,Value)-Pair #8
- { 0x72, 0x40 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetStreamSource+0x7E : or ecx, 0x70
- { 0x7E, 0x83 }, // (Offset,Value)-Pair #10
- { 0x7F, 0xC9 }, // (Offset,Value)-Pair #11
- { 0x80, 0x70 }, // (Offset,Value)-Pair #12
-
- // D3DDevice_SetStreamSource+0x89 : retn 0x0C
- { 0x89, 0xC2 }, // (Offset,Value)-Pair #13
- { 0x8A, 0x0C }, // (Offset,Value)-Pair #14
-OOVPA_END;
-
-/* Same as 5849
-// ******************************************************************
-// * D3DDevice_SetVertexShaderConstant1
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetVertexShaderConstant1_LTCG, 5849, 11)
- // D3DDevice_SetVertexShaderConstant1+0x06 : add eax, 0x1C
- { 0x06, 0x83 }, // (Offset,Value)-Pair #1
- { 0x07, 0xC0 }, // (Offset,Value)-Pair #2
- { 0x08, 0x1C }, // (Offset,Value)-Pair #3
-
- // D3DDevice_SetVertexShaderConstant1+0x0F : jnb +0x43
- { 0x0F, 0x73 }, // (Offset,Value)-Pair #4
- { 0x10, 0x43 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetVertexShaderConstant1+0x1D : mov [eax-0x18], ecx
- { 0x1D, 0x89 }, // (Offset,Value)-Pair #6
- { 0x1E, 0x48 }, // (Offset,Value)-Pair #7
- { 0x1F, 0xE8 }, // (Offset,Value)-Pair #8
-
- // D3DDevice_SetVertexShaderConstant1+0x53 : retn
- { 0x53, 0xC3 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetVertexShaderConstant1+0x5D : jmp +0xA2
- { 0x5D, 0xEB }, // (Offset,Value)-Pair #10
- { 0x5E, 0xA2 }, // (Offset,Value)-Pair #11
-OOVPA_END;
-*/
-
-/* Same as 5849
-// ******************************************************************
-// * D3DDevice_CreateVertexBuffer2
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2_LTCG, 5849, 7)
- { 0x08, 0xE8 },
- { 0x12, 0x1E },
- { 0x1C, 0x50 },
- { 0x26, 0x68 },
- { 0x31, 0x33 },
- { 0x3A, 0xFF },
- { 0x44, 0x01 },
-OOVPA_END;
-*/
-
-// ******************************************************************
-// * D3DDevice_SetTextureState_TexCoordIndex
-// ******************************************************************
-OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex_LTCG, 5849, 1+10,
-
- XRefNoSaveIndex,
- XRefOne)
-
- XREF_ENTRY(0x19, XREF_D3DTSS_TEXCOORDINDEX), // Derived
-
- // D3DDevice_SetTextureState_TexCoordIndex+0x14 : shl eax, 0x07
- { 0x14, 0xC1 }, // (Offset,Value)-Pair #1
- { 0x15, 0xE0 }, // (Offset,Value)-Pair #2
- { 0x16, 0x07 }, // (Offset,Value)-Pair #3
-
- // D3DDevice_SetTextureState_TexCoordIndex+0x26 : cmp eax, ecx
- { 0x26, 0x3B }, // (Offset,Value)-Pair #4
- { 0x27, 0xC1 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetTextureState_TexCoordIndex+0x7A : mov ebp, 0x2400
- { 0x7A, 0xBD }, // (Offset,Value)-Pair #6
- { 0x7C, 0x24 }, // (Offset,Value)-Pair #7
-
- // D3DDevice_SetTextureState_TexCoordIndex+0xB3 : shl ebx, 0x04
- { 0xB3, 0xC1 }, // (Offset,Value)-Pair #8
- { 0xB4, 0xE3 }, // (Offset,Value)-Pair #9
- { 0xB5, 0x04 }, // (Offset,Value)-Pair #10
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetTextureState_BumpEnv
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetTextureState_BumpEnv_LTCG, 5849, 12)
- // D3DDevice_SetTextureState_BumpEnv+0x18 : jnz +0x03
- { 0x18, 0x75 }, // (Offset,Value)-Pair #1
- { 0x19, 0x03 }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetTextureState_BumpEnv+0x1D : test bl, 3
- { 0x1D, 0xF6 }, // (Offset,Value)-Pair #3
- { 0x1E, 0xC3 }, // (Offset,Value)-Pair #4
- { 0x1F, 0x03 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetTextureState_BumpEnv+0x3B : mov ecx, [esp+0x18]
- { 0x3B, 0x8B }, // (Offset,Value)-Pair #6
- { 0x3C, 0x4C }, // (Offset,Value)-Pair #7
- { 0x3D, 0x24 }, // (Offset,Value)-Pair #8
- { 0x3E, 0x18 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetTextureState_BumpEnv+0x59 : shl esi, 5
- { 0x59, 0xC1 }, // (Offset,Value)-Pair #10
- { 0x5A, 0xE6 }, // (Offset,Value)-Pair #11
- { 0x5B, 0x05 }, // (Offset,Value)-Pair #12
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetTextureState_BorderColor
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetTextureState_BorderColor_LTCG, 5849, 15)
- // D3DDevice_SetTextureState_BorderColor+0x0C : jb +0x0E
- { 0x0C, 0x72 }, // (Offset,Value)-Pair #1
- { 0x0D, 0x0E }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetTextureState_BorderColor+0x22 : shl edx, 6
- { 0x22, 0xC1 }, // (Offset,Value)-Pair #3
- { 0x23, 0xE2 }, // (Offset,Value)-Pair #4
- { 0x24, 0x06 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetTextureState_BorderColor+0x34 : add eax, 8; mov [esi], eax; shl ecx, 7
- { 0x34, 0x83 }, // (Offset,Value)-Pair #6
- { 0x35, 0xC0 }, // (Offset,Value)-Pair #7
- { 0x36, 0x08 }, // (Offset,Value)-Pair #8
- { 0x37, 0x89 }, // (Offset,Value)-Pair #9
- { 0x38, 0x06 }, // (Offset,Value)-Pair #10
- { 0x39, 0xC1 }, // (Offset,Value)-Pair #11
- { 0x3A, 0xE1 }, // (Offset,Value)-Pair #12
- { 0x3B, 0x07 }, // (Offset,Value)-Pair #13
-
- // D3DDevice_SetTextureState_BorderColor+0x43 : retn 0x08
- { 0x43, 0xC2 }, // (Offset,Value)-Pair #14
- { 0x44, 0x08 }, // (Offset,Value)-Pair #15
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_CullMode
-// ******************************************************************
-OOVPA_XREF(D3DDevice_SetRenderState_CullMode_LTCG, 5849, 2+13,
-
- XREF_SETRENDERSTATE_CULLMODE,
- XRefTwo)
-
- XREF_ENTRY(0x03, XREF_D3DDEVICE), // Derived
- XREF_ENTRY(0x2B, XREF_D3DRS_CULLMODE), // Derived
-
- // D3DDevice_SetRenderState_CullMode+0x23 : mov dword ptr [eax], 0x40308
- { 0x23, 0xC7 }, // (Offset,Value)-Pair #1
- { 0x25, 0x08 }, // (Offset,Value)-Pair #2
- { 0x26, 0x03 }, // (Offset,Value)-Pair #3
- { 0x27, 0x04 }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetRenderState_CullMode+0x2E : add eax, 8
- { 0x2E, 0x83 }, // (Offset,Value)-Pair #5
- { 0x2F, 0xC0 }, // (Offset,Value)-Pair #6
- { 0x30, 0x08 }, // (Offset,Value)-Pair #7
-
- // D3DDevice_SetRenderState_CullMode+0x3A : retn 4
- { 0x3A, 0xC2 }, // (Offset,Value)-Pair #8
- { 0x3B, 0x04 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetRenderState_CullMode+0x5C : add edx, 0x404
- { 0x5D, 0x81 }, // (Offset,Value)-Pair #10
- { 0x5E, 0xC2 }, // (Offset,Value)-Pair #11
- { 0x5F, 0x04 }, // (Offset,Value)-Pair #12
- { 0x60, 0x04 }, // (Offset,Value)-Pair #13
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_TextureFactor
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor_LTCG, 5849, 7)
- { 0x09, 0x84 },
- { 0x14, 0x46 },
- { 0x28, 0x24 },
- { 0x33, 0xBA },
- { 0x3D, 0x4A },
- { 0x48, 0x5E },
- { 0x55, 0x5E },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_NormalizeNormals
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_NormalizeNormals_LTCG, 5849, 8)
- // D3DDevice_SetRenderState_NormalizeNormals+0x07 : mov eax, [esi]
- { 0x07, 0x8B }, // (Offset,Value)-Pair #1
- { 0x08, 0x06 }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetRenderState_NormalizeNormals+0x2E : or [addr], 0x200
- { 0x2E, 0x81 }, // (Offset,Value)-Pair #3
- { 0x2F, 0x0D }, // (Offset,Value)-Pair #4
- { 0x34, 0x00 }, // (Offset,Value)-Pair #5
- { 0x35, 0x02 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_SetRenderState_NormalizeNormals+0x3F : retn 0x04
- { 0x3F, 0xC2 }, // (Offset,Value)-Pair #7
- { 0x40, 0x04 }, // (Offset,Value)-Pair #8
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_ZEnable
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable_LTCG, 5849, 8)
- { 0x0C, 0x72 },
- { 0x2B, 0xC9 },
- { 0x3D, 0x89 },
- { 0x4F, 0x0C },
- { 0x63, 0x74 },
- { 0x74, 0x8B },
- { 0x8A, 0x8B },
- { 0x97, 0x06 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_StencilEnable
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilEnable_LTCG, 5849, 8)
- { 0x12, 0x8B },
- { 0x2D, 0x33 },
- { 0x40, 0x74 },
- { 0x4A, 0x74 },
- { 0x63, 0x89 },
- { 0x79, 0xB9 },
- { 0x92, 0x33 },
- { 0x9F, 0x04 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_Swap
-// ******************************************************************
-//OOVPA_NO_XREF(D3DDevice_Swap_LTCG, 5849, 7)
-// { 0x1B, 0xE8 },
-// { 0x38, 0xC3 },
-// { 0x55, 0xC0 },
-// { 0x72, 0xEB },
-// { 0x93, 0x85 },
-// { 0xAA, 0xC6 },
-// { 0xC9, 0x0A },
-//OOVPA_END;
-
-/* Same as 4627
-// ******************************************************************
-// * D3DDevice_SetVertexData2f
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetVertexData2f_LTCG, 5849, 14)
- // D3DDevice_SetVertexData2f+0x20 : lea edx, ds:abs[ecx*8]
- { 0x20, 0x8D }, // (Offset,Value)-Pair #1
- { 0x21, 0x14 }, // (Offset,Value)-Pair #2
- { 0x22, 0xCD }, // (Offset,Value)-Pair #3
-
- // D3DDevice_SetVertexData2f+0x2B : mov [eax], edx; mov edx, [esp+0x10]
- { 0x2B, 0x89 }, // (Offset,Value)-Pair #4
- { 0x2C, 0x10 }, // (Offset,Value)-Pair #5
- { 0x2D, 0x8B }, // (Offset,Value)-Pair #6
- { 0x2E, 0x54 }, // (Offset,Value)-Pair #7
- { 0x2F, 0x24 }, // (Offset,Value)-Pair #8
- { 0x30, 0x10 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetVertexData2f+0x37 : add eax, 0x0C
- { 0x37, 0x83 }, // (Offset,Value)-Pair #10
- { 0x38, 0xC0 }, // (Offset,Value)-Pair #11
- { 0x39, 0x0C }, // (Offset,Value)-Pair #12
-
- // D3DDevice_SetVertexData2f+0x3D : retn 0x0C
- { 0x3D, 0xC2 }, // (Offset,Value)-Pair #13
- { 0x3E, 0x0C }, // (Offset,Value)-Pair #14
-OOVPA_END;
-*/
-
-// ******************************************************************
-// * D3DDevice_End
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_End_LTCG, 5849, 7)
- { 0x07, 0x8B },
- { 0x13, 0x50 },
- { 0x1C, 0xC7 },
- { 0x22, 0xC7 },
- { 0x2B, 0x08 },
- { 0x34, 0xE1 },
- { 0x49, 0xC3 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_FillMode
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_FillMode_LTCG, 5849, 11)
- // D3DDevice_SetRenderState_FillMode+0x07 : mov eax, [esi]
- { 0x07, 0x8B }, // (Offset,Value)-Pair #1
- { 0x08, 0x06 }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetRenderState_FillMode+0x2A : mov ecx, [esp+0x08]
- { 0x2A, 0x8B }, // (Offset,Value)-Pair #3
- { 0x2B, 0x4C }, // (Offset,Value)-Pair #4
- { 0x2C, 0x24 }, // (Offset,Value)-Pair #5
- { 0x2D, 0x08 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_SetRenderState_FillMode+0x2E : jnz +0x02
- { 0x2E, 0x75 }, // (Offset,Value)-Pair #7
- { 0x2F, 0x02 }, // (Offset,Value)-Pair #8
-
- // D3DDevice_SetRenderState_FillMode+0x3E : add eax, 0x0C
- { 0x3E, 0x83 }, // (Offset,Value)-Pair #9
- { 0x3F, 0xC0 }, // (Offset,Value)-Pair #10
- { 0x40, 0x0C }, // (Offset,Value)-Pair #11
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_FogColor
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_FogColor_LTCG, 5849, 10)
- // D3DDevice_SetRenderState_FogColor+0x07 : mov eax, [esi]
- { 0x07, 0x8B }, // (Offset,Value)-Pair #1
- { 0x08, 0x06 }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetRenderState_FogColor+0x09 : cmp eax, [esi+4]
- { 0x09, 0x3B }, // (Offset,Value)-Pair #3
- { 0x0A, 0x46 }, // (Offset,Value)-Pair #4
- { 0x0B, 0x04 }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetRenderState_FogColor+0x2E : shl edi, 0x10
- { 0x2E, 0xC1 }, // (Offset,Value)-Pair #6
- { 0x2F, 0xE7 }, // (Offset,Value)-Pair #7
- { 0x30, 0x10 }, // (Offset,Value)-Pair #8
-
- // D3DDevice_SetRenderState_FogColor+0x49 : mov [esi], eax
- { 0x49, 0x89 }, // (Offset,Value)-Pair #9
- { 0x4A, 0x06 }, // (Offset,Value)-Pair #10
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_DrawVerticesUP
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_DrawVerticesUP_LTCG, 5849, 8)
- { 0x1E, 0xA1 },
- { 0x3E, 0x8B },
- { 0x5E, 0x08 },
- { 0x7E, 0xD0 },
- { 0x9E, 0x14 },
- { 0xBE, 0x8D },
- { 0xDE, 0x3B },
- { 0xFE, 0x81 },
-OOVPA_END;
-
-// Verteks 11/03/2009
-// blueshogun96 7/17/2010
-
-// ******************************************************************
-// * D3DVertexBuffer_Lock2
-// ******************************************************************
-OOVPA_NO_XREF(D3DVertexBuffer_Lock2_LTCG, 5849, 10)
- // D3DVertexBuffer_Lock2+0x05 : test bl, 0x10
- { 0x05, 0xF6 },
- { 0x06, 0xC3 },
- { 0x07, 0x10 },
- // D3DVertexBuffer_Lock2+0x7F : or eax, 0x8000000
- { 0x7F, 0x0D },
- { 0x80, 0x00 },
- { 0x81, 0x00 },
- { 0x82, 0x00 },
- { 0x83, 0x80 },
- // D3DVertexBuffer_Lock2+0x85 : retn 8
- { 0x85, 0xC2 },
- { 0x86, 0x08 },
-OOVPA_END;
-
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_YuvEnable
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_YuvEnable_LTCG, 5849, 13)
- // D3DDevice_SetRenderState_YuvEnable+0x00 : mov eax, [esp+0x04]
- { 0x00, 0x8B }, // (Offset,Value)-Pair #1
- { 0x01, 0x44 }, // (Offset,Value)-Pair #2
- { 0x02, 0x24 }, // (Offset,Value)-Pair #3
- { 0x03, 0x04 }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetRenderState_YuvEnable+0x10 : mov eax, [esi]
- { 0x10, 0x8B }, // (Offset,Value)-Pair #5
- { 0x11, 0x06 }, // (Offset,Value)-Pair #6
-
- // D3DDevice_SetRenderState_YuvEnable+0x12 : cmp eax, [esi+4]
- { 0x12, 0x3B }, // (Offset,Value)-Pair #7
- { 0x13, 0x46 }, // (Offset,Value)-Pair #8
- { 0x14, 0x04 }, // (Offset,Value)-Pair #9
-
- // D3DDevice_SetRenderState_YuvEnable+0x15 : jb +0x0E
- { 0x15, 0x72 }, // (Offset,Value)-Pair #10
- { 0x16, 0x0E }, // (Offset,Value)-Pair #11
-
- // D3DDevice_SetRenderState_YuvEnable+0x30 : retn 0x04
- { 0x30, 0xC2 }, // (Offset,Value)-Pair #12
- { 0x31, 0x04 }, // (Offset,Value)-Pair #13
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_ShadowFunc
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_ShadowFunc_LTCG, 5849, 13)
-
- // D3DDevice_SetRenderState_ShadowFunc+0x00 : push esi
- { 0x00, 0x56 }, // (Offset,Value)-Pair #1
-
- // D3DDevice_SetRenderState_ShadowFunc+0x09 : cmp eax, [esi+4]
- { 0x09, 0x3B }, // (Offset,Value)-Pair #2
- { 0x0A, 0x46 }, // (Offset,Value)-Pair #3
- { 0x0B, 0x04 }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetRenderState_ShadowFunc+0x0C : jb +0x0E
- { 0x0C, 0x72 }, // (Offset,Value)-Pair #5
- { 0x0D, 0x0E }, // (Offset,Value)-Pair #6
-
- // D3DDevice_SetRenderState_ShadowFunc+0x26 : lea edx, [ecx-0x0200]
- { 0x26, 0x8D }, // (Offset,Value)-Pair #7
- { 0x27, 0x91 }, // (Offset,Value)-Pair #8
- { 0x28, 0x00 }, // (Offset,Value)-Pair #9
- { 0x29, 0xFE }, // (Offset,Value)-Pair #10
-
- // D3DDevice_SetRenderState_ShadowFunc+0x2F : add eax, 0x08
- { 0x2F, 0x83 }, // (Offset,Value)-Pair #11
- { 0x30, 0xC0 }, // (Offset,Value)-Pair #12
- { 0x31, 0x08 }, // (Offset,Value)-Pair #13
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_OcclusionCullEnable
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_OcclusionCullEnable_LTCG, 5849, 12)
-
- // D3DDevice_SetRenderState_OcclusionCullEnable+0x15 : jb +0x0E
- { 0x15, 0x72 }, // (Offset,Value)-Pair #1
- { 0x16, 0x0E }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetRenderState_OcclusionCullEnable+0x4A : cmp [abs], 0x1E00
- { 0x4A, 0x81 }, // (Offset,Value)-Pair #3
- { 0x50, 0x00 }, // (Offset,Value)-Pair #4
- { 0x51, 0x1E }, // (Offset,Value)-Pair #5
-
- // D3DDevice_SetRenderState_OcclusionCullEnable+0x59 : mov dword ptr [eax], 0x41D84
- { 0x59, 0xC7 }, // (Offset,Value)-Pair #6
- { 0x5A, 0x00 }, // (Offset,Value)-Pair #7
- { 0x5B, 0x84 }, // (Offset,Value)-Pair #8
- { 0x5C, 0x1D }, // (Offset,Value)-Pair #9
- { 0x5D, 0x04 }, // (Offset,Value)-Pair #10
-
- // D3DDevice_SetRenderState_OcclusionCullEnable+0x68 : retn 0x04
- { 0x68, 0xC2 }, // (Offset,Value)-Pair #11
- { 0x69, 0x04 }, // (Offset,Value)-Pair #12
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetRenderState_EdgeAntiAlias
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetRenderState_EdgeAntiAlias_LTCG, 5849, 10)
-
- // D3DDevice_SetRenderState_EdgeAntiAlias+0x07 : mov eax, [esi]
- { 0x07, 0x8B }, // (Offset,Value)-Pair #1
- { 0x08, 0x06 }, // (Offset,Value)-Pair #2
-
- // D3DDevice_SetRenderState_EdgeAntiAlias+0x0C : jb +0x0E
- { 0x0C, 0x72 }, // (Offset,Value)-Pair #3
- { 0x0D, 0x0E }, // (Offset,Value)-Pair #4
-
- // D3DDevice_SetRenderState_EdgeAntiAlias+0x1C : mov ecx, [esp+0x08]
- { 0x1C, 0x8B }, // (Offset,Value)-Pair #5
- { 0x1D, 0x4C }, // (Offset,Value)-Pair #6
- { 0x1E, 0x24 }, // (Offset,Value)-Pair #7
- { 0x1F, 0x08 }, // (Offset,Value)-Pair #8
-
- // D3DDevice_SetRenderState_EdgeAntiAlias+0x38 : retn 0x04
- { 0x38, 0xC2 }, // (Offset,Value)-Pair #9
- { 0x39, 0x04 }, // (Offset,Value)-Pair #10
-OOVPA_END;
-
-// I am not sure about this
-// ******************************************************************
-// * D3DTexture_GetLevelDesc
-// ******************************************************************
-// * NOTE: We are actually intercepting Get2DSurfaceDesc, because
-// * GetLevelDesc Simply redirects to that function
-// ******************************************************************
-OOVPA_NO_XREF(Get2DSurfaceDesc_LTCG, 5849, 9)
-
- // Get2DSurfaceDesc+0x1E : movzx ecx, byte ptr [edi+0x0D]
- { 0x1E, 0x0F }, // (Offset,Value)-Pair #1
- { 0x1F, 0xB6 }, // (Offset,Value)-Pair #2
- { 0x20, 0x4F }, // (Offset,Value)-Pair #3
- { 0x21, 0x0D }, // (Offset,Value)-Pair #4
-
- // Get2DSurfaceDesc+0x45 : mov edx, [eax+0x1A14]
- { 0x45, 0x8B }, // (Offset,Value)-Pair #5
- { 0x46, 0x90 }, // (Offset,Value)-Pair #6
- { 0x47, 0x14 }, // (Offset,Value)-Pair #7
- { 0x48, 0x1A }, // (Offset,Value)-Pair #8
-
- // Get2DSurfaceDesc+0x9E : retn
- { 0x9E, 0xC3 }, // (Offset,Value)-Pair #9
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetShaderConstantMode
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetShaderConstantMode_LTCG, 5849, 8)
-
- { 0x19, 0xFD },
- { 0x38, 0x8B },
- { 0x60, 0x0B },
- { 0x7A, 0xBA },
- { 0xA4, 0xC0 },
- { 0xB2, 0x00 },
- { 0xDA, 0x89 },
- { 0xF9, 0x00 },
-OOVPA_END;
-
-/*
-I don't know which one of these is the right one :
-0x0034E040 2 args
-0x0034E200 2 args
-0x0034F150 3 args
-// ******************************************************************
-// * D3DDevice_SetIndices
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetIndices, 5849, 7)
-
- { 0x0F, 0x10 },
- { 0x20, 0xC7 },
- { 0x31, 0xC0 },
- { 0x42, 0x78 },
- { 0x53, 0xBE },
- { 0x64, 0x89 },
- { 0x75, 0x10 },
-OOVPA_END;
-*/
-
-/* Maybe this : 0x0034D730 (NOT THIS)
- It's : 0x0034CC00 (same as 3925)
-
- 0035FEE8 accessed by CreateDevice (must contain 0035DA40 ?)
-0034D730 /$ A1 E8FE3500 mov eax, dword ptr ds:[35FEE8]
-0034D735 |. 8B88 041A0000 mov ecx, dword ptr ds:[eax+1A04] <- Exception here
-0034D73B |. 85C9 test ecx, ecx
-0034D73D |. 74 24 je short default.0034D763
-0034D73F |. 8B01 mov eax, dword ptr ds:[ecx]
-0034D741 |. A9 FFFF0000 test eax, 0FFFF
-0034D746 |. 75 19 jnz short default.0034D761
-0034D748 |. 25 00000700 and eax, 70000
-0034D74D |. 3D 00000500 cmp eax, default.00050000
-0034D752 |. 75 0D jnz short default.0034D761
-0034D754 |. 8B41 14 mov eax, dword ptr ds:[ecx+14]
-0034D757 |. 85C0 test eax, eax
-0034D759 |. 74 06 je short default.0034D761
-0034D75B |. 50 push eax
-0034D75C |. E8 9FF4FFFF call default.0034CC00 <- D3DResource_AddRef
-0034D761 |> FF01 inc dword ptr ds:[ecx]
-0034D763 |> 8BC1 mov eax, ecx
-0034D765 \. C3 retn
-// ******************************************************************
-// * D3DResource_AddRef
-// ******************************************************************
-OOVPA_NO_XREF(D3DResource_AddRef_LTCG, 5849, 10)
- // D3DResource_AddRef+0x11 : test eax, 0xFFFF
- { 0x11, 0xA9 }, // (Offset,Value)-Pair #1
- { 0x12, 0xFF }, // (Offset,Value)-Pair #2
- { 0x13, 0xFF }, // (Offset,Value)-Pair #3
-
- // D3DResource_AddRef+0x18 : and eax, 0x00070000
- { 0x18, 0x25 }, // (Offset,Value)-Pair #4
- { 0x1B, 0x07 }, // (Offset,Value)-Pair #5
-
- // D3DResource_AddRef+0x1D : cmp eax, 0x00050000
- { 0x1D, 0x3D }, // (Offset,Value)-Pair #6
- { 0x20, 0x05 }, // (Offset,Value)-Pair #7
-
- // D3DResource_AddRef+0x2B : push eax
- { 0x2B, 0x50 }, // (Offset,Value)-Pair #8
-
- // D3DResource_AddRef+0x34 : mov eax, ecx
- { 0x33, 0x8B }, // (Offset,Value)-Pair #9
- { 0x34, 0xC1 }, // (Offset,Value)-Pair #10
-OOVPA_END;
-*/
-
-// 0x0034CC40
-// ******************************************************************
-// * D3DResource_Release
-// ******************************************************************
-OOVPA_NO_XREF(D3DResource_Release_LTCG, 5849, 11)
-
- // D3DResource_Release+0x09 : and ecx, 0xFFFF
- { 0x09, 0x81 }, // (Offset,Value)-Pair #1
- { 0x0A, 0xE1 }, // (Offset,Value)-Pair #2
- { 0x0B, 0xFF }, // (Offset,Value)-Pair #3
- { 0x0C, 0xFF }, // (Offset,Value)-Pair #4
-
- // D3DResource_Release+0x14 : and eax, 0x00070000
- { 0x14, 0x25 }, // (Offset,Value)-Pair #5
- { 0x17, 0x07 }, // (Offset,Value)-Pair #6
-
- // D3DResource_Release+0x19 : cmp eax, 0x00050000
- { 0x19, 0x3D }, // (Offset,Value)-Pair #7
- { 0x1C, 0x05 }, // (Offset,Value)-Pair #8
-
- // D3DResource_Release+0x3D : pop edi
- { 0x3D, 0x5F }, // (Offset,Value)-Pair #9
-
- // D3DResource_Release+0x4A : retn 0x04
- { 0x4A, 0xC2 }, // (Offset,Value)-Pair #10
- { 0x4B, 0x04 }, // (Offset,Value)-Pair #11
-OOVPA_END;
-
-// Verteks 05/04/2009
-// ******************************************************************
-// * D3DDevice_SetTextureState_ColorKeyColor (Not sure)
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor_LTCG, 5849, 10)
-
- // D3DDevice_SetTextureState_ColorKeyColor+0x05 : cmp esi, 0x5C
- { 0x05, 0x83 },
- { 0x06, 0xFE },
- { 0x07, 0x5C },
-
- // D3DDevice_SetTextureState_ColorKeyColor+0x29 : cmp esi, 0x88
- { 0x29, 0x81 },
- { 0x2A, 0xFE },
- { 0x2B, 0x88 },
-
- // D3DDevice_SetTextureState_ColorKeyColor+0x4A : retn 0x08
- { 0x4A, 0xC2 },
- { 0x4B, 0x08 },
-
- // D3DDevice_SetTextureState_ColorKeyColor+0x5A : retn 0x08
- { 0x5A, 0xC2 },
- { 0x5B, 0x08 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_Unknown1_3
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_Unknown1_3_LTCG, 5849, 13)
-
- // D3DDevice_Unknown1_3+0x04 : cmp eax, 0x0C
- { 0x04, 0x83 },
- { 0x05, 0xF8 },
- { 0x06, 0x0C },
-
- // D3DDevice_Unknown1_3+0x48 : and ecx, 0xFFFFBFF1
- { 0x48, 0x81 },
- { 0x49, 0xE1 },
- { 0x4A, 0xF1 },
- { 0x4B, 0xBF },
- { 0x4C, 0xFF },
- { 0x4D, 0xFF },
-
- // D3DDevice_Unknown1_3+0x69 : retn 0x0C
- { 0x69, 0xC2 },
- { 0x6A, 0x0C },
-
- // D3DDevice_Unknown1_3+0xD7 : retn 0x0C
- { 0xD7, 0xC2 },
- { 0xD8, 0x0C },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_Clear
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_Clear_LTCG, 5849, 9)
- // D3DDevice_Clear+0x0000 : sub esp, 38h
- { 0x0000, 0x83 }, // (Offset,Value)-Pair #1
- { 0x0001, 0xEC }, // (Offset,Value)-Pair #2
- { 0x0002, 0x38 }, // (Offset,Value)-Pair #3
-
- // D3DDevice_Clear+0x000B : mov ebx, [ebp+0x1A04]
- { 0x000B, 0x8B }, // (Offset,Value)-Pair #4
- { 0x000C, 0x9D }, // (Offset,Value)-Pair #5
- { 0x000D, 0x04 }, // (Offset,Value)-Pair #6
- { 0x000E, 0x1A }, // (Offset,Value)-Pair #7
-
- // D3DDevice_Clear+0x03D1 : retn 0x18
- { 0x03D1, 0xC2 }, // (Offset,Value)-Pair #8
- { 0x03D2, 0x18 }, // (Offset,Value)-Pair #9
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_Swap
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_Swap_LTCG, 5849, 6)
-
- // D3DDevice_Swap+0x00 : push esi
- { 0x00, 0x56 },
- // D3DDevice_Swap+0x32 : test ah, 0x40
- { 0x32, 0xF6 },
- { 0x33, 0xC4 },
- { 0x34, 0x40 },
- // D3DDevice_Swap+0xEA : retn 4
- { 0xEA, 0xC2 },
- { 0xEB, 0x04 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_SetVertexShader
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_SetVertexShader_LTCG, 5849, 10)
-
- // D3DDevice_SetVertexShader+0x27 : test al, 0x10
- { 0x27, 0xA8 },
- { 0x28, 0x10 },
- // D3DDevice_SetVertexShader+0x70 : or eax, 0x400
- { 0x70, 0x0D },
- { 0x71, 0x00 },
- { 0x72, 0x04 },
- { 0x73, 0x00 },
- { 0x74, 0x00 },
- // D3DDevice_SetVertexShader+0xCD : add eax, 8
- { 0xCD, 0x83 },
- { 0xCE, 0xC0 },
- { 0xCF, 0x08 },
-OOVPA_END;
-
-// ******************************************************************
-// * D3DDevice_DrawVertices
-// ******************************************************************
-OOVPA_NO_XREF(D3DDevice_DrawVertices_LTCG, 5849, 14)
-
- // D3DDevice_DrawVertices+0x2B : and ecx, 0x200
- { 0x2B, 0x81 },
- { 0x2C, 0xC1 },
- { 0x2D, 0x00 },
- { 0x2E, 0x02 },
- { 0x2F, 0x00 },
- { 0x30, 0x00 },
- // D3DDevice_DrawVertices+0x6F : cmp edi, 0x100
- { 0x6F, 0x81 },
- { 0x70, 0xFF },
- { 0x71, 0x00 },
- { 0x72, 0x01 },
- { 0x73, 0x00 },
- { 0x74, 0x00 },
- // D3DDevice_DrawVertices+0xCC : retn 0xC
- { 0xCC, 0xC2 },
- { 0xCD, 0x0C },
-OOVPA_END;
-
-// ******************************************************************
-// * D3D8LTCG_5849
-// ******************************************************************
-OOVPATable D3D8LTCG_5849[] = {
-
- REGISTER_OOVPA(Direct3D_CreateDevice, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetPixelShader, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_CreateVertexShader, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_DrawIndexedVertices, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetVertexShader, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetTexture, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetViewport, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetLight, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetTransform, 5558, PATCH),
- REGISTER_OOVPA(D3DDevice_SetMaterial, 5788, PATCH),
- REGISTER_OOVPA(D3DDevice_SetStreamSource, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 5788, PATCH),
- REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5558, DISABLED),
- REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_TextureFactor, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_NormalizeNormals, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_ZEnable, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_StencilEnable, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_Swap, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4627, PATCH),
- REGISTER_OOVPA(D3DDevice_End, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_FillMode, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_DrawVertices, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH),
- REGISTER_OOVPA(D3DVertexBuffer_Lock2, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_YuvEnable, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_ShadowFunc, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_OcclusionCullEnable, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetRenderState_EdgeAntiAlias, 5849, LTCG),
- REGISTER_OOVPA(Get2DSurfaceDesc, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetShaderConstantMode, 5849, LTCG),
- REGISTER_OOVPA(D3DResource_AddRef, 3925, PATCH),
- REGISTER_OOVPA(D3DResource_Release, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_SetTextureState_ColorKeyColor, 5849, LTCG),
- REGISTER_OOVPA(D3DDevice_Clear, 5849, LTCG),
-};
-
-uint32 D3D8LTCG_5849_SIZE = sizeof(D3D8LTCG_5849);
diff --git a/src/CxbxKrnl/HLEIntercept.cpp b/src/CxbxKrnl/HLEIntercept.cpp
index a82025d97..bb7192994 100644
--- a/src/CxbxKrnl/HLEIntercept.cpp
+++ b/src/CxbxKrnl/HLEIntercept.cpp
@@ -46,23 +46,12 @@
static xbaddr EmuLocateFunction(OOVPA *Oovpa, xbaddr lower, xbaddr upper);
static void EmuInstallPatches(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xbe::Header *pXbeHeader);
-static void EmuXRefFailure();
#include
#include
-uint32 fcount = 0;
-void * funcExclude[2048] = { nullptr };
-
uint32 g_BuildVersion;
-static std::vector vCacheOut;
-
-static bool bCacheInp = false;
-static std::vector vCacheInp;
-static std::vector::const_iterator vCacheInpIter;
-
-
bool bLLE_APU = false; // Set this to true for experimental APU (sound) LLE
bool bLLE_GPU = false; // Set this to true for experimental GPU (graphics) LLE
bool bLLE_JIT = false; // Set this to true for experimental JIT
@@ -75,93 +64,15 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
Xbe::Certificate *pCertificate = (Xbe::Certificate*)pXbeHeader->dwCertificateAddr;
Xbe::LibraryVersion *pLibraryVersion = (Xbe::LibraryVersion*)pXbeHeader->dwLibraryVersionsAddr;
- char szCacheFileName[MAX_PATH];
-
printf("\n");
printf("*******************************************************************************\n");
printf("* Cxbx-Reloaded High Level Emulation database last modified %s\n", szHLELastCompileTime);
printf("*******************************************************************************\n");
printf("\n");
- //
- // initialize HLE cache file
- //
-
- {
- SHGetSpecialFolderPath(NULL, szCacheFileName, CSIDL_APPDATA, TRUE);
-
- strcat(szCacheFileName, "\\Cxbx-Reloaded\\");
-
- CreateDirectory(szCacheFileName, NULL);
-
- char *spot = strrchr(szCacheFileName, '\\');
-
- //
- // create HLECache directory
- //
-
- strcpy(spot, "\\HLECache");
-
- CreateDirectory(szCacheFileName, NULL);
-
- //
- // open title's cache file
- //
- sprintf(spot+9, "\\%08x.dat", pCertificate->dwTitleId);
-
- FILE *pCacheFile = fopen(szCacheFileName, "rb");
-
- if(pCacheFile != NULL)
- {
- bool bVerified = false;
-
- //
- // verify last compiled timestamp
- //
-
- char szCacheLastCompileTime[64];
-
- memset(szCacheLastCompileTime, 0, 64);
-
- if(fread(szCacheLastCompileTime, 64, 1, pCacheFile) == 1)
- {
- if(strcmp(szCacheLastCompileTime, szHLELastCompileTime) == 0)
- {
- bVerified = true;
- }
- }
-
- //
- // load function addresses
- //
-
- if(bVerified)
- {
- while(true)
- {
- xbaddr cur;
-
- if(fread(&cur, 4, 1, pCacheFile) != 1)
- break;
-
- vCacheInp.push_back(cur);
- }
-
- bCacheInp = true;
-
- vCacheInpIter = vCacheInp.begin();
-
- printf("HLE: Loaded HLE Cache for 0x%.08X\n", pCertificate->dwTitleId);
- }
-
- fclose(pCacheFile);
- }
- }
-
//
// initialize Microsoft XDK emulation
//
-
if(pLibraryVersion != 0)
{
printf("HLE: Detected Microsoft XDK application...\n");
@@ -196,6 +107,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
uint16 OrigBuildVersion = BuildVersion;
// Aliases - for testing purposes only
+ // TODO: Remove these and come up with a better way to handle XDKs we don't hve databases for
if(BuildVersion == 4039) { BuildVersion = 4034; }
if(BuildVersion == 4238) { BuildVersion = 4361; } // I don't think this XDK was released.
if(BuildVersion == 4242) { BuildVersion = 4361; }
@@ -208,47 +120,27 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
if(BuildVersion == 5659) { BuildVersion = 5558; }
if(BuildVersion == 5120) { BuildVersion = 5233; }
if(BuildVersion == 5933) { BuildVersion = 5849; } // These XDK versions are pretty much the same
- /*
- if(BuildVersion == 3944) { BuildVersion = 3925; }
- if(BuildVersion == 4039) { BuildVersion = 4034; }
- if(BuildVersion == 4242) { BuildVersion = 4432; }
- if(BuildVersion == 4531) { BuildVersion = 4432; }
- if(BuildVersion == 4721) { BuildVersion = 4432; }
- if(BuildVersion == 4831) { BuildVersion = 4432; }
- if(BuildVersion == 4928) { BuildVersion = 4432; }
- if(BuildVersion == 5028) { BuildVersion = 4432; }
- if(BuildVersion == 5120) { BuildVersion = 4432; }
- if(BuildVersion == 5344) { BuildVersion = 4432; }
- if(BuildVersion == 5455) { BuildVersion = 4432; }
- if(BuildVersion == 5933) { BuildVersion = 4432; }
- */
-
- char szLibraryName[9] = {0};
- char szOrigLibraryName[9] = {0};
-
- for(uint32 c=0;c<8;c++)
- {
- szLibraryName[c] = pLibraryVersion[v].szName[c];
- szOrigLibraryName[c] = pLibraryVersion[v].szName[c];
- }
+
+ std::string LibraryName = std::string(pLibraryVersion[v].szName, pLibraryVersion[v].szName + 8);
// TODO: HACK: D3DX8 is packed into D3D8 database
- if (strcmp(szLibraryName, Lib_D3DX8) == 0)
+ if (LibraryName == Lib_D3DX8)
{
- strcpy(szLibraryName, Lib_D3D8);
+ LibraryName = Lib_D3D8;
}
- if(strcmp(szLibraryName, Lib_D3D8LTCG) == 0)
+ if (LibraryName == Lib_D3D8LTCG)
{
- // Skip scanning for D3D8LTCG symbols when LLE GPU is selected
- if (bLLE_GPU)
- continue;
+ // If LLE GPU is not enabled, show a warning that the title is not supported
+ if (!bLLE_GPU) {
+ CxbxKrnlCleanup("LTCG Title Detected: This game is not supported by HLE");
+ }
- // Test (do not release uncommented!)
- /*strcpy(szLibraryName, Lib_D3D8);*/
+ // Skip LTCG libraries as we cannot reliably detect them
+ continue;
}
- if (strcmp(szLibraryName, Lib_D3D8) == 0)
+ if (LibraryName == Lib_D3D8)
{
// Skip scanning for D3D8 symbols when LLE GPU is selected
if (bLLE_GPU)
@@ -257,7 +149,6 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
// Prevent scanning D3D8 again (since D3D8X is packed into it above)
if (bFoundD3D)
{
- //DbgPrintf("Redundant\n");
continue;
}
@@ -266,13 +157,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
// Some 3911 titles have different D3D8 builds
if (BuildVersion <= 3948)
BuildVersion = 3925;
-
- // Testing... don't release with this code in it!
- // TODO: 5233 and 5558
- // if(BuildVersion == 4134)
- // BuildVersion = 4627;
}
- else if(strcmp(szLibraryName, Lib_DSOUND) == 0)
+ else if(LibraryName == Lib_DSOUND)
{
// Skip scanning for DSOUND symbols when LLE APU is selected
if (bLLE_APU)
@@ -289,7 +175,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
BuildVersion == 4531 )
BuildVersion = 4627;
}
- else if(strcmp(szLibraryName, Lib_XAPILIB) == 0)
+ else if(LibraryName == Lib_XAPILIB)
{
// Change a few XAPILIB versions to similar counterparts
if(BuildVersion == 3944)
@@ -299,14 +185,12 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
if(OrigBuildVersion == 4531)
BuildVersion = 4627;
}
- else if (strcmp(szLibraryName, Lib_XGRAPHC) == 0)
+ else if (LibraryName == Lib_XGRAPHC)
{
// Skip scanning for XGRAPHC (XG) symbols when LLE GPU is selected
if (bLLE_GPU)
continue;
- // if(BuildVersion == 4432)
- // BuildVersion = 4361;
if (BuildVersion == 3944)
BuildVersion = 3911;
if (OrigBuildVersion == 4531)
@@ -315,7 +199,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
if(bXRefFirstPass)
{
- if(strcmp(Lib_XAPILIB, szLibraryName) == 0 &&
+ if (LibraryName == Lib_XAPILIB &&
(BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361
|| BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233
|| BuildVersion == 5344 || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
@@ -323,7 +207,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
xbaddr lower = pXbeHeader->dwBaseAddr;
xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
}
- else if(strcmp(Lib_D3D8, szLibraryName) == 0 /*&& strcmp(Lib_D3D8LTCG, szOrigLibraryName)*/ &&
+ else if(LibraryName == Lib_D3D8 &&
(BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432
|| BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
|| BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
@@ -499,91 +383,13 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
}
}
}
- //else if(strcmp(Lib_D3D8LTCG, szLibraryName) == 0 &&
- // (BuildVersion == 5849)) // 5849 only so far...
- // {
- // // Save D3D8 build version
- // g_BuildVersion = BuildVersion;
-
- // xbaddr lower = pXbeHeader->dwBaseAddr;
- // xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
- // xbaddr pFunc = (xbaddr)nullptr;
-
- // if(BuildVersion == 5849)
- // pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetRenderState_CullMode_LTCG_5849, lower, upper);
-
- // // locate D3DDeferredRenderState
- // if(pFunc != nullptr)
- // {
- // // offset for stencil cull enable render state in the deferred render state buffer
- // int patchOffset = 0;
-
- // if(BuildVersion == 5849)
- // {
- // // WARNING: Not thoroughly tested (just seemed very correct right away)
- // XTL::EmuD3DDeferredRenderState = (DWORD*)(*(DWORD*)(pFunc + 0x2B) - 0x24C + 92*4);
- // patchOffset = 162*4 - 92*4;
- // }
-
- // XRefDataBase[XREF_D3DDEVICE] = *(DWORD*)((DWORD)pFunc + 0x03);
- // XRefDataBase[XREF_D3DRS_MULTISAMPLEMODE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset - 8*4;
- // XRefDataBase[XREF_D3DRS_MULTISAMPLERENDERTARGETMODE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset - 7*4;
- // XRefDataBase[XREF_D3DRS_STENCILCULLENABLE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 0*4;
- // XRefDataBase[XREF_D3DRS_ROPZCMPALWAYSREAD] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 1*4;
- // XRefDataBase[XREF_D3DRS_ROPZREAD] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 2*4;
- // XRefDataBase[XREF_D3DRS_DONOTCULLUNCOMPRESSED] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 3*4;
-
- // for(int v=0;v<44;v++)
- // {
- // XTL::EmuD3DDeferredRenderState[v] = X_D3DRS_UNK;
- // }
-
- // DbgPrintf("HLE: 0x%.08X -> EmuD3DDeferredRenderState\n", XTL::EmuD3DDeferredRenderState);
- // }
- // else
- // {
- // XTL::EmuD3DDeferredRenderState = nullptr;
- // CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!");
- // }
-
- // // locate D3DDeferredTextureState
- // {
- // pFunc = (xbaddr)nullptr;
-
- // if(BuildVersion == 3925)
- // pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_LTCG_5849, lower, upper);
-
- // if(pFunc != (xbaddr)nullptr)
- // {
- // if(BuildVersion == 3925) // 0x18F180
- // XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)(pFunc + 0x11) - 0x70); // TODO: Verify
- // else if(BuildVersion == 4134)
- // XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)(pFunc + 0x18) - 0x70); // TODO: Verify
- // else
- // XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)(pFunc + 0x19) - 0x70);
-
- // for(int s=0;s<4;s++)
- // {
- // for(int v=0;v<32;v++)
- // XTL::EmuD3DDeferredTextureState[v+s*32] = X_D3DTSS_UNK;
- // }
-
- // DbgPrintf("HLE: 0x%.08X -> EmuD3DDeferredTextureState\n", XTL::EmuD3DDeferredTextureState);
- // }
- // else
- // {
- // XTL::EmuD3DDeferredTextureState = nullptr;
- // CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!");
- // }
- // }
- // }
}
- printf("HLE: * Searching HLE database for %s version 1.0.%d... ", szLibraryName, BuildVersion);
+ printf("HLE: * Searching HLE database for %s version 1.0.%d... ", LibraryName.c_str(), BuildVersion);
const HLEData *FoundHLEData = nullptr;
for(uint32 d = 0; d < HLEDataBaseCount; d++) {
- if (BuildVersion == HLEDataBase[d].BuildVersion && strcmp(szLibraryName, HLEDataBase[d].Library) == 0) {
+ if (BuildVersion == HLEDataBase[d].BuildVersion && strcmp(LibraryName.c_str(), HLEDataBase[d].Library) == 0) {
FoundHLEData = &HLEDataBase[d];
break;
}
@@ -604,49 +410,6 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
printf("HLE: Resolved %d cross reference(s)\n", OrigUnResolvedXRefs - UnResolvedXRefs);
}
- vCacheInp.clear();
-
- //
- // update cache file
- //
-/* Turn of the nasty HLE cacheing (When you are adding oovaps anyway), it's in dire need of a better file identify system
- if(vCacheOut.size() > 0)
- {
- FILE *pCacheFile = fopen(szCacheFileName, "wb");
-
- if(pCacheFile != NULL)
- {
- DbgPrintf("HLE: Saving HLE Cache for 0x%.08X...\n", pCertificate->dwTitleId);
-
- //
- // write last compiled timestamp
- //
-
- char szCacheLastCompileTime[64];
-
- memset(szCacheLastCompileTime, 0, 64);
-
- strcpy(szCacheLastCompileTime, szHLELastCompileTime);
-
- fwrite(szCacheLastCompileTime, 64, 1, pCacheFile);
-
- //
- // write function addresses
- //
-
- std::vector::const_iterator cur;
-
- for(cur = vCacheOut.begin();cur != vCacheOut.end(); ++cur)
- {
- fwrite(&(*cur), 4, 1, pCacheFile);
- }
- }
-
- fclose(pCacheFile);
- }
-*/
- vCacheOut.clear();
-
printf("\n");
return;
@@ -859,47 +622,21 @@ static void EmuInstallPatches(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xbe
OOVPA *Oovpa = OovpaTable[a].Oovpa;
xbaddr pFunc = (xbaddr)nullptr;
- if(bCacheInp && (vCacheInpIter != vCacheInp.end()))
- {
- pFunc = *vCacheInpIter;
- ++vCacheInpIter;
- }
- else
- {
- pFunc = EmuLocateFunction(Oovpa, lower, upper);
- if (pFunc != (xbaddr)nullptr)
- vCacheOut.push_back(pFunc);
- }
+
+ pFunc = EmuLocateFunction(Oovpa, lower, upper);
if(pFunc != (xbaddr)nullptr)
{
printf("HLE: 0x%.08X -> %s\n", pFunc, OovpaTable[a].szFuncName);
- if(OovpaTable[a].emuPatch == nullptr)
- {
- // Only place an XRef trapping patch when the OOVPA registration wasn't disabled
- if ((OovpaTable[a].Flags & Flag_DontScan) == 0)
- {
- // Write breakpoint opcode
- *(uint8_t*)pFunc = OPCODE_INT3_CC;
- EmuInstallPatch(pFunc + 1, EmuXRefFailure);
- }
- }
- else
+ if ((OovpaTable[a].Flags & Flag_DontScan) == 0 && (OovpaTable[a].emuPatch != nullptr))
{
EmuInstallPatch(pFunc, OovpaTable[a].emuPatch);
- funcExclude[fcount++] = (void *)pFunc;
}
}
}
}
-// alert for the situation where an Xref function body is hit
-static void EmuXRefFailure()
-{
- CxbxKrnlCleanup("XRef-only function body reached. Fatal Error.");
-}
-
#ifdef _DEBUG_TRACE
struct HLEVerifyContext {