@@ -42,13 +42,15 @@ static const byte PROGMEM a2600mapsize[] = {
4242 0x3E , 5 , // Tigervision 32K with 32K RAM
4343 0x07 , 6 , // X07 64K ROM
4444 0xDF , 7 , // "DFSC" Penult 128K ROM with 32K RAM
45+ 0xBA , 7 , // SUPERBank 128K Casey's Gold
46+ 0xBB , 8 , // SUPERBank 256K
4547};
4648
4749byte a2600mapcount = (sizeof (a2600mapsize) / sizeof (a2600mapsize[0 ])) / 2 ;
4850byte a2600mapselect;
4951int a2600index;
5052
51- byte a2600[] = { 2 , 4 , 8 , 12 , 16 , 32 , 64 , 128 };
53+ int a2600[] = { 2 , 4 , 8 , 12 , 16 , 32 , 64 , 128 , 256 };
5254byte a2600mapper = 0 ;
5355byte a2600size;
5456
@@ -528,6 +530,20 @@ void readROM_2600() {
528530 }
529531 break ;
530532
533+ case 0xBA : // SUPERbank 128K
534+ for (int x = 0 ; x < 0x20 ; x++) {
535+ readData_2600 (0x0800 + x);
536+ readSegment_2600 (0x1000 , 0x2000 );
537+ }
538+ break ;
539+
540+ case 0xBB : // SUPERbank 256K
541+ for (int x = 0 ; x < 0x40 ; x++) {
542+ readData_2600 (0x0800 + x);
543+ readSegment_2600 (0x1000 , 0x2000 );
544+ }
545+ break ;
546+
531547 default :
532548 break ;
533549 }
@@ -569,6 +585,10 @@ void println_Mapper2600(byte mapper) {
569585 println_Msg (F (" X07" ));
570586 else if (mapper == 0xDF )
571587 println_Msg (F (" DFSC" ));
588+ else if (mapper == 0xBA )
589+ println_Msg (F (" SB 128K" ));
590+ else if (mapper == 0xBB )
591+ println_Msg (F (" SB 256K" ));
572592 else
573593 println_Msg (mapper, HEX);
574594#else
@@ -594,6 +614,10 @@ void println_Mapper2600(byte mapper) {
594614 Serial.println (F (" X07" ));
595615 else if (mapper == 0xDF )
596616 Serial.println (F (" DFSC" ));
617+ else if (mapper == 0xBA )
618+ Serial.println (F (" SB 128K" ));
619+ else if (mapper == 0xBB )
620+ Serial.println (F (" SB 256K" ));
597621 else
598622 Serial.println (mapper, HEX);
599623#endif
@@ -602,7 +626,7 @@ void println_Mapper2600(byte mapper) {
602626void checkStatus_2600 () {
603627 EEPROM_readAnything (7 , a2600mapper);
604628 EEPROM_readAnything (8 , a2600size);
605- if (a2600size > 7 ) {
629+ if (a2600size > 8 ) {
606630 a2600size = 1 ; // default 4KB
607631 EEPROM_writeAnything (8 , a2600size);
608632 }
@@ -687,7 +711,9 @@ setmapper:
687711 Serial.println (F (" 18 = 3E [Tigervision 32K \w RAM]" ));
688712 Serial.println (F (" 19 = 07 [X07 64K]" ));
689713 Serial.println (F (" 20 = DFSC [Penult 128K]" ));
690- Serial.print (F (" Enter Mapper [0-20]: " ));
714+ Serial.println (F (" 21 = SB [SuperBank Casey's Gold 128K]" ));
715+ Serial.println (F (" 22 = SB [SuperBank 256K]" ));
716+ Serial.print (F (" Enter Mapper [0-22]: " ));
691717 while (Serial.available () == 0 ) {}
692718 newmap = Serial.readStringUntil (' \n ' );
693719 Serial.println (newmap);
0 commit comments