aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorsanni <[email protected]>2022-12-14 14:38:41 +0100
committerGitHub <[email protected]>2022-12-14 14:38:41 +0100
commit642d58200234e6e914aa47bc52a92a88ff01153d (patch)
treeae54f671e8e489f989159069d717286bde434b9f
parentd13d8f6817626f27b70ad870115b6dfc12ddd53c (diff)
parentbff292435e88e4314fe12de5eda497ad4718872a (diff)
downloadcartreader-642d58200234e6e914aa47bc52a92a88ff01153d.tar.gz
cartreader-642d58200234e6e914aa47bc52a92a88ff01153d.zip
Merge pull request #660 from nsx0r/patch-46
mapper 209 dumps the same as 35, 90 and 211
-rw-r--r--Cart_Reader/NES.ino68
1 files changed, 42 insertions, 26 deletions
diff --git a/Cart_Reader/NES.ino b/Cart_Reader/NES.ino
index cfef607..d0a645d 100644
--- a/Cart_Reader/NES.ino
+++ b/Cart_Reader/NES.ino
@@ -45,6 +45,7 @@ static const byte PROGMEM mapsize[] = {
16, 3, 4, 5, 6, 0, 1, // bandai x24c02 [eep r/w]
18, 3, 4, 5, 6, 0, 1, // jaleco ss8806 [sram r/w]
19, 3, 4, 5, 6, 0, 1, // namco 106/163 [sram/prgram r/w]
+ // 20 - bad mapper, not used
21, 4, 4, 5, 6, 0, 1, // vrc4a/vrc4c [sram r/w]
22, 3, 3, 5, 5, 0, 0, // vrc2a
23, 3, 3, 5, 6, 0, 0, // vrc2b/vrc4e
@@ -56,6 +57,7 @@ static const byte PROGMEM mapsize[] = {
32, 3, 4, 5, 5, 0, 0, // irem g-101
33, 3, 4, 5, 6, 0, 0, // taito tc0190
34, 3, 5, 0, 0, 0, 0, // bnrom [nina-1 NOT SUPPORTED]
+ 35, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED]
36, 0, 3, 1, 5, 0, 0, // TXC 01-22000-400 Board [UNLICENSED]
37, 4, 4, 6, 6, 0, 0, // (super mario bros + tetris + world cup)
42, 0, 3, 0, 5, 0, 0, // hacked FDS games converted to cartridge [UNLICENSED]
@@ -86,11 +88,13 @@ static const byte PROGMEM mapsize[] = {
79, 1, 2, 2, 3, 0, 0, // NINA-03/06 by AVE [UNLICENSED]
80, 3, 3, 5, 6, 0, 1, // taito x1-005 [prgram r/w]
82, 3, 3, 5, 6, 0, 1, // taito x1-017 [prgram r/w]
+ // 84 - bad mapper, not used
85, 3, 5, 0, 5, 0, 1, // vrc7 [sram r/w]
86, 3, 3, 4, 4, 0, 0, // jaleco jf-13 (moero pro yakyuu)
87, 0, 1, 2, 3, 0, 0, // Jaleco/Konami CNROM (DIS_74X139X74)
88, 3, 3, 5, 5, 0, 0, // namco (dxrom variant)
89, 3, 3, 5, 5, 0, 0, // sunsoft 2 variant (tenka no goikenban: mito koumon)
+ 90, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED]
91, 3, 5, 7, 8, 0, 0, // JY830623C/YY840238C boards [UNLICENSED]
92, 4, 4, 5, 5, 0, 0, // jaleco jf-19/jf-21
93, 3, 3, 0, 0, 0, 0, // sunsoft 2
@@ -98,6 +102,8 @@ static const byte PROGMEM mapsize[] = {
95, 3, 3, 3, 3, 0, 0, // namcot-3425 (dragon buster)
96, 3, 3, 0, 0, 0, 0, // (oeka kids)
97, 4, 4, 0, 0, 0, 0, // irem tam-s1 (kaiketsu yanchamaru)
+ // 100 - bad mapper, not used
+ // 101 - bad mapper, not used
105, 4, 4, 0, 0, 0, 0, // (nintendo world Championships 1990) [UNTESTED]
113, 1, 4, 0, 5, 0, 0, // NINA-03/06 [UNLICENSED]
111, 5, 5, 0, 0, 0, 0, // GTROM [UNLICENSED]
@@ -108,6 +114,7 @@ static const byte PROGMEM mapsize[] = {
140, 3, 3, 3, 5, 0, 0, // jaleco jf-11/jf-14
142, 1, 3, 0, 0, 0, 0, // UNL-KS7032 [UNLICENSED]
146, 1, 2, 2, 3, 0, 0, // Sachen 3015 [UNLICENSED]
+ // 151 - bad mapper, not used
152, 2, 3, 5, 5, 0, 0, // BANDAI-74*161/161/32
153, 5, 5, 0, 0, 1, 1, // (famicom jump ii) [sram r/w]
154, 3, 3, 5, 5, 0, 0, // namcot-3453 (devil man)
@@ -124,6 +131,7 @@ static const byte PROGMEM mapsize[] = {
180, 3, 3, 0, 0, 0, 0, // unrom variant (crazy climber)
184, 1, 1, 2, 3, 0, 0, // sunsoft 1
185, 0, 1, 1, 1, 0, 0, // cnrom lockout
+ // 186 - bad mapper, not used
200, 1, 4, 1, 4, 0, 0, // HN-02 multicarts [UNLICENSED]
201, 1, 8, 1, 9, 0, 0, // NROM-256 multicarts [UNLICENSED]
202, 0, 3, 1, 4, 0, 0, // BMC-150IN1 multicarts [UNLICENSED]
@@ -132,6 +140,7 @@ static const byte PROGMEM mapsize[] = {
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
+ 211, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED]
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]
225, 4, 7, 5, 8, 0, 0, // ET-4310 (FC) + K-1010 (NES) [UNLICENSED]
@@ -145,6 +154,7 @@ static const byte PROGMEM mapsize[] = {
241, 3, 5, 0, 0, 0, 0, // BxROM with WRAM [UNLICENSED]
242, 5, 5, 0, 0, 0, 0, // ET-113 [UNLICENSED]
246, 5, 5, 7, 7, 0, 0, // C&E Feng Shen Bang [UNLICENSED]
+ // 248 - bad mapper, not used
255, 4, 7, 5, 8, 0, 0, // 110-in-1 multicart (same as 225) [UNLICENSED]
};
@@ -2789,6 +2799,22 @@ void readPRG(boolean readrom) {
}
}
break;
+
+ case 35:
+ case 90:
+ case 209:
+ case 211:
+ 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 36:
banks = int_pow(2, prgsize) / 2;
@@ -3381,19 +3407,6 @@ 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) {
@@ -3863,6 +3876,22 @@ void readCHR(boolean readrom) {
}
}
break;
+
+ case 35:
+ case 90:
+ case 209:
+ case 211:
+ 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 36:
banks = int_pow(2, chrsize) * 4;
@@ -4367,19 +4396,6 @@ 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]