mirror of
https://github.com/libretro/pcsx2.git
synced 2024-12-13 21:28:38 +00:00
zzogl-pg: Revamp the crc code to pull from a table, and add a few crc codes. Based off of code from GSdx.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2902 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
07a16bc76d
commit
2daee33eae
@ -330,9 +330,12 @@ void CALLBACK GSsetSettingsDir(const char* dir) {
|
||||
|
||||
extern int VALIDATE_THRESH;
|
||||
extern u32 TEXDESTROY_THRESH;
|
||||
|
||||
int g_LastCRC = 0;
|
||||
|
||||
void CALLBACK GSsetGameCRC(int crc, int options)
|
||||
{
|
||||
// TEXDESTROY_THRESH starts out at 16.
|
||||
VALIDATE_THRESH = 8;
|
||||
conf.mrtdepth = ((conf.gamesettings & GAME_DISABLEMRTDEPTH) != 0);
|
||||
|
||||
@ -343,63 +346,24 @@ void CALLBACK GSsetGameCRC(int crc, int options)
|
||||
|
||||
g_GameSettings |= GAME_PATH3HACK;
|
||||
|
||||
bool RunningFirstTime = (g_LastCRC == crc);
|
||||
bool CRCValueChanged = (g_LastCRC != crc);
|
||||
g_LastCRC = crc;
|
||||
|
||||
if (RunningFirstTime) {
|
||||
switch(crc) {
|
||||
case 0x54A548B4: // crash n burn
|
||||
// overbright
|
||||
break;
|
||||
|
||||
case 0xA3D63039: // xenosaga(j)
|
||||
case 0x0E7807B2: // xenosaga(u)
|
||||
g_GameSettings |= GAME_DOPARALLELCTX;
|
||||
VALIDATE_THRESH = 64;
|
||||
TEXDESTROY_THRESH = 32;
|
||||
break;
|
||||
|
||||
case 0x7D2FE035: // espgaluda (j)
|
||||
VALIDATE_THRESH = 24;
|
||||
//g_GameSettings |= GAME_BIGVALIDATE;
|
||||
break;
|
||||
|
||||
case 0x21068223: //Okami, US,
|
||||
case 0x891f223f: //Okami, FR
|
||||
case 0xC5DEFEA0: //Okami, JP,
|
||||
case 0xe0426fc6: //Okage Shadow King
|
||||
conf.gamesettings |= 0x01000000; // Specular highlight;
|
||||
break;
|
||||
|
||||
case 0xD6385328: // GodOfWar
|
||||
case 0xFB0E6D72: // GodOfWar, EU,
|
||||
case 0xEB001875: // GodOfWar, EU,
|
||||
case 0xA61A4C6D: // GodOfWar,
|
||||
case 0xE23D532B: // GodOfWar,
|
||||
conf.gamesettings |= 0x00010000; // full 16 bit
|
||||
break;
|
||||
|
||||
case 0xF0A6D880: // HarvestMoon, US
|
||||
conf.gamesettings |= 0x00002000; // Disable stencil buffer
|
||||
break;
|
||||
|
||||
case 0xFB236A46: // SonicUnleashed, US
|
||||
case 0xa5d29941: // Shadow the Hedgehog
|
||||
conf.gamesettings |= 0x00040100; // Fast update + no Alpha fail
|
||||
|
||||
case 0x7acf7e03: // Atelier Iris 1
|
||||
case 0x9AC65D6A: // Atelier Iris 2, US
|
||||
case 0x4ccc9212: // Atelier Iris 3
|
||||
case 0xF95F37EE: // Ar Tonelico 2, US
|
||||
case 0x77b0236f: // Mana Khemia
|
||||
case 0x433951e7: // Mana Khemia 2
|
||||
conf.gamesettings |= 0x10000000; // GustFix
|
||||
|
||||
case 0xbaa8dd8: // Dark Cloud 1
|
||||
conf.gamesettings |= 0x00000010; // No Target Resolves
|
||||
|
||||
case 0x95cc86ef: // Ghost in the Shell
|
||||
conf.gamesettings |= 0x00000100; // no Alpha fail
|
||||
|
||||
ZZLog::Error_Log("CRC = %x", crc);
|
||||
if (CRCValueChanged && (crc != 0))
|
||||
{
|
||||
for (int i = 0; i < GAME_INFO_INDEX; i++)
|
||||
{
|
||||
if (crc_game_list[i].crc == crc)
|
||||
{
|
||||
if (crc_game_list[i].v_thresh > 0) VALIDATE_THRESH = crc_game_list[i].v_thresh;
|
||||
if (crc_game_list[i].t_thresh > 0) TEXDESTROY_THRESH = crc_game_list[i].t_thresh;
|
||||
|
||||
conf.gamesettings |= crc_game_list[i].flags;
|
||||
g_GameSettings = conf.gamesettings | options;
|
||||
ZZLog::Error_Log("Found CRC[%x] in crc game list.", crc);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -223,6 +223,10 @@ static bool SPAM_PASS;
|
||||
#define ZEROGS_DEVBUILD
|
||||
#endif
|
||||
|
||||
#ifdef ZEROGS_DEVBUILD
|
||||
//#define DEVBUILD
|
||||
#endif
|
||||
|
||||
extern void __LogToConsole(const char *fmt, ...);
|
||||
|
||||
namespace ZZLog
|
||||
@ -358,5 +362,5 @@ public:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif // UTIL_H_INCLUDED
|
||||
|
@ -187,8 +187,8 @@ ZeroGS::VB::CheckFrame32bitRes(int maxpos)
|
||||
|
||||
}
|
||||
|
||||
// This is the main code of frame resising.
|
||||
// It's check several reasons for resize and resize if it needs.
|
||||
// This is the main code for frame resizing.
|
||||
// It checks for several reasons to resize and resizes if it needs to.
|
||||
// 4Mb memory in 64 bit (4 bytes) words.
|
||||
// |------------------------|---------------------|----------|----------|---------------------|
|
||||
// 0 gsfb.fbp zbuff.zpb tbp frame.fbp 2^20/64
|
||||
@ -213,8 +213,11 @@ ZeroGS::VB::CheckFrameAddConstraints(int tbp)
|
||||
if( maxpos > 256 )
|
||||
maxpos &= ~0x1f;
|
||||
|
||||
//int noscissorpos = maxpos;
|
||||
//int ConstrainR1 = ConstraintReson;
|
||||
#ifdef DEVBUILD
|
||||
int noscissorpos = maxpos;
|
||||
int ConstrainR1 = ConstraintReson;
|
||||
#endif
|
||||
|
||||
maxpos = FindMinimalHeightConstrain(maxpos);
|
||||
|
||||
frame = gsfb;
|
||||
|
@ -49,7 +49,7 @@ extern u32 s_uFramebuffer;
|
||||
#endif
|
||||
|
||||
#ifdef DEVBUILD
|
||||
static int g_bSaveResolved = 0;
|
||||
//static int g_bSaveResolved = 0;
|
||||
#endif
|
||||
|
||||
extern int s_nResolved;
|
||||
|
@ -467,6 +467,164 @@ enum GAME_HACK_OPTIONS
|
||||
|
||||
#define USEALPHATESTING (!(g_GameSettings&GAME_NOALPHATEST))
|
||||
|
||||
|
||||
// CRC Information
|
||||
enum Title_Info
|
||||
{
|
||||
Unknown_Title,
|
||||
MetalSlug6,
|
||||
TomoyoAfter,
|
||||
Clannad,
|
||||
Lamune,
|
||||
KyuuketsuKitanMoonties,
|
||||
PiaCarroteYoukosoGPGakuenPrincess,
|
||||
KazokuKeikakuKokoroNoKizuna,
|
||||
DuelSaviorDestiny,
|
||||
FFX,
|
||||
FFX2,
|
||||
FFXII,
|
||||
ShadowHearts,
|
||||
Okami,
|
||||
MetalGearSolid3,
|
||||
DBZBT2,
|
||||
DBZBT3,
|
||||
SFEX3,
|
||||
Bully,
|
||||
BullyCC,
|
||||
SoTC,
|
||||
OnePieceGrandAdventure,
|
||||
OnePieceGrandBattle,
|
||||
ICO,
|
||||
GT4,
|
||||
WildArms5,
|
||||
Manhunt2,
|
||||
CrashBandicootWoC,
|
||||
ResidentEvil4,
|
||||
Spartan,
|
||||
AceCombat4,
|
||||
Drakengard2,
|
||||
Tekken5,
|
||||
IkkiTousen,
|
||||
GodOfWar,
|
||||
GodOfWar2,
|
||||
JackieChanAdv,
|
||||
HarvestMoon,
|
||||
NamcoXCapcom,
|
||||
GiTS,
|
||||
Onimusha3,
|
||||
MajokkoALaMode2,
|
||||
TalesOfAbyss,
|
||||
SonicUnleashed,
|
||||
SimpsonsGame,
|
||||
Genji,
|
||||
StarOcean3,
|
||||
ValkyrieProfile2,
|
||||
RadiataStories,
|
||||
SMTNocturne,
|
||||
SMTDDS1,
|
||||
SMTDDS2,
|
||||
RozenMaidenGebetGarden,
|
||||
Xenosaga,
|
||||
Espgaluda,
|
||||
OkageShadowKing,
|
||||
ShadowTheHedgehog,
|
||||
AtelierIris1,
|
||||
AtelierIris2,
|
||||
AtelierIris3,
|
||||
ArTonelico1,
|
||||
ArTonelico2,
|
||||
ManaKhemia1,
|
||||
ManaKhemia2,
|
||||
DarkCloud1,
|
||||
DarkCloud2,
|
||||
GhostInTheShell,
|
||||
TitleCount,
|
||||
};
|
||||
|
||||
enum Region_Info
|
||||
{
|
||||
Unknown_Region,
|
||||
US,
|
||||
EU,
|
||||
JP,
|
||||
JPUNDUB,
|
||||
RU,
|
||||
FR,
|
||||
DE,
|
||||
IT,
|
||||
ES,
|
||||
ASIA,
|
||||
RegionCount,
|
||||
};
|
||||
|
||||
struct Game_Info
|
||||
{
|
||||
u32 crc;
|
||||
Title_Info title;
|
||||
Region_Info region;
|
||||
u32 flags;
|
||||
s32 v_thresh, t_thresh;
|
||||
};
|
||||
|
||||
// Note; all the options surrounded by /**/ are ones that were getting chosen previously because of missing break statements, and might not be appropriate.
|
||||
// I'll have to check and see if they work better with or without them.
|
||||
static const Game_Info crc_game_list[] =
|
||||
{
|
||||
{0xA3D63039, Xenosaga, JP, GAME_DOPARALLELCTX, 64, 32},
|
||||
{0x0E7807B2, Xenosaga, US, GAME_DOPARALLELCTX, 64, 32},
|
||||
{0x7D2FE035, Espgaluda, JP, 0/*GAME_BIGVALIDATE*/, 24, -1},
|
||||
{0x21068223, Okami, US, GAME_XENOSPECHACK, -1, -1},
|
||||
{0x891f223f, Okami, FR, GAME_XENOSPECHACK, -1, -1},
|
||||
{0xC5DEFEA0, Okami, JP, GAME_XENOSPECHACK, -1, -1},
|
||||
{0xe0426fc6, OkageShadowKing, Unknown_Region, GAME_XENOSPECHACK, -1, -1},
|
||||
|
||||
{0xD6385328, GodOfWar, US, GAME_FULL16BITRES, -1, -1},
|
||||
{0xFB0E6D72, GodOfWar, EU, GAME_FULL16BITRES, -1, -1},
|
||||
{0xEB001875, GodOfWar, EU, GAME_FULL16BITRES, -1, -1},
|
||||
{0xA61A4C6D, GodOfWar, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
{0xE23D532B, GodOfWar, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
{0xDF1AF973, GodOfWar, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
{0xD6385328, GodOfWar, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
|
||||
//{0x2F123FD8, GodOfWar2, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
//{0x44A8A22A, GodOfWar2, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
//{0x4340C7C6, GodOfWar2, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
//{0xF8CD3DF6, GodOfWar2, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
//{0x0B82BFF7, GodOfWar2, Unknown_Region, GAME_FULL16BITRES, -1, -1},
|
||||
|
||||
{0xF0A6D880, HarvestMoon, US, GAME_NOSTENCIL, -1, -1},
|
||||
{0xFB236A46, SonicUnleashed, US, GAME_FASTUPDATE | GAME_NOALPHAFAIL /**/ | GAME_GUSTHACK | GAME_NOTARGETRESOLVE /**/, -1, -1},
|
||||
{0xa5d29941, ShadowTheHedgehog, US, GAME_FASTUPDATE | GAME_NOALPHAFAIL /**/ | GAME_GUSTHACK | GAME_NOTARGETRESOLVE /**/, -1, -1},
|
||||
|
||||
{0x7acf7e03, AtelierIris1, Unknown_Region, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0xE3981DBB, AtelierIris1, US, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0x9AC65D6A, AtelierIris2, US, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0x4CCC9212, AtelierIris3, US, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
//{0x4437F4B1, ArTonelico1, US, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0xF95F37EE, ArTonelico2, US, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0xF46142D3, ArTonelico2, JPUNDUB, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0x77b0236f, ManaKhemia1, US, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0x433951e7, ManaKhemia2, Unknown_Region, GAME_GUSTHACK /**/| GAME_NOTARGETRESOLVE | GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
|
||||
{0xbaa8dd8, DarkCloud1, US, GAME_NOTARGETRESOLVE /**/| GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
{0xA5C05C78, DarkCloud1, Unknown_Region, GAME_NOTARGETRESOLVE /**/| GAME_NOALPHAFAIL/**/, -1, -1},
|
||||
//{0x1DF41F33, DarkCloud2, US, 0, -1, -1},
|
||||
{0x95cc86ef, GhostInTheShell, Unknown_Region, GAME_NOALPHAFAIL, -1, -1}
|
||||
|
||||
//{0xC164550A, WildArms5, JPUNDUB, 0, -1, -1},
|
||||
//{0xC1640D2C, WildArms5, US, 0, -1, -1},
|
||||
//{0x0FCF8FE4, WildArms5, EU, 0, -1, -1},
|
||||
//{0x2294D322, WildArms5, JP, 0, -1, -1},
|
||||
//{0x565B6170, WildArms5, JP, 0, -1, -1},
|
||||
//{0xD7273511, SMTDDS1, US, 0, -1, -1}, // SMT Digital Devil Saga
|
||||
//{0x1683A6BE, SMTDDS1, EU, 0, -1, -1}, // SMT Digital Devil Saga
|
||||
//{0x44865CE1, SMTDDS1, JP, 0, -1, -1}, // SMT Digital Devil Saga
|
||||
//{0xD382C164, SMTDDS2, US, 0, -1, -1}, // SMT Digital Devil Saga 2
|
||||
//{0xE47C1A9C, SMTDDS2, JP, 0, -1, -1}, // SMT Digital Devil Saga 2
|
||||
};
|
||||
|
||||
#define GAME_INFO_INDEX (sizeof(crc_game_list)/sizeof(Game_Info))
|
||||
|
||||
extern int nBackbufferWidth, nBackbufferHeight;
|
||||
extern u8* g_pbyGSMemory;
|
||||
extern u8* g_pbyGSClut; // the temporary clut buffer
|
||||
|
Loading…
Reference in New Issue
Block a user