Add support for Mani carts

This commit is contained in:
Lior Halphon 2022-03-06 15:54:29 +02:00
parent 965e623637
commit 0925b06555

View File

@ -17,7 +17,6 @@ const GB_cartridge_t GB_cart_defs[256] = {
{ GB_NO_MBC, GB_STANDARD_MBC, true , false, false, false}, // 08h ROM+RAM { GB_NO_MBC, GB_STANDARD_MBC, true , false, false, false}, // 08h ROM+RAM
{ GB_NO_MBC, GB_STANDARD_MBC, true , true , false, false}, // 09h ROM+RAM+BATTERY { GB_NO_MBC, GB_STANDARD_MBC, true , true , false, false}, // 09h ROM+RAM+BATTERY
[0xB] = [0xB] =
/* Todo: Not supported yet */
{ GB_MMM01 , GB_STANDARD_MBC, false, false, false, false}, // 0Bh MMM01 { GB_MMM01 , GB_STANDARD_MBC, false, false, false, false}, // 0Bh MMM01
{ GB_MMM01 , GB_STANDARD_MBC, true , false, false, false}, // 0Ch MMM01+RAM { GB_MMM01 , GB_STANDARD_MBC, true , false, false, false}, // 0Ch MMM01+RAM
{ GB_MMM01 , GB_STANDARD_MBC, true , true , false, false}, // 0Dh MMM01+RAM+BATTERY { GB_MMM01 , GB_STANDARD_MBC, true , true , false, false}, // 0Dh MMM01+RAM+BATTERY
@ -172,9 +171,15 @@ void GB_configure_cart(GB_gameboy_t *gb)
} }
else { else {
const GB_cartridge_t *maybe_mmm01_type = &GB_cart_defs[gb->rom[gb->rom_size - 0x8000 + 0x147]]; const GB_cartridge_t *maybe_mmm01_type = &GB_cart_defs[gb->rom[gb->rom_size - 0x8000 + 0x147]];
if (maybe_mmm01_type->mbc_type == GB_MMM01 && memcmp(gb->rom + 0x104, gb->rom + gb->rom_size - 0x8000 + 0x104, 0x30) == 0) { if (memcmp(gb->rom + 0x104, gb->rom + gb->rom_size - 0x8000 + 0x104, 0x30) == 0) {
if (maybe_mmm01_type->mbc_type == GB_MMM01) {
gb->cartridge_type = maybe_mmm01_type; gb->cartridge_type = maybe_mmm01_type;
} }
else if(gb->rom[gb->rom_size - 0x8000 + 0x147] == 0x11) {
GB_log(gb, "ROM header reports MBC3, but it appears to be an MMM01 ROM. Assuming cartridge uses MMM01.");
gb->cartridge_type = &GB_cart_defs[0xB];
}
}
} }
if (gb->rom[0x147] == 0xBC && if (gb->rom[0x147] == 0xBC &&