From f4ba8d7af8d86b183470ba96935108d8f28a84a3 Mon Sep 17 00:00:00 2001 From: JWS Date: Fri, 3 May 2024 18:52:37 -0500 Subject: [PATCH 1/2] Add support for mapper 3E, 32K ROM 32K RAM Tigervision --- Cart_Reader/2600.ino | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Cart_Reader/2600.ino b/Cart_Reader/2600.ino index 13b9850..9ef901b 100644 --- a/Cart_Reader/2600.ino +++ b/Cart_Reader/2600.ino @@ -39,6 +39,7 @@ static const byte PROGMEM a2600mapsize[] = { 0xFE, 2, // Activision 8K 0xF9, 2, // "TP" Time Pilot 8K 0x0A, 2, // "UA" UA Ltd 8K + 0x3E, 5, // Tigervision 32K with 32K RAM }; byte a2600mapcount = (sizeof(a2600mapsize) / sizeof(a2600mapsize[0])) / 2; @@ -310,6 +311,14 @@ void readROM_2600() { readSegment_2600(0x1800, 0x2000); break; + case 0x3E: // 3E Mapper 32KB ROM 32K RAM + for (int x = 0; x < 15; x++) { + writeData3F_2600(0x3F, x); + readSegment_2600(0x1000, 0x1800); + } + readSegment_2600(0x1800, 0x2000); + break; + case 0x40: // 4K Default 4KB readSegment_2600(0x1000, 0x2000); break; @@ -678,7 +687,7 @@ setmapper: Serial.println(F("1 = F6SC [Atari 16K \w RAM]")); Serial.println(F("2 = F8SC [Atari 8K \w RAM]")); Serial.println(F("3 = 2K [Standard 2K]")); - Serial.println(F("4 = 3F [Tigervision]")); + Serial.println(F("4 = 3F [Tigervision 8K]")); Serial.println(F("5 = 4K [Standard 4K]")); Serial.println(F("6 = CV [Commavid]")); Serial.println(F("7 = DPC [Pitfall II]")); @@ -692,6 +701,7 @@ setmapper: Serial.println(F("15 = FE [Activision]")); Serial.println(F("16 = TP [Time Pilot 8K]")); Serial.println(F("17 = UA [UA Ltd]")); + Serial.println(F("18 = 3E [Tigervision 32K \w RAM]")); Serial.print(F("Enter Mapper [0-17]: ")); while (Serial.available() == 0) {} newmap = Serial.readStringUntil('\n'); From 2c7265267117576c841394da73b773e355d7061a Mon Sep 17 00:00:00 2001 From: JWS Date: Fri, 3 May 2024 20:34:26 -0500 Subject: [PATCH 2/2] Add support for X07 mapper (Stella's Stockings) --- Cart_Reader/2600.ino | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Cart_Reader/2600.ino b/Cart_Reader/2600.ino index 9ef901b..15c43eb 100644 --- a/Cart_Reader/2600.ino +++ b/Cart_Reader/2600.ino @@ -40,6 +40,7 @@ static const byte PROGMEM a2600mapsize[] = { 0xF9, 2, // "TP" Time Pilot 8K 0x0A, 2, // "UA" UA Ltd 8K 0x3E, 5, // Tigervision 32K with 32K RAM + 0x07, 6, // X07 64K ROM }; byte a2600mapcount = (sizeof(a2600mapsize) / sizeof(a2600mapsize[0])) / 2; @@ -555,6 +556,12 @@ void readROM_2600() { readData_2600(0x240); readSegment_2600(0x1000, 0x2000); break; + + case 0x07: // X07 Mapper 64K + for (int x = 0; x < 16; x++) { + readData_2600(0x080D | (x << 4)); + readSegment_2600(0x1000, 0x2000); + } } myFile.close(); @@ -590,6 +597,8 @@ void println_Mapper2600(byte mapper) { println_Msg(F("DPC")); else if (mapper == 0xF9) println_Msg(F("TP")); + else if (mapper == 0x07) + println_Msg(F("X07")); else println_Msg(mapper, HEX); #else @@ -611,6 +620,8 @@ void println_Mapper2600(byte mapper) { Serial.println(F("DPC")); else if (mapper == 0xF9) Serial.println(F("TP")); + else if (mapper == 0x07) + Serial.println(F("X07")); else Serial.println(mapper, HEX); #endif