File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,7 +39,7 @@ CFLAGS += -DPCNT
3939endif
4040
4141# core
42- OBJS += libpcsxcore/cdriso.o libpcsxcore/cdrom.o libpcsxcore/cheat.o libpcsxcore/debug.o \
42+ OBJS += libpcsxcore/cdriso.o libpcsxcore/cdrom.o libpcsxcore/cheat.o libpcsxcore/database.o libpcsxcore/ debug.o \
4343 libpcsxcore/decode_xa.o libpcsxcore/disr3000a.o libpcsxcore/mdec.o \
4444 libpcsxcore/misc.o libpcsxcore/plugins.o libpcsxcore/ppf.o libpcsxcore/psxbios.o \
4545 libpcsxcore/psxcommon.o libpcsxcore/psxcounters.o libpcsxcore/psxdma.o libpcsxcore/psxhle.o \
Original file line number Diff line number Diff line change 1+ #include "misc.h"
2+ #include "../plugins/dfsound/spu_config.h"
3+ #include "sio.h"
4+
5+ /* It's duplicated from emu_if.c */
6+ #define ARRAY_SIZE (x ) (sizeof(x) / sizeof(x[0]))
7+
8+ static const char MemorycardHack_db [8 ][10 ] =
9+ {
10+ /* Lifeforce Tenka, also known as Codename Tenka */
11+ {"SLES00613" },
12+ {"SLED00690" },
13+ {"SLES00614" },
14+ {"SLES00615" },
15+ {"SLES00616" },
16+ {"SLES00617" },
17+ {"SCUS94409" }
18+ };
19+
20+ static const char Dialofix_db [5 ][10 ] =
21+ {
22+ /* Diablo PS1 needs a fix to be toggled */
23+ {"SLES01156" },
24+ {"SLPS01416" },
25+ {"SLPS91177" },
26+ {"SLUS00619" },
27+ };
28+
29+ /* Function for automatic patching according to GameID. */
30+ void Apply_Hacks_Cdrom ()
31+ {
32+ uint32_t i ;
33+
34+ /* Apply Memory card hack for Codename Tenka. (The game needs one of the memory card slots to be empty) */
35+ for (i = 0 ;i < ARRAY_SIZE (MemorycardHack_db );i ++ )
36+ {
37+ if (strncmp (CdromId , MemorycardHack_db [i ], 9 ) == 0 )
38+ {
39+ /* Disable the second memory card slot for the game */
40+ Config .Mcd2 [0 ] = 0 ;
41+ /* This also needs to be done because in sio.c, they don't use Config.Mcd2 for that purpose */
42+ McdDisable [1 ] = 1 ;
43+ }
44+ }
45+
46+ /* Apply hackfix for Diablo */
47+ for (i = 0 ;i < ARRAY_SIZE (Dialofix_db );i ++ )
48+ {
49+ if (strncmp (CdromId , Dialofix_db [i ], 9 ) == 0 )
50+ {
51+ spu_config .idiablofix = 1 ;
52+ break ;
53+ }
54+ }
55+ }
Original file line number Diff line number Diff line change 1+ #ifndef DATABASE_H
2+ #define DATABASE_H
3+
4+ extern void Apply_Hacks_Cdrom ();
5+
6+ #endif
Original file line number Diff line number Diff line change 2626#include "mdec.h"
2727#include "gpu.h"
2828#include "ppf.h"
29+ #include "database.h"
2930#include <zlib.h>
3031
3132char CdromId [10 ] = "" ;
@@ -389,6 +390,8 @@ int CheckCdrom() {
389390 SysPrintf (_ ("CD-ROM Label: %.32s\n" ), CdromLabel );
390391 SysPrintf (_ ("CD-ROM ID: %.9s\n" ), CdromId );
391392 SysPrintf (_ ("CD-ROM EXE Name: %.255s\n" ), exename );
393+
394+ Apply_Hacks_Cdrom ();
392395
393396 BuildPPFCache ();
394397
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ extern "C" {
3434#define MCD_SIZE (1024 * 8 * 16)
3535
3636extern char Mcd1Data [MCD_SIZE ], Mcd2Data [MCD_SIZE ];
37+ extern char McdDisable [2 ];
3738
3839void sioWrite8 (unsigned char value );
3940void sioWriteStat16 (unsigned short value );
You can’t perform that action at this time.
0 commit comments