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 {