Verified EmuD3DDeferredRenderState and EmuD3DDeferredTextureState

Source:
Azurik - Rise of Perathia (3925)
Shikigami no Shiro (3948)
NightCaster (4039)
This commit is contained in:
jarupxx 2017-09-23 08:35:27 +09:00 committed by Luke Usher
parent c3c007d97f
commit 3e8efec225
5 changed files with 17 additions and 10 deletions

View File

@ -36,6 +36,7 @@
#include "OOVPA.h"
extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4034;
extern LOOVPA<2+14> D3DDevice_SetRenderState_CullMode_4034;
extern OOVPATable D3D8_4034[];

View File

@ -978,7 +978,7 @@ OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4034, 1+10,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY(0x11, XREF_D3DTSS_TEXCOORDINDEX), // Derived - TODO : Verify 0x11 (could be 0x18 or 0x19)
XREF_ENTRY(0x18, XREF_D3DTSS_TEXCOORDINDEX), // Derived
// D3DDevice_SetTextureState_TexCoordIndex+0x13 : shl eax, 0x07
{ 0x13, 0xC1 },

View File

@ -36,7 +36,9 @@
#include "OOVPA.h"
#if 0 // Moved to 4034
extern LOOVPA<1+10> D3DDevice_SetTextureState_TexCoordIndex_4134;
#endif
extern OOVPATable D3D8_4134[];
extern uint32 D3D8_4134_SIZE;

View File

@ -32,6 +32,7 @@
// *
// ******************************************************************
#if 0 // Moved to 403S
// ******************************************************************
// * D3DDevice_SetTextureState_TexCoordIndex
// ******************************************************************
@ -60,6 +61,7 @@ OOVPA_XREF(D3DDevice_SetTextureState_TexCoordIndex, 4134, 1+10,
{ 0xB5, 0xE2 },
{ 0xB6, 0x04 },
OOVPA_END;
#endif
// ******************************************************************
// * D3DDevice_SetTransform
@ -2584,7 +2586,7 @@ OOVPATable D3D8_4134[] = {
REGISTER_OOVPA(Direct3D_CreateDevice, 3911, PATCH),
REGISTER_OOVPA(D3D_CheckDeviceFormat, 4134, DISABLED),
REGISTER_OOVPA(MakeRequestedSpace, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4034, PATCH),
REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH),
REGISTER_OOVPA(D3DDevice_SetTransform, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_SetRenderState_FogColor, 4134, PATCH),

View File

@ -411,9 +411,9 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
}
else if (strcmp(LibraryName.c_str(), Lib_D3D8) == 0 &&
(BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432
|| BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
|| BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
(BuildVersion == 3925 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361
|| BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233
|| BuildVersion == 5344 || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
{
// Save D3D8 build version
g_BuildVersion = BuildVersion;
@ -446,12 +446,13 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x25);
Decrement = 0x1FC; // TODO: Clean up (?)
Increment = 82 * 4;
patchOffset = 105 * 4; // TODO: Verify
patchOffset = 140 * 4; // Verified 3925 and 3948
//Decrement = 0x19F; // TODO: Clean up (?)
//Increment = 72 * 4;
//patchOffset = 142*4; // TODO: Verify
}
#if 0 // Same as 4134
else if (BuildVersion == 4034)
{
DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B);
@ -459,7 +460,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
Increment = 82 * 4;
patchOffset = 142 * 4;
}
else if (BuildVersion == 4134 || BuildVersion == 4361)
#endif
else if (BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361)
{
DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B);
Decrement = 0x200;
@ -539,8 +541,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
if(BuildVersion == 3925)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_3925, lower, upper);
// TODO : What about 4034? Use it once it's offset to XREF_D3DTSS_TEXCOORDINDEX is verified
else if(BuildVersion == 4134)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4134, lower, upper);
else if(BuildVersion == 4034 || BuildVersion == 4134)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4034, lower, upper);
else if(BuildVersion == 4361 || BuildVersion == 4432)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4361, lower, upper);
else if(BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
@ -556,7 +558,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
{
if (BuildVersion == 3925) // 0x18F180
DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x11);
else if (BuildVersion == 4134)
else if (BuildVersion == 4034 || BuildVersion == 4134)
DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x18);
else
DerivedAddr_D3DTSS_TEXCOORDINDEX = *(xbaddr*)(pFunc + 0x19);