Merge pull request #71 from PatrickvL/master

Switches for LLE APU and GPU
This commit is contained in:
Luke Usher 2016-12-29 12:33:06 +00:00 committed by GitHub
commit c940f69f3c
3 changed files with 152 additions and 121 deletions

View File

@ -39,8 +39,16 @@
extern "C" const char *szHLELastCompileTime = __TIMESTAMP__; extern "C" const char *szHLELastCompileTime = __TIMESTAMP__;
// Uncomment this line for experimental DSOUND LLE const char *Lib_D3D8 = "D3D8";
// #define DSOUND_LLE const char *Lib_D3D8LTCG = "D3D8LTCG";
const char *Lib_D3DX8 = "D3DX8";
const char *Lib_DSOUND = "DSOUND";
const char *Lib_XACTENG = "XACTENG";
const char *Lib_XAPILIB = "XAPILIB";
const char *Lib_XGRAPHC = "XGRAPHC";
const char *Lib_XNETS = "XNETS";
const char *Lib_XONLINE = "XONLINE"; // TODO : Typo for XONLINES?
const char *Lib_XONLINES = "XONLINES";
#include "Emu.h" #include "Emu.h"
#include "EmuXTL.h" #include "EmuXTL.h"
@ -95,261 +103,259 @@ HLEData HLEDataBase[] =
{ {
// Xapilib Version 1.0.3911 // Xapilib Version 1.0.3911
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 3911, 1, 0, 3911,
XAPI_1_0_3911, XAPI_1_0_3911,
XAPI_1_0_3911_SIZE XAPI_1_0_3911_SIZE
}, },
// Xapilib Version 1.0.4034 // Xapilib Version 1.0.4034
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4034, 1, 0, 4034,
XAPI_1_0_4034, XAPI_1_0_4034,
XAPI_1_0_4034_SIZE XAPI_1_0_4034_SIZE
}, },
// Xapilib Version 1.0.4134 // Xapilib Version 1.0.4134
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4134, 1, 0, 4134,
XAPI_1_0_4134, XAPI_1_0_4134,
XAPI_1_0_4134_SIZE XAPI_1_0_4134_SIZE
}, },
// Xapilib Version 1.0.4361 // Xapilib Version 1.0.4361
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4361, 1, 0, 4361,
XAPI_1_0_4361, XAPI_1_0_4361,
XAPI_1_0_4361_SIZE XAPI_1_0_4361_SIZE
}, },
// Xapilib Version 1.0.4432 // Xapilib Version 1.0.4432
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4432, 1, 0, 4432,
XAPI_1_0_4432, XAPI_1_0_4432,
XAPI_1_0_4432_SIZE XAPI_1_0_4432_SIZE
}, },
// Xapilib Version 1.0.4627 // Xapilib Version 1.0.4627
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4627, 1, 0, 4627,
XAPI_1_0_4627, XAPI_1_0_4627,
XAPI_1_0_4627_SIZE XAPI_1_0_4627_SIZE
}, },
// Xapilib Version 1.0.5233 // Xapilib Version 1.0.5233
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 5233, 1, 0, 5233,
XAPI_1_0_5233, XAPI_1_0_5233,
XAPI_1_0_5233_SIZE XAPI_1_0_5233_SIZE
}, },
// Xapilib Version 1.0.5558 // Xapilib Version 1.0.5558
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 5558, 1, 0, 5558,
XAPI_1_0_5558, XAPI_1_0_5558,
XAPI_1_0_5558_SIZE XAPI_1_0_5558_SIZE
}, },
// Xapilib Version 1.0.5849 // Xapilib Version 1.0.5849
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 5849, 1, 0, 5849,
XAPI_1_0_5849, XAPI_1_0_5849,
XAPI_1_0_5849_SIZE XAPI_1_0_5849_SIZE
}, },
// D3D8 Version 1.0.3925 // D3D8 Version 1.0.3925
{ {
"D3D8", Lib_D3D8,
1, 0, 3925, 1, 0, 3925,
D3D8_1_0_3925, D3D8_1_0_3925,
D3D8_1_0_3925_SIZE D3D8_1_0_3925_SIZE
}, },
// D3D8 Version 1.0.4034 // D3D8 Version 1.0.4034
{ {
"D3D8", Lib_D3D8,
1, 0, 4034, 1, 0, 4034,
D3D8_1_0_4034, D3D8_1_0_4034,
D3D8_1_0_4034_SIZE D3D8_1_0_4034_SIZE
}, },
// D3D8 Version 1.0.4134 // D3D8 Version 1.0.4134
{ {
"D3D8", Lib_D3D8,
1, 0, 4134, 1, 0, 4134,
D3D8_1_0_4134, D3D8_1_0_4134,
D3D8_1_0_4134_SIZE D3D8_1_0_4134_SIZE
}, },
// D3D8 Version 1.0.4361 // D3D8 Version 1.0.4361
{ {
"D3D8", Lib_D3D8,
1, 0, 4361, 1, 0, 4361,
D3D8_1_0_4361, D3D8_1_0_4361,
D3D8_1_0_4361_SIZE D3D8_1_0_4361_SIZE
}, },
// D3D8 Version 1.0.4432 // D3D8 Version 1.0.4432
{ {
"D3D8", Lib_D3D8,
1, 0, 4432, 1, 0, 4432,
D3D8_1_0_4432, D3D8_1_0_4432,
D3D8_1_0_4432_SIZE D3D8_1_0_4432_SIZE
}, },
// D3D8 Version 1.0.4627 // D3D8 Version 1.0.4627
{ {
"D3D8", Lib_D3D8,
1, 0, 4627, 1, 0, 4627,
D3D8_1_0_4627, D3D8_1_0_4627,
D3D8_1_0_4627_SIZE D3D8_1_0_4627_SIZE
}, },
// D3D8 Version 1.0.5233 // D3D8 Version 1.0.5233
{ {
"D3D8", Lib_D3D8,
1, 0, 5233, 1, 0, 5233,
D3D8_1_0_5233, D3D8_1_0_5233,
D3D8_1_0_5233_SIZE D3D8_1_0_5233_SIZE
}, },
// D3D8 Version 1.0.5558 // D3D8 Version 1.0.5558
{ {
"D3D8", Lib_D3D8,
1, 0, 5558, 1, 0, 5558,
D3D8_1_0_5558, D3D8_1_0_5558,
D3D8_1_0_5558_SIZE D3D8_1_0_5558_SIZE
}, },
// D3D8 Version 1.0.5849 // D3D8 Version 1.0.5849
{ {
"D3D8", Lib_D3D8,
1, 0, 5849, 1, 0, 5849,
D3D8_1_0_5849, D3D8_1_0_5849,
D3D8_1_0_5849_SIZE D3D8_1_0_5849_SIZE
}, },
// D3D8LTCG Version 1.0.5849 // D3D8LTCG Version 1.0.5849
{ {
"D3D8LTCG", Lib_D3D8LTCG,
1, 0, 5849, 1, 0, 5849,
D3D8LTCG_1_0_5849, D3D8LTCG_1_0_5849,
D3D8LTCG_1_0_5849_SIZE D3D8LTCG_1_0_5849_SIZE
}, },
#ifndef DSOUND_LLE
// DSound Version 1.0.3936 // DSound Version 1.0.3936
{ {
"DSOUND", Lib_DSOUND,
1, 0, 3936, 1, 0, 3936,
DSound_1_0_3936, DSound_1_0_3936,
DSound_1_0_3936_SIZE DSound_1_0_3936_SIZE
}, },
// DSound Version 1.0.4134 // DSound Version 1.0.4134
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4134, 1, 0, 4134,
DSound_1_0_4134, DSound_1_0_4134,
DSound_1_0_4134_SIZE DSound_1_0_4134_SIZE
}, },
// DSound Version 1.0.4361 // DSound Version 1.0.4361
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4361, 1, 0, 4361,
DSound_1_0_4361, DSound_1_0_4361,
DSound_1_0_4361_SIZE DSound_1_0_4361_SIZE
}, },
// DSound Version 1.0.4432 // DSound Version 1.0.4432
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4432, 1, 0, 4432,
DSound_1_0_4432, DSound_1_0_4432,
DSound_1_0_4432_SIZE DSound_1_0_4432_SIZE
}, },
// DSound Version 1.0.4627 // DSound Version 1.0.4627
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4627, 1, 0, 4627,
DSound_1_0_4627, DSound_1_0_4627,
DSound_1_0_4627_SIZE DSound_1_0_4627_SIZE
}, },
// DSound Version 1.0.5233 // DSound Version 1.0.5233
{ {
"DSOUND", Lib_DSOUND,
1, 0, 5233, 1, 0, 5233,
DSound_1_0_5233, DSound_1_0_5233,
DSound_1_0_5233_SIZE DSound_1_0_5233_SIZE
}, },
// DSound Version 1.0.5558 // DSound Version 1.0.5558
{ {
"DSOUND", Lib_DSOUND,
1, 0, 5558, 1, 0, 5558,
DSound_1_0_5558, DSound_1_0_5558,
DSound_1_0_5558_SIZE DSound_1_0_5558_SIZE
}, },
// DSound Version 1.0.5849 // DSound Version 1.0.5849
{ {
"DSOUND", Lib_DSOUND,
1, 0, 5849, 1, 0, 5849,
DSound_1_0_5849, DSound_1_0_5849,
DSound_1_0_5849_SIZE DSound_1_0_5849_SIZE
}, },
#endif
// XG Version 1.0.3911 // XG Version 1.0.3911
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 3911, 1, 0, 3911,
XG_1_0_3911, XG_1_0_3911,
XG_1_0_3911_SIZE XG_1_0_3911_SIZE
}, },
// XG Version 1.0.4034 // XG Version 1.0.4034
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4034, 1, 0, 4034,
XG_1_0_4034, XG_1_0_4034,
XG_1_0_4034_SIZE XG_1_0_4034_SIZE
}, },
// XG Version 1.0.4361 // XG Version 1.0.4361
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4361, 1, 0, 4361,
XG_1_0_4361, XG_1_0_4361,
XG_1_0_4361_SIZE XG_1_0_4361_SIZE
}, },
// XG Version 1.0.4432 // XG Version 1.0.4432
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4432, 1, 0, 4432,
XG_1_0_4432, XG_1_0_4432,
XG_1_0_4432_SIZE XG_1_0_4432_SIZE
}, },
// XG Version 1.0.4627 // XG Version 1.0.4627
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4627, 1, 0, 4627,
XG_1_0_4627, XG_1_0_4627,
XG_1_0_4627_SIZE XG_1_0_4627_SIZE
}, },
// XG Version 1.0.5233 // XG Version 1.0.5233
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 5233, 1, 0, 5233,
XG_1_0_5233, XG_1_0_5233,
XG_1_0_5233_SIZE XG_1_0_5233_SIZE
}, },
// XG Version 1.0.5558 // XG Version 1.0.5558
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 5558, 1, 0, 5558,
XG_1_0_5558, XG_1_0_5558,
XG_1_0_5558_SIZE XG_1_0_5558_SIZE
}, },
// XG Version 1.0.5849 // XG Version 1.0.5849
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 5849, 1, 0, 5849,
XG_1_0_5849, XG_1_0_5849,
XG_1_0_5849_SIZE XG_1_0_5849_SIZE
}, },
// XNet Version 1.0.3911 // XNet Version 1.0.3911
{ {
"XNETS", Lib_XNETS,
1, 0, 3911, 1, 0, 3911,
XNet_1_0_3911, XNet_1_0_3911,
XNet_1_0_3911_SIZE XNet_1_0_3911_SIZE
}, },
// XOnline Version 1.0.4361 // XOnline Version 1.0.4361
{ {
"XONLINE", Lib_XONLINE, // TODO : Typo for XONLINES?
1, 0, 4361, 1, 0, 4361,
XOnline_1_0_4361, XOnline_1_0_4361,
XOnline_1_0_4361_SIZE XOnline_1_0_4361_SIZE
@ -357,35 +363,35 @@ HLEData HLEDataBase[] =
// XOnline(s) Version 1.0.4627 // XOnline(s) Version 1.0.4627
// TODO: Verify differences between XONLINE and XONLINES (if any) // TODO: Verify differences between XONLINE and XONLINES (if any)
{ {
"XONLINES", Lib_XONLINES,
1, 0, 4627, 1, 0, 4627,
XOnline_1_0_4627, XOnline_1_0_4627,
XOnline_1_0_4627_SIZE XOnline_1_0_4627_SIZE
}, },
// XOnline(s) Version 1.0.5233 // XOnline(s) Version 1.0.5233
{ {
"XONLINES", Lib_XONLINES,
1, 0, 5233, 1, 0, 5233,
XOnline_1_0_5233, XOnline_1_0_5233,
XOnline_1_0_5233_SIZE XOnline_1_0_5233_SIZE
}, },
// XOnline(s) Version 1.0.5558 // XOnline(s) Version 1.0.5558
{ {
"XONLINES", Lib_XONLINES,
1, 0, 5558, 1, 0, 5558,
XOnline_1_0_5558, XOnline_1_0_5558,
XOnline_1_0_5558_SIZE XOnline_1_0_5558_SIZE
}, },
// XOnline(s) Version 1.0.5849 // XOnline(s) Version 1.0.5849
{ {
"XONLINES", Lib_XONLINES,
1, 0, 5849, 1, 0, 5849,
XOnline_1_0_5849, XOnline_1_0_5849,
XOnline_1_0_5849_SIZE XOnline_1_0_5849_SIZE
}, },
// XactEng Version 1.0.4627 // XactEng Version 1.0.4627
{ {
"XACTENG", Lib_XACTENG,
1, 0, 4627, 1, 0, 4627,
XactEng_1_0_4627, XactEng_1_0_4627,
XactEng_1_0_4627_SIZE XactEng_1_0_4627_SIZE

View File

@ -82,12 +82,23 @@
// ****************************************************************** // ******************************************************************
extern "C" const char *szHLELastCompileTime; extern "C" const char *szHLELastCompileTime;
extern const char *Lib_D3D8;
extern const char *Lib_D3D8LTCG;
extern const char *Lib_D3DX8;
extern const char *Lib_DSOUND;
extern const char *Lib_XACTENG;
extern const char *Lib_XAPILIB;
extern const char *Lib_XGRAPHC;
extern const char *Lib_XNETS;
extern const char *Lib_XONLINE; // TODO : Typo for XONLINES?
extern const char *Lib_XONLINES;
// ****************************************************************** // ******************************************************************
// * HLEDataBase // * HLEDataBase
// ****************************************************************** // ******************************************************************
extern struct HLEData extern struct HLEData
{ {
char *Library; const char *Library;
uint16 MajorVersion; uint16 MajorVersion;
uint16 MinorVersion; uint16 MinorVersion;

View File

@ -162,7 +162,11 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
uint32 LastUnResolvedXRefs = UnResolvedXRefs+1; uint32 LastUnResolvedXRefs = UnResolvedXRefs+1;
uint32 OrigUnResolvedXRefs = UnResolvedXRefs; uint32 OrigUnResolvedXRefs = UnResolvedXRefs;
for(int p=0;UnResolvedXRefs < LastUnResolvedXRefs;p++) // Set these for experimental APU(sound) / GPU (graphics) LLE
bool bLLE_APU = false;
bool bLLE_GPU = false;
for(int p=0;UnResolvedXRefs < LastUnResolvedXRefs;p++)
{ {
DbgPrintf("HLE: Starting pass #%d...\n", p+1); DbgPrintf("HLE: Starting pass #%d...\n", p+1);
@ -216,27 +220,54 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
szOrigLibraryName[c] = pLibraryVersion[v].szName[c]; szOrigLibraryName[c] = pLibraryVersion[v].szName[c];
} }
// Test // TODO: HACK: D3DX8 is packed into D3D8 database
if(strcmp(szLibraryName, "XGRAPHC") == 0) if (strcmp(szLibraryName, Lib_D3DX8) == 0)
{ {
// if(BuildVersion == 4432) strcpy(szLibraryName, Lib_D3D8);
// BuildVersion = 4361;
if(BuildVersion == 3944)
BuildVersion = 3911;
if(OrigBuildVersion == 4531)
BuildVersion = 4361;
// Quick test (JSRF)
if(OrigBuildVersion == 4134)
BuildVersion = 4361;
// Quick test (Simpsons: RoadRage)
// if(BuildVersion == 4034)
// BuildVersion = 3911;
} }
// Several 3911 titles has different DSound builds. if(strcmp(szLibraryName, Lib_D3D8LTCG) == 0)
if(strcmp(szLibraryName, "DSOUND") == 0) {
// Skip scanning for D3D8LTCG symbols when LLE GPU is selected
if (bLLE_GPU)
continue;
// Test (do not release uncommented!)
/*strcpy(szLibraryName, Lib_D3D8);*/
}
if (strcmp(szLibraryName, Lib_D3D8) == 0)
{
// Skip scanning for D3D8 symbols when LLE GPU is selected
if (bLLE_GPU)
continue;
// Prevent scanning D3D8 again (since D3D8X is packed into it above)
if (bFoundD3D)
{
//DbgPrintf("Redundant\n");
continue;
}
bFoundD3D = true;
// 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)
{ {
if(BuildVersion < 4034) // Skip scanning for DSOUND symbols when LLE APU is selected
if (bLLE_APU)
continue;
// Several 3911 titles has different DSound builds.
if(BuildVersion < 4034)
{ {
BuildVersion = 3936; BuildVersion = 3936;
} }
@ -246,22 +277,9 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
BuildVersion == 4531 ) BuildVersion == 4531 )
BuildVersion = 4627; BuildVersion = 4627;
} }
else if(strcmp(szLibraryName, Lib_XAPILIB) == 0)
// Some 3911 titles have different D3D8 builds
if(strcmp(szLibraryName, "D3D8") == 0)
{
if(BuildVersion <= 3948)
BuildVersion = 3925;
// Testing... don't release with this code in it!
// TODO: 5233 and 5558
// if(BuildVersion == 4134)
// BuildVersion = 4627;
}
// Change a few XAPILIB versions to similar counterparts
if(strcmp(szLibraryName, "XAPILIB") == 0)
{ {
// Change a few XAPILIB versions to similar counterparts
if(BuildVersion == 3944) if(BuildVersion == 3944)
BuildVersion = 3911; BuildVersion = 3911;
if(BuildVersion == 3950) if(BuildVersion == 3950)
@ -269,33 +287,29 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
if(OrigBuildVersion == 4531) if(OrigBuildVersion == 4531)
BuildVersion = 4627; BuildVersion = 4627;
} }
else if (strcmp(szLibraryName, Lib_XGRAPHC) == 0)
// Test (do not release uncommented!)
/*if(strcmp(szLibraryName, "D3D8LTCG") == 0)
{ {
strcpy(szLibraryName, "D3D8"); // Skip scanning for XGRAPHC (XG) symbols when LLE GPU is selected
}*/ if (bLLE_GPU)
continue;
// TODO: HACK: These libraries are packed into one database // if(BuildVersion == 4432)
if(strcmp(szLibraryName, "D3DX8") == 0) // BuildVersion = 4361;
if (BuildVersion == 3944)
BuildVersion = 3911;
if (OrigBuildVersion == 4531)
BuildVersion = 4361;
// Quick test (JSRF)
if (OrigBuildVersion == 4134)
BuildVersion = 4361;
// Quick test (Simpsons: RoadRage)
// if(BuildVersion == 4034)
// BuildVersion = 3911;
}
if(bXRefFirstPass)
{ {
strcpy(szLibraryName, "D3D8"); if(strcmp(Lib_XAPILIB, szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 &&
}
if(strcmp(szLibraryName, "D3D8") == 0)
{
if(bFoundD3D)
{
//DbgPrintf("Redundant\n");
continue;
}
bFoundD3D = true;
}
if(bXRefFirstPass)
{
if(strcmp("XAPILIB", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 &&
(BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361 (BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361
|| BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558
|| BuildVersion == 5849)) || BuildVersion == 5849))
@ -303,7 +317,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
uint32 lower = pXbeHeader->dwBaseAddr; uint32 lower = pXbeHeader->dwBaseAddr;
uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
} }
else if(strcmp("D3D8", szLibraryName) == 0 /*&& strcmp("D3D8LTCG", szOrigLibraryName)*/ && else if(strcmp(Lib_D3D8, szLibraryName) == 0 /*&& strcmp(Lib_D3D8LTCG, szOrigLibraryName)*/ &&
MajorVersion == 1 && MinorVersion == 0 && MajorVersion == 1 && MinorVersion == 0 &&
(BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432 (BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432
|| BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849)) || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849))
@ -315,7 +329,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
uint32 lower = pXbeHeader->dwBaseAddr; uint32 lower = pXbeHeader->dwBaseAddr;
uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
void *pFunc = 0; void *pFunc = nullptr;
if(BuildVersion == 3925) if(BuildVersion == 3925)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_3925, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_3925, lower, upper);
@ -325,7 +339,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5233, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5233, lower, upper);
// locate D3DDeferredRenderState // locate D3DDeferredRenderState
if(pFunc != 0) if(pFunc != nullptr)
{ {
// offset for stencil cull enable render state in the deferred render state buffer // offset for stencil cull enable render state in the deferred render state buffer
int patchOffset = 0; int patchOffset = 0;
@ -378,13 +392,13 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
} }
else else
{ {
XTL::EmuD3DDeferredRenderState = 0; XTL::EmuD3DDeferredRenderState = nullptr;
CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!"); CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!");
} }
// locate D3DDeferredTextureState // locate D3DDeferredTextureState
{ {
pFunc = 0; pFunc = nullptr;
if(BuildVersion == 3925) if(BuildVersion == 3925)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_3925, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_3925, lower, upper);
@ -395,7 +409,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849) else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627, lower, upper);
if(pFunc != 0) if(pFunc != nullptr)
{ {
if(BuildVersion == 3925) // 0x18F180 if(BuildVersion == 3925) // 0x18F180
XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify
@ -414,12 +428,12 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
} }
else else
{ {
XTL::EmuD3DDeferredTextureState = 0; XTL::EmuD3DDeferredTextureState = nullptr;
CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!"); CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!");
} }
} }
} }
//else if(strcmp("D3D8LTCG", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 && //else if(strcmp(Lib_D3D8LTCG, szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 &&
// (BuildVersion == 5849)) // 5849 only so far... // (BuildVersion == 5849)) // 5849 only so far...
// { // {
// // Save D3D8 build version // // Save D3D8 build version
@ -429,13 +443,13 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
// uint32 lower = pXbeHeader->dwBaseAddr; // uint32 lower = pXbeHeader->dwBaseAddr;
// uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; // uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
// void *pFunc = 0; // void *pFunc = nullptr;
// if(BuildVersion == 5849) // if(BuildVersion == 5849)
// pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5849_LTCG, lower, upper); // pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5849_LTCG, lower, upper);
// // locate D3DDeferredRenderState // // locate D3DDeferredRenderState
// if(pFunc != 0) // if(pFunc != nullptr)
// { // {
// // offset for stencil cull enable render state in the deferred render state buffer // // offset for stencil cull enable render state in the deferred render state buffer
// int patchOffset = 0; // int patchOffset = 0;
@ -464,18 +478,18 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
// } // }
// else // else
// { // {
// XTL::EmuD3DDeferredRenderState = 0; // XTL::EmuD3DDeferredRenderState = nullptr;
// CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!"); // CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!");
// } // }
// // locate D3DDeferredTextureState // // locate D3DDeferredTextureState
// { // {
// pFunc = 0; // pFunc = nullptr;
// if(BuildVersion == 3925) // if(BuildVersion == 3925)
// pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_5849_LTCG, lower, upper); // pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_5849_LTCG, lower, upper);
// if(pFunc != 0) // if(pFunc != nullptr)
// { // {
// if(BuildVersion == 3925) // 0x18F180 // if(BuildVersion == 3925) // 0x18F180
// XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify // XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify
@ -494,7 +508,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
// } // }
// else // else
// { // {
// XTL::EmuD3DDeferredTextureState = 0; // XTL::EmuD3DDeferredTextureState = nullptr;
// CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!"); // CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!");
// } // }
// } // }
@ -745,7 +759,7 @@ static void EmuInstallWrappers(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xb
{ {
OOVPA *Oovpa = OovpaTable[a].Oovpa; OOVPA *Oovpa = OovpaTable[a].Oovpa;
void *pFunc = NULL; void *pFunc = nullptr;
if(bCacheInp && (vCacheInpIter != vCacheInp.end())) if(bCacheInp && (vCacheInpIter != vCacheInp.end()))
{ {
@ -759,13 +773,13 @@ static void EmuInstallWrappers(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xb
vCacheOut.push_back(pFunc); vCacheOut.push_back(pFunc);
} }
if(pFunc != 0) if(pFunc != nullptr)
{ {
#ifdef _DEBUG_TRACE #ifdef _DEBUG_TRACE
DbgPrintf("HLE: 0x%.08X -> %s\n", pFunc, OovpaTable[a].szFuncName); DbgPrintf("HLE: 0x%.08X -> %s\n", pFunc, OovpaTable[a].szFuncName);
#endif #endif
if(OovpaTable[a].lpRedirect == 0) if(OovpaTable[a].lpRedirect == nullptr)
{ {
// Insert breakpoint // Insert breakpoint
*(uint8_t*)pFunc = 0xCC; *(uint8_t*)pFunc = 0xCC;