From 36c01f4c8db39640523cdfa9d3ab273161cd5b1e Mon Sep 17 00:00:00 2001 From: splash5 <2173030+splash5@users.noreply.github.com> Date: Wed, 14 Dec 2022 11:47:53 +0800 Subject: [PATCH] Add NES mapper 209 Tested with "Shin Samurai Spirits 2 (JY-083)" --- Cart_Reader/NES.ino | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Cart_Reader/NES.ino b/Cart_Reader/NES.ino index c7e2b01..de8a802 100644 --- a/Cart_Reader/NES.ino +++ b/Cart_Reader/NES.ino @@ -130,6 +130,7 @@ static const byte PROGMEM mapsize[] = { 203, 1, 4, 1, 4, 0, 0, // various NROM-128 multicarts [UNLICENSED] 206, 1, 3, 2, 4, 0, 0, // dxrom 207, 4, 4, 5, 5, 0, 0, // taito x1-005 variant (fudou myouou den) + 209, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED] 210, 3, 5, 5, 6, 0, 0, // namco 175/340 212, 0, 3, 0, 4, 0, 0, // BMC Super HiK 300-in-1 [UNLICENSED] 213, 1, 6, 1, 6, 0, 0, // BMC-GKB (C)NROM-based multicarts, duplicate of mapper 58 [UNLICENSED] @@ -3380,6 +3381,19 @@ void readPRG(boolean readrom) { } break; + case 209: + banks = int_pow(2, prgsize) * 2; + write_prg_byte(0xD000, 0x02); + + for (byte i = 0; i < banks; i++) { + write_prg_byte(0xD003, (((i >> 5) & 0x06) | 0x20)); + write_prg_byte(0x8000, (i & 0x3f)); + for (word address = 0x0; address < 0x2000; address += 512) { + dumpPRG(base, address); + } + } + break; + case 210: // 128K/256K banks = int_pow(2, prgsize) * 2; for (int i = 0; i < banks; i += 2) { @@ -4353,6 +4367,19 @@ void readCHR(boolean readrom) { } break; + case 209: + banks = int_pow(2, chrsize) / 2; + write_prg_byte(0xD000, 0x02); + + for (int i = 0; i < banks; i++) { + write_prg_byte(0xD003, (((i >> 3) & 0x18) | 0x20)); + write_prg_byte(0x9000, (i & 0x3f)); + for (word address = 0x0; address < 0x2000; address += 512) { + dumpCHR(address); + } + } + break; + case 210: // 128K/256K banks = int_pow(2, chrsize) * 4; write_prg_byte(0xE800, 0xC0); // CHR RAM DISABLE (Bit 6 and 7) [WRITE NO RAM]