Move overrides out of some mappers

Move mapper-based overrides out and use ines-correct.h if possible. Affects the following mappers below:
- Move Cnrom database to ines-correct.h
- Mapper 201 update
- Mapper 91: Add Street Fighter III (Submapper 1) to ines-correct.h
- Add dipswitch notes to m237
- Update mapper9 (PC10 version of Mike Tyson's Punch-out)
This commit is contained in:
negativeExponent
2020-04-08 00:21:29 +08:00
parent 5df33af7dd
commit 53a43479f3
7 changed files with 35 additions and 31 deletions

View File

@@ -81,6 +81,12 @@ static void StateRestore(int version) {
}
void Mapper237_Init(CartInfo *info) {
/* The menu system used by this cart seems to be configurable as 4 different types:
* 0: 42-in-1
* 1: 5,000-in-1
* 2: 420-in-1
* 3: 10,000,000-in-1 (lol)
*/
dipswitch = 0;
if ((info->CRC32) == 0x272709b9) /* Teletubbies Y2K (420-in-1) */
dipswitch = 2;

View File

@@ -109,11 +109,8 @@ static void StateRestore(int version) {
void Mapper91_Init(CartInfo *info) {
submapper = 0;
if (info->CRC32 == 0x082778e6) /* Super Fighter III */
submapper = 1;
else if (info->iNES2)
submapper = info->submapper;
/* Super Fighter III */
if (info->submapper == 1) submapper = info->submapper;
info->Power = M91Power;
GameHBIRQHook = M91IRQHook;
GameStateRestore = StateRestore;

View File

@@ -291,8 +291,8 @@ static void M201Sync(void) {
}
void Mapper201_Init(CartInfo *info) {
if (info->CRC32 == 0x05658DED)
submapper = 15;
submapper = 0;
if (info->submapper > 0) submapper = info->submapper;
Latch_Init(info, M201Sync, NULL, 0xFFFF, 0x8000, 0xFFFF, 0);
}

View File

@@ -154,21 +154,10 @@ static void CNROMSync(void) {
}
void CNROM_Init(CartInfo *info) {
uint8 CNROM_busc = 1; /* by default, CNROM is set to emulate bus conflicts to all games */
/* TODO: move these to extended database when implemented. */
switch (info->CRC32) {
case 0xf283cf58: /* Colorful Dragon (Asia) (PAL) (Unl).nes */
case 0x2915faf0: /* Incantation (Asia) (Unl).nes */
case 0xebd0644d: /* Dao Shuai (Asia) (Unl).nes */
case 0x8f154a0d: /* Pu Ke Jing Ling (China) (Unl).nes */
case 0xd04a40e6: /* Bingo 75 (Asia) (Unl).nes */
case 0xe41b440f: /* Sidewinder (Joy Van) */
case 0xb0c871c5: /* Wei Lai Xiao Zi (Joy Van) */
case 0xb3be2f71: /* Yanshan Chess (Unl) */
uint8 CNROM_busc = 1; /* by default, CNROM is set to emulate bus conflicts to all games. */
if (info->submapper && info->submapper == 1) /* no bus conflict */
CNROM_busc = 0;
break;
}
FCEU_printf(" Bus Conflict: %s\n", CNROM_busc ? "Yes" : "No");
Latch_Init(info, CNROMSync, 0, 0x8000, 0xFFFF, 1, CNROM_busc);
}

View File

@@ -118,7 +118,7 @@ void Mapper9_Init(CartInfo *info) {
info->Power = MMC2and4Power;
info->Close = MMC2and4Close;
PPU_hook = MMC2and4PPUHook;
if (info->CRC32 == 0x7b837fde) { /* Mike Tyson's Punch-Out!! (PC10) supports save ram */
if (info->battery) { /* Mike Tyson's Punch-Out!! (PC10) supports save ram */
isPC10 = 1;
WRAMSIZE = 8192;
WRAM = (uint8*)FCEU_gmalloc(WRAMSIZE);

View File

@@ -38,7 +38,6 @@
{ 0xaf5d7aa2, 0, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Clu Clu Land (W) [o3].nes */
{ 0xcfb224e6, 222, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Dragon Ninja (J) (PRG0) [p1][!].nes */
{ 0x82f204ae, 163, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Liang Shan Ying Xiong (NJ023) (Ch) [!].nes */
{ 0x684afccd, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Space Hunter (Japan).nes */
{ 0xad9c63e2, 70, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Space Shadow (Japan).nes */
{ 0xe1526228, 206, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Ki no Bouken - The Quest of Ki (Japan).nes */
{ 0xaf5d7aa2, 0, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Clu Clu Land (W) [o3].nes */
@@ -96,14 +95,21 @@
{ 0x28c11d24, 2, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Sukeban Deka 3 (J) [b1].nes */
{ 0x02863604, 2, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Sukeban Deka III (Japan).nes */
{ 0x419461d0, 2, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Super Cars (USA).nes */
/* CNROM by default has bus conflicts enabled, these requires no bus conflict to play correctly */
{ 0x2915faf0, 3, 1, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Incantation (Asia) (Ja) (Unl).nes */
{ 0x8f154a0d, 3, 1, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Pu Ke Jing Ling (Asia) (Unl).nes */
{ 0xb0c871c5, 3, 1, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Wei Lai Xiao Zi (Joy Van).nes */
{ 0xb3be2f71, 3, 1, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Yanshan Chess (Unl).nes */
{ 0xd04a40e6, 3, 1, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Bingo 75 (Asia) (Ja) (Unl).nes */
{ 0xe41b440f, 3, 1, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Sidewinder (Joy Van).nes */
{ 0xebd0644d, 3, 1, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Master Chu & The Drunkard Hu (Joy Van).nes */
{ 0xf283cf58, 3, 1, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Colorful Dragon (Sachen).nes */
{ 0xdbf90772, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Alpha Mission (USA).nes */
{ 0xd858033d, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* ASO - Armored Scrum Object (J).nes */
{ 0xf283cf58, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Colorful Dragon (Sachen).nes */
{ 0xd858033d, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* ASO - Armored Scrum Object (J).nes */
{ 0x8f154a0d, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Pu Ke Jing Ling (Asia) (Unl).nes */
{ 0xd04a40e6, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Bingo 75 (Asia) (Ja) (Unl).nes */
{ 0x637ba508, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, PAL, NOEXTRA }, /* Adan y Eva (Spain) (Gluk Video) (Unl).nes */
{ 0xebd0644d, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Master Chu & The Drunkard Hu (Joy Van).nes */
{ 0x9bde3267, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Adventures of Dino Riki (USA).nes */
{ 0xd8eff0df, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Gradius (Japan).nes */
{ 0x1d41cc8c, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Gyruss (USA).nes */
@@ -112,6 +118,9 @@
{ 0x02cc3973, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Ninja Kid (USA).nes */
{ 0xbc065fc3, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Pipe Dream (U) [b1].nes */
{ 0xc9ee15a7, 3, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Aladdin III (1995) (Unl) [hM03].nes */
{ 0x8dedea07, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Shui Guo Li (Ch) [a1].nes */
{ 0x684afccd, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Space Hunter (Japan).nes */
{ 0x97b6cb19, 4, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Aladdin (SuperGame) (Mapper 4) [!].nes */
{ 0xd97c31b0, 206, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Lasalle Ishii no Child's Quest (Japan).nes */
{ 0x404b2e8b, 4, DEFAULT, MI_4, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Rad Racer II (USA).nes */
@@ -216,6 +225,7 @@
{ 0x2deb12b8, 79, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Venice Beach Volleyball (Asia) (Ja) (Super Mega) (Unl).nes */
{ 0xd2699893, 88, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Dragon Spirit - Aratanaru Densetsu (Japan).nes */
{ 0xbb7c5f7a, 89, DEFAULT, DFAULT8, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Tenka no Goikenban - Mito Koumon (J) [f1].nes */
{ 0x082778e6, 91, 1, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Super Fighter III.nes */
{ 0x10119e6b, 93, DEFAULT, DFAULT8, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Fantasy Zone (Japan) (Sunsoft).nes */
{ 0x2b750bf9, 101, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Urusei Yatsura - Lum no Wedding Bell (Japan) (Beta).nes */
{ 0x0da5e32e, 101, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Urusei Yatsura - Lum no Wedding Bell (Japan).nes */
@@ -237,6 +247,7 @@
{ 0xddcfb058, 121, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Street Fighter Zero 2 '97 (Unl) [!].nes */
{ 0xd2674b0a, 132, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Qi Wang - Chinese Chess (Asia) (Ja) (Unl).nes */
{ 0x5aefbc94, 133, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, PAL, NOEXTRA }, /* Jovial Race (Asia) (Ja) (PAL) (Unl).nes */
{ 0xB550B627, 136, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Incantation (Dip Bin) (Joy Van).nes */
{ 0xc2df0a00, 140, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Bio Senshi Dan - Increaser Tono Tatakai (J) [hM66][b3].nes */
{ 0xe46b1c5d, 140, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Mississippi Satsujin Jiken (Japan).nes */
{ 0x3293afea, 140, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Mississippi Satsujin Jiken (Japan) (Rev A).nes */
@@ -392,11 +403,7 @@
{ 0x6e149729, 189, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Master Fighter II (Unl) [a1].nes */
{ 0x60bfeb0c, 90, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Mortal Kombat 2 (Unl) [!].nes */
{ 0x247cc73d, 150, DEFAULT, DEFAULT, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Poker II (Asia) (Ja) (Unl).nes */
{ 0xe41b440f, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Sidewinder (Joy Van).nes */
{ 0x1f1326d4, 121, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Super Sonic 5 (1997) (Unl) [!].nes */
{ 0xb0c871c5, 3, DEFAULT, MI_V, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Wei Lai Xiao Zi (Joy Van).nes */
{ 0xb3be2f71, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Yanshan Chess (Unl).nes */
{ 0x8dedea07, 3, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Shui Guo Li (Ch) [a1].nes */
{ 0x1a71fd06, 1, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Kujaku Ou.nes */
{ 0x99748230, 215, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* EarthWorm Jim 2 (SuperGame).nes */
{ 0x37876ac7, 215, DEFAULT, MI_H, 0, DEFAULT, DEFAULT, DEFAULT, NOEXTRA }, /* Golden Card 6-in-1 (Unl) [!].nes */

View File

@@ -288,6 +288,11 @@ static void CheckHInfo(void) {
iNESCart.mapper = moo[x].mapper & 0xFFF;
}
}
if (moo[x].submapper >= 0) {
if (moo[x].submapper != iNESCart.submapper) {
iNESCart.submapper = moo[x].submapper;
}
}
if (moo[x].mirror >= 0) {
cur_mirr = iNESCart.mirror;
if (moo[x].mirror == 8) {