Merge branch 'master' of https://github.com/finalburnneo/FBNeo into finalburnneo-master

This commit is contained in:
barbudreadmon committed 2026-11-07 09:50:08 +01:00
commit b3bdc2b272
20 files changed
+744 -234

No files matched your search

+1
View File
@@ -191,6 +191,7 @@ struct BurnSampleInfo {
struct BurnHDDInfo {
char *szName;
char *szSha1;
UINT32 nFlags; // BRF_OPT: optional disk
};
// ---------------------------------------------------------------------------
+127 -48
View File
@@ -12741,6 +12741,48 @@ struct BurnDriver BurnDrvCpsXmcotabh = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// X-Men vs Street Fighter PLUS (Europe 961004, v1.0, Hack)
static struct BurnRomInfo XmvsfplusRomDesc[] = {
{ "xvsplus.03f", 0x080000, 0x5ad5cbcc, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvsplus.04f", 0x080000, 0x8f54364f, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvsplus.05a", 0x080000, 0x37043f19, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvs.06a", 0x080000, 0xe8e2c75c, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvs.07", 0x080000, 0x08f0abed, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvsplus.08", 0x080000, 0x755bc53a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvsplus.09", 0x080000, 0x1e356679, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "xvsplus.13m", 0x400000, 0x4cc93228, CPS2_GFX | BRF_GRA },
{ "xvsplus.15m", 0x400000, 0x64681ae8, CPS2_GFX | BRF_GRA },
{ "xvsplus.17m", 0x400000, 0x2693a030, CPS2_GFX | BRF_GRA },
{ "xvsplus.19m", 0x400000, 0x1754a1bf, CPS2_GFX | BRF_GRA },
{ "xvs.14m", 0x400000, 0xbcac2e41, CPS2_GFX | BRF_GRA },
{ "xvs.16m", 0x400000, 0xea04a272, CPS2_GFX | BRF_GRA },
{ "xvs.18m", 0x400000, 0xb0def86a, CPS2_GFX | BRF_GRA },
{ "xvs.20m", 0x400000, 0x4b40ff9f, CPS2_GFX | BRF_GRA },
{ "xvsplus.01", 0x020000, 0xdfcaf174, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "xvs.02", 0x020000, 0x101bdee9, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "xvs.11m", 0x200000, 0x9cadcdbc, CPS2_QSND | BRF_SND },
{ "xvs.12m", 0x200000, 0x7b11e460, CPS2_QSND | BRF_SND },
{ "xmvsf.key", 0x000014, 0xd5c07311, CPS2_ENCRYPTION_KEY },
};
STD_ROM_PICK(Xmvsfplus)
STD_ROM_FN(Xmvsfplus)
struct BurnDriver BurnDrvCpsXmvsfplus = {
"xmvsfplus", "xmvsf", NULL, NULL, "2026",
"X-Men vs Street Fighter PLUS (Europe 961004, v1.0, Hack)\0", NULL, "rob2d", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, XmvsfplusRomInfo, XmvsfplusRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
Cps2Init, DrvExit, Cps2Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
struct BurnDriver BurnDrvCpsXmvsf = {
"xmvsf", NULL, NULL, NULL, "1996",
"X-Men Vs. Street Fighter (Europe 961004)\0", NULL, "Capcom", "CPS2",
@@ -16794,7 +16836,7 @@ static struct BurnRomInfo MshvsfexRomDesc[] = {
{ "mvs.18m", 0x400000, 0xc1228b35, CPS2_GFX | BRF_GRA },
{ "mvs.20m", 0x400000, 0x366cc6c2, CPS2_GFX | BRF_GRA },
{ "mvsex.01", 0x020000, 0x4712c830, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "mvsex.01", 0x020000, 0x4712c830, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "mvs.02", 0x020000, 0xb34e773d, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "mvs.11m", 0x400000, 0x86219770, CPS2_QSND | BRF_SND },
@@ -16837,7 +16879,7 @@ static struct BurnRomInfo MshvsfexjRomDesc[] = {
{ "mvs.18m", 0x400000, 0xc1228b35, CPS2_GFX | BRF_GRA },
{ "mvs.20m", 0x400000, 0x366cc6c2, CPS2_GFX | BRF_GRA },
{ "mvsex.01", 0x020000, 0x4712c830, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "mvsex.01", 0x020000, 0x4712c830, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "mvs.02", 0x020000, 0xb34e773d, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "mvs.11m", 0x400000, 0x86219770, CPS2_QSND | BRF_SND },
@@ -17362,15 +17404,15 @@ struct BurnDriver BurnDrvCpsSfz2alre = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// Street Fighter Alpha 2 Dash (Europe, PS2 Backport RC7)
// 2026-10-13
// Street Fighter Alpha 2 Dash (Europe, PS2 Backport RC8)
// 2026-11-06
static struct BurnRomInfo Sfa2dsRomDesc[] = {
{ "sz2ds.03", 0x080000, 0x9c4956b7, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.04", 0x080000, 0xf2b045ba, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.03", 0x080000, 0x7cce63b3, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.04", 0x080000, 0x266c987b, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.05", 0x080000, 0xb1c15635, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaa.06", 0x080000, 0xcfc0e7a8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.07", 0x080000, 0x7e22f11e, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.08", 0x080000, 0x1f7691f0, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.08", 0x080000, 0x45aedca6, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.13m", 0x400000, 0x771fdfaa, CPS2_GFX | BRF_GRA },
{ "sz2ds.15m", 0x400000, 0xb29bda7a, CPS2_GFX | BRF_GRA },
@@ -17395,7 +17437,7 @@ STD_ROM_FN(Sfa2ds)
struct BurnDriver BurnDrvCpsSfa2ds = {
"sfa2ds", "sfz2al", NULL, NULL, "2026",
"Street Fighter Alpha 2 Dash (Europe, PS2 Backport RC7)\0", NULL, "bootleg", "CPS2",
"Street Fighter Alpha 2 Dash (Europe, PS2 Backport RC8)\0", NULL, "bootleg", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Sfa2dsRomInfo, Sfa2dsRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
@@ -17403,15 +17445,15 @@ struct BurnDriver BurnDrvCpsSfa2ds = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// Street Fighter Alpha 2 Gold (USA, PS2 Backport RC7)
// 2026-10-13
// Street Fighter Alpha 2 Gold (USA, PS2 Backport RC8)
// 2026-11-06
static struct BurnRomInfo Sfa2glRomDesc[] = {
{ "sz2gl.03", 0x080000, 0x94bdce5a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.04", 0x080000, 0x09f3e26d, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.03", 0x080000, 0x72711ffa, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.04", 0x080000, 0x7ddaee23, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.05", 0x080000, 0xb1c15635, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaa.06", 0x080000, 0xcfc0e7a8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.07", 0x080000, 0x04ae74fc, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.08", 0x080000, 0x2a16319f, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.08", 0x080000, 0x70ce7cc9, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2gl.13m", 0x400000, 0x0be1771d, CPS2_GFX | BRF_GRA },
{ "sz2gl.15m", 0x400000, 0x895cab31, CPS2_GFX | BRF_GRA },
@@ -17436,7 +17478,7 @@ STD_ROM_FN(Sfa2gl)
struct BurnDriver BurnDrvCpsSfa2gl = {
"sfa2gl", "sfz2al", NULL, NULL, "2026",
"Street Fighter Alpha 2 Gold (USA, PS2 Backport RC7)\0", NULL, "bootleg", "CPS2",
"Street Fighter Alpha 2 Gold (USA, PS2 Backport RC8)\0", NULL, "bootleg", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Sfa2glRomInfo, Sfa2glRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
@@ -17444,15 +17486,15 @@ struct BurnDriver BurnDrvCpsSfa2gl = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// Street Fighter Zero 2 Dash (Asia, PS2 Backport RC7)
// 2026-10-13
// Street Fighter Zero 2 Dash (Asia, PS2 Backport RC8)
// 2026-11-06
static struct BurnRomInfo Sfz2dsaRomDesc[] = {
{ "sz2dsa.03a", 0x080000, 0xda38f64d, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.04a", 0x080000, 0x3146ab3e, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.03a", 0x080000, 0x21502954, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.04a", 0x080000, 0x99e8bf7e, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.05", 0x080000, 0xb1c15635, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaa.06", 0x080000, 0xcfc0e7a8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.07a", 0x080000, 0x74b0a2d0, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.08a", 0x080000, 0x1a469525, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.08a", 0x080000, 0x409ed873, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsa.13m", 0x400000, 0xe35cbaae, CPS2_GFX | BRF_GRA },
{ "sz2dsa.15m", 0x400000, 0x045e1960, CPS2_GFX | BRF_GRA },
@@ -17477,7 +17519,7 @@ STD_ROM_FN(Sfz2dsa)
struct BurnDriver BurnDrvCpsSfz2dsa = {
"sfz2dsa", "sfz2al", NULL, NULL, "2026",
"Street Fighter Zero 2 Dash (Asia, PS2 Backport RC7)\0", NULL, "bootleg", "CPS2",
"Street Fighter Zero 2 Dash (Asia, PS2 Backport RC8)\0", NULL, "bootleg", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Sfz2dsaRomInfo, Sfz2dsaRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
@@ -17485,15 +17527,15 @@ struct BurnDriver BurnDrvCpsSfz2dsa = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// Street Fighter Zero 2 Dash (Japan, PS2 Backport RC7)
// 2026-10-13
// Street Fighter Zero 2 Dash (Japan, PS2 Backport RC8)
// 2026-11-06
static struct BurnRomInfo Sfz2dsjRomDesc[] = {
{ "sz2dsj.03a", 0x080000, 0xaefd56e8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.04a", 0x080000, 0xbb9526b6, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.03a", 0x080000, 0xae51726a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.04a", 0x080000, 0x7b435b38, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaj.05a", 0x080000, 0xc88ebf88, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaj.06a", 0x080000, 0x35ed5b7a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.07a", 0x080000, 0x1ccf395a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.08a", 0x080000, 0xefcc529b, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.08a", 0x080000, 0x9376e7b3, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2dsj.13m", 0x400000, 0xae258b4a, CPS2_GFX | BRF_GRA },
{ "sz2dsj.15m", 0x400000, 0x6fd70f52, CPS2_GFX | BRF_GRA },
@@ -17518,7 +17560,7 @@ STD_ROM_FN(Sfz2dsj)
struct BurnDriver BurnDrvCpsSfz2dsj = {
"sfz2dsj", "sfz2al", NULL, NULL, "2026",
"Street Fighter Zero 2 Dash (Japan, PS2 Backport RC7)\0", NULL, "bootleg", "CPS2",
"Street Fighter Zero 2 Dash (Japan, PS2 Backport RC8)\0", NULL, "bootleg", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Sfz2dsjRomInfo, Sfz2dsjRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
@@ -17526,26 +17568,26 @@ struct BurnDriver BurnDrvCpsSfz2dsj = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// Street Fighter Alpha 2 EX (Hack, USA RC3)
// 2026-10-15
// Street Fighter Alpha 2 EX (Hack, USA RC4)
// 2026-11-06
static struct BurnRomInfo Sfa2exRomDesc[] = {
{ "sz2ex.03", 0x080000, 0x03c5978c, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.04", 0x080000, 0x7a3d6732, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.03", 0x080000, 0xe5d2b958, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.04", 0x080000, 0xd2e7073d, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ds.05", 0x080000, 0xb1c15635, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaa.06", 0x080000, 0xcfc0e7a8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.07", 0x080000, 0xa37a6f6a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.08", 0x080000, 0x9f231db8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.07", 0x080000, 0x20bd7520, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.08", 0x080000, 0x1ae055f9, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2ex.13m", 0x400000, 0xa27253f3, CPS2_GFX | BRF_GRA },
{ "sz2ex.15m", 0x400000, 0x2a0c5df1, CPS2_GFX | BRF_GRA },
{ "sz2ex.17m", 0x400000, 0x140cdbb2, CPS2_GFX | BRF_GRA },
{ "sz2ex.19m", 0x400000, 0xb5beabf6, CPS2_GFX | BRF_GRA },
{ "sz2ex.13m", 0x400000, 0xe2aa130c, CPS2_GFX | BRF_GRA },
{ "sz2ex.15m", 0x400000, 0x4d0a4828, CPS2_GFX | BRF_GRA },
{ "sz2ex.17m", 0x400000, 0x6abd6a7a, CPS2_GFX | BRF_GRA },
{ "sz2ex.19m", 0x400000, 0xfa0ebaf3, CPS2_GFX | BRF_GRA },
{ "sz2ex.14m", 0x100000, 0x33403c39, CPS2_GFX | BRF_GRA },
{ "sz2ex.16m", 0x100000, 0xf947ab53, CPS2_GFX | BRF_GRA },
{ "sz2ex.18m", 0x100000, 0x998bcd46, CPS2_GFX | BRF_GRA },
{ "sz2ex.20m", 0x100000, 0x736317fa, CPS2_GFX | BRF_GRA },
{ "sz2ex.01", 0x020000, 0xfa497904, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sz2ex.01", 0x020000, 0x04e71681, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sz2ds.02", 0x020000, 0xc45ee83c, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sz2ds.11m", 0x400000, 0xf23db54d, CPS2_QSND | BRF_SND },
@@ -17559,7 +17601,7 @@ STD_ROM_FN(Sfa2ex)
struct BurnDriver BurnDrvCpsSfa2ex = {
"sfa2ex", "sfz2al", NULL, NULL, "2026",
"Street Fighter Alpha 2 EX (Hack, USA RC3)\0", NULL, "Strygo", "CPS2",
"Street Fighter Alpha 2 EX (Hack, USA RC4)\0", NULL, "Strygo", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Sfa2exRomInfo, Sfa2exRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
@@ -17567,15 +17609,15 @@ struct BurnDriver BurnDrvCpsSfa2ex = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
// Street Fighter Zero 2 EX (Hack, Japan RC3)
// 2026-10-15
// Street Fighter Zero 2 EX (Hack, Japan RC4)
// 2026-11-06
static struct BurnRomInfo Sfz2exjRomDesc[] = {
{ "sz2exj.03a", 0x080000, 0x085726a0, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.04a", 0x080000, 0x9b8329a2, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.03a", 0x080000, 0x0b79e260, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.04a", 0x080000, 0x2f8116a9, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaj.05a", 0x080000, 0xc88ebf88, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "szaj.06a", 0x080000, 0x35ed5b7a, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.07a", 0x080000, 0x3cbb8ebc, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.08a", 0x080000, 0x58220a6e, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.07a", 0x080000, 0x966a1729, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.08a", 0x080000, 0x3f68a835, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "sz2exj.13m", 0x400000, 0x415077c3, CPS2_GFX | BRF_GRA },
{ "sz2exj.15m", 0x400000, 0xe4593f76, CPS2_GFX | BRF_GRA },
@@ -17586,7 +17628,7 @@ static struct BurnRomInfo Sfz2exjRomDesc[] = {
{ "sz2exj.18m", 0x100000, 0xfd1227f3, CPS2_GFX | BRF_GRA },
{ "sz2exj.20m", 0x100000, 0xd06ed26a, CPS2_GFX | BRF_GRA },
{ "sz2ex.01", 0x020000, 0xfa497904, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sz2ex.01", 0x020000, 0x04e71681, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sz2ds.02", 0x020000, 0xc45ee83c, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sz2ds.11m", 0x400000, 0xf23db54d, CPS2_QSND | BRF_SND },
@@ -17600,7 +17642,7 @@ STD_ROM_FN(Sfz2exj)
struct BurnDriver BurnDrvCpsSfz2exj = {
"sfz2exj", "sfz2al", NULL, NULL, "2026",
"Street Fighter Zero 2 EX (Hack, Japan RC3)\0", NULL, "Strygo", "CPS2",
"Street Fighter Zero 2 EX (Hack, Japan RC4)\0", NULL, "Strygo", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Sfz2exjRomInfo, Sfz2exjRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
@@ -17765,7 +17807,7 @@ static struct BurnRomInfo Ssf2tucRomDesc[] = {
{ "sfxuc.27m", 0x100000, 0xa2807877, CPS2_GFX | BRF_GRA },
{ "sfxuc.01", 0x020000, 0x6276ce06, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sfxuc.02", 0x020000, 0xaa590f89, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sfxuc.02", 0x020000, 0xaa590f89, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sfx.11m", 0x200000, 0x9bdbd476, CPS2_QSND | BRF_SND },
{ "sfx.12m", 0x200000, 0xa05e3aab, CPS2_QSND | BRF_SND },
@@ -17811,7 +17853,7 @@ static struct BurnRomInfo Ssf2xucjRomDesc[] = {
{ "sfxuc.27m", 0x100000, 0xa2807877, CPS2_GFX | BRF_GRA },
{ "sfxuc.01", 0x020000, 0x6276ce06, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sfxuc.02", 0x020000, 0xaa590f89, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sfxuc.02", 0x020000, 0xaa590f89, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "sfx.11m", 0x200000, 0x9bdbd476, CPS2_QSND | BRF_SND },
{ "sfx.12m", 0x200000, 0xa05e3aab, CPS2_QSND | BRF_SND },
@@ -18066,3 +18108,40 @@ struct BurnDriver BurnDrvCpsUsf2j = {
Usf2Init, DrvExit, Cps2Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
static struct BurnRomInfo Hsf2reRomDesc[] = {
{ "hs2re.03c", 0x080000, 0xc773cb30, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2re.04b", 0x080000, 0x008c3478, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2j.05", 0x080000, 0xdde34a35, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2j.06", 0x080000, 0xf4e56dda, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2j.07", 0x080000, 0xee4420fc, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2j.08", 0x080000, 0xc9441533, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2j.09", 0x080000, 0x3fc638a8, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2re.10", 0x080000, 0x49529980, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
{ "hs2re.13m" , 0x800000, 0x448c3ede, CPS2_GFX | BRF_GRA },
{ "hs2re.15m", 0x800000, 0x642e11ec, CPS2_GFX | BRF_GRA },
{ "hs2re.17m", 0x800000, 0x0aeb0c24, CPS2_GFX | BRF_GRA },
{ "hs2re.19m", 0x800000, 0x180c1a31, CPS2_GFX | BRF_GRA },
{ "hs2.01", 0x020000, 0xc1a13786, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "hs2.02", 0x020000, 0x2d8794aa, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
{ "hs2.11m", 0x800000, 0x0e15c359, CPS2_QSND | BRF_SND },
{ "hsf2j.key", 0x000014, 0x19455a93, CPS2_ENCRYPTION_KEY },
};
STD_ROM_PICK(Hsf2re)
STD_ROM_FN(Hsf2re)
struct BurnDriver BurnDrvCpsHsf2re = {
"hsf2re", "hsf2", NULL, NULL, "2026",
"Hyper Street Fighter II: The Anniversary Edition (English Restoration, 2026-11-05)\0", NULL, "Strygo", "CPS2",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
NULL, Hsf2reRomInfo, Hsf2reRomName, NULL, NULL, NULL, NULL, Cps2FightingInputInfo, NULL,
Ssf2tInit, DrvExit, Cps2Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
+91 -49
View File
@@ -463,11 +463,14 @@ INT32 MegadriveGetZipName(char** pszName, UINT32 i)
if (i == 0) {
pszGameName = BurnDrvGetTextA(DRV_NAME);
} else {
} else if (i == 1) {
pszGameName = BurnDrvGetTextA(DRV_PARENT);
if (pszGameName == NULL) pszGameName = BurnDrvGetTextA(DRV_BOARDROM);
} else if (i == 2 && BurnDrvGetTextA(DRV_PARENT)) {
pszGameName = BurnDrvGetTextA(DRV_BOARDROM); // mega cd bios for cartridge games
}
if (pszGameName == NULL || i > 1) {
if (pszGameName == NULL || i > 2) {
*pszName = NULL;
return 1;
}
@@ -507,8 +510,8 @@ STDDIPINFO(SegaCD)
static struct BurnRomInfo md_segacdRomDesc[] = {
{ "Sega CD BIOS (USA, v1.10).bin", 0x020000, 0xc6d10268, BRF_PRG | BRF_ESS },
{ "Mega-CD BIOS (Europe, v1.00).bin", 0x020000, 0x529ac15a, BRF_PRG | BRF_ESS | BRF_OPT },
{ "Mega-CD BIOS (Japan, v1.00P).bin", 0x020000, 0x9d2da8f2, BRF_PRG | BRF_ESS | BRF_OPT },
{ "Mega-CD BIOS (Europe, v1.00).bin", 0x020000, 0x529ac15a, BRF_PRG | BRF_ESS },
{ "Mega-CD BIOS (Japan, v1.00P).bin", 0x020000, 0x9d2da8f2, BRF_PRG | BRF_ESS },
};
STD_ROM_PICK(md_segacd)
@@ -4805,32 +4808,6 @@ struct BurnDriver BurnDrvmd_castlilljte = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Castle of Illusion Starring Mickey Mouse (Hack, MD+, Grant Kirkhope Arranged)
// MegaSD MD+ patch, the cd audio comes from the chd
static struct BurnRomInfo md_castlillmdpRomDesc[] = {
{ "MD+ Castle Of Illusion (Grant Kirkhope Arranged).md", 0x100000, 0x39601b88, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_castlillmdp)
STD_ROM_FN(md_castlillmdp)
static struct BurnHDDInfo md_castlillmdpHDDDesc[] = {
{ "md_castlillmdp", "63cbf9c46268f7ffaf494e0f3d939949263b5eb1" }
};
STD_HDD_PICK(md_castlillmdp)
STD_HDD_FN(md_castlillmdp)
struct BurnDriver BurnDrvmd_castlillmdp = {
"md_castlillmdp", "md_castlill", NULL, NULL, "2021",
"Castle of Illusion Starring Mickey Mouse (Hack, MD+, Grant Kirkhope Arranged)\0", NULL, "Sega", "Genesis / Mega Drive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE | BDF_HACK, 1, HARDWARE_SEGA_MEGADRIVE, GBF_PLATFORM, 0,
MegadriveGetZipName, md_castlillmdpRomInfo, md_castlillmdpRomName, md_castlillmdpHDDInfo, md_castlillmdpHDDName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, MegadriveDraw, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Castlevania - The New Generation (Euro)
static struct BurnRomInfo md_cvaniaRomDesc[] = {
{ "Castlevania - The New Generation (Euro)(1994)(Konami).bin", 0x100000, 0x4dd4e4a5, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
@@ -43114,25 +43091,6 @@ struct BurnDriver BurnDrvmd_phantomgear = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Pier Solar and the Great Architects (World, Rev. C) (HB)
static struct BurnRomInfo md_psolarRomDesc[] = {
{ "Pier Solar and the Great Architects (World)(Rev C)(2010)(WaterMelon).bin", 0x800000, 0xDFB94F1B, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_psolar)
STD_ROM_FN(md_psolar)
struct BurnDriver BurnDrvmd_psolar = {
"md_psolar", NULL, NULL, NULL, "2010",
"Pier Solar and the Great Architects (World, Rev. C) (HB)\0", "64 Mbit (8MB) cartridge", "WaterMelon", "Genesis / Mega Drive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_HOMEBREW, 1, HARDWARE_SEGA_MEGADRIVE, GBF_ACTION | GBF_RPG, 0,
MegadriveGetZipName, md_psolarRomInfo, md_psolarRomName, NULL, NULL, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInitPsolar, MegadriveExit, MegadriveFrame, MegadriveDraw, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Pirates of the Drowned Hypertorus (HB, v0.0.13)
// https://safetystoatstudios.itch.io/pirates
static struct BurnRomInfo md_piratesdrownedRomDesc[] = {
@@ -56017,3 +55975,87 @@ struct BurnDriverD BurnDrvmd_insnspeed = {
*/
// --------------------
// Sega CD Mode 1 games
// --------------------
// Pier Solar and the Great Architects (World, Rev. C) (HB)
// the enhanced soundtrack discs need the mega cd (mode 1): bios from segacd.zip, discs as optional hdds
static struct BurnDIPInfo PsolarDIPList[] = {
{0x19, 0xff, 0xff, 0x21, NULL },
{0, 0xfe, 0, 2, "Mega CD (needs a restart)" },
{0x1a, 0x01, 0x30, 0x00, "None" },
{0x1a, 0x01, 0x30, 0x10, "Enhanced Soundtrack Disc" },
};
STDDIPINFOEXT(Psolar, Psolar, Megadrive)
static struct BurnRomInfo md_psolarRomDesc[] = {
{ "Pier Solar and the Great Architects (World)(Rev C)(2010)(WaterMelon).bin", 0x800000, 0xDFB94F1B, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
static struct BurnRomInfo emptyRomDesc[] = {
{ "", 0, 0, 0 },
};
STDROMPICKEXT(md_psolar, md_psolar, md_segacd)
STD_ROM_FN(md_psolar)
// the mega cd bios is only needed with the enhanced soundtrack discs
static INT32 md_psolarcdRomInfo(struct BurnRomInfo* pri, UINT32 i)
{
INT32 nRet = md_psolarRomInfo(pri, i);
if (nRet == 0 && pri && i >= 0x80) pri->nType |= BRF_OPT;
return nRet;
}
// the dip switch picks the disc (hdd index + 1)
static struct BurnHDDInfo md_psolarHDDDesc[] = {
{ "Pier Solar and the Great Architects - Enhanced Soundtrack Disc (USA)", "05dcd8e5d8dba48ed612f8c737fcf9c3e9812e57", BRF_OPT },
// { "Pier Solar and the Great Architects - The Definitive Original Soundtrack (Europe) (Disc 4) (Enhanced Soundtrack Disc)", "9b0ee2727a2f7825654d3edda0b49b65cc6320c4", BRF_OPT }, // same music as the usa disc
};
STD_HDD_PICK(md_psolar)
STD_HDD_FN(md_psolar)
struct BurnDriver BurnDrvmd_psolar = {
"md_psolar", NULL, "md_segacd", NULL, "2010",
"Pier Solar and the Great Architects (World, Rev. C) (HB)\0", "64 Mbit (8MB) cartridge, Enhanced Soundtrack Disc with the Mega CD", "WaterMelon", "Genesis / Mega Drive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_HOMEBREW, 1, HARDWARE_SEGA_MEGADRIVE, GBF_ACTION | GBF_RPG, 0,
MegadriveGetZipName, md_psolarcdRomInfo, md_psolarRomName, md_psolarHDDInfo, md_psolarHDDName, NULL, NULL, MegadriveInputInfo, PsolarDIPInfo,
MegadriveInitPsolar, MegadriveExit, MegadriveFrame, MegadriveDraw, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// ---------
// MD+ games
// ---------
// Castle of Illusion Starring Mickey Mouse (Hack, MD+, Grant Kirkhope Arranged)
// MegaSD MD+ patch, the cd audio comes from the chd
static struct BurnRomInfo md_castlillmdpRomDesc[] = {
{ "MD+ Castle Of Illusion (Grant Kirkhope Arranged).md", 0x100000, 0x39601b88, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_castlillmdp)
STD_ROM_FN(md_castlillmdp)
static struct BurnHDDInfo md_castlillmdpHDDDesc[] = {
{ "md_castlillmdp", "63cbf9c46268f7ffaf494e0f3d939949263b5eb1" }
};
STD_HDD_PICK(md_castlillmdp)
STD_HDD_FN(md_castlillmdp)
struct BurnDriver BurnDrvmd_castlillmdp = {
"md_castlillmdp", "md_castlill", NULL, NULL, "2021",
"Castle of Illusion Starring Mickey Mouse (Hack, MD+, Grant Kirkhope Arranged)\0", NULL, "Sega", "Genesis / Mega Drive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE | BDF_HACK, 1, HARDWARE_SEGA_MEGADRIVE, GBF_PLATFORM, 0,
MegadriveGetZipName, md_castlillmdpRomInfo, md_castlillmdpRomName, md_castlillmdpHDDInfo, md_castlillmdpHDDName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, MegadriveDraw, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
+37 -6
View File
@@ -304,6 +304,9 @@ static UINT8 Hardware;
static UINT8 bNoDebug = 0;
static INT32 bForce3Button = 0;
INT32 psolarmode = 0; // pier solar
static INT32 SegaCDCart = 0; // cartridge boot with the mega cd at 0x400000 (mode 1): 2 pier solar
static INT32 SegaCDCartDisc = 0; // hdd index of the disc
static UINT8 *SegaCDCartBios = NULL;
static INT32 TeamPlayerMode = 0;
static INT32 FourWayPlayMode = 0;
@@ -319,7 +322,7 @@ static UINT8 __fastcall MegadriveReadByte(UINT32 address);
static void MegadriveCheckHardware()
{
if (SegaCDMode) {
if (SegaCDMode && !SegaCDCart) {
Hardware = SegaCDGetHardware();
bprintf(PRINT_IMPORTANT, _T("Emulating %s Mega CD / Sega CD\n"), ((Hardware & 0xc0) == 0xc0) ? _T("Europe PAL") : ((Hardware & 0x80) ? _T("USA NTSC") : _T("Japan NTSC")));
return;
@@ -414,6 +417,8 @@ static void MegadriveCheckHardware()
Hardware |= MegadriveDIP[0] & 0x20;
}
if (SegaCDCart) Hardware &= ~0x20; // mega cd attached
if ((Hardware & 0xc0) == 0xc0) {
bprintf(PRINT_IMPORTANT, _T("Emulating Europe PAL Machine\n"));
} else {
@@ -784,7 +789,7 @@ static void DmaSlow(INT32 len)
if ((source & 0xe00000) == 0xe00000) { // RAM
pd = (UINT16 *)(Ram68K + (source & 0xfffe));
pdend = (UINT16 *)(Ram68K + 0x10000);
} else if (SegaCDMode && source < 0x400000) { // Sega CD: bios, prg-ram window, word ram
} else if (SegaCDMode && (source & 0xc00000) == (SegaCDCart ? 0x400000 : 0)) { // Sega CD: bios, prg-ram window, word ram
fromrom = 1;
source &= ~1;
// dma from word ram responds with a one-access delay
@@ -1796,6 +1801,7 @@ static INT32 MegadriveResetDo()
z80CyclesReset();
md_eeprom_stm95_reset();
if (SegaCDCart == 2) md_eeprom_stm95_map_banks();
{
RamIO[1] = RamIO[2] = RamIO[3] = 0xff; // picodrive
@@ -3890,6 +3896,18 @@ INT32 MegadriveInitPaprium()
INT32 MegadriveInitPsolar()
{
// enhanced soundtrack disc selected and present: cartridge boot with the mega cd (mode 1)
INT32 disc = (MegadriveDIP[1] >> 4) & 3;
if (disc) {
TCHAR path[MAX_PATH];
if (BurnHDDGetPath(disc - 1, _T(".chd"), path) == 0) {
SegaCDCart = 2;
SegaCDCartDisc = disc - 1;
return MegadriveInitSegaCD();
}
bprintf(PRINT_ERROR, _T("Pier Solar: the selected disc is missing, running without the Mega CD\n"));
}
psolarmode = 1;
INT32 rc = MegadriveInit();
@@ -3933,8 +3951,16 @@ INT32 MegadriveInit()
memset(RomMain, MegadriveUnmappedRom, MAX_CARTRIDGE_SIZE);
if (SegaCDMode) {
if (SegaCDLoadBios(RomMain)) return 1;
if (SegaCDCart) {
// the cd image is the hdd, the bios (roms 0x80+) follows the console region
if (hddcd_open(SegaCDCartDisc)) return 1;
MegadriveLoadRoms(0);
if (MegadriveLoadRoms(1)) return 1;
MegadriveCheckHardware();
SegaCDCartBios = (UINT8*)BurnMalloc(0x20000);
if (SegaCDLoadBios(SegaCDCartBios, 0x80, ((Hardware & 0xc0) == 0xc0) ? 1 : ((Hardware & 0x80) ? 0 : 2))) return 1;
} else if (SegaCDMode) {
if (SegaCDLoadBios(RomMain, 0, -1)) return 1;
RomNum = 1;
RomSize = 0x20000;
} else {
@@ -4010,7 +4036,8 @@ INT32 MegadriveInit()
SN76496SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH);
if (SegaCDMode) {
if (SegaCDInit(RomMain)) return 1;
if (SegaCDInit(SegaCDCart ? SegaCDCartBios : RomMain, SegaCDCart)) return 1;
if (SegaCDCart == 2) md_eeprom_stm95_init_scd(RomMain);
} else {
MegadriveSetupSRAM();
SetupCustomCartridgeMappers();
@@ -4074,6 +4101,8 @@ INT32 MegadriveExit()
}
megasd_exit();
hddcd_close();
BurnFree(SegaCDCartBios);
if (has_gun != 0) {
BurnGunExit();
@@ -4110,6 +4139,8 @@ INT32 MegadriveExit()
psolarmode = 0;
colocodxmode = 0;
SegaCDCart = 0;
SegaCDCartDisc = 0;
return 0;
}
@@ -5933,7 +5964,7 @@ INT32 MegadriveScan(INT32 nAction, INT32 *pnMin)
i2c_scan(nAction, pnMin);
}
if (psolarmode) // pier solar
if (psolarmode || SegaCDCart == 2) // pier solar
{
md_eeprom_stm95_scan(nAction);
}
+2
View File
@@ -48,6 +48,8 @@ void MegadriveLightGunOffsets(INT32 x, INT32 y, bool reticle = true);
// pier solar
void md_eeprom_stm95_reset();
void md_eeprom_stm95_init(UINT8 *rom);
void md_eeprom_stm95_init_scd(UINT8 *rom);
void md_eeprom_stm95_map_banks();
void md_eeprom_stm95_scan(INT32 nAction);
UINT16 md_psolar_rw(UINT32 offset);
+47 -21
View File
@@ -26,7 +26,47 @@ struct megasd_state {
static INT32 megasdmode = 0;
static megasd_state megasd;
static TCHAR megasd_prev_image[MAX_PATH];
// cd image given as the driver's hdd (md+ games, mega cd + cartridge games)
static TCHAR hddcd_prev_image[MAX_PATH];
static INT32 hddcd_opened = 0;
static INT32 hddcd_present()
{
// BurnDrvGetHDDName() succeeds without setting a name for drivers without hdd
char *name = NULL;
return !BurnDrvGetHDDName(&name, 0, 0) && name != NULL;
}
static INT32 hddcd_open(INT32 index)
{
TCHAR path[MAX_PATH];
if (BurnHDDGetPath(index, _T(".chd"), path)) {
bprintf(PRINT_ERROR, _T("cd image not found\n"));
return 1;
}
// all of them are MAX_PATH sized
memcpy(hddcd_prev_image, CDEmuImage, sizeof(hddcd_prev_image));
memcpy(CDEmuImage, path, sizeof(path));
if (CDEmuInit()) {
bprintf(PRINT_ERROR, _T("can't open %s\n"), path);
memcpy(CDEmuImage, hddcd_prev_image, sizeof(hddcd_prev_image));
return 1;
}
hddcd_opened = 1;
return 0;
}
static void hddcd_close()
{
if (!hddcd_opened) return;
CDEmuExit();
memcpy(CDEmuImage, hddcd_prev_image, sizeof(hddcd_prev_image));
hddcd_opened = 0;
}
// toc in absolute sectors, rebuilt from the image
static INT32 megasd_first, megasd_last;
@@ -299,26 +339,13 @@ static void megasd_reset()
SekClose();
}
// md+ games are the cartridge drivers with a cd image as hdd
// md+ games are the cartridge drivers with a cd image as (required) hdd
static INT32 megasd_init()
{
// BurnDrvGetHDDName() succeeds without setting a name for drivers without hdd
char *name = NULL;
if (BurnDrvGetHDDName(&name, 0, 0) || name == NULL) return 0;
TCHAR path[MAX_PATH];
if (BurnHDDGetPath(0, _T(".chd"), path)) {
bprintf(PRINT_ERROR, _T("MegaSD: cd image not found\n"));
return 1;
}
_tcscpy(megasd_prev_image, CDEmuImage);
_tcscpy(CDEmuImage, path);
if (CDEmuInit()) {
bprintf(PRINT_ERROR, _T("MegaSD: can't open %s\n"), path);
_tcscpy(CDEmuImage, megasd_prev_image);
return 1;
}
struct BurnHDDInfo hdd;
memset(&hdd, 0, sizeof(hdd));
if (!hddcd_present() || BurnDrvGetHDDInfo(&hdd, 0) || (hdd.nFlags & BRF_OPT)) return 0;
if (hddcd_open(0)) return 1;
megasd_toc();
megasdmode = 1;
@@ -341,8 +368,7 @@ static void megasd_exit()
if (!megasdmode) return;
megasd_stop();
CDEmuExit();
_tcscpy(CDEmuImage, megasd_prev_image);
hddcd_close();
megasdmode = 0;
}
+17 -13
View File
@@ -1,5 +1,4 @@
// FB Neo Sega CD / Mega CD add-on
// Ported from the ares Mega CD core (ISC license)
#include "burnint.h"
#include "m68000_intf.h"
@@ -26,6 +25,7 @@ static UINT16 *CdcRam; // 16KiB
static UINT8 *PcmRam; // 64KiB
static UINT8 *BackupRam; // 8KiB
static UINT8 *BiosRom;
static UINT32 scd_base = 0; // main cpu address of the mega cd area: 0 (cd boot), 0x400000 (cartridge boot, mode 1)
static INT32 scd_bios_index = 0;
static INT32 main_clock = MAIN_NTSC;
@@ -284,7 +284,7 @@ static void main_fetch_map()
main_fetch_state = state;
for (INT32 i = 0; i < 8; i++) { // mirrors every 256KB
UINT32 w = 0x200000 + i * 0x40000;
UINT32 w = scd_base + 0x200000 + i * 0x40000;
if (wram_mode) {
SekMapMemory((UINT8*)WramFetch, w, w + 0x1ffff, MAP_FETCH);
SekMapHandler(5, w + 0x20000, w + 0x3ffff, MAP_FETCH); // cell-mapped views
@@ -294,7 +294,7 @@ static void main_fetch_map()
SekMapHandler(5, w, w + 0x3ffff, MAP_FETCH);
}
UINT32 p = 0x020000 + i * 0x40000;
UINT32 p = scd_base + 0x020000 + i * 0x40000;
if (sub_request) {
SekMapMemory(PrgRam + (pram_bank << 17), p, p + 0x1ffff, MAP_FETCH);
} else {
@@ -2202,10 +2202,10 @@ static INT32 scd_detect_region()
return 0;
}
INT32 SegaCDLoadBios(UINT8 *dest)
INT32 SegaCDLoadBios(UINT8 *dest, INT32 base, INT32 region)
{
INT32 select = MegadriveDIP[0] & 0x03;
INT32 wanted = (select) ? (select - 1) : scd_detect_region();
INT32 wanted = (region >= 0) ? region : ((select) ? (select - 1) : scd_detect_region());
INT32 loaded = -1;
for (INT32 n = 0; n < 4 && loaded < 0; n++) {
@@ -2214,10 +2214,10 @@ INT32 SegaCDLoadBios(UINT8 *dest)
struct BurnRomInfo ri;
ri.nLen = 0;
BurnDrvGetRomInfo(&ri, idx);
BurnDrvGetRomInfo(&ri, base + idx);
if (ri.nLen != 0x20000) continue;
if (BurnLoadRom(dest, idx, 1) == 0) loaded = idx;
if (BurnLoadRom(dest, base + idx, 1) == 0) loaded = idx;
}
if (loaded < 0) {
@@ -2304,9 +2304,10 @@ static void bram_format()
memcpy(BackupRam + 0x2000 - 0x40, format, 0x40);
}
INT32 SegaCDInit(UINT8 *bios)
INT32 SegaCDInit(UINT8 *bios, INT32 mode1)
{
BiosRom = bios;
scd_base = mode1 ? 0x400000 : 0;
INT32 nLen = 0x80000 + 0x40000 + 0x40000 + 0x4000 + 0x10000 + 0x2000;
AllMemScd = (UINT8*)BurnMalloc(nLen);
@@ -2332,15 +2333,17 @@ INT32 SegaCDInit(UINT8 *bios)
bprintf(PRINT_IMPORTANT, _T("Sega CD: no disc\n"));
}
// main cpu: bios, prg-ram window and word ram in the 0x000000-0x3fffff expansion area
// main cpu: bios, prg-ram window and word ram in the expansion area (0x000000-0x3fffff, 0x400000-0x7fffff in mode 1)
SekOpen(0);
SekMapHandler(5, 0x000000, 0x3fffff, MAP_RAM);
SekMapHandler(5, scd_base, scd_base + 0x3fffff, MAP_RAM);
for (INT32 i = 0; i < 0x200000; i += 0x40000) {
SekMapMemory(BiosRom, i, i + 0x1ffff, MAP_ROM);
SekMapMemory(BiosRom, scd_base + i, scd_base + i + 0x1ffff, MAP_ROM);
}
if (scd_base == 0) {
SekMapHandler(5, 0x000000, 0x0003ff, MAP_READ); // level 4 vector redirection at 0x70
SekMapHandler(7, 0x400000, 0x7fffff, MAP_WRITE);
}
SekMapHandler(5, 0x000000, 0x0003ff, MAP_READ); // level 4 vector redirection at 0x70
SekMapHandler(6, 0xa12000, 0xa123ff, MAP_RAM);
SekMapHandler(7, 0x400000, 0x7fffff, MAP_WRITE);
SekSetReadByteHandler (5, main_read_byte);
SekSetReadWordHandler (5, main_read_word);
@@ -2407,6 +2410,7 @@ void SegaCDExit()
disc_present = 0;
scd_bios_index = 0;
scd_base = 0;
SegaCDMode = 0;
}
+2 -2
View File
@@ -6,11 +6,11 @@ extern INT32 SegaCDMode;
extern INT32 (*SegaCDMainCycles)(); // main cpu cycles done in the current frame
// bios / region
INT32 SegaCDLoadBios(UINT8 *dest);
INT32 SegaCDLoadBios(UINT8 *dest, INT32 base, INT32 region); // region -1: dip switch / disc
UINT8 SegaCDGetHardware();
// main cpu (cpu #0) must be initialised and closed when calling these
INT32 SegaCDInit(UINT8 *bios);
INT32 SegaCDInit(UINT8 *bios, INT32 mode1);
void SegaCDExit();
void SegaCDReset();
void SegaCDSetPAL(INT32 pal);
+38
View File
@@ -43,6 +43,7 @@ static UINT8 bank[3];
static INT32 rdcnt;
static UINT16 *game_rom;
static INT32 direct_banks = 0; // with the mega cd (mode 1): rom and banks mapped directly, handlers 0-7 belong to the mega cd
static void set_cs_line(INT32 state)
{
@@ -259,6 +260,9 @@ static void __fastcall write_a13_word(UINT32 offset, UINT16 data)
{
if (offset != 0) {
bank[offset - 1] = data & 0x0f;
if (direct_banks) {
SekMapMemory((UINT8*)game_rom + bank[offset - 1] * 0x80000, 0x200000 + offset * 0x80000, 0x27ffff + offset * 0x80000, MAP_ROM);
}
}
}
else if (offset < 0x0a/2)
@@ -279,6 +283,7 @@ static void __fastcall write_a13_byte(UINT32 offset, UINT8 data)
void md_eeprom_stm95_init(UINT8 *rom)
{
game_rom = (UINT16*)rom;
direct_banks = 0;
SekOpen(0);
@@ -300,6 +305,37 @@ void md_eeprom_stm95_init(UINT8 *rom)
SekClose();
}
void md_eeprom_stm95_map_banks()
{
if (!direct_banks) return;
SekOpen(0);
for (INT32 i = 0; i < 3; i++) {
SekMapMemory((UINT8*)game_rom + bank[i] * 0x80000, 0x280000 + i * 0x80000, 0x2fffff + i * 0x80000, MAP_ROM);
}
SekClose();
}
void md_eeprom_stm95_init_scd(UINT8 *rom)
{
game_rom = (UINT16*)rom;
direct_banks = 1;
SekOpen(0);
SekMapHandler(8, 0x001400, 0x0017ff, MAP_READ); // protection
SekSetReadByteHandler (8, read_byte);
SekSetReadWordHandler (8, read_word);
SekMapHandler(9, 0xa13000, 0xa130ff, MAP_RAM);
SekSetReadByteHandler (9, read_a13_byte);
SekSetReadWordHandler (9, read_a13_word);
SekSetWriteByteHandler(9, write_a13_byte);
SekSetWriteWordHandler(9, write_a13_word);
SekClose();
md_eeprom_stm95_map_banks();
}
void md_eeprom_stm95_scan(INT32 nAction)
{
struct BurnArea ba;
@@ -325,5 +361,7 @@ void md_eeprom_stm95_scan(INT32 nAction)
SCAN_VAR(bank);
SCAN_VAR(rdcnt);
if (nAction & ACB_WRITE) md_eeprom_stm95_map_banks();
}
}
+78 -7
View File
@@ -68,6 +68,7 @@ static INT32 irq_line = 1;
static INT32 blitter_bit = 0;
static INT32 main_cpu_cycles = 12000000 / 60;
static INT32 main_cpu_hz = 12000000;
static double refresh_rate = 58.0;
static INT32 ymf278bint = 0;
static INT32 has_zoom = 0;
@@ -3364,6 +3365,15 @@ static void blzntrnd_zoomchip_draw()
if (nBurnLayer & 1) K053936Draw(0, (UINT16*)DrvK053936CRAM, (UINT16*)DrvK053936LRAM, (1 << 24) | (0xff << 16) | (1 << 8) | 0);
}
// htotal/vtotal: crtc totals the game programs into the i4220 at boot (26.666 MHz / 4 dot clock)
static void i4220_set_crtc_timing(INT32 htotal, INT32 vtotal)
{
refresh_rate = (26666000.0 / 4.0) / ((htotal + 2) * (vtotal + 3));
main_cpu_cycles = (INT32)((double)main_cpu_hz / refresh_rate);
BurnSetRefreshRate(refresh_rate);
}
static INT32 blzntrndInit()
{
graphics_length = 0x1800000;
@@ -3448,6 +3458,8 @@ static INT32 blzntrndInit()
i4x00_set_extrachip_callback(blzntrnd_zoomchip_draw);
i4x00_set_blazing();
i4220_set_crtc_timing(422, 267);
vblank_bit = 0;
irq_line = 1;
blitter_bit = 0;
@@ -3577,6 +3589,8 @@ static INT32 gstrik2Init()
i4x00_set_extrachip_callback(gstrik2_zoomchip_draw);
i4x00_set_offsets(8,8,8);
i4220_set_crtc_timing(426, 267);
vblank_bit = 0;
irq_line = 1;
blitter_bit = 0;
@@ -3996,12 +4010,24 @@ static void dharmaRomCallback()
static INT32 dharmaInit()
{
return common_type1_init(4200, 0x200000, 2, dharmaMapCallback, dharmaRomCallback, 2 | 0x10/*udp*/);
INT32 nRet = common_type1_init(4200, 0x200000, 2, dharmaMapCallback, dharmaRomCallback, 2 | 0x10/*udp*/);
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
static INT32 dharmajInit()
{
return common_type1_init(4200, 0x200000, 2, dharmaMapCallback, NULL, 2/*udp*/);
INT32 nRet = common_type1_init(4200, 0x200000, 2, dharmaMapCallback, NULL, 2/*udp*/);
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
static void pururunMapCallback()
@@ -4018,7 +4044,13 @@ static INT32 pururunInit()
main_cpu_cycles = (INT32)((double)12000000 / 58.2328);
main_cpu_hz = 12000000;
return common_type1_init(4200, 0x200000, 2, pururunMapCallback, NULL, 5/*udp + ym2151*/);
INT32 nRet = common_type1_init(4200, 0x200000, 2, pururunMapCallback, NULL, 5/*udp + ym2151*/);
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
static void karatourMapCallback()
@@ -4054,6 +4086,8 @@ static INT32 kokushiInit()
SekWriteWord(0x800000 + i, rand());
}
SekClose();
i4220_set_crtc_timing(430, 267);
}
return nRet;
@@ -4077,6 +4111,10 @@ static INT32 daitoridInit()
i4x00_set_offsets(-2, -2, -2);
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
@@ -4089,6 +4127,10 @@ static INT32 puzzliaInit()
i4x00_set_offsets(-2, -2, -2);
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
@@ -4103,7 +4145,13 @@ static void toride2gMapCallback()
static INT32 toride2gInit()
{
return common_type1_init(4200, 0x200000, 2, toride2gMapCallback, NULL, 2/*udp*/);
INT32 nRet = common_type1_init(4200, 0x200000, 2, toride2gMapCallback, NULL, 2/*udp*/);
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
static void msgogoMapCallback()
@@ -4134,6 +4182,10 @@ static INT32 msgogoInit()
i4x00_set_offsets(-2, -2, -2);
ymf278bint = 1;
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
@@ -4166,6 +4218,10 @@ static INT32 balcubeInit()
i4x00_set_offsets(-2, -2, -2);
ymf278bint = 8;
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
@@ -4190,6 +4246,10 @@ static INT32 bangballInit()
ymf278bint = 1;
bangballmode = 1;
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
@@ -4221,6 +4281,10 @@ static INT32 batlbublInit()
i4x00_set_offsets(-2, -2, -2);
ymf278bint = 1;
if (nRet == 0) {
i4220_set_crtc_timing(414, 267);
}
return nRet;
}
@@ -4235,7 +4299,13 @@ static void vmetalMapCallback()
static INT32 vmetalInit()
{
return common_type1_init(4200, 0x800000, 5, vmetalMapCallback, NULL, 6);
INT32 nRet = common_type1_init(4200, 0x800000, 5, vmetalMapCallback, NULL, 6);
if (nRet == 0) {
i4220_set_crtc_timing(422, 267);
}
return nRet;
}
static INT32 DrvExit()
@@ -4293,6 +4363,7 @@ static INT32 DrvExit()
has_zoom = 0;
main_cpu_cycles = 12000000 / 60;
main_cpu_hz = 12000000;
refresh_rate = 58.0;
ymf278bint = 0;
bangballmode = 0;
@@ -4322,7 +4393,7 @@ static INT32 Z80Frame()
ZetNewFrame();
INT32 nInterleave = 256;
INT32 nCyclesTotal[2] = { 16000000 / 58, 8000000 / 58 };
INT32 nCyclesTotal[2] = { (INT32)(16000000 / refresh_rate), (INT32)(8000000 / refresh_rate) };
INT32 nCyclesDone[2] = { 0, 0 };
SekOpen(0);
@@ -4787,7 +4858,7 @@ static struct BurnRomInfo gstrik2jRomDesc[] = {
STD_ROM_PICK(gstrik2j)
STD_ROM_FN(gstrik2j)
struct BurnDriverD BurnDrvGstrik2j = {
struct BurnDriver BurnDrvGstrik2j = {
"gstrik2j", "gstrik2", NULL, NULL, "1996",
"Grand Striker 2 (Japan)\0", NULL, "Human Amusement", "Miscellaneous",
NULL, NULL, NULL, NULL,
+1
View File
@@ -11514,6 +11514,7 @@ STD_ROM_FN(usclssic)
static INT32 usclssicInit()
{
refresh_rate = 5745; // 57.45 hz - https://github.com/finalburnneo/FBNeo/issues/2854
watchdog_enable = 1;
DrvSetColorOffsets(0, 0x200, 0);
DrvSetVideoOffsets(1, 2, 0, -1);
+192 -21
View File
@@ -4395,7 +4395,7 @@ struct BurnDriver BurnSpecBlam = {
// Blasteroids (48K-128K)
static struct BurnRomInfo SpecBlasteroidsRomDesc[] = {
{ "Blasteroids 48K-128K (1989)(Image Works).tap", 50430, 0x5cfaa878, BRF_ESS | BRF_PRG },
{ "Blasteroids 48K-128K (1989)(Image Works).tzx", 48165, 0x14fff351, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecBlasteroids, SpecBlasteroids, Spec128)
@@ -12072,7 +12072,7 @@ struct BurnDriver BurnSpecFrankiegth = {
// Frank N Stein (48K)
static struct BurnRomInfo SpecFranknsteinRomDesc[] = {
{ "Frank N Stein 48K (1984)(PSS).tap", 47860, 0x3ff60912, BRF_ESS | BRF_PRG },
{ "Frank N Stein 48K (1984)(PSS).tzx", 47918, 0x37c1c1d1, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecFranknstein, SpecFranknstein, Spectrum)
@@ -14790,7 +14790,7 @@ struct BurnDriver BurnSpechoracesk = {
// Horace & the Spiders (16K)
static struct BurnRomInfo SpecHoracespRomDesc[] = {
{ "Horace & the Spiders 16K (1983)(Sinclair Research).tap", 16327, 0xb3095abe, BRF_ESS | BRF_PRG },
{ "Horace & the Spiders 16K (1983)(Sinclair Research).tzx", 16355, 0x5bc5bbb4, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecHoracesp, SpecHoracesp, Spectrum)
@@ -16725,10 +16725,10 @@ struct BurnDriver BurnSpecJumbly = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Jumping Jack (48K)
// Jumping Jack (16K)
static struct BurnRomInfo SpecJjackRomDesc[] = {
{ "Jumping Jack 48K (1983)(Imagine Software).tap", 11833, 0xc54ae2a8, BRF_ESS | BRF_PRG },
{ "Jumping Jack 16K (1983)(Imagine Software).tap", 11833, 0xc54ae2a8, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecJjack, SpecJjack, Spectrum)
@@ -16736,7 +16736,7 @@ STD_ROM_FN(SpecJjack)
struct BurnDriver BurnSpecJjack = {
"spec_jjack", NULL, "spec_spectrum", NULL, "1983",
"Jumping Jack (48K)\0", NULL, "Imagine Software", "ZX Spectrum",
"Jumping Jack (16K)\0", NULL, "Imagine Software", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 1, HARDWARE_SPECTRUM, GBF_ACTION, 0,
SpectrumGetZipName, SpecJjackRomInfo, SpecJjackRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecJJackDIPInfo,
@@ -39325,6 +39325,25 @@ struct BurnDriver BurnSpecCherils = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Cheril of the Bosque (48K) (HB)
static struct BurnRomInfo SpecCherilbosqueRomDesc[] = {
{ "Cheril of the Bosque 48K (2010)(The Mojon Twins).tzx", 37565, 0x2e1efa58, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecCherilbosque, SpecCherilbosque, Spectrum)
STD_ROM_FN(SpecCherilbosque)
struct BurnDriver BurnSpecCherilbosque = {
"spec_cherilbosque", NULL, "spec_spectrum", NULL, "2010",
"Cheril of the Bosque (48K) (HB)\0", NULL, "The Mojon Twins", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_ACTION | GBF_PUZZLE, 0,
SpectrumGetZipName, SpecCherilbosqueRomInfo, SpecCherilbosqueRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
SpecInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Cheril the Goddess (48K) (HB, v2.0)
static struct BurnRomInfo SpeccherilgodRomDesc[] = {
@@ -39480,7 +39499,7 @@ struct BurnDriver BurnSpecChopdef = {
// Chopper Drop (48K-128K) (HB, v1.1)
static struct BurnRomInfo SpecChopperdropRomDesc[] = {
{ "Chopper Drop 48K-128K (2011)(Paul Jenkinson).tap", 31591, 0x8c4eb3fe, BRF_ESS | BRF_PRG },
{ "Chopper Drop v1.1 48K-128K (2011)(Paul Jenkinson).tzx", 31631, 0x6df809fc, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecChopperdrop, SpecChopperdrop, Spec128)
@@ -40050,7 +40069,7 @@ struct BurnDriver BurnSpecColinte = {
// Coloco (48K) (HB)
static struct BurnRomInfo SpeccolocoRomDesc[] = {
{ "Coloco 48K (2020)(The Mojon Twins).tap", 46855, 0xdd07fa17, BRF_ESS | BRF_PRG },
{ "Coloco 48K (2020)(Tuxedo Games).tap", 46855, 0xdd07fa17, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(Speccoloco, Speccoloco, Spectrum)
@@ -40058,9 +40077,9 @@ STD_ROM_FN(Speccoloco)
struct BurnDriver BurnSpeccoloco = {
"spec_coloco", NULL, "spec_spectrum", NULL, "2020",
"Coloco (48K) (HB)\0", NULL, "The Mojon Twins", "ZX Spectrum",
"Coloco (48K) (HB)\0", NULL, "Tuxedo Games", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_PLATFORM, 0,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_ACTION, 0,
SpectrumGetZipName, SpeccolocoRomInfo, SpeccolocoRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
SpecInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
@@ -40313,10 +40332,10 @@ struct BurnDriver BurnSpecComplicadx = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Cooper Run (48K) (HB)
// Cooper Run (48K) (HB, v1.1)
static struct BurnRomInfo SpecCooperRomDesc[] = {
{ "Cooper Run 48K-AY (2026)(MnnPT).tap", 27714, 0x1d3f8db6, BRF_ESS | BRF_PRG },
{ "Cooper Run v1.1 48K-AY (2026)(MmmPT).tap", 30306, 0x81b13f65, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecCooper, SpecCooper, Spectrum)
@@ -40324,7 +40343,7 @@ STD_ROM_FN(SpecCooper)
struct BurnDriver BurnSpecCooper = {
"spec_cooper", NULL, "spec_spectrum", NULL, "2026",
"Cooper Run (48K) (HB)\0", "AY Sound supported", "MnnPT", "ZX Spectrum",
"Cooper Run (48K) (HB, v1.1)\0", "AY Sound supported", "MmmPT", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_ACTION | GBF_RACING, 0,
SpectrumGetZipName, SpecCooperRomInfo, SpecCooperRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
@@ -42270,6 +42289,25 @@ struct BurnDriver BurnSpecDefender = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Demon Attack ZX (48K) (HB)
static struct BurnRomInfo SpecDemonatkRomDesc[] = {
{ "Demon Attack ZX 48K-AY (2026)(FG&AI).tap", 30311, 0x5940751f, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecDemonatk, SpecDemonatk, Spectrum)
STD_ROM_FN(SpecDemonatk)
struct BurnDriver BurnSpecDemonatk = {
"spec_demonatk", NULL, "spec_spectrum", NULL, "2026",
"Demon Attack ZX (48K) (HB)\0", "AY Sound supported", "FG&AI", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 2, HARDWARE_SPECTRUM, GBF_VERSHOOT, 0,
SpectrumGetZipName, SpecDemonatkRomInfo, SpecDemonatkRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
SpecInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Demon Jar, The (128K) (HB, v1.04)
static struct BurnRomInfo SpecDemonjarRomDesc[] = {
@@ -42596,7 +42634,7 @@ struct BurnDriver BurnSpecDigdugdoug = {
// Dingo (48K) (HB, v1.3)
static struct BurnRomInfo SpecDingoRomDesc[] = {
{ "Dingo v1.3 48K (2015)(Sokurah, Tardis).tap", 41567, 0xb22b60c3, BRF_ESS | BRF_PRG },
{ "Dingo v1.3 48K (2011-15)(Sokurah, Tardis Remakes).tzx", 41595, 0x8077c3c4, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecDingo, SpecDingo, Spectrum)
@@ -42935,6 +42973,25 @@ struct BurnDriver BurnSpecDizzytdt = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Dizzzruptor (128K) (HB, Tech-Demo)
static struct BurnRomInfo SpecDizzzruptorRomDesc[] = {
{ "Dizzzruptor 128K (2012)(Hooy-Program, Tygrys).tap", 200169, 0x75acc4f4, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecDizzzruptor, SpecDizzzruptor, Spec128)
STD_ROM_FN(SpecDizzzruptor)
struct BurnDriver BurnSpecDizzzruptor = {
"spec_dizzzruptor", NULL, "spec_spec128", NULL, "2012",
"Dizzzruptor (128K) (HB, Tech-Demo)\0", NULL, "Hooy-Program, Tygrys", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW | BDF_DEMO, 1, HARDWARE_SPECTRUM, GBF_MISC, 0,
SpectrumGetZipName, SpecDizzzruptorRomInfo, SpecDizzzruptorRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
Spec128KInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// DJ Puff's Volcanic Erruption - Recoloured (128K) (Hack)
static struct BurnRomInfo SpecDjpuff23RomDesc[] = {
@@ -44569,10 +44626,10 @@ struct BurnDriver BurnSpecEscapemonjases = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Escape from Omega Base (48K) (HB, v1.3)
// Escape from Omega Base (48K) (HB, v1.4)
static struct BurnRomInfo SpecEscfobRomDesc[] = {
{ "Escape from Omega Base v1.3 48K (2026)(ZXCesco).tzx", 32840, 0x39f32c49, BRF_ESS | BRF_PRG },
{ "Escape from Omega Base v1.4 48K (2026)(Francesco Scagnelli).tzx", 33352, 0x9af82650, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecEscfob, SpecEscfob, Spectrum)
@@ -44580,7 +44637,7 @@ STD_ROM_FN(SpecEscfob)
struct BurnDriver BurnSpecEscfob = {
"spec_escfob", NULL, "spec_spectrum", NULL, "2026",
"Escape from Omega Base (48K) (HB, v1.3)\0", NULL, "ZXCesco", "ZX Spectrum",
"Escape from Omega Base (48K) (HB, v1.4)\0", NULL, "Francesco Scagnelli", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_ACTION | GBF_MAZE, 0,
SpectrumGetZipName, SpecEscfobRomInfo, SpecEscfobRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
@@ -45595,10 +45652,10 @@ struct BurnDriver BurnSpecFrankie48es = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Frank N Stein Re-booted (48K) (HB)
// Frank N Stein Re-booted (48K) (HB, v2.17)
static struct BurnRomInfo SpecFranknsteinrbtRomDesc[] = {
{ "Frank N Stein Re-booted 48K (2011)(Colin Stewart).tap", 45250, 0x00dec00d, BRF_ESS | BRF_PRG },
{ "Frank N Stein Re-booted v2.17 48K (2011)(Colin Stewart).tzx", 45314, 0x1cbcdc75, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecFranknsteinrbt, SpecFranknsteinrbt, Spectrum)
@@ -45606,7 +45663,7 @@ STD_ROM_FN(SpecFranknsteinrbt)
struct BurnDriver BurnSpecFranknsteinrbt = {
"spec_franknsteinrbt", NULL, "spec_spectrum", NULL, "2011",
"Frank N Stein Re-booted (48K) (HB)\0", NULL, "Colin Stewart", "ZX Spectrum",
"Frank N Stein Re-booted (48K) (HB, v2.17)\0", NULL, "Colin Stewart", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_PLATFORM, 0,
SpectrumGetZipName, SpecFranknsteinrbtRomInfo, SpecFranknsteinrbtRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
@@ -46906,6 +46963,25 @@ struct BurnDriver BurnSpecgoodyrecolour = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Goonies ZX, The (128K) (HB)
static struct BurnRomInfo SpecGoonieszxRomDesc[] = {
{ "Goonies ZX, The 128K (2026)(FG&AI).tap", 87659, 0xd5b90d4e, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecGoonieszx, SpecGoonieszx, Spec128)
STD_ROM_FN(SpecGoonieszx)
struct BurnDriver BurnSpecGoonieszx = {
"spec_goonieszx", NULL, "spec_spec128", NULL, "2026",
"Goonies ZX, The (128K) (HB)\0", NULL, "FG&AI", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_PLATFORM, 0,
SpectrumGetZipName, SpecGoonieszxRomInfo, SpecGoonieszxRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
Spec128KInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Gorf (128K) (HB)
static struct BurnRomInfo SpecGorfRomDesc[] = {
@@ -47248,6 +47324,25 @@ struct BurnDriver BurnSpecHairtrigger = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Halloween (48K) (HB)
static struct BurnRomInfo SpecHalloweenRomDesc[] = {
{ "Halloween 48K (2026)(Petr Kain).tap", 24220, 0xf617051a, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecHalloween, SpecHalloween, Spectrum)
STD_ROM_FN(SpecHalloween)
struct BurnDriver BurnSpecHalloween = {
"spec_halloween", NULL, "spec_spectrum", NULL, "2026",
"Halloween (48K) (HB)\0", "type VOCABULARY to get a list of all commands the game understands", "Petr Kain", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_ADV, 0,
SpectrumGetZipName, SpecHalloweenRomInfo, SpecHalloweenRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
SpecInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Hallowed Knight (48K) (HB, v1.4)
static struct BurnRomInfo SpecHknightRomDesc[] = {
@@ -49680,6 +49775,25 @@ struct BurnDriver BurnSpecJubbles = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Jumping Jack - Enhanced (48K) (Hack)
static struct BurnRomInfo SpecJjackenhRomDesc[] = {
{ "Jumping Jack - Enhanced 48K-AY (1983-2026)(FlunkyRetro & Claude AI'26).tap", 21745, 0x97d0f8b9, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecJjackenh, SpecJjackenh, Spectrum)
STD_ROM_FN(SpecJjackenh)
struct BurnDriver BurnSpecJjackenh = {
"spec_jjackenh", "spec_jjack", "spec_spectrum", NULL, "1983-2026",
"Jumping Jack - Enhanced (48K) (Hack)\0", NULL, "FlunkyRetro & Claude AI'26", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 1, HARDWARE_SPECTRUM, GBF_ACTION, 0,
SpectrumGetZipName, SpecJjackenhRomInfo, SpecJjackenhRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecQAOPSpaceDIPInfo,
SpecInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Jumpin' Jupiter (48K) (HB)
static struct BurnRomInfo SpecjumpjupiterRomDesc[] = {
@@ -50481,7 +50595,7 @@ struct BurnDriver BurnSpecLaetitiap4 = {
// Lala Prologue (48K) (HB)
static struct BurnRomInfo SpeclalaRomDesc[] = {
{ "Lala Prologue 48K (2010)(The Mojon Twins).tap", 32855, 0x547b6601, BRF_ESS | BRF_PRG },
{ "Lala Prologue 48K (2010)(The Mojon Twins).tzx", 32889, 0x9c55b5cb, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(Speclala, Speclala, Spectrum)
@@ -58098,6 +58212,25 @@ struct BurnDriver BurnSpecPrimaderezx = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Prism (128K) (HB)
static struct BurnRomInfo SpecPrismRomDesc[] = {
{ "Prism 128K (2026)(AlColella).tap", 101385, 0x5b445111, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecPrism, SpecPrism, Spec128)
STD_ROM_FN(SpecPrism)
struct BurnDriver BurnSpecPrism = {
"spec_prism", NULL, "spec_spec128", NULL, "2026",
"Prism (128K) (HB)\0", NULL, "AlColella", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_PLATFORM, 0,
SpectrumGetZipName, SpecPrismRomInfo, SpecPrismRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
Spec128KInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Priss Triss (48K-128K) (HB)
static struct BurnRomInfo SpecPrisstrissRomDesc[] = {
@@ -59694,6 +59827,25 @@ struct BurnDriver BurnSpecRevpong = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Rewind Quiz (128K) (HB, v1.1)
static struct BurnRomInfo SpecRewindquizRomDesc[] = {
{ "Rewind Quiz v1.1 128K (2026)(MmmPT).tap", 81608, 0x9b89db47, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecRewindquiz, SpecRewindquiz, Spec128)
STD_ROM_FN(SpecRewindquiz)
struct BurnDriver BurnSpecRewindquiz = {
"spec_rewindquiz", NULL, "spec_spec128", NULL, "2026",
"Rewind Quiz (128K) (HB, v1.1)\0", NULL, "MmmPT", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_QUIZ, 0,
SpectrumGetZipName, SpecRewindquizRomInfo, SpecRewindquizRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
Spec128KInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// RINGO (128K) (HB)
static struct BurnRomInfo SpecRingoRomDesc[] = {
@@ -67085,6 +67237,25 @@ struct BurnDriver BurnSpecVexed48 = {
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Viaje al Centro de la Napia (48K) (HB)
static struct BurnRomInfo SpecViajenapaRomDesc[] = {
{ "Viaje al Centro de la Napia 48K (2010)(The Mojon Twins).tzx", 36831, 0x53cfdc0a, BRF_ESS | BRF_PRG },
};
STDROMPICKEXT(SpecViajenapa, SpecViajenapa, Spectrum)
STD_ROM_FN(SpecViajenapa)
struct BurnDriver BurnSpecViajenapa = {
"spec_viajenapa", NULL, "spec_spectrum", NULL, "2010",
"Viaje al Centro de la Napia (48K) (HB)\0", NULL, "The Mojon Twins", "ZX Spectrum",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_SPECTRUM, GBF_PLATFORM, 0,
SpectrumGetZipName, SpecViajenapaRomInfo, SpecViajenapaRomName, NULL, NULL, NULL, NULL, SpecInputInfo, SpecDIPInfo,
SpecInit, SpecExit, SpecFrame, SpecDraw, SpecScan,
&SpecRecalc, 0x10, 288, 224, 4, 3
};
// Viaje al Centro de la Tierra - Version Extendida (Spanish) (48K-128K) (HB)
static struct BurnRomInfo SpecViajecentterraextRomDesc[] = {
+1
View File
@@ -211,6 +211,7 @@ static INT32 Name##HDDInfo(struct BurnHDDInfo* pri, UINT32 i) \
} \
if (pri) { \
pri->szSha1 = por->szSha1; \
pri->nFlags = por->nFlags; \
} \
return 0; \
} \
+1 -1
View File
@@ -671,7 +671,7 @@ INT32 write_datfile(INT32 bType, FILE* fDat)
if (szHDDName == NULL) continue;
fprintf(fDat, "\t\t<disk name=\"%s\" sha1=\"%s\" />\n", szHDDName, hddi.szSha1);
fprintf(fDat, "\t\t<disk name=\"%s\" sha1=\"%s\"%s />\n", szHDDName, hddi.szSha1, (hddi.nFlags & BRF_OPT) ? " optional=\"yes\"" : "");
}
}
+12 -4
View File
@@ -5,11 +5,19 @@
// same search as BurnHDDOpen(): <hdd path><romset>/ then <hdd path><parent>/
static bool BzipHDDPresent()
{
char* szName = NULL;
if (BurnDrvGetHDDName(&szName, 0, 0) || szName == NULL) return true;
// every disk that isn't optional
for (INT32 i = 0; i < 0x100; i++) {
char* szName = NULL;
struct BurnHDDInfo hdi;
memset(&hdi, 0, sizeof(hdi));
if (BurnDrvGetHDDInfo(&hdi, i) || BurnDrvGetHDDName(&szName, i, 0) || szName == NULL) break;
if (hdi.nFlags & BRF_OPT) continue;
TCHAR szPath[MAX_PATH];
return !BurnHDDGetPath(0, _T(".chd"), szPath) || !BurnHDDGetPath(0, _T(".img"), szPath);
TCHAR szPath[MAX_PATH];
if (BurnHDDGetPath(i, _T(".chd"), szPath) && BurnHDDGetPath(i, _T(".img"), szPath)) return false;
}
return true;
}
int nBzipError = 0; // non-zero if there is a problem with the opened romset
+6
View File
@@ -175,6 +175,9 @@ void generateDats()
_stprintf(filename, _T("%sFBNeo_-_Super_Nintendo_Entertainment_System.dat"), szAppDatListsPath);
create_datfile(filename, DAT_SNES_ONLY);
_stprintf(filename, _T("%sFBNeo_-_Nintendo_Game_Boy_Advance.dat"), szAppDatListsPath);
create_datfile(filename, DAT_GBA_ONLY);
_stprintf(filename, _T("%sFBNeo_-_Neo_Geo_Pocket.dat"), szAppDatListsPath);
create_datfile(filename, DAT_NGP_ONLY);
@@ -236,6 +239,9 @@ void generateDats()
sprintf(filename, "FBNeo_-_Super_Nintendo_Entertainment_System.dat");
create_datfile(filename, DAT_SNES_ONLY);
sprintf(filename, "FBNeo_-_Nintendo_Game_Boy_Advance.dat");
create_datfile(filename, DAT_GBA_ONLY);
sprintf(filename, "FBNeo_-_Neo_Geo_Pocket.dat");
create_datfile(filename, DAT_NGP_ONLY);
+76 -58
View File
@@ -28,8 +28,6 @@ static sega_cd_game segacd_games[] = {
{ _T("8f355c3f4316f331842720956de7ad5b5e9ccf80"), _T("The Amazing Spider-Man vs. The Kingpin (Europe)"), _T("spidking"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("c7023d3cfb89369ab0a28454a408049bb63db622"), _T("The Amazing Spider-Man vs. The Kingpin (USA)"), _T("spidkingu"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("db604ac93fbe6e4e9d09eb905c1b0f28edf8ded5"), _T("Android Assault: The Revenge of Bari-Arm (USA)"), _T("androidassaultthu"), _T(""), _T(""), NULL, NULL },
{ _T("d07c08ce71bc0bd6e85971519702979a46e2724e"), _T("The Animals! (Europe)"), _T("animalse"), _T(""), _T(""), NULL, NULL },
{ _T("36942e79d4a2791f312dbf70f9a143f1dc48a2b1"), _T("The Animals! (USA)"), _T("animalsu"), _T(""), _T(""), NULL, NULL },
{ _T("8c56941c946acbfd9ee3395b69105d3fd4b4be8a"), _T("Annett Futatabi (Japan)"), _T("annettfutatabij"), _T(""), _T(""), NULL, NULL },
{ _T("7ebfbece5656a9fadd51432740a6065f8b7d2c8f"), _T("Aoki Ookami to Shiroki Mejika: Genchou Hishi (Japan)"), _T("genchohi"), _T("1993"), _T("Koei"), NULL, NULL },
{ _T("90a25cc6f65ff2bff8719db4a926955eec08ddc3"), _T("Arcus I, II, III (Japan)"), _T("arcus123"), _T("1993"), _T("Wolf Team"), NULL, NULL },
@@ -58,18 +56,21 @@ static sega_cd_game segacd_games[] = {
{ _T("991b38dfdb35ef5c4eff796b00fcacf183d95581"), _T("Blackhole Assault (Europe)"), _T("blackh"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("5918b1fe689266383f39109c5ce9f8f0b0cfdcc3"), _T("Blackhole Assault (USA)"), _T("blackhu"), _T("1993"), _T("Bignet"), NULL, NULL },
{ _T("491d19776f5726e7569f9a1c1393ad0673a38244"), _T("Blackhole Assault (USA) (Alt)"), _T("blackhua"), _T("1993"), _T("Bignet"), NULL, NULL },
{ _T("ec309470bb64b05a6d5da77bff525ca777433bf8"), _T("Bloodshot ~ Battle Frenzy (Europe) (En,Fr,De,Es)"), _T("bloodshotbattlefe"), _T(""), _T(""), NULL, NULL },
{ _T("ec309470bb64b05a6d5da77bff525ca777433bf8"), _T("Bloodshot (Europe) (En,Fr,De,Es)"), _T("bloodsht"), _T("1994"), _T("Domark"), NULL, NULL },
{ _T("92c3fd6a7593f215ad5ca51281c8caaff5d94216"), _T("Bouncers (USA)"), _T("bouncers"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("af97bb27f89cb6a6e2c776bedc075cb419fab518"), _T("Bram Stoker's Dracula (USA)"), _T("draculaa"), _T("1992"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("b848887f77598faefaede8578f8142628ffc4cc9"), _T("Bram Stoker's Dracula (USA) (Version 2.0)"), _T("dracula"), _T("1992"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("903550bb48326f4a0e4c7bf1151aa9cf800b7928"), _T("Brutal: Paws of Fury (Europe)"), _T("brutal"), _T("1994"), _T("GameTek"), NULL, NULL },
{ _T("903550bb48326f4a0e4c7bf1151aa9cf800b7928"), _T("Brutal: Paws of Fury (Europe) (En,Fr,De)"), _T("brutal"), _T("1994"), _T("GameTek"), NULL, NULL },
{ _T("8b91b199f47be7207c264882e1014e2fd335cc26"), _T("Brutal: Paws of Fury (USA)"), _T("brutalu"), _T("1994"), _T("GameTek"), NULL, NULL },
{ _T("ab1873cb6aaa870ebe8e2c555bb2447e7529f2af"), _T("Bug Blasters: The Exterminators (USA) (Unl) (Rerelease)"), _T("bugblasterstheexu"), _T(""), _T(""), NULL, NULL },
{ _T("254c1dcc99517ca57531b71737624dc23f6ceee8"), _T("Burai: Yatsudama no Yuushi Densetsu (Japan)"), _T("burai"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("8c04649db675342f00acd43e5444a32947821100"), _T("Burning Fists: Force Striker (USA) (Unl)"), _T("burningfistsforcu"), _T(""), _T(""), NULL, NULL },
{ _T("8a54cd36dbefd1e04e9c0d3389512c4693bb29d3"), _T("Cadillacs and Dinosaurs: The Second Cataclysm (USA, Brazil) (RE)"), _T("cadillacsanddinobu"), _T(""), _T(""), NULL, NULL },
{ _T("990d70f56d47779fdf6b1b7f68a1d4945c5307cf"), _T("Captain Tsubasa (Japan)"), _T("ctsuba"), _T("1994"), _T("Tecmo"), NULL, NULL },
{ _T("5f2c592b2cef56d323a4b1b1720ffef445091511"), _T("Championship Soccer '94 (USA)"), _T("champs94"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("1956fa51f88fb9b393b68a5c9477f083a377c53a"), _T("CD Sonic the Hedgehog (Japan) (Beta) (1992-12-04)"), _T("cdsonicthehedgehjdemo"), _T(""), _T(""), NULL, NULL },
{ _T("365f982f4254ee8ec34aab10576526a0bd57abfc"), _T("CD Sonic the Hedgehog (Japan) (Beta) (1993-05-13)"), _T("cdsonicthehedgehjdemo_2"), _T(""), _T(""), NULL, NULL },
{ _T("cc4fb62e5f7e6306057c38f95af0561f2c636eb6"), _T("CD Sonic the Hedgehog (Japan) (Beta) (1993-06-21)"), _T("cdsonicthehedgehjdemo_3"), _T(""), _T(""), NULL, NULL },
{ _T("5f2c592b2cef56d323a4b1b1720ffef445091511"), _T("Championship Soccer '94 (USA) (En,Fr,De,It)"), _T("champs94"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("969fbd99c2350246fc92a6551cf10e8eaf6e23e8"), _T("Chuck Rock (Europe)"), _T("chuckrck"), _T("1993"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("41fca61f50310f6b307eef9fb8d67d14279ddec8"), _T("Chuck Rock (USA)"), _T("chuckrcku"), _T("1992"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("afd23c5bdc91b215dcefe2b60d77a5042a3b3e90"), _T("Chuck Rock II: Son of Chuck (Europe)"), _T("chukrck2"), _T("1993"), _T("Core Design"), NULL, NULL },
@@ -99,16 +100,16 @@ static sega_cd_game segacd_games[] = {
{ _T("dbb4741bc1944ba376db647703cbca1e94cba434"), _T("Double Switch (Japan)"), _T("dblswtchj"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("1c94eb37aa51cd5a0666399fa41c23ac572e30e1"), _T("Double Switch (USA)"), _T("dblswtchu"), _T("1993"), _T("Sega"), NULL, _T("U") },
{ _T("993290ce07befdf685fbcab13a2f1ffa56572bb3"), _T("Dracula Unleashed (Europe) (Disc 1) (Made in E.U.)"), _T("dracunl"), _T("1994"), _T("Sega"), _T("dracunl"), NULL },
{ _T("aee480ab15a3fdd62ffa4f4506af62747639f06b"), _T("Dracula Unleashed (Europe) (Disc 1) (Made in Japan)"), _T("dracunl_2"), _T("1994"), _T("Sega"), _T("dracunl"), NULL },
{ _T("456f0c7487ec74348c55ba52ade889201305fbcf"), _T("Dracula Unleashed (Europe) (Disc 2)"), _T("dracunld2"), _T("1994"), _T("Sega"), _T("dracunl"), NULL },
{ _T("abc83fe6527c53b6bc82c74dcfab682c522f60b0"), _T("Dracula Unleashed (Europe) (Disc 2) (Made in Japan)"), _T("dracunld2_2"), _T("1994"), _T("Sega"), _T("dracunl"), NULL },
{ _T("aee480ab15a3fdd62ffa4f4506af62747639f06b"), _T("Dracula Unleashed (Europe) (Disc 1) (Made in Japan)"), _T("dracunl_2"), _T("1994"), _T("Sega"), _T("dracunl_2"), NULL },
{ _T("456f0c7487ec74348c55ba52ade889201305fbcf"), _T("Dracula Unleashed (Europe) (Disc 2) (Made in E.U.)"), _T("dracunld2"), _T("1994"), _T("Sega"), _T("dracunl"), NULL },
{ _T("abc83fe6527c53b6bc82c74dcfab682c522f60b0"), _T("Dracula Unleashed (Europe) (Disc 2) (Made in Japan)"), _T("dracunl_2d2"), _T("1994"), _T("Sega"), _T("dracunl_2"), NULL },
{ _T("25d00e59685b0e39d27018a2433922b774367115"), _T("Dracula Unleashed (USA) (Disc 1)"), _T("dracunlu"), _T("1993"), _T("Sega"), _T("dracunlu"), NULL },
{ _T("3f57cf9f21669ebabc59be69ab13abd53cc24a9e"), _T("Dracula Unleashed (USA) (Disc 2)"), _T("dracunlud2"), _T("1993"), _T("Sega"), _T("dracunlu"), NULL },
{ _T("44bde0bbc282dfd19b20b3173d09d46ddb4ea0c2"), _T("Dragon's Lair (Europe)"), _T("dlair"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("44bde0bbc282dfd19b20b3173d09d46ddb4ea0c2"), _T("Dragon's Lair (Europe) (En,Fr,De,It)"), _T("dlair"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("88b804856cc71e4c03479445e497c6797c2b4e6d"), _T("Dragon's Lair (Japan) (En,Ja,Fr,De,It)"), _T("dlairj"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("a105132bd17dfdcee3ec13df00e444d00d85ee25"), _T("Dragon's Lair (USA)"), _T("dlairu"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("866b868a147a19389a58a2d19eaaad18fd50e23a"), _T("Dragon's Lair (USA) (Demo)"), _T("dlairudemo"), _T("1993"), _T("ReadySoft"), NULL, NULL },
{ _T("e794df4a123d952b351c8bb21386ae10a84f257e"), _T("Dune (Europe) (En,Fr,De,Es,It,Ar)"), _T("dune"), _T("1993"), _T("Virgin Interactive"), NULL, NULL },
{ _T("e794df4a123d952b351c8bb21386ae10a84f257e"), _T("Dune (Europe) (En,Fr,De,Es,It)"), _T("dune"), _T("1993"), _T("Virgin Interactive"), NULL, NULL },
{ _T("1ba98761123bc815d3b4eecd072438b54e9dbd01"), _T("Dune (USA)"), _T("duneu"), _T("1993"), _T("Virgin Games / Cryo"), NULL, NULL },
{ _T("0954cf5c3a5e756cbcba357d0790ea6485ffe5eb"), _T("Dungeon Explorer (Europe)"), _T("dungexpl"), _T("1995"), _T("Hudson Soft"), NULL, NULL },
{ _T("3f4a9ce15ab8b9345eeae38de9f46d9adcdea321"), _T("Dungeon Explorer (USA)"), _T("dungexplu"), _T("1995"), _T("Sega"), NULL, NULL },
@@ -119,13 +120,13 @@ static sega_cd_game segacd_games[] = {
{ _T("99197591f8cd882f8ad33a5ba5e40f7c445d1ec4"), _T("Earnest Evans (Japan)"), _T("earnest"), _T("1991"), _T("Wolf Team"), NULL, NULL },
{ _T("1d0c6b23e9a993fff80ea18026f804cd99dd1da6"), _T("Earthworm Jim: Special Edition (Europe)"), _T("ejimse"), _T("1994"), _T("Interplay"), NULL, NULL },
{ _T("8d2594a2b7ffdab49a457103d81f1ac62bec3caa"), _T("Earthworm Jim: Special Edition (USA) (RE)"), _T("ejimseu"), _T("1995"), _T("Interplay"), NULL, NULL },
{ _T("c7eea590618e785f36ddbe16742dd899075365e0"), _T("Ecco the Dolphin"), _T("ecco"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("c7eea590618e785f36ddbe16742dd899075365e0"), _T("Ecco the Dolphin (Australia, Europe)"), _T("ecco"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("38cda1b9f209b7c19aad8a9e335cbbce8d7bb621"), _T("Ecco the Dolphin (USA)"), _T("eccou"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("361ec55d8552b079ac24608def9fd451a52a8d3d"), _T("Ecco the Dolphin CD (Japan) (Disc 1) (Ecco the Dolphin)"), _T("eccoj"), _T("1995"), _T("Sega"), _T("eccoj"), NULL },
{ _T("6948692bf3c731a6bc46489128d16a7cca8fc697"), _T("Ecco the Dolphin CD (Japan) (Disc 2) (Ecco the Dolphin II)"), _T("eccojd2"), _T("1995"), _T("Sega"), _T("eccoj"), NULL },
{ _T("1703ba26d3c3c512e662ee8baee7029f2c0c1a46"), _T("Ecco: The Tides of Time (Europe) (En,Fr,De,Es)"), _T("ecco2"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("a5f68860f202ba84919e9107b24570f8b973a789"), _T("Ecco: The Tides of Time (USA)"), _T("ecco2u"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("8d9a8643b46594df66eee47c37afc238c644ec4b"), _T("Ecco: The Tides of Time (USA) (Alt)"), _T("ecco2ua"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("8d9a8643b46594df66eee47c37afc238c644ec4b"), _T("Ecco: The Tides of Time (USA)"), _T("ecco2u"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("a5f68860f202ba84919e9107b24570f8b973a789"), _T("Ecco: The Tides of Time (USA) (Alt)"), _T("ecco2ua"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("e4e321944cc3b3e5d80456d039b6196df78e6fc0"), _T("Egawa Suguru no Super League CD (Japan)"), _T("supleag"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("5daa90ffeed773cae9a0672c222c0599b566761a"), _T("ESPN Baseball Tonight (Europe)"), _T("espnbb"), _T("1994"), _T("Sony Imagesoft"), NULL, _T("E") },
{ _T("5daa90ffeed773cae9a0672c222c0599b566761a"), _T("ESPN Baseball Tonight (USA)"), _T("espnbbu"), _T("1994"), _T("Sony Imagesoft"), NULL, _T("U") },
@@ -133,7 +134,7 @@ static sega_cd_game segacd_games[] = {
{ _T("6879baa4280326c14b42a23084b19ab375aadf0f"), _T("ESPN NBA Hangtime '95 (USA)"), _T("espnnba"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("d5ed4b7909ba3d3cdaaf33eb6e1796a5c42e0a99"), _T("ESPN Sunday Night NFL (USA)"), _T("espnnfl"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("39d31245d7c70c1c7c8671fb7a9f8e178f3ab4d7"), _T("Eternal Champions: Challenge from the Dark Side (Europe)"), _T("eternalc"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("9569a577c09c18a884def68e44e29ad151b56516"), _T("Eternal Champions: Challenge from the Dark Side (Europe) (Beta)"), _T("eternalchampionsedemo"), _T(""), _T(""), NULL, NULL },
{ _T("9569a577c09c18a884def68e44e29ad151b56516"), _T("Eternal Champions: Challenge from the Dark Side (Europe) (Beta) (1995-06-09)"), _T("eternalchampionsedemo"), _T(""), _T(""), NULL, NULL },
{ _T("e8bc3f8b2d9e01e330294a9e066f9541a00c76a8"), _T("Eternal Champions: Challenge from the Dark Side (USA)"), _T("eternalcu"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("766e8cc9cf47a973dc14cfcadf2a9c0c402a0202"), _T("Eye of the Beholder (Europe)"), _T("eyeofthebeholdere"), _T(""), _T(""), NULL, NULL },
{ _T("0f3ffc10bea11f642b670da114e4494b39c05369"), _T("Eye of the Beholder (Japan)"), _T("eyeofthebeholderj"), _T(""), _T(""), NULL, NULL },
@@ -144,36 +145,38 @@ static sega_cd_game segacd_games[] = {
{ _T("c100eb912c1d6df8a0e63d45a0ea2c8de574d88e"), _T("Fahrenheit (Japan)"), _T("fahrenhej"), _T("1995"), _T("Sega"), NULL, _T("J") },
{ _T("c100eb912c1d6df8a0e63d45a0ea2c8de574d88e"), _T("Fahrenheit (USA) (Disc 1) (Key Disc) (Sega CD)"), _T("fahrenheu"), _T("1995"), _T("Sega"), NULL, _T("U") },
{ _T("50a166330dda151740cdd63117c9c624b750acf5"), _T("Fatal Fury Special (Europe)"), _T("fatfursp"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("86dc3d6397f6abd1d771ad6787f91b96c83b1f13"), _T("Fatal Fury Special (Europe) (Beta)"), _T("fatfurspd"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("89882dfac58a268656c6245928ef127c6facb160"), _T("Fatal Fury Special (Europe) (Demo)"), _T("fatfurspd_2"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("86dc3d6397f6abd1d771ad6787f91b96c83b1f13"), _T("Fatal Fury Special (Europe) (Beta) (1995-02-23)"), _T("fatfurspd_2"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("89882dfac58a268656c6245928ef127c6facb160"), _T("Fatal Fury Special (Europe) (Demo)"), _T("fatfurspd"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("e426a020a250f39423061850304815ec08d5c2cf"), _T("Fatal Fury Special (USA)"), _T("fatfurspu"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("6ba844f9f2232d877558d5639d7a7d878173b6de"), _T("FIFA International Soccer (USA)"), _T("fifau"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
{ _T("dfb7e281dd991670e6c85c9520334ea5d885669e"), _T("FIFA International Soccer: Championship Edition (Europe)"), _T("fifa"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
{ _T("6ba844f9f2232d877558d5639d7a7d878173b6de"), _T("FIFA International Soccer (USA) (En,Fr,De,Es)"), _T("fifau"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
{ _T("a26ed2acdbd8006689918add3c162347735eb77e"), _T("FIFA International Soccer: Championship Edition (Europe) (Demo)"), _T("fifada"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
{ _T("db3d7ac20c359cdadb268a9d9500dd4b57200333"), _T("FIFA International Soccer: Championship Edition (Europe) (Demo) (Alt)"), _T("fifada_2"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
{ _T("dfb7e281dd991670e6c85c9520334ea5d885669e"), _T("FIFA International Soccer: Championship Edition (Europe) (En,Fr,De,Es)"), _T("fifa"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
{ _T("47d8d9b0c562360b8834620fc8c50968e35c9c40"), _T("Final Fight CD (Europe)"), _T("ffightcd"), _T("1993"), _T("Sega"), NULL, _T("E") },
{ _T("317dd2e47b97027a617646c75c2e26e4796eb61b"), _T("Final Fight CD (Japan)"), _T("ffightcdj"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("0f488921515882aedc4dfc1d7ae429af6c2ba5e6"), _T("Final Fight CD (USA)"), _T("ffightcdu"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("47d8d9b0c562360b8834620fc8c50968e35c9c40"), _T("Final Fight CD (USA)"), _T("ffightcdu_2"), _T("1993"), _T("Sega"), NULL, _T("U") },
{ _T("0df5c5597414e377fae089620edb97d79882a68d"), _T("Flashback (Europe) (Demo)"), _T("flashbackedemo"), _T(""), _T(""), NULL, NULL },
{ _T("84e40fa2eb9d563cf2e0662c39f81fff58a7eb30"), _T("Flashback: The Quest for Identity (USA)"), _T("flashb"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("1f39b2137d3b216abc35b61a66df354b25927a60"), _T("Flink (Europe)"), _T("flink"), _T("1994"), _T("Psygnosis ~ Sony Electronic Publishing"), NULL, NULL },
{ _T("1a2b36298d3445d1a20d4c1977db6b2972c66954"), _T("Flink (USA)"), _T("flinku"), _T("1994"), _T("Vic Tokai"), NULL, NULL },
{ _T("1f39b2137d3b216abc35b61a66df354b25927a60"), _T("Flink (Europe) (En,Fr,De,Es,Nl)"), _T("flink"), _T("1994"), _T("Psygnosis ~ Sony Electronic Publishing"), NULL, NULL },
{ _T("1a2b36298d3445d1a20d4c1977db6b2972c66954"), _T("Flink (USA) (En,Fr,De,Es,Nl)"), _T("flinku"), _T("1994"), _T("Vic Tokai"), NULL, NULL },
{ _T("549fcdaa3b618a66e3c7a45157f3863572a14d96"), _T("Formula One World Championship: Beyond the Limit (Europe)"), _T("f1btl"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("3372ad258989df6b66077ebeb2e63997cf5449fe"), _T("Formula One World Championship: Beyond the Limit (USA)"), _T("f1btlu"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("a14822f7ab49e3bc0e04fc9f88ed71ee0842aa42"), _T("Fresh Cleaner (Japan)"), _T("freshcleanerj"), _T(""), _T(""), NULL, NULL },
{ _T("867f652717c2c81aaef0231ccb08db5756b15093"), _T("Game no Kandume Vol. 1 (Japan)"), _T("gamenokandumevolj"), _T(""), _T(""), NULL, NULL },
{ _T("248da11119fb294866aab702495dc17c37429ab5"), _T("Game no Kandume Vol. 2 (Japan)"), _T("gamenokandumevolj_2"), _T(""), _T(""), NULL, NULL },
{ _T("867f652717c2c81aaef0231ccb08db5756b15093"), _T("Game no Kanzume Vol. 1 (Japan)"), _T("gamenk1"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("248da11119fb294866aab702495dc17c37429ab5"), _T("Game no Kanzume Vol. 2 (Japan)"), _T("gamenk2"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("1bae3393315954e1754e2d9186de1a3e2dc26b4f"), _T("Garou Densetsu Special (Japan)"), _T("garousp"), _T("1995"), _T("Victor Entertainment"), NULL, NULL },
{ _T("40b0dfdaa2d6201218bfd6c65024fe841938d015"), _T("Genei Toshi: Illusion City (Japan)"), _T("geneitoshiillusij"), _T(""), _T(""), NULL, NULL },
{ _T("40b0dfdaa2d6201218bfd6c65024fe841938d015"), _T("Gen'ei Toshi: Illusion City (Japan)"), _T("geneitoshiillusij"), _T(""), _T(""), NULL, NULL },
{ _T("451ca8f229efb867adacc464137edae49f2cbe78"), _T("Ground Zero Texas (Europe) (Disc 1)"), _T("gztexas"), _T("1993"), _T("Sony Imagesoft"), _T("gztexas"), NULL },
{ _T("40b5093739c83ceac1d6e21db23a0a8a9b026007"), _T("Ground Zero Texas (Europe) (Disc 2)"), _T("gztexasd2"), _T("1993"), _T("Sony Imagesoft"), _T("gztexas"), NULL },
{ _T("36696963c249312e0cfe15b857ca7dc208a00ef2"), _T("Ground Zero Texas (USA) (Disc 1)"), _T("gztexasu"), _T("1993"), _T("Sony Imagesoft"), _T("gztexasu"), NULL },
{ _T("49d4c19f47eb030cb485b6c3e9732b7c6ce7f3b9"), _T("Ground Zero Texas (USA) (Disc 2)"), _T("gztexasud2"), _T("1993"), _T("Sony Imagesoft"), _T("gztexasu"), NULL },
{ _T("bdaf8dc597e10acdb16bb60f21b0bb2b3b03b973"), _T("Gyuwambler Jiko Chuushinha 2: Gekitou! Tokyo Mahjongland Hen (Japan)"), _T("gyuwamblerjikochj"), _T(""), _T(""), NULL, NULL },
{ _T("bdaf8dc597e10acdb16bb60f21b0bb2b3b03b973"), _T("Gyuwambler Jiko Chuushinha 2: Gekitou! Tokyo Mahjongland-hen (Japan)"), _T("gyuwamblerjikochj"), _T(""), _T(""), NULL, NULL },
{ _T("7100dc76031b550ab1980c627b9a44e68d295313"), _T("Heart of the Alien: Out of This World Parts I and II (USA) (RE)"), _T("hota"), _T("1994"), _T("Virgin Interactive"), NULL, NULL },
{ _T("6df14676d27acf0ca18062d4a1c5190bdfca48f9"), _T("Heavenly Symphony: Formula One World Championship 1993 (Japan)"), _T("heavenly"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("ab1d717765393a72d49c69186f0305da858d5750"), _T("Heavenly Symphony: Formula One World Championship 1993 (Japan) (Demo)"), _T("heavenlydemo"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("4cece2a63516f787f71f6e6795a7ec0188315e61"), _T("Heavy Nova (Japan)"), _T("heavynov"), _T("1991"), _T("Micronet"), NULL, NULL },
{ _T("97722584c8457e4684e52d8294bfaab030c45f41"), _T("Heavy Nova (Japan) (Beta) (1991-11-02)"), _T("heavynovp"), _T("1991"), _T("Micronet"), NULL, NULL },
{ _T("f4c82d9c153632c8257a9947cc629c5f7d709b0f"), _T("Heimdall (Japan)"), _T("heimdallj"), _T("1994"), _T("Victor Entertainment"), NULL, NULL },
{ _T("8d615d094dd59865020774ed3c9c805cccde9bd8"), _T("Heimdall (USA)"), _T("heimdall"), _T("1994"), _T("JVC"), NULL, NULL },
{ _T("427c87b7e5dd7f7342b3b62d0129d3afd839e0d0"), _T("Hook (Europe)"), _T("hook"), _T("1993"), _T("Sony Imagesoft"), NULL, NULL },
@@ -188,8 +191,8 @@ static sega_cd_game segacd_games[] = {
{ _T("46293450b3c3d79d05f159dde7679ba981e3802b"), _T("Jangou World Cup (Japan)"), _T("jangouwc"), _T("1993"), _T("Victor Entertainment"), NULL, NULL },
{ _T("dbc93bc93bbe6bde009801c2bcc868841dbda41c"), _T("Jeopardy! (USA)"), _T("jeopardy"), _T("1993"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("1d7a04734c958cee98a878392ff28d9f08d65177"), _T("Joe Montana's NFL Football (USA)"), _T("joemont"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("a316ec14ee47c21725bafc3aa91f83f859ccf958"), _T("Jurassic Park"), _T("jparkg"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("7e7d5c5150a8e0714f5fdf764480087f04c64da9"), _T("Jurassic Park (Europe)"), _T("jpark"), _T("1993"), _T("Sega"), NULL, _T("E") },
{ _T("a316ec14ee47c21725bafc3aa91f83f859ccf958"), _T("Jurassic Park (France, Germany, Spain)"), _T("jparkg"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("7e7d5c5150a8e0714f5fdf764480087f04c64da9"), _T("Jurassic Park (Japan)"), _T("jparkj"), _T("1994"), _T("Sega"), NULL, _T("J") },
{ _T("7e7d5c5150a8e0714f5fdf764480087f04c64da9"), _T("Jurassic Park (USA) (RE)"), _T("jparku"), _T("1994"), _T("Sega"), NULL, _T("U") },
{ _T("bb07ce5c106a85160ea61f418e29d272db12b809"), _T("Kamen Rider ZO (Japan)"), _T("kamenrzoj"), _T("1994"), _T("Toei Animation"), NULL, NULL },
@@ -197,7 +200,7 @@ static sega_cd_game segacd_games[] = {
{ _T("59d2733685318ff6742189bf71b0c0638e5cb675"), _T("Keio Flying Squadron (Europe) (Demo)"), _T("keiod"), _T("1994"), _T("JVC"), NULL, NULL },
{ _T("4c77e0b81a72aeb763c80dfa168a7700f39ab21f"), _T("Keio Flying Squadron (USA)"), _T("keiofsu"), _T("1994"), _T("JVC / Victor Entertainment"), NULL, NULL },
{ _T("4a5906448b61961d3a010fe97a360e6edc842f6e"), _T("Keiou Yuugekitai (Japan)"), _T("keioj"), _T("1993"), _T("Victor Entertainment"), NULL, NULL },
{ _T("84b08fe7eaeed788ba45687e895bd9e891e72481"), _T("Keiou Yuugekitai (Japan) (Sample)"), _T("keiouyuugekitaijdemo"), _T(""), _T(""), NULL, NULL },
{ _T("84b08fe7eaeed788ba45687e895bd9e891e72481"), _T("Keiou Yuugekitai (Japan) (Demo)"), _T("keiojdemo"), _T("1993"), _T("Victor Entertainment"), NULL, NULL },
{ _T("1264a3a2691eec90008b5ae65bc873835535e413"), _T("Kids on Site (Europe) (RE-1)"), _T("kidssite"), _T("1994"), _T("Digital Pictures"), NULL, NULL },
{ _T("ce61f672979c8f58a4b05ad6301141854727d5d8"), _T("Kids on Site (USA)"), _T("kidssiteu"), _T("1994"), _T("Digital Pictures"), NULL, NULL },
{ _T("1f97712d4d422bacd7e15319a2cd6471e794e589"), _T("The Lawnmower Man (Europe)"), _T("lawnmowermane"), _T(""), _T(""), NULL, NULL },
@@ -210,7 +213,9 @@ static sega_cd_game segacd_games[] = {
{ _T("2ba5afd924b142257beb1e37130ceaf53ddf3ee0"), _T("Lethal Enforcers II: Gun Fighters (Europe) (Demo)"), _T("le2d"), _T("1994"), _T("Konami"), NULL, NULL },
{ _T("2d410cc25610d050212181755734b7dcf93ce608"), _T("Lethal Enforcers II: Gun Fighters (USA)"), _T("le2u"), _T("1994"), _T("Konami"), NULL, _T("U") },
{ _T("2d410cc25610d050212181755734b7dcf93ce608"), _T("Lethal Enforcers II: The Western (Japan)"), _T("le2j"), _T("1994"), _T("Konami"), NULL, _T("J") },
{ _T("b2ad4e77c4c844ae1775a28cef1a9b0853a67652"), _T("Links: The Challenge of Golf (USA) (RE)"), _T("links"), _T("1994"), _T("Virgin Interactive"), NULL, NULL },
{ _T("1789de3ab282fa1de48673763d0580c42cfa4832"), _T("Links: The Challenge of Golf (USA)"), _T("links"), _T("1994"), _T("Virgin Interactive"), NULL, NULL },
{ _T("b2ad4e77c4c844ae1775a28cef1a9b0853a67652"), _T("Links: The Challenge of Golf (USA) (RE)"), _T("links_2"), _T("1994"), _T("Virgin Interactive"), NULL, NULL },
{ _T("8f96f6d88b282bc6af11950b1398289b48495025"), _T("Loadstar: The Legend of Tully Bodine (USA) (Beta)"), _T("loadstarp"), _T("1994"), _T("Rocket Science Games"), NULL, NULL },
{ _T("a20951a0a2de1c2134ffe4e3988034939ba19e12"), _T("Loadstar: The Legend of Tully Bodine (USA, Brazil)"), _T("loadstarthelegenbu"), _T(""), _T(""), NULL, NULL },
{ _T("6d07f7c7fa7118fa632e385e972b04fb243d74a0"), _T("Lords of Thunder (Europe)"), _T("lordthun"), _T("1995"), _T("Hudson Soft"), NULL, NULL },
{ _T("440ba0ca0f53795b7359b3ff2493d5a139cfcd23"), _T("Lords of Thunder (USA)"), _T("lordthunu"), _T("1995"), _T("Sega"), NULL, NULL },
@@ -224,12 +229,13 @@ static sega_cd_game segacd_games[] = {
{ _T("97cc865f90fe0c048525495db637466604acd653"), _T("Mahou no Shoujo: Silky Lip (Japan)"), _T("silkylip"), _T("1992"), _T("Nihon Telenet"), NULL, NULL },
{ _T("aec5fbb80511660bf31e65ccf593420adf86b1e3"), _T("Make My Video: INXS (Europe)"), _T("makemyvideoinxse"), _T(""), _T(""), NULL, NULL },
{ _T("2ec2523dbeafa58c75b7d2fe0cf7502bc12f51d7"), _T("Make My Video: INXS (USA)"), _T("makemyvideoinxsu"), _T(""), _T(""), NULL, NULL },
{ _T("3343b98850e90e57864f5439df9c7242f5a604b8"), _T("Make My Video: INXS (USA) (Beta)"), _T("makemyvideoinxsudemo"), _T(""), _T(""), NULL, NULL },
{ _T("3343b98850e90e57864f5439df9c7242f5a604b8"), _T("Make My Video: INXS (USA) (Beta) (1992-12-15)"), _T("makemyvideoinxsudemo"), _T(""), _T(""), NULL, NULL },
{ _T("e5a19ba281e1df54bd730e7a8d1d24774f3e6295"), _T("Make My Video: Kris Kross (Europe)"), _T("makemyvideokriske"), _T(""), _T(""), NULL, NULL },
{ _T("b9e6c9f9991f92bbe3c57ac4542be8d2727ea90b"), _T("Make My Video: Kris Kross (USA)"), _T("makemyvideokrisku"), _T(""), _T(""), NULL, NULL },
{ _T("32d448f9a1e7fc6c6ff392d7ea99b2a7121206d4"), _T("Make My Video: Marky Mark and the Funky Bunch (USA)"), _T("makemyvideomarkyu"), _T(""), _T(""), NULL, NULL },
{ _T("86409eee6165ad568df1bad1345f9a20fcf1d44f"), _T("Make My Video: Marky Mark and the Funky Bunch (USA) (Beta)"), _T("makemyvideomarkyudemo"), _T(""), _T(""), NULL, NULL },
{ _T("86409eee6165ad568df1bad1345f9a20fcf1d44f"), _T("Make My Video: Marky Mark and the Funky Bunch (USA) (Beta) (1992-12-11)"), _T("makemyvideomarkyudemo"), _T(""), _T(""), NULL, NULL },
{ _T("0123e92d112263a2a97c6044a51f2f0a67ff43f4"), _T("Mansion of Hidden Souls (USA)"), _T("mansion"), _T("1994"), _T("Vic Tokai"), NULL, NULL },
{ _T("125d66f66caa1d5d0824f20f49840047695a776d"), _T("Marko (USA) (Unl)"), _T("markou"), _T(""), _T(""), NULL, NULL },
{ _T("7c148f5d8f3d1c80e6cc63252c4dc24f5653ccc5"), _T("Marko's Magic Football (Europe) (En,Fr,De,Es)"), _T("marko"), _T("1994"), _T("Domark"), NULL, NULL },
{ _T("2e7fccd428e6a1f0f9641e28833075a90d618bed"), _T("Mary Shelley's Frankenstein (USA)"), _T("franken"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("bcfc9d1b32c8e8a790f02ee43268fc21b108010a"), _T("The Masked Rider: Kamen Rider ZO (USA)"), _T("maskedriderkamenu"), _T(""), _T(""), NULL, NULL },
@@ -245,6 +251,7 @@ static sega_cd_game segacd_games[] = {
{ _T("08382c66462c9138d764758946c830aa0db932a0"), _T("Midnight Raiders (Europe)"), _T("midnight"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("e328ece39f0884a59233ce87b687841e035c2ba3"), _T("Midnight Raiders (USA)"), _T("midnightu"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("bd8fa64afeea1b4edf618c53fecd12fa7b438025"), _T("Might and Magic III: Isles of Terra (Japan)"), _T("mightmg3"), _T("1993"), _T("CRI"), NULL, NULL },
{ _T("e20b9d38e9afb222b6a30b3c803ff7f172e45b54"), _T("Mighty Mighty Missile (USA) (Unl)"), _T("mmm"), _T("2005"), _T("Good Deal Games"), NULL, NULL },
{ _T("295f7d7b72d0fdbda86b11911cac568467c03523"), _T("Mighty Morphin Power Rangers (Europe)"), _T("mmpr"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("bd43907f9db5917e058b4b6476bc13507c08c3a8"), _T("Mighty Morphin Power Rangers (USA)"), _T("mmpru"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("93d3cc18fab3d65ccb5d722b8139fd230b5d55b0"), _T("Mortal Kombat (Europe)"), _T("mk"), _T("1994"), _T("Arena"), NULL, NULL },
@@ -265,26 +272,25 @@ static sega_cd_game segacd_games[] = {
{ _T("85395da883468e4b3ab625f6033252aa4f7dbe25"), _T("Night Trap (France) (Disc 2)"), _T("ntrapfrd2"), _T("1993"), _T("Sega"), _T("ntrapfr"), NULL },
{ _T("386f88d0c3ff909ec353d1384aae960303070246"), _T("Night Trap (Japan)"), _T("ntrapj"), _T("1993"), _T("Sega"), _T("ntrapj"), NULL },
{ _T("31581e735d8d8ca87f6d53d2cb0b04068361d828"), _T("Night Trap (Japan) (Disc 2)"), _T("ntrapjd2"), _T("1993"), _T("Sega"), _T("ntrapj"), NULL },
{ _T("1c1c2ec5e5dfc51c6be763279c26f4d0af0d9861"), _T("Night Trap (USA) (Disc 1)"), _T("ntrapua"), _T("1992"), _T("Sega"), _T("ntrapu"), NULL },
{ _T("33bc92d2523cd1676cfc70271388114892ae4e73"), _T("Night Trap (USA) (Disc 1) (Alt)"), _T("ntrapub"), _T("1992"), _T("Sega"), _T("ntrapu"), NULL },
{ _T("1c1c2ec5e5dfc51c6be763279c26f4d0af0d9861"), _T("Night Trap (USA) (Disc 1)"), _T("ntrapua"), _T("1992"), _T("Sega"), _T("ntrapua"), NULL },
{ _T("33bc92d2523cd1676cfc70271388114892ae4e73"), _T("Night Trap (USA) (Disc 1) (Alt)"), _T("ntrapub"), _T("1992"), _T("Sega"), _T("ntrapua"), NULL },
{ _T("923141d242ce6f0da6e56722f26105c785cd757b"), _T("Night Trap (USA) (Disc 1) (Rerelease)"), _T("ntrapu"), _T("1995"), _T("Sega"), _T("ntrapu"), NULL },
{ _T("1f39a0322eb05cb9f20334e781cb61962ed4c557"), _T("Night Trap (USA) (Disc 2)"), _T("ntrapubd2"), _T("1992"), _T("Sega"), _T("ntrapu"), NULL },
{ _T("1f39a0322eb05cb9f20334e781cb61962ed4c557"), _T("Night Trap (USA) (Disc 2)"), _T("ntrapuad2"), _T("1992"), _T("Sega"), _T("ntrapua"), NULL },
{ _T("16ff9ec4ee3e2a82445d5da0e800049457c0719e"), _T("Night Trap (USA) (Disc 2) (Rerelease)"), _T("ntrapud2"), _T("1995"), _T("Sega"), _T("ntrapu"), NULL },
{ _T("81e19871a73033ef75474ac23644f09f1a2ff698"), _T("The Ninja Warriors (Japan)"), _T("ninjawar"), _T("1993"), _T("Taito"), NULL, NULL },
{ _T("ddd676d995bf38f5383ee35d886df3c69d61d32a"), _T("Nobunaga no Yabou: Haouden (Japan)"), _T("nobuhao"), _T("1994"), _T("Koei"), NULL, NULL },
{ _T("0115b721926c28143173056b6d7cf103ced9dabc"), _T("Nostalgia 1907 (Japan)"), _T("nost1907"), _T("1991"), _T("Takeru"), NULL, NULL },
{ _T("0115b721926c28143173056b6d7cf103ced9dabc"), _T("Nostalgia 1907: In North Atlantic Sea (Japan)"), _T("nostalgia1907innj"), _T(""), _T(""), NULL, NULL },
{ _T("f8d9bfe7be41b250b0ee5dca3970fd6673e2e534"), _T("Note! Color Mechanica (USA) (Unl)"), _T("colormec"), _T("2014"), _T("Good Deal Games"), NULL, NULL },
{ _T("1f7845e5b4be11243ad0512ea53760142e2fa302"), _T("Novastorm (Europe)"), _T("novastm"), _T("1994"), _T("Psygnosis ~ Sony Electronic Publishing"), NULL, _T("E") },
{ _T("3ae3b71f321029a1085a489fa175cdab19d0f7da"), _T("Novastorm (Europe) (Demo)"), _T("novastmd"), _T("1994"), _T("Psygnosis ~ Sony Electronic Publishing"), NULL, NULL },
{ _T("1f7845e5b4be11243ad0512ea53760142e2fa302"), _T("Novastorm (USA)"), _T("novastmu"), _T("1994"), _T("Psygnosis"), NULL, _T("U") },
{ _T("3b2a1f2a4220ace48f5ec8a052f2bd07dc7b578a"), _T("Panic! (USA) (RE)"), _T("panic"), _T("1994"), _T("Data East"), NULL, NULL },
{ _T("7cc38e237f4ca4f65dcf3a7d1789dfeb206508d8"), _T("Pier Solar and the Great Architects Enhanced Soundtrack Disc (USA)"), _T("psgaesd"), _T("2010"), _T("WaterMelon"), NULL, NULL },
{ _T("3e61fe0b115323d87648d1ec8e359f702d14f9a7"), _T("Pitfall: The Mayan Adventure (Europe)"), _T("pitfall"), _T("1994"), _T("Activision"), NULL, NULL },
{ _T("3198da79d87714acf0b449e6b330729ec3176794"), _T("Pitfall: The Mayan Adventure (Europe) (Demo)"), _T("pitfalld"), _T("1994"), _T("Activision"), NULL, NULL },
{ _T("3ad99f62597b6ea0bfd838330f67ee39c9cd7632"), _T("Pitfall: The Mayan Adventure (USA)"), _T("pitfallu"), _T("1995"), _T("Activision"), NULL, NULL },
{ _T("d6be94d5b4baed8dfc20874ea56e325be5376836"), _T("Popful Mail (Japan)"), _T("popmailj"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("18abd761fde7d6cab22b1b897f32fee1fd9275da"), _T("Popful Mail (Japan) (Sample)"), _T("popfulmailjdemo"), _T(""), _T(""), NULL, NULL },
{ _T("cd151ad92c2696719aec26b6fd40bed2766f01e4"), _T("Popful Mail (USA) (RE)"), _T("popmail"), _T("1995"), _T("Working Designs"), NULL, NULL },
{ _T("d6be94d5b4baed8dfc20874ea56e325be5376836"), _T("PopfulMail (Japan)"), _T("popmailj"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("18abd761fde7d6cab22b1b897f32fee1fd9275da"), _T("PopfulMail (Japan) (Demo)"), _T("popmailjdemo"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("6b1faf29d3cedada0fc7e14719750be538a2d1bc"), _T("Power Factory (Europe)"), _T("powerfactorye"), _T(""), _T(""), NULL, NULL },
{ _T("454c244144a89dfab44fca2638f892dbcef2880a"), _T("Power Factory (USA)"), _T("powerfactoryu"), _T(""), _T(""), NULL, NULL },
{ _T("ad44dfe91843b6b3a627f1dad4aae138a2611665"), _T("Power Monger (USA)"), _T("pmongeru"), _T("1994"), _T("Electronic Arts"), NULL, NULL },
@@ -301,6 +307,7 @@ static sega_cd_game segacd_games[] = {
{ _T("9e2d1c9b2265f5be0e4f5890170f688dcb4071a8"), _T("Prize Fighter (USA) (Disc 2)"), _T("prizefigud2"), _T("1994"), _T("Sega"), _T("prizefigu"), NULL },
{ _T("d4db626dc3f03debd75c462521cb19f55e91fa22"), _T("Pro Yakyuu Super League CD (Japan)"), _T("proyakcd"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("a576b473685c02175db351ce9c05547588cd3491"), _T("Psychic Detective Series Vol. 3: Aya (Japan)"), _T("psychic3"), _T("1993"), _T("Data West"), NULL, NULL },
{ _T("c0aa08b806ef378de9b0e3abc0852b3942db1e00"), _T("Psychic Detective Series Vol. 3: Aya (Japan) (Demo)"), _T("psychic3demo"), _T("1993"), _T("Data West"), NULL, NULL },
{ _T("1dbdc347fdb5899dc7c1cf75c03160313e51954c"), _T("Psychic Detective Series Vol. 4: Orgel (Japan)"), _T("psychic4"), _T("1993"), _T("Data West"), NULL, NULL },
{ _T("7a60aa738d6ae7416389ed840737cf63e4c63715"), _T("Psygnosis Christmas Sampler (Europe)"), _T("psygnosischristme"), _T(""), _T(""), NULL, NULL },
{ _T("3524a597d3920914804b4fb72f80f3bfcc89b457"), _T("Puggsy (Europe)"), _T("puggsy"), _T("1993"), _T("Psygnosis"), NULL, NULL },
@@ -312,7 +319,7 @@ static sega_cd_game segacd_games[] = {
{ _T("a2ec4d367b923319458f0e1b47164a90a784fedc"), _T("Ranma 1-2: Byakuranaika (Japan)"), _T("ranma"), _T("1993"), _T("NCS"), NULL, NULL },
{ _T("a509df8e8e6a2ba6fbc7d634d271f8e17763e82e"), _T("RDF: Global Conflict (USA)"), _T("rdf"), _T("1994"), _T("Absolute Entertainment"), NULL, NULL },
{ _T("ac846cadedac65c570d5fd18bcf40ffeb4e0d5e7"), _T("Record of Lodoss War (Japan)"), _T("recordoflodosswaj"), _T(""), _T(""), NULL, NULL },
{ _T("a1fa1b3dcb1fd5c267f42ecf82d3817aa35bddce"), _T("Record of Lodoss War (Japan) (Sample)"), _T("recordoflodosswajdemo"), _T(""), _T(""), NULL, NULL },
{ _T("a1fa1b3dcb1fd5c267f42ecf82d3817aa35bddce"), _T("Record of Lodoss War (Japan) (Demo)"), _T("recordoflodosswajdemo"), _T(""), _T(""), NULL, NULL },
{ _T("db982afcdc4c38f5707882efd0f1f3a3d53e1dbe"), _T("Revenge of the Ninja (USA)"), _T("revninja"), _T("1993"), _T("Renovation"), NULL, NULL },
{ _T("29eed168b1d05e9368b619aa1e7220e0918b9323"), _T("Revengers of Vengeance (USA)"), _T("revoveng"), _T("1994"), _T("Extreme Entertainment Group"), NULL, NULL },
{ _T("e435f17c90ec4dfd04c9e6dcd453a1be61640774"), _T("Rise of the Dragon (USA)"), _T("risedrg"), _T("1994"), _T("Dynamix"), NULL, NULL },
@@ -327,9 +334,12 @@ static sega_cd_game segacd_games[] = {
{ _T("65c1f3d9297ca23e527707873f1a00e3d245e7f7"), _T("Samurai Shodown (Europe)"), _T("samsho"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("def81960114a6cd2747e3a98e930a3c1c0d3780f"), _T("Samurai Shodown (Europe) (Demo)"), _T("samshod"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("518dcf2b3bf0c6289c9bc2e3b07c4857fef8229d"), _T("Samurai Shodown (USA) (RE)"), _T("samshou"), _T("1995"), _T("JVC"), NULL, NULL },
{ _T("d07c08ce71bc0bd6e85971519702979a46e2724e"), _T("The San Diego Zoo Presents... The Animals! (Europe)"), _T("sandiegozoopresee"), _T(""), _T(""), NULL, NULL },
{ _T("36942e79d4a2791f312dbf70f9a143f1dc48a2b1"), _T("The San Diego Zoo Presents... The Animals! (USA)"), _T("animalsu"), _T("1994"), _T("The Software Toolworks"), NULL, NULL },
{ _T("602914b320b85ab3afadaad67fdbeb8804891631"), _T("Sangokushi III (Japan)"), _T("sangoku3"), _T("1993"), _T("Koei"), NULL, NULL },
{ _T("946ff872b544084b2fc9541065fb2c43774f3168"), _T("The Secret of Monkey Island (Japan)"), _T("secretofmonkeyisj"), _T(""), _T(""), NULL, NULL },
{ _T("4833eab2743bc1db0d9f73f01d1950607a6b761d"), _T("The Secret of Monkey Island (USA) (RE)"), _T("monkey"), _T("1992"), _T("JVC"), NULL, NULL },
{ _T("4833eab2743bc1db0d9f73f01d1950607a6b761d"), _T("The Secret of Monkey Island (USA)"), _T("monkeya"), _T("2020"), _T("Limited Run Games"), NULL, NULL },
{ _T("ca00b6c2c2ddcc7e87c2925798d2256d52809240"), _T("Sega CD Demo (Japan) (Proto) (1992-05-29)"), _T("segacddemojdemo"), _T(""), _T(""), NULL, NULL },
{ _T("b1501f3b9c538724beea6079f9d0457dc78b37e8"), _T("Sega Classic Arcade Collection: Limited Edition (Japan)"), _T("segaacj"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("e40fc66b768b3488b147d800db6db71373f99ddf"), _T("Sega Classics Arcade Collection (USA) (4-in-1) (RE)"), _T("segaac4"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("5a5d8116472f40c3669d618f27b37c58a955f5bf"), _T("Sega Classics Arcade Collection (USA) (4-in-1) (RE2)"), _T("segaac4_2"), _T("1992"), _T("Sega"), NULL, NULL },
@@ -338,8 +348,8 @@ static sega_cd_game segacd_games[] = {
{ _T("ffdbfbffad16fd78fa6456316b32b2fddf1aa564"), _T("Seima Densetsu 3x3 Eyes (Japan, Korea)"), _T("seimadensetsu3x3jk"), _T(""), _T(""), NULL, NULL },
{ _T("6e18f8a56ba0ff8ac6e55118bbcf64bc761b0bef"), _T("Seirei Shinseiki: Fhey Area (Japan)"), _T("fheyarea"), _T("1992"), _T("Wolf Team"), NULL, NULL },
{ _T("d181151fa79f05c6ade1e282221794abc33e9483"), _T("Sengoku Denshou (Japan)"), _T("sengoku"), _T("1993"), _T("Sammy"), NULL, NULL },
{ _T("35435c8a955d084599c663fc89dfe1050aa3ca8c"), _T("Sensible Soccer (Europe)"), _T("sensible"), _T("1993"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("d63d8a66c30694b237608a8e219ca95a47ca7e8b"), _T("Sensible Soccer (Europe) (Demo)"), _T("sensibled"), _T(""), _T("&lt;unknown&gt;"), NULL, NULL },
{ _T("d63d8a66c30694b237608a8e219ca95a47ca7e8b"), _T("Sensible Soccer (Europe) (Demo)"), _T("sensibled"), _T(""), _T(""), NULL, NULL },
{ _T("35435c8a955d084599c663fc89dfe1050aa3ca8c"), _T("Sensible Soccer (Europe) (En,Fr,De,It)"), _T("sensible"), _T("1993"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("255a1684cde886f50dcee42c4411f02ad61701e7"), _T("Sewer Shark (Europe)"), _T("sshark"), _T("1992"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("5ccbe7c58f92480486b0a6bccebd546f15a8fcb7"), _T("Sewer Shark (USA)"), _T("ssharkub"), _T("1992"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("52525362f70f558b9ab08fe81f1bc6f5a118935f"), _T("Sewer Shark (USA) (Not for Resale)"), _T("ssharku"), _T("1992"), _T("Sega"), NULL, NULL },
@@ -348,17 +358,18 @@ static sega_cd_game segacd_games[] = {
{ _T("ceebf00b8b842032430176bb8a4b5fbacd7edd66"), _T("Shadowrun (Japan)"), _T("shadowrn"), _T("1996"), _T("Compile"), NULL, NULL },
{ _T("5000f31271237aef35aa064cd9cfc1c4574e7b99"), _T("Sherlock Holmes: Consulting Detective (Europe)"), _T("sherlockholmescoe"), _T(""), _T(""), NULL, NULL },
{ _T("2cf5559939fe04fc23190921b1cd2306a3ee6650"), _T("Sherlock Holmes: Consulting Detective (USA)"), _T("holmesu"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("00b9adcd5464da7b278be88bcbe33b47746e5592"), _T("Sherlock Holmes: Consulting Detective Vol. II (Europe) (Disc 1)"), _T("holmes2"), _T("1993"), _T("Sega"), _T("holmes2"), _T("E") },
{ _T("cf36f00ec29042516bd09ed172e2c1eca7726ff1"), _T("Sherlock Holmes: Consulting Detective Vol. II (Europe) (Disc 2)"), _T("holmes2d2"), _T("1993"), _T("Sega"), _T("holmes2"), _T("E") },
{ _T("00b9adcd5464da7b278be88bcbe33b47746e5592"), _T("Sherlock Holmes: Consulting Detective Vol. II (USA) (Disc 1)"), _T("holmes2u"), _T("1993"), _T("Sega"), _T("holmes2u"), _T("U") },
{ _T("cf36f00ec29042516bd09ed172e2c1eca7726ff1"), _T("Sherlock Holmes: Consulting Detective Vol. II (USA) (Disc 2)"), _T("holmes2ud2"), _T("1993"), _T("Sega"), _T("holmes2u"), _T("U") },
{ _T("00b9adcd5464da7b278be88bcbe33b47746e5592"), _T("Sherlock Holmes: Consulting Detective - Vol. II (Europe) (Disc 1)"), _T("holmes2"), _T("1993"), _T("Sega"), _T("holmes2"), _T("E") },
{ _T("cf36f00ec29042516bd09ed172e2c1eca7726ff1"), _T("Sherlock Holmes: Consulting Detective - Vol. II (Europe) (Disc 2)"), _T("holmes2d2"), _T("1993"), _T("Sega"), _T("holmes2"), _T("E") },
{ _T("00b9adcd5464da7b278be88bcbe33b47746e5592"), _T("Sherlock Holmes: Consulting Detective - Vol. II (USA) (Disc 1)"), _T("holmes2u"), _T("1993"), _T("Sega"), _T("holmes2u"), _T("U") },
{ _T("cf36f00ec29042516bd09ed172e2c1eca7726ff1"), _T("Sherlock Holmes: Consulting Detective - Vol. II (USA) (Disc 2)"), _T("holmes2ud2"), _T("1993"), _T("Sega"), _T("holmes2u"), _T("U") },
{ _T("27e9603dc6d78e1e75351ba52a42412c0983eeed"), _T("Shin Megami Tensei (Japan)"), _T("shinmt"), _T("1994"), _T("SIMS"), NULL, NULL },
{ _T("8a7b955ca4031e3b585b7023266a83eb759ce5d4"), _T("Shining Force CD (Europe)"), _T("shinfrce"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("d4db48f2ea62d9e981e027a76d8c5c8408adc31e"), _T("Shining Force CD (Japan)"), _T("shinfrcej"), _T("1994"), _T("Sega"), NULL, _T("J") },
{ _T("d4db48f2ea62d9e981e027a76d8c5c8408adc31e"), _T("Shining Force CD (USA)"), _T("shinfrceu"), _T("1994"), _T("Sega"), NULL, _T("U") },
{ _T("b983aa7bde92064d369d0590b3719eb59514a6f2"), _T("Silpheed (Europe)"), _T("silpheed"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("a5af0b8224b5c48f0641a490892460d07d8acb5f"), _T("Silpheed (Japan)"), _T("silpheedj"), _T("1993"), _T("Game Arts"), NULL, NULL },
{ _T("3c686655dace841e4ae274c26b6c8d9e88904c9f"), _T("Silpheed (Japan) (Sample)"), _T("silpheedjdemo"), _T(""), _T(""), NULL, NULL },
{ _T("3c686655dace841e4ae274c26b6c8d9e88904c9f"), _T("Silpheed (Japan) (Demo)"), _T("silpheedjdemo"), _T("1993"), _T("Game Arts"), NULL, NULL },
{ _T("61683f5f7e5836c71ae1428ca3557e097ff6414e"), _T("Silpheed (Japan) (Demo) (Reprint)"), _T("silpheedjdemo_2"), _T(""), _T(""), NULL, NULL },
{ _T("5315f70bcf687dfb638fed512f275e3556649cbf"), _T("Silpheed (USA)"), _T("silpheedu"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("92c83c9a0206f3180abbc1a3a01787172489bad9"), _T("SimEarth (Japan)"), _T("simearth"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("c00115ecf256911ca8f590141d7aaada78b37afb"), _T("Sing!! Sega Game Music Presented by B. B. Queens (Japan)"), _T("sing"), _T("1992"), _T("Sega / BMG Victor"), NULL, NULL },
@@ -370,7 +381,7 @@ static sega_cd_game segacd_games[] = {
{ _T("50bae30a4383b8e9ac94bd93c8848d2cd9c8c65b"), _T("Slam City with Scottie Pippen (USA) (Disc 1) (Fingers)"), _T("slamcityu"), _T("1994"), _T("Digital Pictures"), _T("slamcityu"), _T("U") },
{ _T("40f79bed6c4c82490bb3a9ff019870a87bb7b8a6"), _T("Slam City with Scottie Pippen (USA) (Disc 3) (Mad Dog)"), _T("slamcityud3"), _T("1994"), _T("Digital Pictures"), _T("slamcityu"), _T("U") },
{ _T("4f10e5bc46ec15eaeccdaf065bac94d6370a8c8c"), _T("Slam City with Scottie Pippen (USA) (Disc 4) (Smash)"), _T("slamcityud4"), _T("1994"), _T("Digital Pictures"), _T("slamcityu"), _T("U") },
{ _T("43435233b5d35ab02cba569c46bdf6ac35aab1f9"), _T("Slam City with Scottie Pippen (USA, Brazil) (Disc 2) (Juice) (RE-1)"), _T("slamcitywithscotbud2"), _T(""), _T(""), _T("slamcityu"), NULL },
{ _T("43435233b5d35ab02cba569c46bdf6ac35aab1f9"), _T("Slam City with Scottie Pippen (USA, Brazil) (Disc 2) (Juice) (RE-1)"), _T("slamcityud2"), _T("1994"), _T("Digital Pictures"), _T("slamcityu"), NULL },
{ _T("41249a29cac07c270ab72498ccf87844b3c20fa3"), _T("The Smurfs (Europe) (En,Fr,De,Es,It)"), _T("smurfs"), _T("1994"), _T("Infogrames"), NULL, NULL },
{ _T("aa5754f0b0a2a612a822f24aaefaac8808819cda"), _T("Snatcher (Europe)"), _T("snatcher"), _T("1994"), _T("Konami"), NULL, _T("E") },
{ _T("aa5754f0b0a2a612a822f24aaefaac8808819cda"), _T("Snatcher (USA)"), _T("snatcheru"), _T("1994"), _T("Konami"), NULL, _T("U") },
@@ -378,13 +389,17 @@ static sega_cd_game segacd_games[] = {
{ _T("24430f670598ae3c523b00922b0d69939869b693"), _T("The Software Toolworks' Star Wars Chess (USA)"), _T("swchessu"), _T("1994"), _T("The Software Toolworks"), NULL, NULL },
{ _T("7c391316df9cb6b22d1537393ce711a94f036130"), _T("Sol-Feace (Europe)"), _T("solfeacee"), _T("1992"), _T("Wolf Team"), NULL, NULL },
{ _T("865627c9a77421176e5e2e1ec6f1314be679875b"), _T("Sol-Feace (Japan)"), _T("solfeacej"), _T("1991"), _T("Wolf Team"), NULL, NULL },
{ _T("673eeb3f5870b1031115ef2437d5a83fc768efe0"), _T("Sol-Feace (USA) (RE2)"), _T("solfeaceu"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("3e9321f11b4580098fb14e24cabc024c1beda02c"), _T("Sol-Feace (USA) (RE)"), _T("solfeaceu"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("673eeb3f5870b1031115ef2437d5a83fc768efe0"), _T("Sol-Feace (USA) (RE2)"), _T("solfeaceu_2"), _T("1992"), _T("Sega"), NULL, NULL },
{ _T("05b1b32fec74a9b44247566c88d210a5050875c5"), _T("Sonic CD (Europe)"), _T("soniccd"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("29763f133e8e31dee6f82d1033b43f6307ebbf82"), _T("Sonic CD (Japan) (Demo)"), _T("soniccdjdemo"), _T(""), _T(""), NULL, NULL },
{ _T("29763f133e8e31dee6f82d1033b43f6307ebbf82"), _T("Sonic CD (Europe) (Beta) (1993-08-06)"), _T("soniccdedemo"), _T(""), _T(""), NULL, _T("E") },
{ _T("42b17c4ac8282e12fa99435a5224f81a205fa68e"), _T("Sonic CD (USA)"), _T("soniccdu"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("d1714e695ce411baaf1a4afd92f953c2e51fbacf"), _T("Sonic CD (USA) (Beta) (1993-10-12)"), _T("soniccdudemo"), _T(""), _T(""), NULL, NULL },
{ _T("6f7331eaccce6f1964c5750a331c9e5fbe10b7f7"), _T("Sonic MegaMix (USA) (Unl)"), _T("sonicmegamixu"), _T(""), _T(""), NULL, NULL },
{ _T("dbf33466865b5f22cb584399f0346dfc8fa01c17"), _T("Sonic The Hedgehog CD (Japan)"), _T("soniccdj"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("46e8b61834276a56dd10ad079a6a2ec4201df19c"), _T("Sonic The Hedgehog CD (Japan) (Beta)"), _T("sonicthehedgehogjdemo"), _T(""), _T(""), NULL, NULL },
{ _T("dbf33466865b5f22cb584399f0346dfc8fa01c17"), _T("Sonic the Hedgehog CD (Japan)"), _T("soniccdj"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("5227da86cc47765a2f040ed2004e7b6cc2a3ef86"), _T("Sonic the Hedgehog CD (Japan) (Beta) (1993-07-12)"), _T("sonicthehedgehogjdemo"), _T(""), _T(""), NULL, NULL },
{ _T("46e8b61834276a56dd10ad079a6a2ec4201df19c"), _T("Sonic the Hedgehog CD (Japan) (Beta) (1993-08-01)"), _T("sonicthehedgehogjdemo_2"), _T(""), _T(""), NULL, NULL },
{ _T("29763f133e8e31dee6f82d1033b43f6307ebbf82"), _T("Sonic the Hedgehog CD (Japan) (Demo)"), _T("soniccdjdemo"), _T("1993"), _T("Sega"), NULL, _T("J") },
{ _T("1299f08dee1b42aff7ee9b7c268bddf7dac5d4e1"), _T("SoulStar (Europe) (Demo)"), _T("soulstard"), _T("1994"), _T("Core"), NULL, NULL },
{ _T("bca3875c2c2caa36f8b9ff4b59bade1360cdcf45"), _T("SoulStar (Europe) (En,Fr,De)"), _T("soulstar"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("869a8a07c0f6ef173d36c0e8eb04013a8dd35e1c"), _T("SoulStar (Japan)"), _T("soulstarj"), _T("1994"), _T("Victor Entertainment"), NULL, NULL },
@@ -407,18 +422,19 @@ static sega_cd_game segacd_games[] = {
{ _T("dc840d2a2d35610f743327e5893d4e2875a97855"), _T("Supreme Warrior (Europe) (Disc 1)"), _T("supremewarriore"), _T(""), _T(""), _T("supremewarriore"), NULL },
{ _T("a774697f71bfa3f717bd5ca28df89cdf360851f1"), _T("Supreme Warrior (Europe) (Disc 2)"), _T("supremewarriored2"), _T(""), _T(""), _T("supremewarriore"), NULL },
{ _T("34952b68379537bec8756f3112d938ac6d1f5855"), _T("Supreme Warrior (USA) (Disc 1) (Fire & Earth)"), _T("supremewu"), _T("1994"), _T("Digital Pictures"), _T("supremewu"), NULL },
{ _T("c4a8b10ffdce67b6ca16b55479923246fe7a232c"), _T("Supreme Warrior (USA) (Disc 1) (Fire & Earth) (Alt)"), _T("supremewu_2"), _T("1994"), _T("Digital Pictures"), _T("supremewu"), NULL },
{ _T("245db9acc6f0e8f7798b9e845815fef08a18f7b6"), _T("Supreme Warrior (USA) (Disc 2) (Wind & Fang Tu)"), _T("supremewud2"), _T("1994"), _T("Digital Pictures"), _T("supremewu"), NULL },
{ _T("bde4ac4d865c16197e0ec49388d0638905edfcfc"), _T("Surgical Strike (Europe)"), _T("surgical"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("89b0d360b2b274a18185b066075f303227629d17"), _T("Surgical Strike (Japan)"), _T("surgicalstrikej"), _T(""), _T(""), NULL, NULL },
{ _T("786c8ba2e2e3de6c634b645f211b2e2f9918b0b3"), _T("Surgical Strike (USA)"), _T("surgicalu"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("da1eaf1c71cc866d1f8f4d2e2675fab161389701"), _T("Surgical Strike (USA) (Alt)"), _T("surgicalu_2"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("595536825edd891e28d66a470475e52af69e5b51"), _T("Switch (Japan)"), _T("switch"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("ff28be42248a670b0cb7a0128e410f06d03dba7a"), _T("Syndicate (Europe)"), _T("syndicat"), _T("1995"), _T("Domark"), NULL, NULL },
{ _T("ff28be42248a670b0cb7a0128e410f06d03dba7a"), _T("Syndicate (Europe) (En,Fr,De)"), _T("syndicat"), _T("1995"), _T("Domark"), NULL, NULL },
{ _T("5bd8f3727a6284ff5d65b45d3b70f9fff5903d46"), _T("Tenbu Mega CD Special (Japan)"), _T("tenbu"), _T("1992"), _T("Wolf Team"), NULL, NULL },
{ _T("41d61bde3d95cfbe2df5d2bc93c7064d8e290813"), _T("Tenkafubu: Eiyuutachi no Houkou (Japan)"), _T("tenkafub"), _T("1991"), _T("Game Arts"), NULL, NULL },
{ _T("1f9a8f44106ef819c77a89df448b72447a505518"), _T("The Terminator (Europe)"), _T("termintr"), _T("1994"), _T("Virgin Interactive"), NULL, NULL },
{ _T("075cd7dd44480ab167a47bed063ef7d9bf604b63"), _T("The Terminator (USA)"), _T("termintru"), _T("1993"), _T("Virgin Games"), NULL, NULL },
{ _T("d7e3b28e6693b9abc9f3d1be613a3cfe11b7a55c"), _T("Theme Park (Europe)"), _T("themeprk"), _T("1995"), _T("Domark"), NULL, NULL },
{ _T("d7e3b28e6693b9abc9f3d1be613a3cfe11b7a55c"), _T("Theme Park (Europe) (En,Fr,De,Es)"), _T("themeprk"), _T("1995"), _T("Domark"), NULL, NULL },
{ _T("9591ae2dac9677de88568ea72333e5ed5f77eae5"), _T("Third World War (USA)"), _T("3rdww"), _T("1994"), _T("Extreme Entertainment Group"), NULL, NULL },
{ _T("f329c09c3eb9ffcfd0187fd2774d9366a31cd97a"), _T("Thunder Storm FX (Japan)"), _T("tstormfx"), _T("1992"), _T("Wolf Team"), NULL, NULL },
{ _T("4e30eecdd3d718674cdc9cbf676d25187d00bf16"), _T("Thunderhawk (Europe) (Demo)"), _T("thawkda"), _T("1993"), _T("Core"), NULL, NULL },
@@ -430,9 +446,9 @@ static sega_cd_game segacd_games[] = {
{ _T("87eeb1b8bf490e62abf3839b8232c6e76057db36"), _T("Time Gal (Japan)"), _T("timegalj"), _T("1992"), _T("Wolf Team"), NULL, NULL },
{ _T("e6f07908fdb779641db32aa09cfd07e11743fca6"), _T("Time Gal (USA)"), _T("timegalu"), _T("1993"), _T("Renovation"), NULL, NULL },
{ _T("20cc572659730daf71986c4c629f2fb292ab2033"), _T("TimeCop (Europe) (Demo)"), _T("timecop"), _T(""), _T("JVC Musical Industries"), NULL, NULL },
{ _T("49d4b43ab7fd245064d3eaabe190b23ba8b2fec6"), _T("Tomcat Alley"), _T("tcatalyfr"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("54fa0596587898481eed9e71e6ef94d8005559b7"), _T("Tomcat Alley (Australia)"), _T("tomcatalleyau"), _T(""), _T(""), NULL, _T("E") },
{ _T("486584d2e8ac80b316dfd175a43ec6abd59e1bdb"), _T("Tomcat Alley (Europe)"), _T("tcataly"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("49d4b43ab7fd245064d3eaabe190b23ba8b2fec6"), _T("Tomcat Alley (France, Germany)"), _T("tcatalyfr"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("3c941c8f0e5379280023f9b207e2ddee5dc07255"), _T("Tomcat Alley (Japan)"), _T("tcatalyj"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("62ca3df728c53dcc6fce58625aa532df7185bb21"), _T("Tomcat Alley (Spain)"), _T("tcatalysp"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("19c15bf80d5ddc5620d97e438e66d25023911d8f"), _T("Tomcat Alley (USA)"), _T("tcatalyua"), _T("1994"), _T("Sega"), NULL, NULL },
@@ -440,17 +456,19 @@ static sega_cd_game segacd_games[] = {
{ _T("dca27cc3ac0122c6c2be7b961103c7a7e05ea4cd"), _T("Trivial Pursuit (USA)"), _T("trivial"), _T("1993"), _T("Parker Brothers"), NULL, NULL },
{ _T("29d0fcef8e9fabc5d0400705a40c97424c8c49e3"), _T("Ultraverse Prime (USA)"), _T("prime"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("edc6abac46281b4d41cdbfa0604ef0d1fb04c783"), _T("Urusei Yatsura: Dear My Friends (Japan)"), _T("uruseiya"), _T("1994"), _T("Game Arts"), NULL, NULL },
{ _T("17e396663449a4c6e46f7c2219dee26d4286f138"), _T("Urusei Yatsura: Dear My Friends (Japan) (Sample)"), _T("uruseiyatsuradeajdemo"), _T(""), _T(""), NULL, NULL },
{ _T("17e396663449a4c6e46f7c2219dee26d4286f138"), _T("Urusei Yatsura: Dear My Friends (Japan) (Demo)"), _T("uruseiyademo"), _T("1994"), _T("Game Arts"), NULL, NULL },
{ _T("1c3a2dc5c0264b7ac77ef29ab4654fdbddfd1811"), _T("Vay (USA)"), _T("vay"), _T("1994"), _T("Working Designs"), NULL, NULL },
{ _T("73a49dc74128430de2d401e2ed5e2b4aa37f60ac"), _T("Vay: Ryuusei no Yoroi (Japan)"), _T("vayj"), _T("1993"), _T("SIMS"), NULL, NULL },
{ _T("1b3f1bc2315db082cd39a27c717fe8c4bf6eac8e"), _T("Wakusei Woodstock: Funky Horror Band (Japan)"), _T("funkband"), _T("1991"), _T("Sega"), NULL, NULL },
{ _T("64e8b0f0ae983ab4f2cd1b54d16715f19e37c309"), _T("Warau Salesman (Japan)"), _T("salesman"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("dc191f2315f8f7421a22733ecda7a283eb433abd"), _T("What Is X'Eye Multi Entertainment System (USA)"), _T("wixeye"), _T("1994"), _T("JVC"), NULL, NULL },
{ _T("612ddea2d57c1f61d607e73f785ced9f6ca52276"), _T("Wheel of Fortune (USA)"), _T("wheelfor"), _T("1994"), _T("Sony Imagesoft"), NULL, NULL },
{ _T("1bc9f0f9d2c9326d1fc64cb69ca026a394ed37eb"), _T("Who Shot Johnny Rock (USA)"), _T("whoshot"), _T("1994"), _T("American Laser Games"), NULL, NULL },
{ _T("dd722c78e4846bb96b887a3688cc0e8d6d143c20"), _T("Wild Woody (USA)"), _T("wildwood"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("c090c14cd4359c5ffc325f1a8708cb6ceb031285"), _T("Wing Commander (Japan)"), _T("wingcommj"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("b5d46f0b6d13eb43d2927f1aae222665a3cb8185"), _T("Wing Commander (USA)"), _T("wingcomm"), _T("1993"), _T("Electronic Arts"), NULL, NULL },
{ _T("30e225303375f82ce2b369002419ef8778824754"), _T("Winning Post (Japan)"), _T("winpost"), _T("1993"), _T("Koei"), NULL, NULL },
{ _T("f9f9c817d130a174f7d3a95cd49c6147db2938d3"), _T("WireHead (Europe) (Beta) (1995-09-12)"), _T("wireheadp"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("7c43620942c55c1c11953a7f035f116088c5326a"), _T("WireHead (USA)"), _T("wirehead"), _T("1995"), _T("Sega"), NULL, NULL },
{ _T("523f5657ec4e656775738956853c3ee61d73e667"), _T("Wolfchild (Europe)"), _T("wolfchld"), _T("1993"), _T("Sega"), NULL, _T("E") },
{ _T("523f5657ec4e656775738956853c3ee61d73e667"), _T("Wolfchild (Japan)"), _T("wolfchldj"), _T("1993"), _T("Victor Entertainment"), NULL, _T("J") },
@@ -458,13 +476,13 @@ static sega_cd_game segacd_games[] = {
{ _T("449bea86ff6dca160c8e67ff052ef364a59d8150"), _T("Wonder Dog (Europe)"), _T("wonderdg"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("489784fe95dafc029f613882bc4cb263f815928a"), _T("Wonder Dog (Japan)"), _T("wonderdgj"), _T("1992"), _T("Victor Entertainment"), NULL, NULL },
{ _T("ebbd732dbc8becfdd688c781b75a78df8de24296"), _T("Wonder Dog (USA) (RE)"), _T("wonderdgu"), _T("1992"), _T("JVC"), NULL, NULL },
{ _T("e45bc07eaad018d3cd06bce5aa0050e68b6cdf09"), _T("WonderMega Collection (Japan)"), _T("wondermegacollecj"), _T(""), _T(""), NULL, NULL },
{ _T("ffaf14e6a878dd112d260940cbcd061e0956ddaa"), _T("World Cup USA '94 (Europe)"), _T("wcup94"), _T("1994"), _T("U.S. Gold"), NULL, NULL },
{ _T("cfa81766f45e1870280dd7a8c9bb2dcac8bad77c"), _T("World Cup USA '94 (USA)"), _T("wcup94u"), _T("1994"), _T("U.S. Gold"), NULL, NULL },
{ _T("e45bc07eaad018d3cd06bce5aa0050e68b6cdf09"), _T("WonderMega Collection (Japan) (Rev 2)"), _T("wmcolb"), _T("1992"), _T("Victor Entertainment"), NULL, NULL },
{ _T("ffaf14e6a878dd112d260940cbcd061e0956ddaa"), _T("World Cup USA '94 (Europe) (En,Fr,De,Es,It,Nl,Pt,Sv)"), _T("wcup94"), _T("1994"), _T("U.S. Gold"), NULL, NULL },
{ _T("cfa81766f45e1870280dd7a8c9bb2dcac8bad77c"), _T("World Cup USA '94 (USA) (En,Fr,De,Es,It,Nl,Pt,Sv)"), _T("wcup94u"), _T("1994"), _T("U.S. Gold"), NULL, NULL },
{ _T("a8c45121c93d8801242b633c64090a9391c2dc86"), _T("WWF Mania Tour: WWF - Rage in the Cage (Japan)"), _T("wwfmaniatourwwfrj"), _T(""), _T(""), NULL, NULL },
{ _T("193f38da76acdd535e02becbebb8e517027230a5"), _T("WWF: Rage in the Cage (Europe)"), _T("ragecage"), _T("1993"), _T("Arena"), NULL, NULL },
{ _T("09fd4dca728a358fcd2d438aab572f8ded2aab0e"), _T("WWF: Rage in the Cage (USA)"), _T("ragecageu"), _T("1993"), _T("Arena"), NULL, NULL },
{ _T("0d3033d25234806489bd6c4b78868b39ab0624d9"), _T("Yumemi Mystery Mansion"), _T("mystmans"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("0d3033d25234806489bd6c4b78868b39ab0624d9"), _T("Yumemi Mystery Mansion (Australia, Europe)"), _T("mystmans"), _T("1994"), _T("Sega"), NULL, NULL },
{ _T("d5d403c12ef7ec458415ac4af6acc4dd8c1ffc43"), _T("Yumemi Yakata no Monogatari (Japan)"), _T("yumemi"), _T("1993"), _T("Sega"), NULL, NULL },
{ _T("136e437966c986f29824113d6cadf1d99b762526"), _T("Yumimi Mix (Japan)"), _T("yumimimx"), _T("1993"), _T("Game Arts"), NULL, NULL },
};
+12 -4
View File
@@ -5,11 +5,19 @@
// same search as BurnHDDOpen(): <hdd path><romset>/ then <hdd path><parent>/
static bool BzipHDDPresent()
{
char* szName = NULL;
if (BurnDrvGetHDDName(&szName, 0, 0) || szName == NULL) return true;
// every disk that isn't optional
for (INT32 i = 0; i < 0x100; i++) {
char* szName = NULL;
struct BurnHDDInfo hdi;
memset(&hdi, 0, sizeof(hdi));
if (BurnDrvGetHDDInfo(&hdi, i) || BurnDrvGetHDDName(&szName, i, 0) || szName == NULL) break;
if (hdi.nFlags & BRF_OPT) continue;
TCHAR szPath[MAX_PATH];
return !BurnHDDGetPath(0, _T(".chd"), szPath) || !BurnHDDGetPath(0, _T(".img"), szPath);
TCHAR szPath[MAX_PATH];
if (BurnHDDGetPath(i, _T(".chd"), szPath) && BurnHDDGetPath(i, _T(".img"), szPath)) return false;
}
return true;
}
INT32 nBzipError = 0; // non-zero if there is a problem with the opened romset
+2
View File
@@ -1,6 +1,8 @@
#ifndef MIPS3_INTF
#define MIPS3_INTF
#include <stdint.h>
// MIPS III (R4600) interpreter, little-endian guest.
// Addresses given to Mips3MapMemory/Mips3MapHandler and passed to handlers are physical.
+1
View File
@@ -12,6 +12,7 @@
// an upright, correctly-pitched buffer to the host, rotating when needed.
// Subject to the FB Neo license (see src/license.txt).
#include <stdint.h>
#include "burner.h"
#include "fbheadless.h"