Sync d_megadrive.cpp with MESS 0.148u1 (added ability for extra drivers, restoring sks1, sks2, sks3)

This commit is contained in:
Barry Harris 2013-02-11 13:45:25 +00:00
parent a29e96885e
commit fe6eee82b6
4 changed files with 2444 additions and 2399 deletions

View File

@ -463,7 +463,7 @@ void IpsApplyPatches(UINT8* base, char* rom_name);
#define HARDWARE_SEGA_MEGADRIVE_PCB_REALTEC (35)
#define HARDWARE_SEGA_MEGADRIVE_PCB_MC_SUP19IN1 (36)
#define HARDWARE_SEGA_MEGADRIVE_PCB_MC_SUP15IN1 (37)
#define HARDWARE_SEGA_MEGADRIVE_PCB_12IN1 (38)
#define HARDWARE_SEGA_MEGADRIVE_PCB_MC_12IN1 (38)
#define HARDWARE_SEGA_MEGADRIVE_PCB_TOPFIGHTER (39)
#define HARDWARE_SEGA_MEGADRIVE_PCB_POKEMON (40)
#define HARDWARE_SEGA_MEGADRIVE_PCB_POKEMON2 (41)

View File

@ -4147,7 +4147,7 @@ struct BurnDriver BurnDrvmd_barver = {
"md_barver", NULL, NULL, NULL, "199?",
"Barver Battle Saga - Tai Kong Zhan Shi (Chi)\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_barverRomInfo, md_barverRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -6505,7 +6505,7 @@ struct BurnDriver BurnDrvmd_cjfuweng = {
"md_cjfuweng", NULL, NULL, NULL, "199?",
"Chao Ji Da Fu Weng (Chi)\0", NULL, "Gametec?", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_cjfuwengRomInfo, md_cjfuwengRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -14047,7 +14047,7 @@ struct BurnDriver BurnDrvmd_hardbl95 = {
"md_hardbl95", NULL, NULL, NULL, "1995",
"HardBall '95 (USA)\0", NULL, "Accolade", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_hardbl95RomInfo, md_hardbl95RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -14065,7 +14065,7 @@ struct BurnDriver BurnDrvmd_hardbal3 = {
"md_hardbal3", NULL, NULL, NULL, "1993",
"HardBall III (USA)\0", NULL, "Accolade", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_hardbal3RomInfo, md_hardbal3RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -23489,16 +23489,34 @@ struct BurnDriver BurnDrvmd_pstar3j = {
};
// Phantasy Star - The End of the Millennium (USA)
static struct BurnRomInfo md_pstar4RomDesc[] = {
static struct BurnRomInfo md_pstar4uRomDesc[] = {
{ "phantasy star iv (usa).bin", 0x300000, 0xfe236442, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_pstar4u)
STD_ROM_FN(md_pstar4u)
struct BurnDriver BurnDrvmd_pstar4u = {
"md_pstar4u", "md_pstar4", NULL, NULL, "1994",
"Phantasy Star - The End of the Millennium (USA)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_pstar4uRomInfo, md_pstar4uRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Phantasy Star - The End of the Millennium (Euro)
static struct BurnRomInfo md_pstar4RomDesc[] = {
{ "phantasy star iv (euro).bin", 0x300000, 0x389c2968, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_pstar4)
STD_ROM_FN(md_pstar4)
struct BurnDriver BurnDrvmd_pstar4 = {
"md_pstar4", NULL, NULL, NULL, "1994",
"Phantasy Star - The End of the Millennium (USA)\0", NULL, "Sega", "Sega Megadrive",
"Phantasy Star - The End of the Millennium (Euro)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_pstar4RomInfo, md_pstar4RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
@ -23506,24 +23524,6 @@ struct BurnDriver BurnDrvmd_pstar4 = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Phantasy Star - The End of the Millennium (Euro)
static struct BurnRomInfo md_pstar4eRomDesc[] = {
{ "phantasy star iv (euro).bin", 0x300000, 0x389c2968, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_pstar4e)
STD_ROM_FN(md_pstar4e)
struct BurnDriver BurnDrvmd_pstar4e = {
"md_pstar4e", "md_pstar4", NULL, NULL, "1994",
"Phantasy Star - The End of the Millennium (Euro)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_pstar4eRomInfo, md_pstar4eRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Phantasy Star - Sennenki no Owari ni (Jpn)
static struct BurnRomInfo md_pstar4jRomDesc[] = {
{ "phantasy star - sennenki no owari ni (jpn).bin", 0x300000, 0xf0bfad42, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
@ -28063,6 +28063,7 @@ struct BurnDriver BurnDrvmd_ragnacenk = {
// Sonic & Knuckles (World)
static struct BurnRomInfo md_skRomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "mpr-16911-s.ic2", 0x040000, 0x4dcfd55c, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_300000 },
};
STD_ROM_PICK(md_sk)
@ -28276,45 +28277,6 @@ struct BurnDriver BurnDrvmd_skp03 = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Sonic & Knuckles + Sonic the Hedgehog (World)
static struct BurnRomInfo md_sks1RomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "mpr-13913.ic1", 0x080000, 0xf9394e97, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_200000 },
};
STD_ROM_PICK(md_sks1)
STD_ROM_FN(md_sks1)
struct BurnDriver BurnDrvmd_sks1 = {
"md_sks1", NULL, NULL, NULL, "199?",
"Sonic & Knuckles + Sonic the Hedgehog (World)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_sks1RomInfo, md_sks1RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Sonic & Knuckles + Sonic the Hedgehog 2 (World)
static struct BurnRomInfo md_sks2RomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "mpr-16911-s.ic2", 0x040000, 0x4dcfd55c, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_300000 },
{ "mpr-15000a.bin", 0x100000, 0x7b905383, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_200000 },
};
STD_ROM_PICK(md_sks2)
STD_ROM_FN(md_sks2)
struct BurnDriver BurnDrvmd_sks2 = {
"md_sks2", NULL, NULL, NULL, "199?",
"Sonic & Knuckles + Sonic the Hedgehog 2 (World)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_sks2RomInfo, md_sks2RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Knuckles in Sonic 2 (Prototype 0524, 19940527, 10.46)
static struct BurnRomInfo md_knucklpRomDesc[] = {
{ "knuckles in sonic 2 (prototype 0524 - may 27, 1994, 10.46).bin", 0x400000, 0x8878c1a8, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
@ -28324,30 +28286,11 @@ STD_ROM_PICK(md_knucklp)
STD_ROM_FN(md_knucklp)
struct BurnDriver BurnDrvmd_knucklp = {
"md_knucklp", "md_sks2", NULL, NULL, "199?",
"md_knucklp", NULL, NULL, NULL, "199?",
"Knuckles in Sonic 2 (Prototype 0524, 19940527, 10.46)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_knucklpRomInfo, md_knucklpRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Sonic & Knuckles + Sonic the Hedgehog 3 (World)
static struct BurnRomInfo md_sks3RomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "sonic the hedgehog 3 (usa).bin", 0x200000, 0x9bc192ce, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_200000 },
};
STD_ROM_PICK(md_sks3)
STD_ROM_FN(md_sks3)
struct BurnDriver BurnDrvmd_sks3 = {
"md_sks3", NULL, NULL, NULL, "199?",
"Sonic & Knuckles + Sonic the Hedgehog 3 (World)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_sks3RomInfo, md_sks3RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveGetZipName, md_knucklpRomInfo, md_knucklpRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
@ -28379,10 +28322,10 @@ STD_ROM_PICK(md_sonic3c)
STD_ROM_FN(md_sonic3c)
struct BurnDriver BurnDrvmd_sonic3c = {
"md_sonic3c", "md_sks3", NULL, NULL, "199?",
"md_sonic3c", NULL, NULL, NULL, "199?",
"Sonic 3C (Prototype 0408, 19940408, 17.29)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_FRAM, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_FRAM, GBF_MISC, 0,
MegadriveGetZipName, md_sonic3cRomInfo, md_sonic3cRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -28397,10 +28340,10 @@ STD_ROM_PICK(md_sonic3ca)
STD_ROM_FN(md_sonic3ca)
struct BurnDriver BurnDrvmd_sonic3ca = {
"md_sonic3ca", "md_sks3", NULL, NULL, "199?",
"md_sonic3ca", NULL, NULL, NULL, "199?",
"Sonic 3C (Prototype 0517, 19940517, 17.08)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_FRAM, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_FRAM, GBF_MISC, 0,
MegadriveGetZipName, md_sonic3caRomInfo, md_sonic3caRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -30980,9 +30923,9 @@ struct BurnDriver BurnDrvmd_sbtank = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Super Daisenryaku (Jpn)
// Super Daisenryaku (Jpn, Rev. 02)
static struct BurnRomInfo md_supdaisnRomDesc[] = {
{ "mpr-12477.bin", 0x080000, 0xd50a166f, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "mpr-12477a-h.ic1", 0x080000, 0x11645d6e, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_supdaisn)
@ -30990,7 +30933,7 @@ STD_ROM_FN(md_supdaisn)
struct BurnDriver BurnDrvmd_supdaisn = {
"md_supdaisn", NULL, NULL, NULL, "1989",
"Super Daisenryaku (Jpn)\0", NULL, "Sega", "Sega Megadrive",
"Super Daisenryaku (Jpn, Rev. 02)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_supdaisnRomInfo, md_supdaisnRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
@ -30998,6 +30941,24 @@ struct BurnDriver BurnDrvmd_supdaisn = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Super Daisenryaku (Jpn)
static struct BurnRomInfo md_supdaisnaRomDesc[] = {
{ "mpr-12477.ic1", 0x080000, 0xd50a166f, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_supdaisna)
STD_ROM_FN(md_supdaisna)
struct BurnDriver BurnDrvmd_supdaisna = {
"md_supdaisna", "md_supdaisn", NULL, NULL, "1989",
"Super Daisenryaku (Jpn)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SEGA_SRAM, GBF_MISC, 0,
MegadriveGetZipName, md_supdaisnaRomInfo, md_supdaisnaRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Super Fantasy Zone (Euro)
static struct BurnRomInfo md_sfzoneRomDesc[] = {
{ "mpr-15124.bin", 0x100000, 0x927975be, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
@ -38390,7 +38351,7 @@ struct BurnDriver BurnDrvmd_12in1 = {
"md_12in1", NULL, NULL, NULL, "199?",
"12 in 1\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_12IN1, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_MC_12IN1, GBF_MISC, 0,
MegadriveGetZipName, md_12in1RomInfo, md_12in1RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -38408,7 +38369,7 @@ struct BurnDriver BurnDrvmd_4in1pb = {
"md_4in1pb", NULL, NULL, NULL, "199?",
"4 in 1 (Pirate)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_12IN1, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_MC_12IN1, GBF_MISC, 0,
MegadriveGetZipName, md_4in1pbRomInfo, md_4in1pbRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -38504,7 +38465,7 @@ struct BurnDriver BurnDrvmd_funnywld = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Golden 10 in 1
// Golden 10 in 1 (Incomplete Dump)
static struct BurnRomInfo md_golden10RomDesc[] = {
{ "golden 10-in-1 (bad dump).bin", 0x100000, 0x4fa3f82b, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
@ -38514,9 +38475,9 @@ STD_ROM_FN(md_golden10)
struct BurnDriver BurnDrvmd_golden10 = {
"md_golden10", NULL, NULL, NULL, "199?",
"Golden 10 in 1\0", NULL, "<unlicensed>", "Sega Megadrive",
"Golden 10 in 1 (Incomplete Dump)\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_12IN1, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_MC_12IN1, GBF_MISC, 0,
MegadriveGetZipName, md_golden10RomInfo, md_golden10RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -38606,7 +38567,7 @@ struct BurnDriver BurnDrvmd_kof99a = {
"md_kof99a", "md_kof99", NULL, NULL, "199?",
"The King of Fighters '99 (Alt)\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_KOF99, GBF_MISC, 0,
MegadriveGetZipName, md_kof99aRomInfo, md_kof99aRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -38650,7 +38611,7 @@ struct BurnDriver BurnDrvmd_lionkin2 = {
// Lion King 3
static struct BurnRomInfo md_lionkin3RomDesc[] = {
{ "shi zi wang 3 - the lion king 3 (chi) (unl).bin", 0x200000, 0xc004219d, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "shi zi wang 3 - the lion king 3 (chi) (unl).bin", 0x200000, 0xc004219d, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 | SEGA_MD_ROM_RELOAD_200000_200000 },
};
STD_ROM_PICK(md_lionkin3)
@ -38768,7 +38729,7 @@ struct BurnDriver BurnDrvmd_soulblada = {
"md_soulblada", "md_soulblad", NULL, NULL, "199?",
"Soul Blade (Alt)\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_SOULBLAD, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_soulbladaRomInfo, md_soulbladaRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -38848,7 +38809,7 @@ struct BurnDriver BurnDrvmd_suprbubl = {
// Super Donkey Kong 99 (Protected)
static struct BurnRomInfo md_sdkong99RomDesc[] = {
{ "super donkey kong 99 (unl) (protected).bin", 0x300000, 0x43be4dd5, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "super donkey kong 99 (unl) (protected).bin", 0x300000, 0x43be4dd5, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 | SEGA_MD_ROM_RELOAD_100000_300000 },
};
STD_ROM_PICK(md_sdkong99)
@ -38866,7 +38827,7 @@ struct BurnDriver BurnDrvmd_sdkong99 = {
// Super King Kong 99
static struct BurnRomInfo md_skkong99RomDesc[] = {
{ "super king kong 99 (unl).bin", 0x200000, 0x413dfee2, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "super king kong 99 (unl).bin", 0x200000, 0x413dfee2, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 | SEGA_MD_ROM_RELOAD_200000_200000 },
};
STD_ROM_PICK(md_skkong99)
@ -38984,7 +38945,7 @@ struct BurnDriver BurnDrvmd_topf2k5 = {
"md_topf2k5", NULL, NULL, NULL, "199?",
"Top Fighter 2005\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE | HARDWARE_SEGA_MEGADRIVE_PCB_TOPFIGHTER, GBF_MISC, 0,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_topf2k5RomInfo, md_topf2k5RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
@ -39044,7 +39005,7 @@ struct BurnDriver BurnDrvmd_radicasf = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Chinese Fighter III (Chi, Alt)
// Chinese Fighter III (Chi, Unprotected?)
static struct BurnRomInfo md_chinf3aRomDesc[] = {
{ "chinese fighter iii (unl, alt).bin", 0x200000, 0x6f98247d, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
@ -39054,7 +39015,7 @@ STD_ROM_FN(md_chinf3a)
struct BurnDriver BurnDrvmd_chinf3a = {
"md_chinf3a", "md_chinf3", NULL, NULL, "199?",
"Chinese Fighter III (Chi, Alt)\0", NULL, "<unlicensed>", "Sega Megadrive",
"Chinese Fighter III (Chi, Unprotected?)\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_chinf3aRomInfo, md_chinf3aRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
@ -39062,7 +39023,7 @@ struct BurnDriver BurnDrvmd_chinf3a = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// The King of Fighters '98 (Pirate)
// K.O.F 98' (Unprotected?)
static struct BurnRomInfo md_kof98aRomDesc[] = {
{ "king of fighters '98, the (unl) (pirate).bin", 0x200000, 0xc79e1074, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
@ -39072,7 +39033,7 @@ STD_ROM_FN(md_kof98a)
struct BurnDriver BurnDrvmd_kof98a = {
"md_kof98a", "md_kof98", NULL, NULL, "199?",
"The King of Fighters '98 (Pirate)\0", NULL, "<unlicensed>", "Sega Megadrive",
"K.O.F 98' (Unprotected?)\0", NULL, "<unlicensed>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_kof98aRomInfo, md_kof98aRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
@ -39244,7 +39205,7 @@ struct BurnDriver BurnDrvmd_kof2k = {
// Lion King 3 (Alt?)
static struct BurnRomInfo md_lionkin3aRomDesc[] = {
{ "lion_king_3.bin", 0x200000, 0x87e86943, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "lion_king_3.bin", 0x200000, 0x87e86943, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 | SEGA_MD_ROM_RELOAD_200000_200000 },
};
STD_ROM_PICK(md_lionkin3a)
@ -40196,7 +40157,7 @@ struct BurnDriver BurnDrvmd_mario4 = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Super Mario World 64 (Unl)
// Super Mario World 64
static struct BurnRomInfo md_smario64RomDesc[] = {
{ "super mario world 64 (unl).bin", 0x100000, 0xe7ac4161, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
@ -40206,7 +40167,7 @@ STD_ROM_FN(md_smario64)
struct BurnDriver BurnDrvmd_smario64 = {
"md_smario64", NULL, NULL, NULL, "199?",
"Super Mario World 64 (Unl)\0", NULL, "<unknown>", "Sega Megadrive",
"Super Mario World 64\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_smario64RomInfo, md_smario64RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
@ -40214,6 +40175,24 @@ struct BurnDriver BurnDrvmd_smario64 = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Super Mario World 64 (Hacked Protection)
static struct BurnRomInfo md_smario64hRomDesc[] = {
{ "super mario world 64 (hacked).bin", 0x100000, 0xa20f98aa, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
};
STD_ROM_PICK(md_smario64h)
STD_ROM_FN(md_smario64h)
struct BurnDriver BurnDrvmd_smario64h = {
"md_smario64h", "md_smario64", NULL, NULL, "199?",
"Super Mario World 64 (Hacked Protection)\0", NULL, "<unknown>", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_smario64hRomInfo, md_smario64hRomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Metal Gear Solid (Rus)
static struct BurnRomInfo md_mgsRomDesc[] = {
{ "metal gear solid (unl).bin", 0x080000, 0xb38191eb, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
@ -41060,3 +41039,61 @@ struct BurnDriver BurnDrvmd_arttool = {
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Sonic & Knuckles + Sonic the Hedgehog (World)
static struct BurnRomInfo md_sks1RomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "mpr-13913.ic1", 0x080000, 0xf9394e97, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_200000 },
};
STD_ROM_PICK(md_sks1)
STD_ROM_FN(md_sks1)
struct BurnDriver BurnDrvmd_sks1 = {
"md_sks1", NULL, NULL, NULL, "199?",
"Sonic & Knuckles + Sonic the Hedgehog (World)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_sks1RomInfo, md_sks1RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Sonic & Knuckles + Sonic the Hedgehog 2 (World)
static struct BurnRomInfo md_sks2RomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "mpr-16911-s.ic2", 0x040000, 0x4dcfd55c, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_300000 },
{ "mpr-15000a.bin", 0x100000, 0x7b905383, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_200000 },
};
STD_ROM_PICK(md_sks2)
STD_ROM_FN(md_sks2)
struct BurnDriver BurnDrvmd_sks2 = {
"md_sks2", NULL, NULL, NULL, "199?",
"Sonic & Knuckles + Sonic the Hedgehog 2 (World)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_sks2RomInfo, md_sks2RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};
// Sonic & Knuckles + Sonic the Hedgehog 3 (World)
static struct BurnRomInfo md_sks3RomDesc[] = {
{ "mpr-16910-u.ic1", 0x200000, 0x0658f691, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_000000 },
{ "sonic the hedgehog 3 (usa).bin", 0x200000, 0x9bc192ce, BRF_PRG | SEGA_MD_ROM_LOAD16_WORD_SWAP | SEGA_MD_ROM_OFFS_200000 },
};
STD_ROM_PICK(md_sks3)
STD_ROM_FN(md_sks3)
struct BurnDriver BurnDrvmd_sks3 = {
"md_sks3", NULL, NULL, NULL, "199?",
"Sonic & Knuckles + Sonic the Hedgehog 3 (World)\0", NULL, "Sega", "Sega Megadrive",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY, 2, HARDWARE_SEGA_MEGADRIVE, GBF_MISC, 0,
MegadriveGetZipName, md_sks3RomInfo, md_sks3RomName, NULL, NULL, MegadriveInputInfo, MegadriveDIPInfo,
MegadriveInit, MegadriveExit, MegadriveFrame, NULL, MegadriveScan,
&bMegadriveRecalcPalette, 0x100, 320, 224, 4, 3
};

View File

@ -1357,16 +1357,14 @@ static INT32 MegadriveLoadRoms(bool bLoad)
for (i = 0; i < RomNum; i++) {
BurnDrvGetRomInfo(&ri, i);
switch (ri.nType & 0x0f) {
case SEGA_MD_ROM_OFFS_000000: Offset = 0x000000; break;
case SEGA_MD_ROM_OFFS_000001: Offset = 0x000001; break;
case SEGA_MD_ROM_OFFS_020000: Offset = 0x020000; break;
case SEGA_MD_ROM_OFFS_080000: Offset = 0x080000; break;
case SEGA_MD_ROM_OFFS_100000: Offset = 0x100000; break;
case SEGA_MD_ROM_OFFS_100001: Offset = 0x100001; break;
case SEGA_MD_ROM_OFFS_200000: Offset = 0x200000; break;
case SEGA_MD_ROM_OFFS_300000: Offset = 0x300000; break;
}
if ((ri.nType & SEGA_MD_ROM_OFFS_000000) == SEGA_MD_ROM_OFFS_000000) Offset = 0x000000;
if ((ri.nType & SEGA_MD_ROM_OFFS_000001) == SEGA_MD_ROM_OFFS_000001) Offset = 0x000001;
if ((ri.nType & SEGA_MD_ROM_OFFS_020000) == SEGA_MD_ROM_OFFS_020000) Offset = 0x020000;
if ((ri.nType & SEGA_MD_ROM_OFFS_080000) == SEGA_MD_ROM_OFFS_080000) Offset = 0x080000;
if ((ri.nType & SEGA_MD_ROM_OFFS_100000) == SEGA_MD_ROM_OFFS_100000) Offset = 0x100000;
if ((ri.nType & SEGA_MD_ROM_OFFS_100001) == SEGA_MD_ROM_OFFS_100001) Offset = 0x100001;
if ((ri.nType & SEGA_MD_ROM_OFFS_200000) == SEGA_MD_ROM_OFFS_200000) Offset = 0x200000;
if ((ri.nType & SEGA_MD_ROM_OFFS_300000) == SEGA_MD_ROM_OFFS_300000) Offset = 0x300000;
switch (ri.nType & 0xf0) {
case SEGA_MD_ROM_LOAD_NORMAL: {
@ -1392,6 +1390,14 @@ static INT32 MegadriveLoadRoms(bool bLoad)
break;
}
}
if ((ri.nType & SEGA_MD_ROM_RELOAD_200000_200000) == SEGA_MD_ROM_RELOAD_200000_200000) {
memcpy(RomMain + 0x200000, RomMain + 0x000000, 0x200000);
}
if ((ri.nType & SEGA_MD_ROM_RELOAD_100000_300000) == SEGA_MD_ROM_RELOAD_100000_300000) {
memcpy(RomMain + 0x300000, RomMain + 0x000000, 0x100000);
}
}
}
@ -2402,7 +2408,7 @@ static void SetupCustomCartridgeMappers()
SekClose();
}
if ((BurnDrvGetHardwareCode() & 0xff) == HARDWARE_SEGA_MEGADRIVE_PCB_12IN1) {
if ((BurnDrvGetHardwareCode() & 0xff) == HARDWARE_SEGA_MEGADRIVE_PCB_MC_12IN1) {
OriginalRom = (UINT8*)BurnMalloc(RomSize);
memcpy(OriginalRom, RomMain, RomSize);

View File

@ -10,6 +10,8 @@
#define SEGA_MD_ROM_OFFS_100001 0x06
#define SEGA_MD_ROM_OFFS_200000 0x07
#define SEGA_MD_ROM_OFFS_300000 0x08
#define SEGA_MD_ROM_RELOAD_200000_200000 0x09
#define SEGA_MD_ROM_RELOAD_100000_300000 0x0a
extern UINT8 MegadriveReset;
extern UINT8 bMegadriveRecalcPalette;