Merge pull request #71 from PatrickvL/master
Switches for LLE APU and GPU
This commit is contained in:
commit
c940f69f3c
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue