diff --git a/src/boards/237.c b/src/boards/237.c index e2b784a..c40a163 100644 --- a/src/boards/237.c +++ b/src/boards/237.c @@ -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; diff --git a/src/boards/91.c b/src/boards/91.c index 5a2a7f1..33652aa 100644 --- a/src/boards/91.c +++ b/src/boards/91.c @@ -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; diff --git a/src/boards/addrlatch.c b/src/boards/addrlatch.c index b61249a..b2e193a 100644 --- a/src/boards/addrlatch.c +++ b/src/boards/addrlatch.c @@ -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); } diff --git a/src/boards/datalatch.c b/src/boards/datalatch.c index 46a3eee..9f85609 100644 --- a/src/boards/datalatch.c +++ b/src/boards/datalatch.c @@ -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); } diff --git a/src/boards/mmc2and4.c b/src/boards/mmc2and4.c index cc94b0a..e5c8f40 100644 --- a/src/boards/mmc2and4.c +++ b/src/boards/mmc2and4.c @@ -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); diff --git a/src/ines-correct.h b/src/ines-correct.h index 22f1a30..6f54f70 100644 --- a/src/ines-correct.h +++ b/src/ines-correct.h @@ -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 */ diff --git a/src/ines.c b/src/ines.c index f8dfe0a..6a91769 100644 --- a/src/ines.c +++ b/src/ines.c @@ -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) {