mirror of https://github.com/PCSX2/pcsx2.git
GregMiscellaneous: Add in GSdx's crcs. Fix a crash I encountered.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/GregMiscellaneous@3660 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
74895f189a
commit
a265546ddb
|
@ -86,6 +86,7 @@ enum Title_Info
|
|||
OnePieceGrandBattle,
|
||||
ICO,
|
||||
GT4,
|
||||
WildArms4,
|
||||
WildArms5,
|
||||
Manhunt2,
|
||||
CrashBandicootWoC,
|
||||
|
@ -150,7 +151,8 @@ enum Title_Info
|
|||
HauntingGround,
|
||||
NightmareBeforeChristmas,
|
||||
PowershotPinball,
|
||||
BioHazard4
|
||||
BioHazard4,
|
||||
NUMBER_OF_TITLES
|
||||
};
|
||||
|
||||
enum Region_Info
|
||||
|
@ -180,6 +182,160 @@ struct Game_Info
|
|||
|
||||
static const Game_Info crc_game_list[] =
|
||||
{
|
||||
// This section is straight from GSdx. Ones that also have ZZOgl hacks are commented out.
|
||||
|
||||
{0x00000000, Unknown_Title, Unknown_Region, 0},
|
||||
{0x2113EA2E, MetalSlug6, Unknown_Region, 0, -1, -1},
|
||||
{0x42E05BAF, TomoyoAfter, JP, 0, -1, -1},
|
||||
{0x7800DC84, Clannad, JP, 0, -1, -1},
|
||||
{0xA6167B59, Lamune, JP, 0, -1, -1},
|
||||
{0xDDB59F46, KyuuketsuKitanMoonties, JP, 0, -1, -1},
|
||||
{0xC8EE2562, PiaCarroteYoukosoGPGakuenPrincess, JP, 0, -1, -1},
|
||||
{0x6CF94A43, KazokuKeikakuKokoroNoKizuna, JP, 0, -1, -1},
|
||||
{0xEDAF602D, DuelSaviorDestiny, JP, 0, -1, -1},
|
||||
{0xa39517ab, FFX, EU, 0, -1, -1},
|
||||
{0xa39517ae, FFX, FR, 0, -1, -1},
|
||||
{0x941bb7d9, FFX, DE, 0, -1, -1},
|
||||
{0xa39517a9, FFX, IT, 0, -1, -1},
|
||||
{0x941bb7de, FFX, ES, 0, -1, -1},
|
||||
{0xb4414ea1, FFX, RU, 0, -1, -1},
|
||||
{0xee97db5b, FFX, RU, 0, -1, -1},
|
||||
{0xaec495cc, FFX, RU, 0, -1, -1},
|
||||
{0xbb3d833a, FFX, US, 0, -1, -1},
|
||||
{0x6a4efe60, FFX, JP, 0, -1, -1},
|
||||
{0x3866ca7e, FFX, ASIA, 0, -1, -1}, // int.
|
||||
{0x658597e2, FFX, JP, 0, -1, -1}, // int.
|
||||
{0x9aac5309, FFX2, EU, 0, -1, -1},
|
||||
{0x9aac530c, FFX2, FR, 0, -1, -1},
|
||||
{0x9aac530a, FFX2, FR, 0, -1, -1}, // ?
|
||||
{0x9aac530d, FFX2, DE, 0, -1, -1},
|
||||
{0x9aac530b, FFX2, IT, 0, -1, -1},
|
||||
{0x48fe0c71, FFX2, US, 0, -1, -1},
|
||||
{0xe1fd9a2d, FFX2, JP, 0, -1, -1}, // int.
|
||||
{0x78da0252, FFXII, EU, 0, -1, -1},
|
||||
{0xc1274668, FFXII, EU, 0, -1, -1},
|
||||
{0xdc2a467e, FFXII, EU, 0, -1, -1},
|
||||
{0xca284668, FFXII, EU, 0, -1, -1},
|
||||
{0x280AD120, FFXII, JP, 0, -1, -1},
|
||||
{0x08C1ED4D, HauntingGround, Unknown_Region, 0, -1, -1},
|
||||
{0x2CD5794C, HauntingGround, EU, 0, -1, -1},
|
||||
{0x867BB945, HauntingGround, JP, 0, -1, -1},
|
||||
{0xE263BC4B, HauntingGround, JP, 0, -1, -1},
|
||||
{0x901AAC09, HauntingGround, US, 0, -1, -1},
|
||||
{0x8BE3D7B2, ShadowHearts, Unknown_Region, 0, -1, -1},
|
||||
{0xDEFA4763, ShadowHearts, US, 0, -1, -1},
|
||||
//{0x21068223, Okami, US, 0, -1, -1},
|
||||
//{0x891f223f, Okami, FR, 0, -1, -1},
|
||||
//{0xC5DEFEA0, Okami, JP, 0, -1, -1},
|
||||
{0x053D2239, MetalGearSolid3, US, 0, -1, -1},
|
||||
{0x086273D2, MetalGearSolid3, FR, 0, -1, -1},
|
||||
{0x26A6E286, MetalGearSolid3, EU, 0, -1, -1},
|
||||
{0xAA31B5BF, MetalGearSolid3, Unknown_Region, 0, -1, -1},
|
||||
{0x9F185CE1, MetalGearSolid3, Unknown_Region, 0, -1, -1},
|
||||
{0x98D4BC93, MetalGearSolid3, EU, 0, -1, -1},
|
||||
{0x86BC3040, MetalGearSolid3, US, 0, -1, -1}, //Subsistance disc 1
|
||||
{0x0481AD8A, MetalGearSolid3, JP, 0, -1, -1},
|
||||
{0x79ED26AD, MetalGearSolid3, EU, 0, -1, -1},
|
||||
{0x5E31EA42, MetalGearSolid3, EU, 0, -1, -1},
|
||||
{0xD7ED797D, MetalGearSolid3, EU, 0, -1, -1},
|
||||
{0x278722BF, DBZBT2, US, 0, -1, -1},
|
||||
{0xFE961D28, DBZBT2, US, 0, -1, -1},
|
||||
{0x0393B6BE, DBZBT2, EU, 0, -1, -1},
|
||||
{0xE2F289ED, DBZBT2, JP, 0, -1, -1}, // Sparking Neo!
|
||||
{0x35AA84D1, DBZBT2, Unknown_Region, 0, -1, -1},
|
||||
{0x428113C2, DBZBT3, US, 0, -1, -1},
|
||||
{0xA422BB13, DBZBT3, EU, 0, -1, -1},
|
||||
{0x983C53D2, DBZBT3, Unknown_Region, 0, -1, -1},
|
||||
{0x983C53D3, DBZBT3, Unknown_Region, 0, -1, -1},
|
||||
{0x72B3802A, SFEX3, US, 0, -1, -1},
|
||||
{0x71521863, SFEX3, US, 0, -1, -1},
|
||||
{0x28703748, Bully, US, 0, -1, -1},
|
||||
{0xC78A495D, BullyCC, US, 0, -1, -1},
|
||||
{0xC19A374E, SoTC, US, 0, -1, -1},
|
||||
{0x7D8F539A, SoTC, EU, 0, -1, -1},
|
||||
{0x3122B508, OnePieceGrandAdventure, US, 0, -1, -1},
|
||||
{0x8DF14A24, OnePieceGrandAdventure, EU, 0, -1, -1},
|
||||
{0xB049DD5E, OnePieceGrandBattle, US, 0, -1, -1},
|
||||
{0x5D02CC5B, OnePieceGrandBattle, Unknown_Region, 0, -1, -1},
|
||||
{0x6F8545DB, ICO, US, 0, -1, -1},
|
||||
{0xB01A4C95, ICO, JP, 0, -1, -1},
|
||||
{0x5C991F4E, ICO, Unknown_Region, 0, -1, -1},
|
||||
{0x7ACF7E03, ICO, Unknown_Region, 0, -1, -1},
|
||||
{0xAEAD1CA3, GT4, JP, 0, -1, -1},
|
||||
{0x44A61C8F, GT4, Unknown_Region, 0, -1, -1},
|
||||
{0x0086E35B, GT4, Unknown_Region, 0, -1, -1},
|
||||
{0x77E61C8A, GT4, Unknown_Region, 0, -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},
|
||||
{0xBBC3EFFA, WildArms4, US, 0, -1, -1},
|
||||
{0xBBC396EC, WildArms4, US, 0, -1, -1}, //hmm such a small diff in the CRC..
|
||||
{0x8B029334, Manhunt2, Unknown_Region, 0, -1, -1},
|
||||
{0x09F49E37, CrashBandicootWoC, Unknown_Region, 0, -1, -1},
|
||||
{0x013E349D, ResidentEvil4, US, 0, -1, -1},
|
||||
{0x6BA2F6B9, ResidentEvil4, Unknown_Region, 0, -1, -1},
|
||||
{0x60FA8C69, ResidentEvil4, JP, 0, -1, -1},
|
||||
{0x72E1E60E, Spartan, Unknown_Region, 0, -1, -1},
|
||||
{0x5ED8FB53, AceCombat4, JP, 0, -1, -1},
|
||||
{0x1B9B7563, AceCombat4, Unknown_Region, 0, -1, -1},
|
||||
{0xEC432B24, Drakengard2, Unknown_Region, 0, -1, -1},
|
||||
{0xFC46EA61, Tekken5, JP, 0, -1, -1},
|
||||
{0x1F88EE37, Tekken5, Unknown_Region, 0, -1, -1},
|
||||
{0x652050D2, Tekken5, Unknown_Region, 0, -1, -1},
|
||||
{0x9E98B8AE, IkkiTousen, JP, 0, -1, -1},
|
||||
//{0xD6385328, GodOfWar, US, 0, -1, -1},
|
||||
//{0xFB0E6D72, GodOfWar, EU, 0, -1, -1},
|
||||
//{0xEB001875, GodOfWar, EU, 0, -1, -1},
|
||||
//{0xA61A4C6D, GodOfWar, Unknown_Region, 0, -1, -1},
|
||||
//{0xE23D532B, GodOfWar, Unknown_Region, 0, -1, -1},
|
||||
//{0xDF1AF973, GodOfWar, Unknown_Region, 0, -1, -1},
|
||||
//{0xD6385328, GodOfWar, Unknown_Region, 0, -1, -1},
|
||||
{0x2F123FD8, GodOfWar2, RU, 0, -1, -1},
|
||||
{0x2F123FD8, GodOfWar2, US, 0, -1, -1},
|
||||
{0x44A8A22A, GodOfWar2, EU, 0, -1, -1},
|
||||
{0x4340C7C6, GodOfWar2, Unknown_Region, 0, -1, -1},
|
||||
{0xF8CD3DF6, GodOfWar2, Unknown_Region, 0, -1, -1},
|
||||
{0x0B82BFF7, GodOfWar2, Unknown_Region, 0, -1, -1},
|
||||
{0x5D482F18, JackieChanAdv, Unknown_Region, 0, -1, -1},
|
||||
//{0xf0a6d880, HarvestMoon, US, 0, -1, -1},
|
||||
{0x75c01a04, NamcoXCapcom, US, 0, -1, -1},
|
||||
{0xBF6F101F, GiTS, US, 0, -1, -1},
|
||||
{0xA5768F53, GiTS, JP, 0, -1, -1},
|
||||
{0x6BF11378, Onimusha3, US, 0, -1, -1},
|
||||
{0xF442260C, MajokkoALaMode2, JP, 0, -1, -1},
|
||||
{0x14FE77F7, TalesOfAbyss, US, 0, -1, -1},
|
||||
{0x045D77E9, TalesOfAbyss, JPUNDUB, 0, -1, -1},
|
||||
{0xAA5EC3A3, TalesOfAbyss, JP, 0, -1, -1},
|
||||
//{0xFB236A46, SonicUnleashed, US, 0, -1, -1},
|
||||
{0x4C7BB3C8, SimpsonsGame, Unknown_Region, 0, -1, -1},
|
||||
{0x4C94B32C, SimpsonsGame, Unknown_Region, 0, -1, -1},
|
||||
{0xD71B57F4, Genji, Unknown_Region, 0, -1, -1},
|
||||
{0x23A97857, StarOcean3, US, 0, -1, -1},
|
||||
{0xBEC32D49, StarOcean3, JP, 0, -1, -1},
|
||||
{0x8192A241, StarOcean3, JP, 0, -1, -1}, //NTSC JP special directors cut limited extra sugar on top edition (the special one :p)
|
||||
{0x23A97857, StarOcean3, JPUNDUB, 0, -1, -1},
|
||||
{0xCC96CE93, ValkyrieProfile2, US, 0, -1, -1},
|
||||
{0x774DE8E2, ValkyrieProfile2, JP, 0, -1, -1},
|
||||
{0x04CCB600, ValkyrieProfile2, EU, 0, -1, -1},
|
||||
{0xB65E141B, ValkyrieProfile2, EU, 0, -1, -1}, // PAL German
|
||||
{0x47B9B2FD, RadiataStories, US, 0, -1, -1},
|
||||
{0xE8FCF8EC, SMTNocturne, US, 0, -1, -1}, // GSdx saves/reloads z buffer around shadow drawing, same issue with all the SMT games following
|
||||
{0xF0A31EE3, SMTNocturne, EU, 0, -1, -1}, // SMTNocturne (Lucifers Call in EU)
|
||||
{0xAE0DE7B7, SMTNocturne, EU, 0, -1, -1}, // SMTNocturne (Lucifers Call in EU)
|
||||
{0xD60DA6D4, SMTNocturne, JP, 0, -1, -1}, // SMTNocturne
|
||||
{0x0e762e8d, SMTNocturne, JP, 0, -1, -1}, // SMTNocturne Maniacs
|
||||
{0x47BA9034, SMTNocturne, JP, 0, -1, -1}, // SMTNocturne Maniacs Chronicle
|
||||
{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
|
||||
{0xD568B684, SMTDDS2, EU, 0, -1, -1}, // SMT Digital Devil Saga 2
|
||||
{0xE47C1A9C, SMTDDS2, JP, 0, -1, -1}, // SMT Digital Devil Saga 2
|
||||
{0x0B8AB37B, RozenMaidenGebetGarden, JP, 0, -1, -1},
|
||||
|
||||
// And these are here for ZZogl hacks.
|
||||
{0xA3D63039, Xenosaga, JP, GAME_DOPARALLELCTX, 64, 32},
|
||||
{0x0E7807B2, Xenosaga, US, GAME_DOPARALLELCTX, 64, 32},
|
||||
{0x7D2FE035, Espgaluda, JP, 0/*GAME_BIGVALIDATE*/, 24, -1},
|
||||
|
@ -226,17 +382,6 @@ static const Game_Info crc_game_list[] =
|
|||
{0xA5C05C78, DarkCloud1, Unknown_Region, GAME_NOTARGETRESOLVE, -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
|
||||
|
||||
// Game settings that used to be in the Patches folder. Commented out until I decide what to do with them.
|
||||
// {0x951555A0, Disgaea2, US, GAME_NODEPTHRESOLVE, -1, -1},
|
||||
|
|
|
@ -50,7 +50,7 @@ GSconf conf;
|
|||
int ppf, g_GSMultiThreaded, CurrentSavestate = 0;
|
||||
int g_LastCRC = 0, g_TransferredToGPU = 0, s_frameskipping = 0;
|
||||
int g_SkipFlushFrame = 0;
|
||||
GetSkipCount GetSkipCount_Handler = 0;
|
||||
GetSkipCount GetSkipCount_Handler = GSC_Null;
|
||||
|
||||
int UPDATE_FRAMES = 16, g_nFrame = 0, g_nRealFrame = 0;
|
||||
float fFPS = 0;
|
||||
|
@ -179,14 +179,19 @@ void ListHacks()
|
|||
void CALLBACK GSsetGameCRC(int crc, int options)
|
||||
{
|
||||
// build a list of function pointer for GetSkipCount (UserHacks_SkipDraw)
|
||||
static GetSkipCount GSC_list[GAME_INFO_INDEX];
|
||||
static GetSkipCount GSC_list[NUMBER_OF_TITLES];
|
||||
static bool inited = false;
|
||||
if(!inited)
|
||||
|
||||
if (!inited)
|
||||
{
|
||||
inited = true;
|
||||
|
||||
memset(&GSC_list, 0, sizeof(GSC_list));
|
||||
|
||||
//memset(&GSC_list, 0, sizeof(GSC_list));
|
||||
for(int i = 0; i < NUMBER_OF_TITLES; i++)
|
||||
{
|
||||
GSC_list[i] = GSC_Null;
|
||||
}
|
||||
|
||||
GSC_list[Okami] = GSC_Okami;
|
||||
GSC_list[MetalGearSolid3] = GSC_MetalGearSolid3;
|
||||
GSC_list[DBZBT2] = GSC_DBZBT2;
|
||||
|
|
|
@ -25,6 +25,12 @@
|
|||
|
||||
#include "ZZoglFlushHack.h"
|
||||
|
||||
bool GSC_Null(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
//ZZLog::Error_Log("GSC_Null");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool GSC_Okami(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
|
@ -623,8 +629,8 @@ inline int Switch_Top_Bytes (int X) {
|
|||
|
||||
// Some storage formats could share the same memory block (2 textures in 1 format). This include following combinations:
|
||||
// PSMT24(24Z) with either 8H, 4HL, 4HH and PSMT4HL with PSMT4HH.
|
||||
// We use sligthly different version of this funtion on comparison with GSDX, Storage format XOR 48 made Z-textures
|
||||
// similar to normal ones and change highter bits on short (8 and 4 bits) textures.
|
||||
// We use slightly different versions of this funtion on comparison with GSDX, Storage format XOR 48 made Z-textures
|
||||
// similar to normal ones and change higher bits on short (8 and 4 bits) textures.
|
||||
inline bool PSMT_HAS_SHARED_BITS (int fpsm, int tpsm) {
|
||||
int SUM = Switch_Top_Bytes(fpsm) + Switch_Top_Bytes(tpsm) ;
|
||||
return (SUM == 0x15 || SUM == 0x1D || SUM == 0x2C || SUM == 0x30);
|
||||
|
@ -650,8 +656,8 @@ bool IsBadFrame(ZeroGS::VB& curvb)
|
|||
fi.TBP0 = curvb.tex0.tbp0;
|
||||
fi.TPSM = curvb.tex0.psm;
|
||||
fi.TZTST = curvb.test.ztst;
|
||||
|
||||
if(GetSkipCount_Handler && !GetSkipCount_Handler(fi, g_SkipFlushFrame))
|
||||
|
||||
if (GetSkipCount_Handler && !GetSkipCount_Handler(fi, g_SkipFlushFrame))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -660,12 +666,12 @@ bool IsBadFrame(ZeroGS::VB& curvb)
|
|||
int UserHacks_SkipDraw = 1; // test FFX
|
||||
UserHacks_SkipDraw = 0;
|
||||
|
||||
if(g_SkipFlushFrame == 0 && (UserHacks_SkipDraw > 0) )
|
||||
if(g_SkipFlushFrame == 0 && (UserHacks_SkipDraw > 0))
|
||||
{
|
||||
if(fi.TME)
|
||||
{
|
||||
// depth textures (bully, mgs3s1 intro, Front Mission 5)
|
||||
if( (fi.TPSM == PSMT32Z || fi.TPSM == PSMT24Z || fi.TPSM == PSMT16Z || fi.TPSM == PSMT16SZ)
|
||||
if (PSMT_ISZTEX(fi.TPSM)
|
||||
// General, often problematic post processing
|
||||
|| (GABEST_HAS_SHARED_BITS(fi.FBP, fi.FPSM, fi.TBP0, fi.TPSM))
|
||||
)
|
||||
|
|
|
@ -23,6 +23,9 @@
|
|||
* To avoid severals combo-box, the hack detects the game based on crc
|
||||
*/
|
||||
|
||||
#ifndef ZZOGL_FLUSH_HACK_H_INCLUDED
|
||||
#define ZZOGL_FLUSH_HACK_H_INCLUDED
|
||||
|
||||
#include "GS.h"
|
||||
#include "zerogs.h"
|
||||
|
||||
|
@ -43,6 +46,7 @@ typedef bool (*GetSkipCount)(const GSFrameInfo& fi, int& skip);
|
|||
|
||||
extern GetSkipCount GetSkipCount_Handler;
|
||||
|
||||
bool GSC_Null(const GSFrameInfo& fi, int& skip);
|
||||
bool GSC_Okami(const GSFrameInfo& fi, int& skip);
|
||||
bool GSC_MetalGearSolid3(const GSFrameInfo& fi, int& skip);
|
||||
bool GSC_DBZBT2(const GSFrameInfo& fi, int& skip);
|
||||
|
@ -77,3 +81,4 @@ bool GSC_ValkyrieProfile2(const GSFrameInfo& fi, int& skip);
|
|||
bool GSC_RadiataStories(const GSFrameInfo& fi, int& skip);
|
||||
|
||||
bool IsBadFrame(ZeroGS::VB& curvb);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue