mirror of
https://github.com/sanni/cartreader.git
synced 2025-02-14 03:59:12 +01:00
Update NES.ino - fix for SEROM/SHROM/SH1ROM PCBs
fix for SEROM/SHROM/SH1ROM PCBs
This commit is contained in:
parent
fb8835b6c4
commit
2100cd55f6
@ -1850,16 +1850,21 @@ void readPRG(bool readrom) {
|
|||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
case 155: // 32K/64K/128K/256K/512K
|
case 155: // 32K/64K/128K/256K/512K
|
||||||
banks = int_pow(2, prgsize);
|
if (prgsize == 1) { // fix for SEROM/SHROM/SH1ROM PCBs
|
||||||
for (size_t i = 0; i < banks; i++) { // 16K Banks ($8000-$BFFF)
|
write_prg_byte(0x8000, 0x80);
|
||||||
write_prg_byte(0x8000, 0x80); // Clear Register
|
dumpBankPRG(0x0, 0x8000, base);
|
||||||
write_mmc1_byte(0x8000, 0x0C); // Switch 16K Bank ($8000-$BFFF) + Fixed Last Bank ($C000-$FFFF)
|
} else {
|
||||||
if (prgsize > 4) // 512K
|
banks = int_pow(2, prgsize);
|
||||||
write_mmc1_byte(0xA000, 0x00); // Reset 512K Flag for Lower 256K
|
for (size_t i = 0; i < banks; i++) { // 16K Banks ($8000-$BFFF)
|
||||||
if (i > 15) // Switch Upper 256K
|
write_prg_byte(0x8000, 0x80); // Clear Register
|
||||||
write_mmc1_byte(0xA000, 0x10); // Set 512K Flag
|
write_mmc1_byte(0x8000, 0x0C); // Switch 16K Bank ($8000-$BFFF) + Fixed Last Bank ($C000-$FFFF)
|
||||||
write_mmc1_byte(0xE000, i);
|
if (prgsize > 4) // 512K
|
||||||
dumpBankPRG(0x0, 0x4000, base);
|
write_mmc1_byte(0xA000, 0x00); // Reset 512K Flag for Lower 256K
|
||||||
|
if (i > 15) // Switch Upper 256K
|
||||||
|
write_mmc1_byte(0xA000, 0x10); // Set 512K Flag
|
||||||
|
write_mmc1_byte(0xE000, i);
|
||||||
|
dumpBankPRG(0x0, 0x4000, base);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user