Merge pull request #114 from retro-wertz/update

updates
This commit is contained in:
Twinaphex
2017-05-09 14:31:06 +02:00
committed by GitHub
3 changed files with 45 additions and 34 deletions

View File

@@ -93,6 +93,7 @@ static uint64 CartList[] =
0x8fd9c235957a6df0LL, // 5-in-1 (K5003) [p1][!]-1125) (Ch).nes 0x8fd9c235957a6df0LL, // 5-in-1 (K5003) [p1][!]-1125) (Ch).nes
0x0315924d00dd7807LL, // Mortal Kombat 30 Peoples (DH1043) (Ch).nes 0x0315924d00dd7807LL, // Mortal Kombat 30 Peoples (DH1043) (Ch).nes
0x4b99c39fdb66128aLL, // 4-in-1 (FK23C8078) (Ch) [p1][U][!].unf 0x4b99c39fdb66128aLL, // 4-in-1 (FK23C8078) (Ch) [p1][U][!].unf
0x22a0ba5743191778LL, // Rockman 4 MI (Hack)
0 /* Abandon all hope if the game has 0 in the lower 64-bits of its MD5 hash */ 0 /* Abandon all hope if the game has 0 in the lower 64-bits of its MD5 hash */
}; };
@@ -112,30 +113,37 @@ int DetectPRGbonus(CartInfo *tmp) {
} }
static void BMCFK23CPW(uint32 A, uint8 V) { static void BMCFK23CPW(uint32 A, uint8 V) {
/* Modified (c)May 2017 - Backport older implementations from FCEUmm
* to support big sized FK23CA carts which broke in latest commits.
*/
uint32 bank = (EXPREGS[1] & 0x1F); uint32 bank = (EXPREGS[1] & 0x1F);
uint32 hiblock = ((EXPREGS[0] & 8) << 4) | ((EXPREGS[0] & 0x80) << 1) | (UNIFchrrama ? ((EXPREGS[2] & 0x40) << 3) : 0); uint32 hiblock = ((EXPREGS[0] & 8) << 4) | ((EXPREGS[0] & 0x80) << 1) | (UNIFchrrama ? ((EXPREGS[2] & 0x40) << 3) : 0);
uint32 block = (EXPREGS[1] & 0x60) | hiblock; uint32 block = (EXPREGS[1] & 0x60) | hiblock;
uint32 extra = (EXPREGS[3] & 2); uint32 extra = (EXPREGS[3] & 2);
if ((EXPREGS[0] & 7) == 4) switch (EXPREGS[0] & 7) {
setprg32(0x8000, EXPREGS[1] >> 1); case 4:
else if ((EXPREGS[0] & 7) == 3) { setprg32(0x8000,(EXPREGS[1] | block) >> 1);
setprg16(0x8000, EXPREGS[1]); break;
setprg16(0xC000, EXPREGS[1]); case 3:
} else { setprg16(0x8000,(EXPREGS[1] | block));
setprg16(0xC000,(EXPREGS[1] | block));
break;
default:
if (EXPREGS[0] & 3) { if (EXPREGS[0] & 3) {
uint32 blocksize = (6) - (EXPREGS[0] & 3); uint32 blocksize = (6) - (EXPREGS[0] & 3);
uint32 mask = (1 << blocksize) - 1; uint32 mask = (1 << blocksize) - 1;
V &= mask; V &= mask;
//V &= 63; //? is this a good idea? //V &= 63; //? is this a good idea?
V |= (EXPREGS[1] << 1); V |= EXPREGS[1] << 1;
setprg8(A, V); setprg8(A, (V | (hiblock << 1)));
} else } else
setprg8(A, (block << 1) | (V & prg_mask)); setprg8(A, ((V & prg_mask) | (block << 1)));
if (EXPREGS[3] & 2) { if (extra) {
setprg8(0xC000, EXPREGS[4]); setprg8(0xC000, EXPREGS[4]);
setprg8(0xE000, EXPREGS[5]); setprg8(0xE000, EXPREGS[5]);
} }
break;
} }
setprg8r(0x10, 0x6000, A001B & 3); setprg8r(0x10, 0x6000, A001B & 3);
} }
@@ -191,11 +199,10 @@ static DECLFW(BMCFK23CWrite) {
} }
} }
if (is_BMCFK23CA) { if (is_BMCFK23CA)
if(EXPREGS[3] & 2) if(EXPREGS[3] & 2)
EXPREGS[0] &= ~7; // hacky hacky! if someone wants extra banking, then for sure doesn't want mode 4 for it! (allow to run A version boards on normal mapper) EXPREGS[0] &= ~7; // hacky hacky! if someone wants extra banking, then for sure doesn't want mode 4 for it! (allow to run A version boards on normal mapper)
} }
}
static void BMCFK23CReset(void) { static void BMCFK23CReset(void) {
//NOT NECESSARY ANYMORE //NOT NECESSARY ANYMORE
@@ -253,7 +260,7 @@ void BMCFK23C_Init(CartInfo *info) {
AddExState(&dipswitch, 1, 0, "DPSW"); AddExState(&dipswitch, 1, 0, "DPSW");
prg_bonus = DetectPRGbonus(info); prg_bonus = DetectPRGbonus(info);
prg_mask = 0x7F >> (prg_bonus); prg_mask = (0x7F >> prg_bonus);
} }
void BMCFK23CA_Init(CartInfo *info) { void BMCFK23CA_Init(CartInfo *info) {
@@ -276,5 +283,5 @@ void BMCFK23CA_Init(CartInfo *info) {
AddExState(&dipswitch, 1, 0, "DPSW"); AddExState(&dipswitch, 1, 0, "DPSW");
prg_bonus = DetectPRGbonus(info); prg_bonus = DetectPRGbonus(info);
prg_mask = 0x7F >> (prg_bonus); prg_mask = (0x7F >> prg_bonus);
} }

View File

@@ -358,6 +358,9 @@ void Mapper4_Init(CartInfo *info) {
FCEU_printf("Low-G-Man can not work normally in the iNES format.\nThis game has been recognized by its CRC32 value, and the appropriate changes will be made so it will run.\nIf you wish to hack this game, you should use the UNIF format for your hack.\n\n"); FCEU_printf("Low-G-Man can not work normally in the iNES format.\nThis game has been recognized by its CRC32 value, and the appropriate changes will be made so it will run.\nIf you wish to hack this game, you should use the UNIF format for your hack.\n\n");
ws = 0; ws = 0;
} }
if (info->CRC32 == 0x97b6cb19)
isRevB = 0;
GenMMC3_Init(info, 512, 256, ws, info->battery); GenMMC3_Init(info, 512, 256, ws, info->battery);
info->Power = M4Power; info->Power = M4Power;
hackm4 = info->mirror; hackm4 = info->mirror;

View File

@@ -70,6 +70,7 @@
{0x02cc3973, 3, 1}, /* Ninja Kid */ {0x02cc3973, 3, 1}, /* Ninja Kid */
{0xbc065fc3, 3, 1}, /* Pipe Dream */ {0xbc065fc3, 3, 1}, /* Pipe Dream */
{0xc9ee15a7, 3, -1}, /* 3 is probably best. 41 WILL NOT WORK. */ {0xc9ee15a7, 3, -1}, /* 3 is probably best. 41 WILL NOT WORK. */
{0x97b6cb19, 4, -1}, /* Aladdin (SuperGame) (Mapper 4) [!] */
{0x22d6d5bd, 4, 1}, /* Jikuu Yuuden - Debias (J) */ {0x22d6d5bd, 4, 1}, /* Jikuu Yuuden - Debias (J) */
{0xd97c31b0, 4, 1}, //Rasaaru Ishii no Childs Quest (J) {0xd97c31b0, 4, 1}, //Rasaaru Ishii no Childs Quest (J)
{0x404b2e8b, 4, 2}, /* Rad Racer 2 */ {0x404b2e8b, 4, 2}, /* Rad Racer 2 */