Add support for Atari 5200/7800, C64, Vectrex (thx to skaman)

This commit is contained in:
sanni 2023-09-23 00:11:08 +02:00
parent b373b662d2
commit 559010079c
32 changed files with 69804 additions and 65118 deletions

929
Cart_Reader/5200.ino Normal file
View File

@ -0,0 +1,929 @@
//******************************************
// ATARI 5200 MODULE
//******************************************
#ifdef enable_5200
// Atari 5200
// Cartridge Pinout
// 36P 2.54mm pitch connector
//
// RIGHT
// +-------+
// INTERLOCK -| 18 19 |- A0
// A2 -| 17 20 |- A1
// L A5 -| 16 21 |- A3
// A A6 -| 15 22 |- A4 B
// B GND -| 14 23 |- GND O
// E GND -| 13 24 |- GND T
// L GND -| 12 25 |- GND T
// N/C -| 11 26 |- +5V O
// /ENABLE 4000-7FFF -| 10 27 |- A7 M
// /ENABLE 8000-BFFF -| 9 28 |- N/C
// D7 -| 8 29 |- A8 S
// S D6 -| 7 30 |- AUD I
// I D5 -| 6 31 |- A9 D
// D D4 -| 5 32 |- A13 E
// E D3 -| 4 33 |- A10
// D2 -| 3 34 |- A12
// D1 -| 2 35 |- A11
// D0 -| 1 36 |- INTERLOCK
// +-------+
// LEFT
//
// LABEL SIDE
//
// /EN /EN
// D0 D1 D2 D3 D4 D5 D6 D7 80 40 -- GND GND GND A6 A5 A2 INT
// +--------------------------------------------------------------------------+
// | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// LEFT | | RIGHT
// | 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 |
// +--------------------------------------------------------------------------+
// INT A11 A12 A10 A13 A9 AUD A8 -- A7 +5V GND GND GND A4 A3 A1 A0
//
// BOTTOM SIDE
// CONTROL PINS:
// /4000(PH5) - SNES /WR
// /8000(PH6) - SNES /RD
//******************************************
// Defines
//******************************************
#define DISABLE_4000 PORTH |= (1 << 5) // ROM SELECT 4000-7FFF
#define ENABLE_4000 PORTH &= ~(1 << 5)
#define DISABLE_8000 PORTH |= (1 << 6) // ROM SELECT 8000-BFFF
#define ENABLE_8000 PORTH &= ~(1 << 6)
//******************************************
// Supported Mappers
//******************************************
// Supported Mapper Array
// Format = {mapper,romsizelo,romsizehi}
static const byte PROGMEM a5200mapsize[] = {
0, 0, 3, // Standard 4K/8K/16K/32K
1, 2, 2, // Two Chip 16K
2, 4, 4, // Bounty Bob Strikes Back 40K [UNTESTED]
};
byte a5200mapcount = 3; // (sizeof(a5200mapsize) / sizeof(a5200mapsize[0])) / 3;
byte a5200mapselect;
int a5200index;
byte a5200[] = { 4, 8, 16, 32, 40 };
byte a5200lo = 0; // Lowest Entry
byte a5200hi = 4; // Highest Entry
byte a5200mapper = 0;
byte new5200mapper;
byte a5200size;
byte new5200size;
// EEPROM MAPPING
// 07 MAPPER
// 08 ROM SIZE
//******************************************
// Menu
//******************************************
// Base Menu
static const char a5200MenuItem1[] PROGMEM = "Select Cart";
static const char a5200MenuItem2[] PROGMEM = "Read ROM";
static const char a5200MenuItem3[] PROGMEM = "Set Mapper + Size";
static const char* const menuOptions5200[] PROGMEM = { a5200MenuItem1, a5200MenuItem2, a5200MenuItem3, string_reset2 };
void setup_5200() {
// Request 5V
setVoltage(VOLTS_SET_5V);
// Set Address Pins to Output
// Atari 5200 uses A0-A13 [A14-A23 UNUSED]
//A0-A7
DDRF = 0xFF;
//A8-A15
DDRK = 0xFF;
//A16-A23
DDRL = 0xFF;
// Set Control Pins to Output
// ---(PH0) ---(PH1) ---(PH3) ---(PH4) /4000(PH5) /8000(PH6)
DDRH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
// Set TIME(PJ0) to Output (UNUSED)
DDRJ |= (1 << 0);
// Set Pins (D0-D7) to Input
DDRC = 0x00;
// Setting Control Pins to HIGH
// ---(PH0) ---(PH1) ---(PH3) ---(PH4) /4000(PH5) /8000(PH6)
PORTH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
// Set Unused Data Pins (PA0-PA7) to Output
DDRA = 0xFF;
// Set Unused Pins HIGH
PORTA = 0xFF;
PORTL = 0xFF; // A16-A23
PORTJ |= (1 << 0); // TIME(PJ0)
checkStatus_5200();
strcpy(romName, "ATARI");
mode = mode_5200;
}
void a5200Menu() {
convertPgm(menuOptions5200, 4);
uint8_t mainMenu = question_box(F("ATARI 5200 MENU"), menuOptions, 4, 0);
switch (mainMenu) {
case 0:
// Select Cart
setCart_5200();
wait();
setup_5200();
break;
case 1:
// Read ROM
sd.chdir("/");
readROM_5200();
sd.chdir("/");
break;
case 2:
// Set Mapper + Size
setMapper_5200();
checkMapperSize_5200();
setROMSize_5200();
break;
case 3:
// reset
resetArduino();
break;
}
}
//******************************************
// READ CODE
//******************************************
uint8_t readData_5200(uint16_t addr) // Add Input Pullup
{
PORTF = addr & 0xFF; // A0-A7
PORTK = (addr >> 8) & 0xFF; // A8-A13
NOP;
NOP;
NOP;
NOP;
NOP;
// DDRC = 0x00; // Set to Input
PORTC = 0xFF; // Input Pullup
NOP;
NOP;
NOP;
NOP;
NOP;
// Extended Delay for Vanguard
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
uint8_t ret = PINC;
NOP;
NOP;
NOP;
NOP;
NOP;
return ret;
}
void readSegment_5200(uint16_t startaddr, uint16_t endaddr) {
for (uint16_t addr = startaddr; addr < endaddr; addr += 512) {
for (int w = 0; w < 512; w++) {
uint8_t temp = readData_5200(addr + w);
sdBuffer[w] = temp;
}
myFile.write(sdBuffer, 512);
}
}
//******************************************
// READ ROM
//******************************************
void readROM_5200() {
strcpy(fileName, romName);
strcat(fileName, ".a52");
// create a new folder for storing rom file
EEPROM_readAnything(0, foldern);
sprintf(folder, "5200/ROM/%d", foldern);
sd.mkdir(folder, true);
sd.chdir(folder);
display_Clear();
print_STR(saving_to_STR, 0);
print_Msg(folder);
println_Msg(F("/..."));
display_Update();
// open file on sdcard
if (!myFile.open(fileName, O_RDWR | O_CREAT))
print_FatalError(sd_error_STR);
// write new folder number back to EEPROM
foldern++;
EEPROM_writeAnything(0, foldern);
// 5200 A13-A0 = 10 0000 0000 0000
switch (a5200mapper) {
case 0: // Standard 4KB/8KB/16KB/32KB
// Lower Half of 32K is at 0x4000
if (a5200size == 3) { // 32K
ENABLE_4000;
readSegment_5200(0x4000, 0x8000); // +16K = 32K
DISABLE_4000;
}
// 4K/8K/16K + Upper Half of 32K
ENABLE_8000;
if (a5200size > 1)
readSegment_5200(0x8000, 0xA000); // +8K = 16K
if (a5200size > 0)
readSegment_5200(0xA000, 0xB000); // +4K = 8K
// Base 4K
readSegment_5200(0xB000, 0xC000); // 4K
DISABLE_8000;
break;
case 1: // Two Chip 16KB
ENABLE_4000;
readSegment_5200(0x4000, 0x6000); // 8K
DISABLE_4000;
ENABLE_8000;
readSegment_5200(0x8000, 0xA000); // +8K = 16K
DISABLE_8000;
break;
case 2: // Bounty Bob Strikes Back 40KB [UNTESTED]
ENABLE_4000;
// First 16KB (4KB x 4)
for (int w = 0; w < 4; w++) {
readData_5200(0x4FF6 + w);
readSegment_5200(0x4000, 0x4E00);
// Split Read of Last 0x200 bytes
for (int x = 0; x < 0x1F6; x++) {
sdBuffer[x] = readData_5200(0x4E00 + x);
}
myFile.write(sdBuffer, 502);
// Bank Registers 0x4FF6-0x4FF9
for (int y = 0; y < 4; y++) {
readData_5200(0x4FFF); // Reset Bank
sdBuffer[y] = readData_5200(0x4FF6 + y);
}
// End of Bank 0x4FFA-0x4FFF
readData_5200(0x4FFF); // Reset Bank
readData_5200(0x4FF6 + w); // Set Bank
for (int z = 4; z < 10; z++) {
sdBuffer[z] = readData_5200(0x4FF6 + z); // 0x4FFA-0x4FFF
}
myFile.write(sdBuffer, 10);
}
readData_5200(0x4FFF); // Reset Bank
// Second 16KB (4KB x 4)
for (int w = 0; w < 4; w++) {
readData_5200(0x5FF6 + w);
readSegment_5200(0x5000, 0x5E00);
// Split Read of Last 0x200 bytes
for (int x = 0; x < 0x1F6; x++) {
sdBuffer[x] = readData_5200(0x5E00 + x);
}
myFile.write(sdBuffer, 502);
// Bank Registers 0x5FF6-0x5FF9
for (int y = 0; y < 4; y++) {
readData_5200(0x5FFF); // Reset Bank
sdBuffer[y] = readData_5200(0x5FF6 + y);
}
// End of Bank 0x5FFA-0x5FFF
readData_5200(0x5FFF); // Reset Bank
readData_5200(0x5FF6 + w); // Set Bank
for (int z = 4; z < 10; z++) {
sdBuffer[z] = readData_5200(0x5FF6 + z); // 0x5FFA-0x5FFF
}
myFile.write(sdBuffer, 10);
}
readData_5200(0x5FFF); // Reset Bank
DISABLE_4000;
ENABLE_8000;
readSegment_5200(0x8000, 0xA000); // +8K = 40K
DISABLE_8000;
break;
}
myFile.close();
unsigned long crcsize = a5200[a5200size] * 0x400;
calcCRC(fileName, crcsize, NULL, 0);
println_Msg(F(""));
// Prints string out of the common strings array either with or without newline
print_STR(press_button_STR, 1);
display_Update();
wait();
}
//******************************************
// ROM SIZE
//******************************************
void checkMapperSize_5200() {
for (int i = 0; i < a5200mapcount; i++) {
a5200index = i * 3;
byte mapcheck = pgm_read_byte(a5200mapsize + a5200index);
if (mapcheck == a5200mapper) {
a5200lo = pgm_read_byte(a5200mapsize + a5200index + 1);
a5200hi = pgm_read_byte(a5200mapsize + a5200index + 2);
break;
}
}
}
void setROMSize_5200() {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
if (a5200lo == a5200hi)
new5200size = a5200lo;
else {
int b = 0;
int i = a5200lo;
display_Clear();
print_Msg(F("ROM Size: "));
println_Msg(a5200[i]);
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
while (1) {
b = checkButton();
if (b == 2) { // Previous (doubleclick)
if (i == a5200lo)
i = a5200hi;
else
i--;
// Only update display after input because of slow LCD library
display_Clear();
print_Msg(F("ROM Size: "));
println_Msg(a5200[i]);
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
}
if (b == 1) { // Next (press)
if (i == a5200hi)
i = a5200lo;
else
i++;
// Only update display after input because of slow LCD library
display_Clear();
print_Msg(F("ROM Size: "));
println_Msg(a5200[i]);
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
}
if (b == 3) { // Long Press - Execute (hold)
new5200size = i;
break;
}
}
display.setCursor(0, 56); // Display selection at bottom
}
print_Msg(F("ROM SIZE "));
print_Msg(a5200[new5200size]);
println_Msg(F("K"));
display_Update();
delay(1000);
#else
if (a5200lo == a5200hi)
new5200size = a5200lo;
else {
setrom:
String sizeROM;
for (int i = 0; i < (a5200hi - a5200lo + 1); i++) {
Serial.print(F("Select ROM Size: "));
Serial.print(i);
Serial.print(F(" = "));
Serial.print(a5200[i + a5200lo]);
Serial.println(F("K"));
}
Serial.print(F("Enter ROM Size: "));
while (Serial.available() == 0) {}
sizeROM = Serial.readStringUntil('\n');
Serial.println(sizeROM);
new5200size = sizeROM.toInt() + a5200lo;
if (new5200size > a5200hi) {
Serial.println(F("SIZE NOT SUPPORTED"));
Serial.println(F(""));
goto setrom;
}
}
Serial.print(F("ROM Size = "));
Serial.print(a5200[new5200size]);
Serial.println(F("K"));
#endif
EEPROM_writeAnything(8, new5200size);
a5200size = new5200size;
}
void checkStatus_5200() {
EEPROM_readAnything(7, a5200mapper);
EEPROM_readAnything(8, a5200size);
if (a5200mapper > 2) {
a5200mapper = 0; // default STANDARD
EEPROM_writeAnything(7, a5200mapper);
}
if (a5200size > 4) {
a5200size = 1; // default 8K
EEPROM_writeAnything(8, a5200size);
}
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("ATARI 5200 READER"));
println_Msg(F("CURRENT SETTINGS"));
println_Msg(F(""));
print_Msg(F("MAPPER: "));
println_Msg(a5200mapper);
if (a5200mapper == 0)
println_Msg(F("STANDARD"));
else if (a5200mapper == 1)
println_Msg(F("TWO CHIP"));
else if (a5200mapper == 2)
println_Msg(F("BOUNTY BOB"));
print_Msg(F("ROM SIZE: "));
print_Msg(a5200[a5200size]);
println_Msg(F("K"));
display_Update();
wait();
#else
Serial.print(F("MAPPER: "));
Serial.println(a5200mapper);
if (a5200mapper == 0)
Serial.println(F("STANDARD"));
else if (a5200mapper == 1)
Serial.println(F("TWO CHIP"));
else if (a5200mapper == 2)
Serial.println(F("BOUNTY BOB"));
Serial.print(F("ROM SIZE: "));
Serial.print(a5200[a5200size]);
Serial.println(F("K"));
Serial.println(F(""));
#endif
}
//******************************************
// SET MAPPER
//******************************************
void setMapper_5200() {
#if (defined(enable_OLED) || defined(enable_LCD))
int b = 0;
int i = 0;
// Check Button Status
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
boolean buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == LOW) { // Button Pressed
while (1) { // Scroll Mapper List
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == HIGH) { // Button Released
// Correct Overshoot
if (i == 0)
i = a5200mapcount - 1;
else
i--;
break;
}
display_Clear();
print_Msg(F("Mapper: "));
a5200index = i * 3;
a5200mapselect = pgm_read_byte(a5200mapsize + a5200index);
println_Msg(a5200mapselect);
if (a5200mapselect == 0)
println_Msg(F("STANDARD"));
else if (a5200mapselect == 1)
println_Msg(F("TWO CHIP"));
else if (a5200mapselect == 2)
println_Msg(F("BOUNTY BOB"));
display_Update();
if (i == (a5200mapcount - 1))
i = 0;
else
i++;
delay(250);
}
}
display_Clear();
print_Msg(F("Mapper: "));
a5200index = i * 3;
a5200mapselect = pgm_read_byte(a5200mapsize + a5200index);
println_Msg(a5200mapselect);
if (a5200mapselect == 0)
println_Msg(F("STANDARD"));
else if (a5200mapselect == 1)
println_Msg(F("TWO CHIP"));
else if (a5200mapselect == 2)
println_Msg(F("BOUNTY BOB"));
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
while (1) {
b = checkButton();
if (b == 2) { // Previous Mapper (doubleclick)
if (i == 0)
i = a5200mapcount - 1;
else
i--;
// Only update display after input because of slow LCD library
display_Clear();
print_Msg(F("Mapper: "));
a5200index = i * 3;
a5200mapselect = pgm_read_byte(a5200mapsize + a5200index);
println_Msg(a5200mapselect);
if (a5200mapselect == 0)
println_Msg(F("STANDARD"));
else if (a5200mapselect == 1)
println_Msg(F("TWO CHIP"));
else if (a5200mapselect == 2)
println_Msg(F("BOUNTY BOB"));
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
}
if (b == 1) { // Next Mapper (press)
if (i == (a5200mapcount - 1))
i = 0;
else
i++;
// Only update display after input because of slow LCD library
display_Clear();
print_Msg(F("Mapper: "));
a5200index = i * 3;
a5200mapselect = pgm_read_byte(a5200mapsize + a5200index);
println_Msg(a5200mapselect);
if (a5200mapselect == 0)
println_Msg(F("STANDARD"));
else if (a5200mapselect == 1)
println_Msg(F("TWO CHIP"));
else if (a5200mapselect == 2)
println_Msg(F("BOUNTY BOB"));
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
}
if (b == 3) { // Long Press - Execute (hold)
new5200mapper = a5200mapselect;
break;
}
}
display.setCursor(0, 56);
print_Msg(F("MAPPER "));
print_Msg(new5200mapper);
println_Msg(F(" SELECTED"));
display_Update();
delay(1000);
#else
setmapper:
String newmap;
Serial.println(F("SUPPORTED MAPPERS:"));
Serial.println(F("0 = Standard 4K/8K/16K/32K"));
Serial.println(F("1 = Two Chip 16K"));
Serial.println(F("2 = Bounty Bob Strikes Back 40K"));
Serial.print(F("Enter Mapper [0-2]: "));
while (Serial.available() == 0) {}
newmap = Serial.readStringUntil('\n');
Serial.println(newmap);
a5200index = newmap.toInt() * 3;
new5200mapper = pgm_read_byte(a5200mapsize + a5200index);
#endif
EEPROM_writeAnything(7, new5200mapper);
a5200mapper = new5200mapper;
}
//******************************************
// CART SELECT CODE
//******************************************
FsFile a5200csvFile;
char a5200game[39]; // title
char a5200mm[3]; // mapper
char a5200rr[3]; // romsize
char a5200ll[4]; // linelength (previous line)
unsigned long a5200csvpos; // CSV File Position
char a5200cartCSV[] = "5200cart.txt"; // CSV List
char a5200csvEND[] = "EOF"; // CSV End Marker for scrolling
bool readLine_5200(FsFile& f, char* line, size_t maxLen) {
for (size_t n = 0; n < maxLen; n++) {
int c = f.read();
if (c < 0 && n == 0) return false; // EOF
if (c < 0 || c == '\n') {
line[n] = 0;
return true;
}
line[n] = c;
}
return false; // line too long
}
bool readVals_5200(char* a5200game, char* a5200mm, char* a5200rr, char* a5200ll) {
char line[44];
a5200csvpos = a5200csvFile.position();
if (!readLine_5200(a5200csvFile, line, sizeof(line))) {
return false; // EOF or too long
}
char* comma = strtok(line, ",");
int x = 0;
while (comma != NULL) {
if (x == 0)
strcpy(a5200game, comma);
else if (x == 1)
strcpy(a5200mm, comma);
else if (x == 2)
strcpy(a5200rr, comma);
else if (x == 3)
strcpy(a5200ll, comma);
comma = strtok(NULL, ",");
x += 1;
}
return true;
}
bool getCartListInfo_5200() {
bool buttonreleased = 0;
bool cartselected = 0;
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F(" HOLD TO FAST CYCLE"));
display_Update();
#else
Serial.println(F("HOLD BUTTON TO FAST CYCLE"));
#endif
delay(2000);
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
boolean buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == LOW) { // Button Held - Fast Cycle
while (1) { // Scroll Game List
while (readVals_5200(a5200game, a5200mm, a5200rr, a5200ll)) {
if (strcmp(a5200csvEND, a5200game) == 0) {
a5200csvFile.seek(0); // Restart
} else {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CART TITLE:"));
println_Msg(F(""));
println_Msg(a5200game);
display_Update();
#else
Serial.print(F("CART TITLE:"));
Serial.println(a5200game);
#endif
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == HIGH) { // Button Released
buttonreleased = 1;
break;
}
if (buttonreleased) {
buttonreleased = 0; // Reset Flag
break;
}
}
}
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == HIGH) // Button Released
break;
}
}
#if (defined(enable_OLED) || defined(enable_LCD))
display.setCursor(0, 56);
println_Msg(F("FAST CYCLE OFF"));
display_Update();
#else
Serial.println(F(""));
Serial.println(F("FAST CYCLE OFF"));
Serial.println(F("PRESS BUTTON TO STEP FORWARD"));
Serial.println(F("DOUBLE CLICK TO STEP BACK"));
Serial.println(F("HOLD TO SELECT"));
Serial.println(F(""));
#endif
while (readVals_5200(a5200game, a5200mm, a5200rr, a5200ll)) {
if (strcmp(a5200csvEND, a5200game) == 0) {
a5200csvFile.seek(0); // Restart
} else {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CART TITLE:"));
println_Msg(F(""));
println_Msg(a5200game);
display.setCursor(0, 48);
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
#else
Serial.print(F("CART TITLE:"));
Serial.println(a5200game);
#endif
while (1) { // Single Step
int b = checkButton();
if (b == 1) { // Continue (press)
break;
}
if (b == 2) { // Reset to Start of List (doubleclick)
byte prevline = strtol(a5200ll, NULL, 10);
a5200csvpos -= prevline;
a5200csvFile.seek(a5200csvpos);
break;
}
if (b == 3) { // Long Press - Select Cart (hold)
new5200mapper = strtol(a5200mm, NULL, 10);
new5200size = strtol(a5200rr, NULL, 10);
EEPROM_writeAnything(7, new5200mapper);
EEPROM_writeAnything(8, new5200size);
cartselected = 1; // SELECTION MADE
#if (defined(enable_OLED) || defined(enable_LCD))
println_Msg(F("SELECTION MADE"));
display_Update();
#else
Serial.println(F("SELECTION MADE"));
#endif
break;
}
}
if (cartselected) {
cartselected = 0; // Reset Flag
return true;
}
}
}
#if (defined(enable_OLED) || defined(enable_LCD))
println_Msg(F(""));
println_Msg(F("END OF FILE"));
display_Update();
#else
Serial.println(F("END OF FILE"));
#endif
return false;
}
void checkCSV_5200() {
if (getCartListInfo_5200()) {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CART SELECTED"));
println_Msg(F(""));
println_Msg(a5200game);
display_Update();
// Display Settings
display.setCursor(0, 56);
print_Msg(F("CODE: M"));
print_Msg(new5200mapper);
print_Msg(F("/R"));
println_Msg(new5200size);
display_Update();
#else
Serial.println(F(""));
Serial.println(F("CART SELECTED"));
Serial.println(a5200game);
// Display Settings
Serial.print(F("CODE: M"));
Serial.print(new5200mapper);
Serial.print(F("/R"));
Serial.println(new5200size);
Serial.println(F(""));
#endif
} else {
#if (defined(enable_OLED) || defined(enable_LCD))
display.setCursor(0, 56);
println_Msg(F("NO SELECTION"));
display_Update();
#else
Serial.println(F("NO SELECTION"));
#endif
}
}
void checkSize_5200() {
EEPROM_readAnything(7, a5200mapper);
for (int i = 0; i < a5200mapcount; i++) {
a5200index = i * 3;
if (a5200mapper == pgm_read_byte(a5200mapsize + a5200index)) {
a5200size = pgm_read_byte(a5200mapsize + a5200index + 1);
EEPROM_writeAnything(8, a5200size);
break;
}
}
}
void setCart_5200() {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(a5200cartCSV);
display_Update();
#endif
sd.chdir();
sprintf(folder, "5200/CSV");
sd.chdir(folder); // Switch Folder
a5200csvFile = sd.open(a5200cartCSV, O_READ);
if (!a5200csvFile) {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CSV FILE NOT FOUND!"));
display_Update();
#else
Serial.println(F("CSV FILE NOT FOUND!"));
#endif
while (1) {
if (checkButton() != 0)
setup_5200();
}
}
checkCSV_5200();
a5200csvFile.close();
}
#endif

1021
Cart_Reader/7800.ino Normal file

File diff suppressed because it is too large Load Diff

1502
Cart_Reader/C64.ino Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,8 +4,8 @@
This project represents a community-driven effort to provide This project represents a community-driven effort to provide
an easy to build and easy to modify cartridge dumper. an easy to build and easy to modify cartridge dumper.
Date: 2023-07-19 Date: 2023-09-22
Version: 12.8 Version: 12.9
SD lib: https://github.com/greiman/SdFat SD lib: https://github.com/greiman/SdFat
LCD lib: https://github.com/olikraus/u8g2 LCD lib: https://github.com/olikraus/u8g2
@ -15,13 +15,13 @@
RTC lib: https://github.com/adafruit/RTClib RTC lib: https://github.com/adafruit/RTClib
Frequency lib: https://github.com/PaulStoffregen/FreqCount Frequency lib: https://github.com/PaulStoffregen/FreqCount
Compiled with Arduino IDE 2.1.1 Compiled with Arduino IDE 2.2.1
Thanks to: Thanks to:
MichlK - ROM Reader for Super Nintendo MichlK - ROM Reader for Super Nintendo
Jeff Saltzman - 4-Way Button Jeff Saltzman - 4-Way Button
Wayne and Layne - Video Game Shield menu Wayne and Layne - Video Game Shield menu
skaman - Cart ROM READER SNES ENHANCED, Famicom Cart Dumper, Coleco-, Intellivision, Virtual Boy, WSV, PCW, ARC, Atari, ODY2, Fairchild, MSX, Pokemon Mini modules skaman - Cart ROM READER SNES ENHANCED, Famicom Cart Dumper, Coleco-, Intellivision, Virtual Boy, WSV, PCW, ARC, Atari 2600/5200/7800, ODY2, Fairchild, MSX, Pokemon Mini, C64, Vectrex modules
Tamanegi_taro - PCE and Satellaview modules Tamanegi_taro - PCE and Satellaview modules
splash5 - GBSmart, Wonderswan, NGP and Super A'can modules splash5 - GBSmart, Wonderswan, NGP and Super A'can modules
partlyhuman - Casio Loopy module partlyhuman - Casio Loopy module
@ -39,7 +39,8 @@
jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi, jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi,
Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman, Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman,
philenotfound, karimhadjsalem, nsx0r, ducky92, niklasweber, Lesserkuma, BacteriaMage, philenotfound, karimhadjsalem, nsx0r, ducky92, niklasweber, Lesserkuma, BacteriaMage,
vpelletier, Ancyker, mattiacci, RWeick, joshman196, partlyhuman vpelletier, Ancyker, mattiacci, RWeick, joshman196, partlyhuman, ButThouMust, hxlnt,
breyell
And to nocash for figuring out the secrets of the SFC Nintendo Power cartridge. And to nocash for figuring out the secrets of the SFC Nintendo Power cartridge.
@ -252,6 +253,10 @@ void print_STR(byte string_number, boolean newline) {
#define mode_MSX 33 #define mode_MSX 33
#define mode_POKE 34 #define mode_POKE 34
#define mode_LOOPY 35 #define mode_LOOPY 35
#define mode_C64 36
#define mode_5200 37
#define mode_7800 38
#define mode_VECTREX 39
// optimization-safe nop delay // optimization-safe nop delay
#define NOP __asm__ __volatile__("nop\n\t") #define NOP __asm__ __volatile__("nop\n\t")
@ -491,9 +496,9 @@ uint32_t calculateCRC(char* fileName, char* folder, int offset) {
} }
/****************************************** /******************************************
CRC Functions for Atari, Fairchild, Ody2, Arc modules CRC Functions for Atari, Fairchild, Ody2, Arc, etc. modules
*****************************************/ *****************************************/
#if (defined(enable_ATARI) || defined(enable_ODY2) || defined(enable_ARC) || defined(enable_FAIRCHILD) || defined(enable_MSX) || defined(enable_POKE)) #if (defined(enable_ATARI) || defined(enable_ODY2) || defined(enable_ARC) || defined(enable_FAIRCHILD) || defined(enable_MSX) || defined(enable_POKE) || defined(enable_5200) || defined(enable_7800) || defined(enable_C64) || defined(enable_VECTREX))
inline uint32_t updateCRC(uint8_t ch, uint32_t crc) { inline uint32_t updateCRC(uint8_t ch, uint32_t crc) {
uint32_t idx = ((crc) ^ (ch)) & 0xff; uint32_t idx = ((crc) ^ (ch)) & 0xff;
@ -885,12 +890,24 @@ static const char modeItem21[] PROGMEM = "Pokemon Mini (3V)";
#ifdef enable_LOOPY #ifdef enable_LOOPY
static const char modeItem22[] PROGMEM = "Casio Loopy"; static const char modeItem22[] PROGMEM = "Casio Loopy";
#endif #endif
#ifdef enable_FLASH #ifdef enable_C64
static const char modeItem23[] PROGMEM = "Flashrom Programmer"; static const char modeItem23[] PROGMEM = "Commodore 64";
#endif #endif
static const char modeItem24[] PROGMEM = "Self Test (3V)"; #ifdef enable_5200
static const char modeItem25[] PROGMEM = "About"; static const char modeItem24[] PROGMEM = "Atari 5200";
//static const char modeItem25[] PROGMEM = "Reset"; (stored in common strings array) #endif
#ifdef enable_7800
static const char modeItem25[] PROGMEM = "Atari 7800";
#endif
#ifdef enable_VECTREX
static const char modeItem26[] PROGMEM = "Vectrex";
#endif
#ifdef enable_FLASH
static const char modeItem27[] PROGMEM = "Flashrom Programmer";
#endif
static const char modeItem28[] PROGMEM = "Self Test (3V)";
static const char modeItem29[] PROGMEM = "About";
//static const char modeItem30[] PROGMEM = "Reset"; (stored in common strings array)
static const char* const modeOptions[] PROGMEM = { static const char* const modeOptions[] PROGMEM = {
#ifdef enable_GBX #ifdef enable_GBX
modeItem1, modeItem1,
@ -958,10 +975,22 @@ static const char* const modeOptions[] PROGMEM = {
#ifdef enable_LOOPY #ifdef enable_LOOPY
modeItem22, modeItem22,
#endif #endif
#ifdef enable_FLASH #ifdef enable_C64
modeItem23, modeItem23,
#endif #endif
modeItem24, modeItem25, string_reset2 #ifdef enable_5200
modeItem24,
#endif
#ifdef enable_7800
modeItem25,
#endif
#ifdef enable_VECTREX
modeItem26,
#endif
#ifdef enable_FLASH
modeItem27,
#endif
modeItem28, modeItem29, string_reset2
}; };
// Count menu entries // Count menu entries
@ -1033,6 +1062,18 @@ byte countMenuEntries() {
#ifdef enable_LOOPY #ifdef enable_LOOPY
count++; count++;
#endif #endif
#ifdef enable_C64
count++;
#endif
#ifdef enable_5200
count++;
#endif
#ifdef enable_7800
count++;
#endif
#ifdef enable_VECTREX
count++;
#endif
#ifdef enable_FLASH #ifdef enable_FLASH
count++; count++;
#endif #endif
@ -1154,21 +1195,41 @@ unsigned char fixMenuOrder(unsigned char modeMenu) {
currentEntry++; currentEntry++;
#endif #endif
#if defined(enable_FLASH) #if defined(enable_C64)
translationMatrix[currentEntry] = 22; translationMatrix[currentEntry] = 22;
currentEntry++; currentEntry++;
#endif #endif
// Self Test #if defined(enable_5200)
translationMatrix[currentEntry] = 23; translationMatrix[currentEntry] = 23;
currentEntry++; currentEntry++;
#endif
#if defined(enable_7800)
translationMatrix[currentEntry] = 24;
currentEntry++;
#endif
#if defined(enable_VECTREX)
translationMatrix[currentEntry] = 25;
currentEntry++;
#endif
#if defined(enable_FLASH)
translationMatrix[currentEntry] = 26;
currentEntry++;
#endif
// Self Test
translationMatrix[currentEntry] = 27;
currentEntry++;
// About // About
translationMatrix[currentEntry] = 24; translationMatrix[currentEntry] = 28;
currentEntry++; currentEntry++;
// Reset // Reset
translationMatrix[currentEntry] = 25; translationMatrix[currentEntry] = 29;
currentEntry++; currentEntry++;
return translationMatrix[modeMenu]; return translationMatrix[modeMenu];
@ -1211,9 +1272,15 @@ void mainMenu() {
num_answers = menuCount - 14; num_answers = menuCount - 14;
else else
num_answers = 7; num_answers = 7;
} else { // currPage == 4 } else if (currPage == 4) {
option_offset = 21; option_offset = 21;
num_answers = menuCount - 21; if (menuCount < 28)
num_answers = menuCount - 21;
else
num_answers = 7;
} else { // currPage == 5
option_offset = 28;
num_answers = menuCount - 28;
} }
// Copy menuOptions out of progmem // Copy menuOptions out of progmem
convertPgm(modeOptions + option_offset, num_answers); convertPgm(modeOptions + option_offset, num_answers);
@ -1389,8 +1456,36 @@ void mainMenu() {
break; break;
#endif #endif
#ifdef enable_FLASH #ifdef enable_C64
case 22: case 22:
setup_C64();
c64Menu();
break;
#endif
#ifdef enable_5200
case 23:
setup_5200();
a5200Menu();
break;
#endif
#ifdef enable_7800
case 24:
setup_7800();
a7800Menu();
break;
#endif
#ifdef enable_VECTREX
case 25:
setup_VECTREX();
vectrexMenu();
break;
#endif
#ifdef enable_FLASH
case 26:
#ifdef ENABLE_VSELECT #ifdef ENABLE_VSELECT
setup_FlashVoltage(); setup_FlashVoltage();
#endif #endif
@ -1399,16 +1494,16 @@ void mainMenu() {
#endif #endif
#ifdef enable_selftest #ifdef enable_selftest
case 23: case 27:
selfTest(); selfTest();
break; break;
#endif #endif
case 24: case 28:
aboutScreen(); aboutScreen();
break; break;
case 25: case 29:
resetArduino(); resetArduino();
break; break;
@ -3590,7 +3685,26 @@ void loop() {
loopyMenu(); loopyMenu();
} }
#endif #endif
#ifdef enable_C64
else if (mode == mode_C64) {
c64Menu();
}
#endif
#ifdef enable_5200
else if (mode == mode_5200) {
a5200Menu();
}
#endif
#ifdef enable_7800
else if (mode == mode_7800) {
a7800Menu();
}
#endif
#ifdef enable_VECTREX
else if (mode == mode_VECTREX) {
vectrexMenu();
}
#endif
else { else {
display_Clear(); display_Clear();
println_Msg(F("Menu Error")); println_Msg(F("Menu Error"));

View File

@ -1,32 +1,32 @@
/******************************************************************** /********************************************************************
* Open Source Cartridge Reader * Open Source Cartridge Reader
********************************************************************/ ********************************************************************/
#ifndef CONFIG_H_ #ifndef CONFIG_H_
#define CONFIG_H_ #define CONFIG_H_
/***** FIRMWARE CONFIGURATION ************************************** /***** FIRMWARE CONFIGURATION **************************************
*
* Add or remove the "//" in front of items to toggle them. Add or remove the "//" in front of items to toggle them.
*
* Disabled: Disabled:
* //#define HW5 //#define HW5
*
* Enabled: Enabled:
* #define HW5 #define HW5
*
* Things in ** blocks like this are comments. Changing them doesn't Things in ** blocks like this are comments. Changing them doesn't
* affect the firmware that is flashed to your OSCR. affect the firmware that is flashed to your OSCR.
*
* If you only get a blank screen or "Press Button" message after If you only get a blank screen or "Press Button" message after
* flashing you have enabled too many modules. flashing you have enabled too many modules.
*
********************************************************************/ ********************************************************************/
/*==== HARDWARE VERSION ===========================================*/ /*==== HARDWARE VERSION ===========================================*/
/* /*
* Choose your hardware version: Choose your hardware version:
*/ */
//#define HW5 //#define HW5
@ -41,7 +41,7 @@
/*==== HARDWARE MODULES ===========================================*/ /*==== HARDWARE MODULES ===========================================*/
/* [ Automatic Voltage Selection ---------------------------------- ] /* [ Automatic Voltage Selection ---------------------------------- ]
* Enable this if you have the VSELECT module. Enable this if you have the VSELECT module.
*/ */
//#define ENABLE_VSELECT //#define ENABLE_VSELECT
@ -49,8 +49,8 @@
/****/ /****/
/* [ Clock Generator ---------------------------------------------- ] /* [ Clock Generator ---------------------------------------------- ]
* Enable this if you have the clock generator module. This will Enable this if you have the clock generator module. This will
* automatically be enabled if you selected HW2 or newer above. automatically be enabled if you selected HW2 or newer above.
*/ */
//#define clockgen_installed //#define clockgen_installed
@ -58,8 +58,8 @@
/****/ /****/
/* [ Real Time Clock ---------------------------------------------- ] /* [ Real Time Clock ---------------------------------------------- ]
* Enable this if you have the RTC module. You can configure the Enable this if you have the RTC module. You can configure the
* type later in this file. type later in this file.
*/ */
//#define RTC_installed //#define RTC_installed
@ -75,6 +75,20 @@
/****/ /****/
/* [ Atari 5200 --------------------------------------------------- ]
*/
//#define enable_5200
/****/
/* [ Atari 7800 --------------------------------------------------- ]
*/
//#define enable_7800
/****/
/* [ Benesse Pocket Challenge W ----------------------------------- ] /* [ Benesse Pocket Challenge W ----------------------------------- ]
*/ */
@ -82,6 +96,13 @@
/****/ /****/
/* [ C64 --------------------------------------------------- ]
*/
//#define enable_C64
/****/
/* [ ColecoVision ------------------------------------------------- ] /* [ ColecoVision ------------------------------------------------- ]
*/ */
@ -106,7 +127,7 @@
/* [ Flashrom Programmer for SNES repros -------------------------- ] /* [ Flashrom Programmer for SNES repros -------------------------- ]
*/ */
#define enable_FLASH //#define enable_FLASH
//#define enable_FLASH16 //#define enable_FLASH16
/****/ /****/
@ -191,14 +212,14 @@
/* [ Super Famicom SF Memory Cassette ----------------------------- ] /* [ Super Famicom SF Memory Cassette ----------------------------- ]
*/ */
#define enable_SFM //#define enable_SFM
/****/ /****/
/* [ Super Famicom Satellaview ------------------------------------ ] /* [ Super Famicom Satellaview ------------------------------------ ]
*/ */
#define enable_SV //#define enable_SV
/****/ /****/
@ -209,6 +230,13 @@
/****/ /****/
/* [ Vectrex --------------------------------------------------- ]
*/
//#define enable_VECTREX
/****/
/* [ Virtual Boy -------------------------------------------------- ] /* [ Virtual Boy -------------------------------------------------- ]
*/ */
@ -216,7 +244,7 @@
/****/ /****/
/* [ Watara Supervision ------------------------------------------- ] /* [ Watara Supervision ------------------------------------------- ]
*/ */
//#define enable_WSV //#define enable_WSV
@ -247,10 +275,10 @@
/*==== FIRMWARE OPTIONS ===========================================*/ /*==== FIRMWARE OPTIONS ===========================================*/
/* [ LCD: Background Color ---------------------------------------- ] /* [ LCD: Background Color ---------------------------------------- ]
* Set the backlight color of the LCD if you have one. Set the backlight color of the LCD if you have one.
*
* PARAMETERS: PARAMETERS:
* Green, Red, Blue Green, Red, Blue
*/ */
#define background_color 100, 0, 0 #define background_color 100, 0, 0
@ -258,12 +286,12 @@
/****/ /****/
/* [ 3.3V Stability Fix (3V3FIX) ---------------------------------- ] /* [ 3.3V Stability Fix (3V3FIX) ---------------------------------- ]
* Enable this if you are having stability issues when using 3.3V, Enable this if you are having stability issues when using 3.3V,
* works best with VSELECT. works best with VSELECT.
*
* If not using VSELECT, always turn the cart reader on with the If not using VSELECT, always turn the cart reader on with the
* voltage switch set to 5V and switch to 5V before selecting a voltage switch set to 5V and switch to 5V before selecting a
* cartridge from the menu. cartridge from the menu.
*/ */
//#define ENABLE_3V3FIX //#define ENABLE_3V3FIX
@ -271,9 +299,9 @@
/****/ /****/
/* [ Updater ------------------------------------------------------ ] /* [ Updater ------------------------------------------------------ ]
* Disable this if you don't plan to/want to use the firmware Disable this if you don't plan to/want to use the firmware
* updater utility. This setting is ignored on hardware versions updater utility. This setting is ignored on hardware versions
* other than HW5 and HW3. other than HW5 and HW3.
*/ */
#define ENABLE_UPDATER #define ENABLE_UPDATER
@ -281,7 +309,7 @@
/****/ /****/
/* [ Self Test ---------------------------------------------------- ] /* [ Self Test ---------------------------------------------------- ]
* Tests for shorts and other issues in your OSCR build. Tests for shorts and other issues in your OSCR build.
*/ */
#define enable_selftest #define enable_selftest
@ -289,7 +317,7 @@
/****/ /****/
/* [ Logging ------------------------------------------------------ ] /* [ Logging ------------------------------------------------------ ]
* Write all info to OSCR_LOG.txt in root dir Write all info to OSCR_LOG.txt in root dir
*/ */
#define global_log #define global_log
@ -297,8 +325,8 @@
/****/ /****/
/* [ RTC: IC Type ------------------------------------------------- ] /* [ RTC: IC Type ------------------------------------------------- ]
* When the RTC module is installed, choose the type here. This When the RTC module is installed, choose the type here. This
* setting is ignored if the RTC option is not enabled. setting is ignored if the RTC option is not enabled.
*/ */
#define DS3231 #define DS3231
@ -307,7 +335,7 @@
/****/ /****/
/* [ SNES Core/CLOCKGEN: Read Clock Generator Calibration Data ---- ] /* [ SNES Core/CLOCKGEN: Read Clock Generator Calibration Data ---- ]
* Toggle to use calibration data from snes_clk.txt Toggle to use calibration data from snes_clk.txt
*/ */
//#define clockgen_calibration //#define clockgen_calibration
@ -315,22 +343,22 @@
/****/ /****/
/* [ MegaDrive/Genesis Core: Compatibility Settings --------------- ] /* [ MegaDrive/Genesis Core: Compatibility Settings --------------- ]
* Allows you to create a text file on the SD card called Allows you to create a text file on the SD card called
* "mdconf.txt" which you should place the following into: "mdconf.txt" which you should place the following into:
*
* [segaSram16bit] N [segaSram16bit] N
*
* Where N is: Where N is:
* 0: Output each byte once. Not supported by emulators. (default) 0: Output each byte once. Not supported by emulators. (default)
* 1: Duplicate each byte. Usable by Kega Fusion. 1: Duplicate each byte. Usable by Kega Fusion.
* 2: Same as 1 + pad with 0xFF so that the file size is 64KB. 2: Same as 1 + pad with 0xFF so that the file size is 64KB.
*/ */
//#define use_md_conf //#define use_md_conf
/* /*
* Alternatively, define it here by uncommenting and changing the Alternatively, define it here by uncommenting and changing the
* following line. Setting both allows you to change the default. following line. Setting both allows you to change the default.
*/ */
//#define DEFAULT_VALUE_segaSram16bit 0 //#define DEFAULT_VALUE_segaSram16bit 0
@ -338,9 +366,9 @@
/****/ /****/
/* [ N64 Core: Fast CRC ------------------------------------------- ] /* [ N64 Core: Fast CRC ------------------------------------------- ]
* Toggle so the CRC for N64 Roms will be calculated during dumping Toggle so the CRC for N64 Roms will be calculated during dumping
* from memory instead of after dumping from SD card, not compatible from memory instead of after dumping from SD card, not compatible
* with all Cart Readers with all Cart Readers
*/ */
//#define fastcrc //#define fastcrc
@ -348,7 +376,7 @@
/****/ /****/
/* [ N64 Core: Log Summary ---------------------------------------- ] /* [ N64 Core: Log Summary ---------------------------------------- ]
* Enable to save a n64log.txt file with rom info in /N64/ROM Enable to save a n64log.txt file with rom info in /N64/ROM
*/ */
//#define savesummarytotxt //#define savesummarytotxt
@ -358,42 +386,42 @@
/*==== PROCESSING =================================================*/ /*==== PROCESSING =================================================*/
/* /*
* You probably shouldn't change this stuff! You probably shouldn't change this stuff!
*/ */
#if (defined(HW4) || defined(HW5)) #if (defined(HW4) || defined(HW5))
#define enable_LCD #define enable_LCD
#define enable_neopixel #define enable_neopixel
#define enable_rotary #define enable_rotary
//#define rotate_counter_clockwise //#define rotate_counter_clockwise
#define clockgen_installed #define clockgen_installed
#define fastcrc #define fastcrc
#define ws_adapter_v2 #define ws_adapter_v2
#endif #endif
#if (defined(HW2) || defined(HW3)) #if (defined(HW2) || defined(HW3))
#define enable_OLED #define enable_OLED
#define enable_Button2 #define enable_Button2
#define clockgen_installed #define clockgen_installed
#define CA_LED #define CA_LED
#define fastcrc #define fastcrc
#endif #endif
#if defined(HW1) #if defined(HW1)
#define enable_OLED #define enable_OLED
//#define clockgen_installed //#define clockgen_installed
//#define fastcrc //#define fastcrc
#endif #endif
#if defined(SERIAL_MONITOR) #if defined(SERIAL_MONITOR)
#define enable_serial #define enable_serial
//#define clockgen_installed //#define clockgen_installed
//#define fastcrc //#define fastcrc
#endif #endif
/* Firmware updater only works with HW3 and HW5 */ /* Firmware updater only works with HW3 and HW5 */
#if !(defined(HW5) || defined(HW3)) #if !(defined(HW5) || defined(HW3))
#undef ENABLE_UPDATER #undef ENABLE_UPDATER
#endif #endif
/* End of settings */ /* End of settings */

View File

@ -1539,8 +1539,13 @@ bool getCartListInfo_MSX() {
println_Msg(F("")); println_Msg(F(""));
println_Msg(msxgame); println_Msg(msxgame);
display.setCursor(0, 48); display.setCursor(0, 48);
println_Msg(F("Press to Change")); #if defined(enable_OLED)
println_Msg(F("Hold to Select")); print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update(); display_Update();
#else #else
Serial.print(F("CART TITLE:")); Serial.print(F("CART TITLE:"));
@ -1659,4 +1664,4 @@ void setCart_MSX() {
msxcsvFile.close(); msxcsvFile.close();
} }
#endif #endif

View File

@ -186,6 +186,9 @@ void snsMenu() {
#endif #endif
resetArduino(); resetArduino();
break; break;
default:
print_MissingModule(); // does not return
} }
} }

631
Cart_Reader/VECTREX.ino Normal file
View File

@ -0,0 +1,631 @@
//******************************************
// VECTREX MODULE
//******************************************
#ifdef enable_VECTREX
// Vectrex
// Cartridge Pinout
// 36P 2.54mm pitch connector
//
// RIGHT
// +-------+
// +5V -| 2 1 |- /HALT
// +5V -| 4 3 |- A7
// A8 -| 6 5 |- A6
// A9 -| 8 7 |- A5 B
// L A11 -| 10 9 |- A4 O
// A /OE -| 12 11 |- A3 T
// B A10 -| 14 13 |- A2 T
// E A15 -| 16 15 |- A1 O
// L D7 -| 18 17 |- A0 M
// D6 -| 20 19 |- D0
// S D5 -| 22 21 |- D1 S
// I D4 -| 24 23 |- D2 I
// D D3 -| 26 25 |- GND D
// E GND -| 28 27 |- GND E
// R/W -| 30 29 |- A12
// /CART -| 32 31 |- A13
// /NMI -| 34 33 |- A14
// /IRQ -| 36 35 |- PB6
// +-------+
// LEFT
//
// LABEL SIDE
//
// /IRQ /NMI /CART R/W GND D3 D4 D5 D6 D7 A15 A10 /OE A11 A9 A8 +5V +5V
// +-------------------------------------------------------------------------------------------+
// | 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 |
// LEFT | | RIGHT
// | 35 33 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 |
// +-------------------------------------------------------------------------------------------+
// PB6 A14 A13 A12 GND GND D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 /HALT
//
// BOTTOM SIDE
// CONTROL PINS:
// /OE(PH1) - SNES CPUCLK
// /CART(PH3) - SNES /CS
// PB6(PH5) - SNES /WR
// R/W(PH6) - SNES /RD
//******************************************
// Defines
//******************************************
#define CLK_ENABLE PORTH |= (1 << 1) // /E HIGH
#define CLK_DISABLE PORTH &= ~(1 << 1) // /E LOW
#define PB6_ENABLE PORTH |= (1 << 5) // PB6 HIGH
#define PB6_DISABLE PORTH &= ~(1 << 5) // PB6 LOW
byte VECTREX[] = { 4, 8, 12 };
byte vectrexlo = 0; // Lowest Entry
byte vectrexhi = 2; // Highest Entry
byte vectrexsize;
byte newvectrexsize;
// EEPROM MAPPING
// 08 ROM SIZE
//******************************************
// Menu
//******************************************
// Base Menu
static const char vectrexMenuItem1[] PROGMEM = "Select Cart";
static const char vectrexMenuItem2[] PROGMEM = "Read ROM";
static const char vectrexMenuItem3[] PROGMEM = "Set Size";
static const char* const menuOptionsVECTREX[] PROGMEM = { vectrexMenuItem1, vectrexMenuItem2, vectrexMenuItem3, string_reset2 };
void setup_VECTREX() {
// Request 5V
setVoltage(VOLTS_SET_5V);
// Set Address Pins to Output
// Vectrex uses A0-A15 [A16-A23 UNUSED]
//A0-A7
DDRF = 0xFF;
//A8-A15
DDRK = 0xFF;
//A16-A23
DDRL = 0xFF;
// Set Control Pins to Output
// ---(PH0) /OE(PH1) /CART(PH3) ---(PH4) PB6(PH5) R/W(PH6)
DDRH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
// Set TIME(PJ0) to Output (UNUSED)
DDRJ |= (1 << 0);
// Set Pins (D0-D7) to Input
DDRC = 0x00;
// Setting Control Pins to HIGH
// ---(PH0) /OE(PH1) /CART(PH3) ---(PH4) PB6(PH5) R/W(PH6)
PORTH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
// Set Unused Data Pins (PA0-PA7) to Output
DDRA = 0xFF;
// Set Unused Pins HIGH
PORTA = 0xFF;
PORTL = 0xFF; // A16-A23
PORTJ |= (1 << 0); // TIME(PJ0)
// Set /CART LOW
PORTH &= ~(1 << 3); // Enable Cart
// Set /OE LOW
PORTH &= ~(1 << 1); // Output Enable
checkStatus_VECTREX();
strcpy(romName, "VECTREX");
mode = mode_VECTREX;
}
void vectrexMenu() {
convertPgm(menuOptionsVECTREX, 4);
uint8_t mainMenu = question_box(F("VECTREX MENU"), menuOptions, 4, 0);
switch (mainMenu) {
case 0:
// Select Cart
setCart_VECTREX();
wait();
setup_VECTREX();
break;
case 1:
// Read ROM
sd.chdir("/");
readROM_VECTREX();
sd.chdir("/");
break;
case 2:
// Set Size
setROMSize_VECTREX();
break;
case 3:
// reset
resetArduino();
break;
}
}
//******************************************
// READ CODE
//******************************************
uint8_t readData_VECTREX(uint16_t addr) // Add Input Pullup
{
PORTF = addr & 0xFF; // A0-A7
PORTK = (addr >> 8) & 0xFF; // A8-A15
NOP;
NOP;
NOP;
NOP;
NOP;
PORTC = 0xFF; // Input Pullup
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP; // Added delay for better read
NOP;
NOP;
NOP;
NOP;
NOP;
uint8_t ret = PINC;
return ret;
}
void readSegment_VECTREX(uint16_t startaddr, uint16_t endaddr) {
for (uint16_t addr = startaddr; addr < endaddr; addr += 512) {
for (int w = 0; w < 512; w++) {
uint8_t temp = readData_VECTREX(addr + w);
sdBuffer[w] = temp;
}
myFile.write(sdBuffer, 512);
}
}
//******************************************
// READ ROM
//******************************************
void readROM_VECTREX() {
strcpy(fileName, romName);
strcat(fileName, ".vec");
// create a new folder for storing rom file
EEPROM_readAnything(0, foldern);
sprintf(folder, "VECTREX/ROM/%d", foldern);
sd.mkdir(folder, true);
sd.chdir(folder);
display_Clear();
print_STR(saving_to_STR, 0);
print_Msg(folder);
println_Msg(F("/..."));
display_Update();
// open file on sdcard
if (!myFile.open(fileName, O_RDWR | O_CREAT))
print_FatalError(sd_error_STR);
// write new folder number back to EEPROM
foldern++;
EEPROM_writeAnything(0, foldern);
PB6_DISABLE; // PB6 LOW - Switch Bank
// Standard Carts 4K/8K
readSegment_VECTREX(0x0000, 0x0400); // 1K
readSegment_VECTREX(0x0400, 0x0800); // +1K = 2K
readSegment_VECTREX(0x0800, 0x0C00); // +1K = 3K
readSegment_VECTREX(0x0C00, 0x1000); // +1K = 4K
if (vectrexsize > 0) {
readSegment_VECTREX(0x1000, 0x2000); // +4K = 8K
// Dark Tower 12K
if (vectrexsize > 1)
readSegment_VECTREX(0x2000, 0x3000); // +4K = 12K
// Oversize 32K Cart
if (vectrexsize > 2)
readSegment_VECTREX(0x3000, 0x8000); // +20K = 32K
// Oversize 64K Cart - PB6 Bankswitch
if (vectrexsize > 3) { // [UNTESTED]
PB6_ENABLE; // PB6 HIGH - Switch Bank
readSegment_VECTREX(0x0000, 0x8000); // +32K = 64K
PB6_DISABLE; // Reset PB6
}
}
myFile.close();
unsigned long crcsize = VECTREX[vectrexsize] * 0x400;
calcCRC(fileName, crcsize, NULL, 0);
println_Msg(F(""));
// Prints string out of the common strings array either with or without newline
print_STR(press_button_STR, 1);
display_Update();
wait();
}
//******************************************
// ROM SIZE
//******************************************
void setROMSize_VECTREX() {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
if (vectrexlo == vectrexhi)
newvectrexsize = vectrexlo;
else {
int b = 0;
int i = vectrexlo;
display_Clear();
print_Msg(F("ROM Size: "));
println_Msg(VECTREX[i]);
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
while (1) {
b = checkButton();
if (b == 2) { // Previous (doubleclick)
if (i == vectrexlo)
i = vectrexhi;
else
i--;
display_Clear();
print_Msg(F("ROM Size: "));
println_Msg(VECTREX[i]);
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
}
if (b == 1) { // Next (press)
if (i == vectrexhi)
i = vectrexlo;
else
i++;
display_Clear();
print_Msg(F("ROM Size: "));
println_Msg(VECTREX[i]);
println_Msg(F(""));
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
}
if (b == 3) { // Long Press - Execute (hold)
newvectrexsize = i;
break;
}
}
display.setCursor(0, 56); // Display selection at bottom
}
print_Msg(F("ROM SIZE "));
print_Msg(VECTREX[newvectrexsize]);
println_Msg(F("K"));
display_Update();
delay(1000);
#else
if (vectrexlo == vectrexhi)
newvectrexsize = vectrexlo;
else {
setrom:
String sizeROM;
for (int i = 0; i < (vectrexhi - vectrexlo + 1); i++) {
Serial.print(F("Select ROM Size: "));
Serial.print(i);
Serial.print(F(" = "));
Serial.print(VECTREX[i + vectrexlo]);
Serial.println(F("K"));
}
Serial.print(F("Enter ROM Size: "));
while (Serial.available() == 0) {}
sizeROM = Serial.readStringUntil('\n');
Serial.println(sizeROM);
newvectrexsize = sizeROM.toInt() + vectrexlo;
if (newvectrexsize > vectrexhi) {
Serial.println(F("SIZE NOT SUPPORTED"));
Serial.println(F(""));
goto setrom;
}
}
Serial.print(F("ROM Size = "));
Serial.print(VECTREX[newvectrexsize]);
Serial.println(F("K"));
#endif
EEPROM_writeAnything(8, newvectrexsize);
vectrexsize = newvectrexsize;
}
void checkStatus_VECTREX() {
EEPROM_readAnything(8, vectrexsize);
if (vectrexsize > 2) {
vectrexsize = 0; // default 4KB
EEPROM_writeAnything(8, vectrexsize);
}
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("VECTREX READER"));
println_Msg(F("CURRENT SETTINGS"));
println_Msg(F(""));
print_Msg(F("ROM SIZE: "));
print_Msg(VECTREX[vectrexsize]);
println_Msg(F("K"));
display_Update();
wait();
#else
Serial.print(F("ROM SIZE: "));
Serial.print(VECTREX[vectrexsize]);
Serial.println(F("K"));
Serial.println(F(""));
#endif
}
//******************************************
// CART SELECT CODE
//******************************************
FsFile vectrexcsvFile;
char vectrexgame[25]; // title
char vectrexrr[4]; // romsize
char vectrexll[4]; // linelength (previous line)
unsigned long vectrexcsvpos; // CSV File Position
char vectrexcartCSV[] = "vectrexcart.txt"; // CSV List
char vectrexcsvEND[] = "EOF"; // CSV End Marker for scrolling
bool readLine_VECTREX(FsFile& f, char* line, size_t maxLen) {
for (size_t n = 0; n < maxLen; n++) {
int c = f.read();
if (c < 0 && n == 0) return false; // EOF
if (c < 0 || c == '\n') {
line[n] = 0;
return true;
}
line[n] = c;
}
return false; // line too long
}
bool readVals_VECTREX(char* vectrexgame, char* vectrexrr, char* vectrexll) {
char line[31];
vectrexcsvpos = vectrexcsvFile.position();
if (!readLine_VECTREX(vectrexcsvFile, line, sizeof(line))) {
return false; // EOF or too long
}
char* comma = strtok(line, ",");
int x = 0;
while (comma != NULL) {
if (x == 0)
strcpy(vectrexgame, comma);
else if (x == 1)
strcpy(vectrexrr, comma);
else if (x == 2)
strcpy(vectrexll, comma);
comma = strtok(NULL, ",");
x += 1;
}
return true;
}
bool getCartListInfo_VECTREX() {
bool buttonreleased = 0;
bool cartselected = 0;
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F(" HOLD TO FAST CYCLE"));
display_Update();
#else
Serial.println(F("HOLD BUTTON TO FAST CYCLE"));
#endif
delay(2000);
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
boolean buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == LOW) { // Button Held - Fast Cycle
while (1) { // Scroll Game List
while (readVals_VECTREX(vectrexgame, vectrexrr, vectrexll)) {
if (strcmp(vectrexcsvEND, vectrexgame) == 0) {
vectrexcsvFile.seek(0); // Restart
} else {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CART TITLE:"));
println_Msg(F(""));
println_Msg(vectrexgame);
display_Update();
#else
Serial.print(F("CART TITLE:"));
Serial.println(vectrexgame);
#endif
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
boolean buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == HIGH) { // Button Released
buttonreleased = 1;
break;
}
if (buttonreleased) {
buttonreleased = 0; // Reset Flag
break;
}
}
}
#if defined(enable_OLED)
buttonVal1 = (PIND & (1 << 7)); // PD7
#elif defined(enable_LCD)
boolean buttonVal1 = (PING & (1 << 2)); //PG2
#endif
if (buttonVal1 == HIGH) // Button Released
break;
}
}
#if (defined(enable_OLED) || defined(enable_LCD))
display.setCursor(0, 56);
println_Msg(F("FAST CYCLE OFF"));
display_Update();
#else
Serial.println(F(""));
Serial.println(F("FAST CYCLE OFF"));
Serial.println(F("PRESS BUTTON TO STEP FORWARD"));
Serial.println(F("DOUBLE CLICK TO STEP BACK"));
Serial.println(F("HOLD TO SELECT"));
Serial.println(F(""));
#endif
while (readVals_VECTREX(vectrexgame, vectrexrr, vectrexll)) {
if (strcmp(vectrexcsvEND, vectrexgame) == 0) {
vectrexcsvFile.seek(0); // Restart
} else {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CART TITLE:"));
println_Msg(F(""));
println_Msg(vectrexgame);
display.setCursor(0, 48);
#if defined(enable_OLED)
print_STR(press_to_change_STR, 1);
print_STR(right_to_select_STR, 1);
#elif defined(enable_LCD)
print_STR(rotate_to_change_STR, 1);
print_STR(press_to_select_STR, 1);
#endif
display_Update();
#else
Serial.print(F("CART TITLE:"));
Serial.println(vectrexgame);
#endif
while (1) { // Single Step
int b = checkButton();
if (b == 1) { // Continue (press)
break;
}
if (b == 2) { // Reset to Start of List (doubleclick)
byte prevline = strtol(vectrexll, NULL, 10);
vectrexcsvpos -= prevline;
vectrexcsvFile.seek(vectrexcsvpos);
break;
}
if (b == 3) { // Long Press - Select Cart (hold)
newvectrexsize = strtol(vectrexrr, NULL, 10);
EEPROM_writeAnything(8, newvectrexsize);
cartselected = 1; // SELECTION MADE
#if (defined(enable_OLED) || defined(enable_LCD))
println_Msg(F("SELECTION MADE"));
display_Update();
#else
Serial.println(F("SELECTION MADE"));
#endif
break;
}
}
if (cartselected) {
cartselected = 0; // Reset Flag
return true;
}
}
}
#if (defined(enable_OLED) || defined(enable_LCD))
println_Msg(F(""));
println_Msg(F("END OF FILE"));
display_Update();
#else
Serial.println(F("END OF FILE"));
#endif
return false;
}
void checkCSV_VECTREX() {
if (getCartListInfo_VECTREX()) {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CART SELECTED"));
println_Msg(F(""));
println_Msg(vectrexgame);
display_Update();
// Display Settings
display.setCursor(0, 56);
print_Msg(F("CODE: R"));
println_Msg(newvectrexsize);
display_Update();
#else
Serial.println(F(""));
Serial.println(F("CART SELECTED"));
Serial.println(vectrexgame);
// Display Settings
Serial.print(F("CODE: R"));
Serial.println(newvectrexsize);
Serial.println(F(""));
#endif
} else {
#if (defined(enable_OLED) || defined(enable_LCD))
display.setCursor(0, 56);
println_Msg(F("NO SELECTION"));
display_Update();
#else
Serial.println(F("NO SELECTION"));
#endif
}
}
void setCart_VECTREX() {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(vectrexcartCSV);
display_Update();
#endif
sd.chdir();
sprintf(folder, "VECTREX/CSV");
sd.chdir(folder); // Switch Folder
vectrexcsvFile = sd.open(vectrexcartCSV, O_READ);
if (!vectrexcsvFile) {
#if (defined(enable_OLED) || defined(enable_LCD))
display_Clear();
println_Msg(F("CSV FILE NOT FOUND!"));
display_Update();
#else
Serial.println(F("CSV FILE NOT FOUND!"));
#endif
while (1) {
if (checkButton() != 0)
setup_VECTREX();
}
}
checkCSV_VECTREX();
vectrexcsvFile.close();
}
#endif

1278
sd/32x.txt

File diff suppressed because it is too large Load Diff

76
sd/5200cart.txt Normal file
View File

@ -0,0 +1,76 @@
Activision Decathlon,0,2,0
Astro Chase,1,2,28
Atari PAM - Pete's Test,0,1,20
Atari PAM Diagnostics,1,2,32
Atari PAM System Test,0,1,30
Ballblazer,0,3,30
Beamrider,0,2,19
BerZerk,0,2,18
Blue Print,0,2,16
Boogie,0,0,19
Bounty Bob Strikes Back!,2,4,15
Buck Rogers,1,2,33
Centipede,1,2,20
Choplifter!,0,2,18
Congo Bongo,1,2,20
Countermeasure,1,2,20
Defender,1,2,23
Dig Dug,1,2,17
Dreadnaught Factor,0,1,16
Frogger,0,1,27
Frogger II,1,2,16
Galaxian,0,1,19
Gorf,0,1,17
Gremlins,0,3,13
Gyruss,1,2,17
H.E.R.O.,0,2,15
James Bond 007,1,2,17
Joust,1,2,23
Jungle Hunt,1,2,14
Kaboom!,0,0,20
Kangaroo,1,2,16
Keystone Kapers,0,1,17
K-Razy Shoot-Out,0,1,24
Mario Bros.,0,3,25
MegaMania,0,1,20
Meteorites,0,2,18
Miner 2049er,0,2,19
Missile Command,0,1,21
Montezuma's Revenge,1,2,24
Moon Patrol,0,2,28
Mountain King,0,1,20
Mr. Do!'s Castle,0,1,22
Ms. Pac-Man,1,2,25
Pac-Man,1,2,20
Pengo,0,3,16
Pitfall II,0,2,14
Pitfall!,0,1,19
Pole Position,1,2,17
Popeye,1,2,22
Q-bert,0,1,15
QIX,1,2,15
Quest for Quintana Roo,0,2,12
RealSports Baseball,0,3,31
RealSports Basketball,0,3,28
RealSports Football,1,2,30
RealSports Soccer,1,2,28
RealSports Tennis,1,2,26
Rescue on Fractalus!,0,3,26
River Raid,0,1,29
Robotron 2084,0,2,19
Space Dungeon,1,2,22
Space Invaders,0,1,22
Space Shuttle,0,2,23
Star Raiders,1,2,22
Star Trek,1,2,21
Star Wars - Return of the Jedi,0,1,18
Star Wars - The Arcade Game,1,2,39
Super Breakout,0,0,36
Super Cobra,0,1,23
Vanguard,0,3,20
Wizard of Wor,0,2,17
Yellow Submarine,0,0,22
Zaxxon,0,3,25
Zenji,0,1,15
Zone Ranger,0,2,14
EOF,0,0,0

71
sd/7800cart.txt Normal file
View File

@ -0,0 +1,71 @@
32 in 1,0,3,0
Ace of Aces,1,4,15
Alien Brigade,2,5,20
Asteroids,0,0,22
Atari 7800 Development Card,0,0,18
Ballblazer,0,1,36
Barnyard Blaster,1,4,19
Baseball,0,1,25
Basketbrawl,1,4,17
Centipede,0,0,20
Choplifter! (Europe),0,2,18
Choplifter! (USA),0,1,29
Commando,1,4,26
Crack'ed,1,4,17
Crossbow,2,5,17
Dark Chambers,1,4,17
Desert Falcon,0,2,22
Diagnostic Test Cartridge,0,1,22
Dig Dug (Europe),0,1,34
Dig Dug (USA),0,0,25
Donkey Kong,0,2,22
Donkey Kong Junior,0,2,20
Double Dragon,4,4,27
F-18 Hornet,3,3,22
Fatal Run,1,4,20
Fight Night,1,4,18
Food Fight (Europe),0,2,20
Food Fight (USA),0,1,28
Galaga (Europe),0,2,25
Galaga (USA),0,1,24
Hat Trick,0,2,21
Ikari Warriors,1,4,18
Impossible Mission,1,4,23
Jinks,1,4,27
Joust (Europe),0,2,14
Joust (USA),0,1,23
Karateka (Europe),6,3,20
Karateka (USA),0,2,26
Kung-Fu Master,0,1,23
Mario Bros.,0,2,23
Mat Mania Challenge,1,4,20
Mean 18 Ultimate Golf,1,4,28
Meltdown,1,4,30
Midnight Mutants,1,4,17
Motor Psycho,1,4,25
Ms. Pac-Man (Europe),0,1,21
Ms. Pac-Man (USA),0,0,29
Ninja Golf,1,4,26
One-on-One Basketball,0,2,19
Pete Rose Baseball,0,1,30
Planet Smashers,1,4,27
Pole Position II,0,1,24
Rampage,4,4,25
RealSports Baseball,5,3,16
Robotron 2084,0,1,28
Scrapyard Dog,1,4,22
Sentinel,1,4,22
Summer Games,1,4,17
Super Huey UH-IX,0,2,21
Super Skateboardin',0,1,25
Tank Command,5,3,28
Title Match Pro Wrestling,0,1,21
Tomcat,0,1,34
Touchdown Football,1,4,15
Tower Toppler,5,3,27
Water Ski,5,3,22
Winter Games,1,4,18
Xenophobe,1,4,21
Xevious (Europe),0,2,18
Xevious (USA),0,1,25
EOF,0,0,0

View File

@ -1,494 +1,494 @@
32 in 1,240,0 32 in 1,240,0
3-D Tic-Tac-Toe,32,15 3-D Tic-Tac-Toe,32,15
Acid Drop,246,23 Acid Drop,246,23
Action Force,64,18 Action Force,64,18
Adventure,64,20 Adventure,64,20
Adventures of TRON,64,17 Adventures of TRON,64,17
Air Raid,64,26 Air Raid,64,26
Air Raiders,64,16 Air Raiders,64,16
Airlock,64,19 Airlock,64,19
Air-Sea Battle,32,15 Air-Sea Battle,32,15
AKA Space Adventure,64,22 AKA Space Adventure,64,22
Alien,64,27 Alien,64,27
Alpha Beam with Ernie,248,13 Alpha Beam with Ernie,248,13
Amidar,64,30 Amidar,64,30
Armor Ambush,64,14 Armor Ambush,64,14
Artillery Duel,248,20 Artillery Duel,248,20
Assault,64,23 Assault,64,23
Asterix,248,15 Asterix,248,15
Asteroids,248,16 Asteroids,248,16
Astroblast,64,18 Astroblast,64,18
Atari Video Cube,64,18 Atari Video Cube,64,18
Atlantis,64,24 Atlantis,64,24
Atlantis II,64,16 Atlantis II,64,16
Bachelor Party,64,19 Bachelor Party,64,19
Bachelorette Party,64,22 Bachelorette Party,64,22
Backgammon,64,26 Backgammon,64,26
Bank Heist,64,18 Bank Heist,64,18
Barnstorming,64,18 Barnstorming,64,18
Base Attack,64,20 Base Attack,64,20
Basic Math,32,19 Basic Math,32,19
BASIC Programming,64,18 BASIC Programming,64,18
Basketball,32,25 Basketball,32,25
Battlezone,248,18 Battlezone,248,18
Beamrider,248,19 Beamrider,248,19
Beany Bopper,64,18 Beany Bopper,64,18
Beat 'Em & Eat 'Em,64,20 Beat 'Em & Eat 'Em,64,20
Berenstain Bears,248,26 Berenstain Bears,248,26
Bermuda,64,25 Bermuda,64,25
Bermuda Triangle,64,15 Bermuda Triangle,64,15
Berzerk,64,24 Berzerk,64,24
Big Bird's Egg Catch,248,15 Big Bird's Egg Catch,248,15
Blackjack,32,29 Blackjack,32,29
Blueprint,248,17 Blueprint,248,17
BMX Air Master,246,18 BMX Air Master,246,18
Bobby Is Going Home,64,23 Bobby Is Going Home,64,23
Boing!,64,27 Boing!,64,27
Bowling,32,14 Bowling,32,14
Boxing,32,15 Boxing,32,15
Brain Games,32,14 Brain Games,32,14
Breakout,32,19 Breakout,32,19
Bridge,64,16 Bridge,64,16
Buck Rogers - Planet of Zoom,248,14 Buck Rogers - Planet of Zoom,248,14
Bugs,64,37 Bugs,64,37
Bump 'n' Jump,231,12 Bump 'n' Jump,231,12
Bumper Bash,64,22 Bumper Bash,64,22
BurgerTime,231,19 BurgerTime,231,19
Burning Desire,64,19 Burning Desire,64,19
Cakewalk,64,22 Cakewalk,64,22
California Games,246,16 California Games,246,16
Canyon Bomber,32,25 Canyon Bomber,32,25
Carnival,64,21 Carnival,64,21
Casino,64,16 Casino,64,16
Cat Trax,64,14 Cat Trax,64,14
Cathouse Blues,64,16 Cathouse Blues,64,16
Centipede,248,22 Centipede,248,22
Challenge,248,18 Challenge,248,18
Challenge of.... Nexar,64,18 Challenge of.... Nexar,64,18
Chase the Chuckwagon,64,30 Chase the Chuckwagon,64,30
Checkers,32,28 Checkers,32,28
China Syndrome,64,16 China Syndrome,64,16
Chopper Command,64,22 Chopper Command,64,22
Chuck Norris Superkicks,248,23 Chuck Norris Superkicks,248,23
Circus Atari,64,32 Circus Atari,64,32
Coco Nuts,64,20 Coco Nuts,64,20
Codebreaker,32,17 Codebreaker,32,17
Combat,32,19 Combat,32,19
Commando,246,14 Commando,246,14
Commando Raid,64,17 Commando Raid,64,17
Condor Attack,64,21 Condor Attack,64,21
Confrontation,64,21 Confrontation,64,21
Congo Bongo,248,21 Congo Bongo,248,21
Cookie Monster Munch,248,20 Cookie Monster Munch,248,20
Cosmic Ark,64,29 Cosmic Ark,64,29
Cosmic Commuter,64,18 Cosmic Commuter,64,18
Cosmic Corridor,64,23 Cosmic Corridor,64,23
Cosmic Creeps,64,23 Cosmic Creeps,64,23
Cosmic Swarm,32,21 Cosmic Swarm,32,21
Crackpots,64,20 Crackpots,64,20
Crash Dive,64,17 Crash Dive,64,17
Crazy Climber,248,18 Crazy Climber,248,18
Cross Force,64,22 Cross Force,64,22
Crossbow,246,19 Crossbow,246,19
Crypts of Chaos,64,17 Crypts of Chaos,64,17
Crystal Castles,246,23 Crystal Castles,246,23
Cubicolor,64,24 Cubicolor,64,24
Cubo Magico,64,17 Cubo Magico,64,17
Custer's Revenge,64,19 Custer's Revenge,64,19
Dancing Plate,64,24 Dancing Plate,64,24
Dark Cavern,64,21 Dark Cavern,64,21
Dark Chambers,246,19 Dark Chambers,246,19
Dark Mage,248,22 Dark Mage,248,22
Deadly Duck,64,18 Deadly Duck,64,18
Death Trap,64,19 Death Trap,64,19
Decathlon,254,18 Decathlon,254,18
Defender,64,18 Defender,64,18
Defender II,248,16 Defender II,248,16
Demolition Herby,64,20 Demolition Herby,64,20
Demon Attack,64,24 Demon Attack,64,24
Demons to Diamonds,64,20 Demons to Diamonds,64,20
Desert Falcon,246,26 Desert Falcon,246,26
Dice Puzzle,64,22 Dice Puzzle,64,22
Dig Dug,246,19 Dig Dug,246,19
Dishaster,64,16 Dishaster,64,16
Dodge 'Em,64,17 Dodge 'Em,64,17
Dolphin,64,17 Dolphin,64,17
Donald Duck's Speedboat,248,15 Donald Duck's Speedboat,248,15
Donkey Kong,64,32 Donkey Kong,64,32
Donkey Kong Jr,248,19 Donkey Kong Jr,248,19
Double Dragon,246,23 Double Dragon,246,23
Double Dunk,246,22 Double Dunk,246,22
Dragon Defender,64,20 Dragon Defender,64,20
Dragonfire,64,23 Dragonfire,64,23
Dragster,32,18 Dragster,32,18
Dukes of Hazzard,246,16 Dukes of Hazzard,246,16
E.T.,248,25 E.T.,248,25
Earth Dies Screaming,64,13 Earth Dies Screaming,64,13
Eggomania,64,28 Eggomania,64,28
Elevator Action,248,17 Elevator Action,248,17
Eli's Ladder,64,24 Eli's Ladder,64,24
Encounter at L-5,64,20 Encounter at L-5,64,20
Enduro,64,24 Enduro,64,24
Entombed,64,14 Entombed,64,14
Espial,63,16 Espial,63,16
Exocet,64,14 Exocet,64,14
Extra Terrestrials,64,14 Extra Terrestrials,64,14
Fantastic Voyage,64,26 Fantastic Voyage,64,26
Farmyard Fun,64,24 Farmyard Fun,64,24
Fast Eddie,64,20 Fast Eddie,64,20
Fast Food,64,18 Fast Food,64,18
Fatal Run,244,17 Fatal Run,244,17
Fathom,248,18 Fathom,248,18
Fighter Pilot,246,15 Fighter Pilot,246,15
Final Approach,64,22 Final Approach,64,22
Fire Fighter,64,22 Fire Fighter,64,22
Fire Fly,64,20 Fire Fly,64,20
Fishing Derby,32,16 Fishing Derby,32,16
Flag Capture,32,21 Flag Capture,32,21
Flash Gordon,64,20 Flash Gordon,64,20
Football,32,20 Football,32,20
Forest,64,16 Forest,64,16
Frankenstein's Monster,64,14 Frankenstein's Monster,64,14
Freeway,32,30 Freeway,32,30
Frisco,64,15 Frisco,64,15
Frog Pond,248,14 Frog Pond,248,14
Frogger,64,18 Frogger,64,18
Frogger II,224,15 Frogger II,224,15
Frogs and Flies,64,19 Frogs and Flies,64,19
Front Line,248,23 Front Line,248,23
Frostbite,64,19 Frostbite,64,19
G.I. Joe,64,17 G.I. Joe,64,17
Galaxian,248,16 Galaxian,248,16
Gamma Attack,32,17 Gamma Attack,32,17
Gangster Alley,64,20 Gangster Alley,64,20
Gas Hog,64,22 Gas Hog,64,22
Gauntlet,64,15 Gauntlet,64,15
Ghost Manor,248,16 Ghost Manor,248,16
Ghostbusters,248,20 Ghostbusters,248,20
Ghostbusters II,246,21 Ghostbusters II,246,21
Gigolo,64,24 Gigolo,64,24
Glacier Patrol,64,14 Glacier Patrol,64,14
Glib,64,22 Glib,64,22
Golf,32,12 Golf,32,12
Gopher,64,12 Gopher,64,12
Gorf,64,14 Gorf,64,14
Grand Prix,246,12 Grand Prix,246,12
Gravitar,248,19 Gravitar,248,19
Great Escape,64,17 Great Escape,64,17
Gremlins,248,20 Gremlins,248,20
Guardian,64,17 Guardian,64,17
Gyruss,224,16 Gyruss,224,16
H.E.R.O.,248,15 H.E.R.O.,248,15
Halloween,64,17 Halloween,64,17
Hangman,64,17 Hangman,64,17
Harbor Escape,64,15 Harbor Escape,64,15
Haunted House,64,21 Haunted House,64,21
Hole Hunter,64,21 Hole Hunter,64,21
Home Run,32,19 Home Run,32,19
Human Cannonball,32,16 Human Cannonball,32,16
Hunt & Score,32,24 Hunt & Score,32,24
I Want My Mommy,64,20 I Want My Mommy,64,20
Ice Hockey,64,23 Ice Hockey,64,23
Ikari Warriors,246,18 Ikari Warriors,246,18
Indy 500,32,23 Indy 500,32,23
Infiltrate,64,16 Infiltrate,64,16
International Soccer,64,18 International Soccer,64,18
IQ 180,64,28 IQ 180,64,28
James Bond 007,224,14 James Bond 007,224,14
Jaw Breaker,64,23 Jaw Breaker,64,23
Journey Escape,64,19 Journey Escape,64,19
Joust,248,22 Joust,248,22
JoustPong,64,14 JoustPong,64,14
Jr. Pac-Man,246,17 Jr. Pac-Man,246,17
Jungle Fever,64,20 Jungle Fever,64,20
Jungle Hunt,248,20 Jungle Hunt,248,20
Kaboom!,32,20 Kaboom!,32,20
Kangaroo,248,15 Kangaroo,248,15
Karate,64,17 Karate,64,17
Keystone Kapers,64,14 Keystone Kapers,64,14
King Kong,64,23 King Kong,64,23
Klax,246,17 Klax,246,17
Knight on the Town,64,13 Knight on the Town,64,13
Kool-Aid Man,64,26 Kool-Aid Man,64,26
Krull,248,20 Krull,248,20
Kung Fu Superkicks,248,14 Kung Fu Superkicks,248,14
Kung-Fu Master,248,27 Kung-Fu Master,248,27
Lady in Wading,64,23 Lady in Wading,64,23
Laser Blast,32,22 Laser Blast,32,22
Laser Gates,64,19 Laser Gates,64,19
Lilly Advenure,64,19 Lilly Advenure,64,19
Lochjaw,64,22 Lochjaw,64,22
Lock 'n' Chase,64,15 Lock 'n' Chase,64,15
London Blitz,64,22 London Blitz,64,22
Lost Luggage,64,20 Lost Luggage,64,20
M.A.D.,64,20 M.A.D.,64,20
M.A.S.H,64,14 M.A.S.H,64,14
MagiCard,192,15 MagiCard,192,15
Malagai,64,17 Malagai,64,17
Mangia',64,15 Mangia',64,15
Marauder,64,15 Marauder,64,15
Marine Wars,64,16 Marine Wars,64,16
Mario Bros.,248,19 Mario Bros.,248,19
Master Builder,64,20 Master Builder,64,20
Masters of the Universe,231,22 Masters of the Universe,231,22
Math Gran Prix,64,32 Math Gran Prix,64,32
Maze Craze,64,22 Maze Craze,64,22
Mega Force,64,18 Mega Force,64,18
MegaBoy,240,18 MegaBoy,240,18
MegaMania,64,16 MegaMania,64,16
Midnight Magic,246,17 Midnight Magic,246,17
Millipede,246,23 Millipede,246,23
Mind Maze,248,18 Mind Maze,248,18
Miner 2049er,63,18 Miner 2049er,63,18
Miner 2049er Volume II,63,20 Miner 2049er Volume II,63,20
Mines of Minos,64,30 Mines of Minos,64,30
Miniature Golf,32,22 Miniature Golf,32,22
Miss Piggy's Wedding,248,22 Miss Piggy's Wedding,248,22
Missile Command,64,29 Missile Command,64,29
Missile Control,64,23 Missile Control,64,23
Mission 3000 A.D.,64,23 Mission 3000 A.D.,64,23
Mission Survive,64,25 Mission Survive,64,25
Mogul Maniac,64,23 Mogul Maniac,64,23
Montezuma's Revenge,224,20 Montezuma's Revenge,224,20
Moon Patrol,248,28 Moon Patrol,248,28
Moonsweeper,248,20 Moonsweeper,248,20
Motocross,64,20 Motocross,64,20
Motocross Racer,248,17 Motocross Racer,248,17
MotoRodeo,246,24 MotoRodeo,246,24
Mountain King,250,18 Mountain King,250,18
Mouse Trap,64,22 Mouse Trap,64,22
Mr. Do!,248,18 Mr. Do!,248,18
Mr. Do!'s Castle,224,16 Mr. Do!'s Castle,224,16
Mr. Postman,64,25 Mr. Postman,64,25
Ms. Pac-Man,248,19 Ms. Pac-Man,248,19
Music Machine,64,20 Music Machine,64,20
My Golf,248,21 My Golf,248,21
Name This Game,64,16 Name This Game,64,16
Night Driver,32,22 Night Driver,32,22
Night Stalker,64,20 Night Stalker,64,20
Nightmare,64,21 Nightmare,64,21
No Escape!,64,17 No Escape!,64,17
Nuts,64,18 Nuts,64,18
Obelix,248,12 Obelix,248,12
Off the Wall,246,15 Off the Wall,246,15
Oink!,64,21 Oink!,64,21
Omega Race,250,13 Omega Race,250,13
Open Sesame,64,19 Open Sesame,64,19
Oscar's Trash Race,248,19 Oscar's Trash Race,248,19
Othello,32,27 Othello,32,27
Out of Control,64,15 Out of Control,64,15
Outlaw,32,22 Outlaw,32,22
Pac-Kong,64,14 Pac-Kong,64,14
Pac-Man,64,16 Pac-Man,64,16
Panda Chase,64,15 Panda Chase,64,15
Parachute,64,19 Parachute,64,19
Pele's Soccer,64,17 Pele's Soccer,64,17
Pengo,248,21 Pengo,248,21
Pepsi Invaders,64,14 Pepsi Invaders,64,14
Pete Rose Baseball,246,22 Pete Rose Baseball,246,22
Phantom Tank,64,27 Phantom Tank,64,27
Pharaoh's Curse,64,20 Pharaoh's Curse,64,20
Philly Flasher,64,23 Philly Flasher,64,23
Phoenix,248,22 Phoenix,248,22
Pick 'n' Pile,246,16 Pick 'n' Pile,246,16
Picnic,64,22 Picnic,64,22
Piece o' Cake,64,14 Piece o' Cake,64,14
Pigs in Space,248,21 Pigs in Space,248,21
Pitfall II,208,22 Pitfall II,208,22
Pitfall!,64,19 Pitfall!,64,19
Planet Patrol,64,16 Planet Patrol,64,16
Plaque Attack,64,21 Plaque Attack,64,21
Polaris,63,21 Polaris,63,21
Pole Position,248,15 Pole Position,248,15
Polo,32,22 Polo,32,22
Pompeii,64,12 Pompeii,64,12
Pooyan,64,15 Pooyan,64,15
Popeye,224,14 Popeye,224,14
Porky's,248,15 Porky's,248,15
Pressure Cooker,248,16 Pressure Cooker,248,16
Private Eye,248,24 Private Eye,248,24
Pyramid War,64,20 Pyramid War,64,20
Q-bert,64,19 Q-bert,64,19
Q-bert's Qubes,224,14 Q-bert's Qubes,224,14
Quadrun,248,23 Quadrun,248,23
Quest for Quintana Roo,248,16 Quest for Quintana Roo,248,16
Quick Step!,64,31 Quick Step!,64,31
Rabbit Transit,248,19 Rabbit Transit,248,19
Racing Car,64,23 Racing Car,64,23
Racquetball,64,18 Racquetball,64,18
Radar Lock,246,19 Radar Lock,246,19
Raft Rider,64,19 Raft Rider,64,19
Raiders of the Lost Ark,248,18 Raiders of the Lost Ark,248,18
Ram It,64,32 Ram It,64,32
Rampage!,246,14 Rampage!,246,14
Raumpatrouille,64,17 Raumpatrouille,64,17
Reactor,64,22 Reactor,64,22
RealSports Baseball,248,15 RealSports Baseball,248,15
RealSports Boxing,246,28 RealSports Boxing,246,28
RealSports Football,248,26 RealSports Football,248,26
RealSports Soccer,248,28 RealSports Soccer,248,28
RealSports Tennis,248,26 RealSports Tennis,248,26
RealSports Volleyball,64,26 RealSports Volleyball,64,26
Rescue Terra I,64,29 Rescue Terra I,64,29
Resgate Espacial,248,22 Resgate Espacial,248,22
Revenge of the Beefsteak Tomatoes,64,25 Revenge of the Beefsteak Tomatoes,64,25
Riddle of the Sphinx,64,41 Riddle of the Sphinx,64,41
River Patrol,63,28 River Patrol,63,28
River Raid,64,20 River Raid,64,20
River Raid II,246,18 River Raid II,246,18
Road Runner,246,22 Road Runner,246,22
Robin Hood,248,20 Robin Hood,248,20
Robot Tank,254,19 Robot Tank,254,19
Roc 'n Rope,248,19 Roc 'n Rope,248,19
Room of Doom,64,20 Room of Doom,64,20
Rubik's Cube,64,20 Rubik's Cube,64,20
Save Our Ship,64,20 Save Our Ship,64,20
Scuba Diver,64,21 Scuba Diver,64,21
Sea Hawk,64,19 Sea Hawk,64,19
Sea Hunt,64,16 Sea Hunt,64,16
Sea Monster,64,16 Sea Monster,64,16
Seaquest,64,19 Seaquest,64,19
Secret Quest,246,16 Secret Quest,246,16
Sentinel,246,21 Sentinel,246,21
Shark Attack,64,17 Shark Attack,64,17
Shootin' Gallery,64,20 Shootin' Gallery,64,20
Shuttle Orbiter,64,24 Shuttle Orbiter,64,24
Sir Lancelot,248,23 Sir Lancelot,248,23
Skate Boardin',248,21 Skate Boardin',248,21
Skeet Shoot,32,23 Skeet Shoot,32,23
Ski Hunt,64,19 Ski Hunt,64,19
Ski Run,64,16 Ski Run,64,16
Skiing,32,15 Skiing,32,15
Sky Diver,32,14 Sky Diver,32,14
Sky Jinks,32,17 Sky Jinks,32,17
Sky Skipper,64,17 Sky Skipper,64,17
Slot Machine,32,19 Slot Machine,32,19
Slot Racers,32,20 Slot Racers,32,20
Smurf Rescue in Gargamels Castle,248,19 Smurf Rescue in Gargamels Castle,248,19
Smurfs Save the Day,248,41 Smurfs Save the Day,248,41
Sneak 'n Peek,64,28 Sneak 'n Peek,64,28
Snoopy and the Red Baron,248,21 Snoopy and the Red Baron,248,21
Solar Fox,248,33 Solar Fox,248,33
Solar Storm,64,18 Solar Storm,64,18
Solaris,246,19 Solaris,246,19
Sorcerer,64,16 Sorcerer,64,16
Sorcerer's Apprentice,248,16 Sorcerer's Apprentice,248,16
Space Attack,64,30 Space Attack,64,30
Space Canyon,64,20 Space Canyon,64,20
Space Cavern,64,20 Space Cavern,64,20
Space Invaders,64,20 Space Invaders,64,20
Space Jockey,32,22 Space Jockey,32,22
Space Shuttle,248,20 Space Shuttle,248,20
Space Tunnel,64,22 Space Tunnel,64,22
Space War,32,20 Space War,32,20
Spacechase,64,17 Spacechase,64,17
SpaceMaster X-7,64,18 SpaceMaster X-7,64,18
Spider Fighter,64,23 Spider Fighter,64,23
Spider Maze,64,22 Spider Maze,64,22
Spider-Man,64,19 Spider-Man,64,19
Spike's Peak,248,18 Spike's Peak,248,18
Spitfire Attack,64,21 Spitfire Attack,64,21
Springer,63,23 Springer,63,23
Sprint Master,246,16 Sprint Master,246,16
Spy Hunter,248,22 Spy Hunter,248,22
Squeeze Box,64,19 Squeeze Box,64,19
Squirrel,64,19 Squirrel,64,19
Sssnake,64,16 Sssnake,64,16
Stampede,32,15 Stampede,32,15
Star Fox,64,16 Star Fox,64,16
Star Raiders,248,16 Star Raiders,248,16
Star Ship,32,21 Star Ship,32,21
Star Strike,64,17 Star Strike,64,17
Star Trek,248,19 Star Trek,248,19
Star Voyager,64,18 Star Voyager,64,18
Star Wars - Arcade Game,224,20 Star Wars - Arcade Game,224,20
Star Wars - Death Star Battle,224,32 Star Wars - Death Star Battle,224,32
Star Wars - Empire Strikes Back,64,38 Star Wars - Empire Strikes Back,64,38
Star Wars - Jedi Arena,64,39 Star Wars - Jedi Arena,64,39
Stargate,246,30 Stargate,246,30
Stargunner,64,17 Stargunner,64,17
StarMaster,64,18 StarMaster,64,18
Steeplechase,32,18 Steeplechase,32,18
Stellar Track,64,20 Stellar Track,64,20
Strategy X,64,21 Strategy X,64,21
Strawberry Shortcake,64,18 Strawberry Shortcake,64,18
Street Racer,32,28 Street Racer,32,28
Stronghold,64,20 Stronghold,64,20
Stunt Man,64,18 Stunt Man,64,18
Submarine Commander,64,17 Submarine Commander,64,17
Sub-Scan,64,27 Sub-Scan,64,27
Subterranea,248,16 Subterranea,248,16
Summer Games,246,20 Summer Games,246,20
Super Baseball,246,21 Super Baseball,246,21
Super Breakout,64,23 Super Breakout,64,23
Super Challenge Baseball,64,22 Super Challenge Baseball,64,22
Super Challenge Football,64,32 Super Challenge Football,64,32
Super Cobra,224,32 Super Cobra,224,32
Super Football,248,20 Super Football,248,20
Superman,64,23 Superman,64,23
Surfer's Paradise,64,16 Surfer's Paradise,64,16
Surround,32,25 Surround,32,25
Survival Run,64,16 Survival Run,64,16
SwordQuest - EarthWorld,248,20 SwordQuest - EarthWorld,248,20
SwordQuest - FireWorld,248,32 SwordQuest - FireWorld,248,32
SwordQuest - WaterWorld,248,31 SwordQuest - WaterWorld,248,31
Tac-Scan,64,32 Tac-Scan,64,32
Tanks But No Tanks,64,16 Tanks But No Tanks,64,16
Tapeworm,64,26 Tapeworm,64,26
Tapper,248,16 Tapper,248,16
Tax Avoiders,248,15 Tax Avoiders,248,15
Taz,248,21 Taz,248,21
Tempest,248,12 Tempest,248,12
Tennis,32,16 Tennis,32,16
Texas Chainsaw Massacre,64,14 Texas Chainsaw Massacre,64,14
Threshold,64,31 Threshold,64,31
Thunderground,64,17 Thunderground,64,17
Time Pilot,249,21 Time Pilot,249,21
Time Warp,64,19 Time Warp,64,19
Title Match Pro Wrestling,248,17 Title Match Pro Wrestling,248,17
Tomarc the Barbarian,248,34 Tomarc the Barbarian,248,34
Tomcat,246,29 Tomcat,246,29
Tooth Protectors,224,15 Tooth Protectors,224,15
Towering Inferno,64,25 Towering Inferno,64,25
Track and Field,246,24 Track and Field,246,24
Treasure Below,64,24 Treasure Below,64,24
Treasure Island,64,22 Treasure Island,64,22
Trick Shot,64,23 Trick Shot,64,23
TRON - Deadly Discs,64,18 TRON - Deadly Discs,64,18
Tunnel Runner,250,27 Tunnel Runner,250,27
Turmoil,64,22 Turmoil,64,22
Tutankham,224,15 Tutankham,224,15
Universal Chaos,64,18 Universal Chaos,64,18
Up 'n Down,248,23 Up 'n Down,248,23
Vanguard,248,19 Vanguard,248,19
Venture,64,17 Venture,64,17
Video Checkers,64,15 Video Checkers,64,15
Video Chess,64,22 Video Chess,64,22
Video Jogger,64,19 Video Jogger,64,19
Video Life,32,20 Video Life,32,20
Video Olympics,32,18 Video Olympics,32,18
Video Pinball,64,22 Video Pinball,64,22
Video Reflex,64,21 Video Reflex,64,21
Vogel Flieh,64,20 Vogel Flieh,64,20
Vulture Attack,64,19 Vulture Attack,64,19
Wabbit,64,22 Wabbit,64,22
Walker,64,14 Walker,64,14
Wall Ball,64,14 Wall Ball,64,14
Wall Break,64,17 Wall Break,64,17
Wall-Defender,64,18 Wall-Defender,64,18
Warlords,64,21 Warlords,64,21
Warplock,64,16 Warplock,64,16
Wing War,248,16 Wing War,248,16
Wings,250,17 Wings,250,17
Winter Games,246,14 Winter Games,246,14
Wizard of Wor,64,21 Wizard of Wor,64,21
Word Zapper,64,21 Word Zapper,64,21
World End,64,19 World End,64,19
Worm War I,64,17 Worm War I,64,17
Xenophobe,246,18 Xenophobe,246,18
X-Man,64,18 X-Man,64,18
Yars' Revenge,64,13 Yars' Revenge,64,13
Zaxxon,248,21 Zaxxon,248,21
Zoo Fun,64,15 Zoo Fun,64,15
Z-Tack,64,15 Z-Tack,64,15
EOF,0,0 EOF,0,0

274
sd/c64cart.txt Normal file
View File

@ -0,0 +1,274 @@
128er Quickload,0,1,1,0
256K-EPROM-System,0,1,1,25
64 Doctor,0,1,1,28
64MON,0,1,1,20
Action Cartridge Plus,1,5,0,16
Action Replay Professional,1,5,0,32
Activision Decathlon,0,3,0,37
Adventure 1,0,3,0,31
Adventure 3,0,3,0,22
Adventure Creator,0,3,0,22
Aegean Voyage,0,3,0,28
After the War,17,7,1,24
Alf in the Color Caves,0,3,0,25
Alien Sidestep,0,1,0,33
Alpha Build,0,1,0,25
Alphabet Zoo,0,3,0,22
Arnie Armchair's Howzat Cricket Game,0,3,0,23
Astroblitz,0,1,0,47
Attack of the Mutant Camels,0,1,1,21
Avenger (MAX),0,1,2,38
BadLands,5,6,1,24
Batman,5,7,1,19
Battle Command,5,7,1,17
Battlezone,0,3,0,25
BC's Quest for Tires,0,3,0,21
Beamrider,0,3,0,31
Big Bird's Funhouse,0,3,0,20
Big Bird's Special Delivery,0,3,0,30
Black Box,0,3,0,38
Blueprint,0,3,0,20
Bowling (MAX),0,3,2,20
Bridge 64,0,3,0,24
Bubble Burst,0,3,0,20
Buck Rogers,0,3,0,23
Bug Crusher,0,1,0,22
C-64 Diagnostic,0,1,1,22
C-64 Import Test Diag,0,1,1,26
C64-FORTH,0,2,3,32
Calc Result Advanced,0,1,1,20
Castle Hassle,0,3,0,31
Centipede,0,1,0,24
Chase H.Q. II,5,8,0,20
Checkers,0,3,0,24
Choplifter!,0,3,0,19
Close Encounters of the Worst Kind,0,1,0,22
Clowns (MAX),0,1,2,45
Coccinelle cherche dessinateur,0,1,1,23
Coco-Notes,0,3,0,41
Colossus Chess +2,8,6,0,21
COMAL 80,21,6,0,28
Commodore 64 Diagnostic,0,1,1,20
Congo Bongo,0,3,0,34
Conrad Disk Booster,0,1,1,22
Cosmic Life,0,1,0,30
Crisis Mountain,0,3,0,22
Cyberball,5,7,1,26
Dance Fantasy,0,1,0,20
Dancing Feats,0,3,0,24
Defender,0,3,0,24
Dela S-4-Modul,0,1,1,19
Delta Drawing,0,3,0,25
Der Rechenlowe,11,3,0,24
Der Rechtschreiblowe,11,3,0,26
Designer's Pencil,0,3,0,32
Diamond Mine,0,3,0,28
Diary 64,0,1,1,23
Dig Dug,0,3,0,19
Doc'64,0,1,1,18
Donkey Kong,0,3,0,17
Dot Gobbler,0,1,0,22
Double Dragon (HES),19,7,1,22
Double Dragon (Ocean),5,7,1,31
Dragonsden,0,3,0,32
Ducks Ahoy!,0,3,0,21
Electronic Mailbox-64,0,1,1,22
Epyx Fast Load Cartridge,10,1,3,32
Ernie's Magic Shapes,0,3,0,36
Espial,0,3,0,31
ExBASIC Level II,0,1,1,17
Expert,6,1,3,27
Facemaker,0,1,0,17
Falconian Invaders,0,1,1,20
Fiendish Freddy's Big Top o' Fun +3,15,9,1,29
Final Cartridge,13,3,3,47
Final Cartridge III,3,6,3,27
Financial Advisor,0,1,1,30
Format- und Hardcopymodul,12,1,1,28
Fraction Fever,0,1,0,37
Frog Master,0,1,1,25
Frogger,0,3,0,22
Frogger +3,19,6,1,18
Frogger II,0,3,0,22
Galaxian,0,3,0,21
Galaxions +1,0,3,0,19
Gateway to Apshai,0,3,0,23
Ghostbusters,5,5,1,28
Gorf,0,3,0,23
Graf 64,0,1,1,15
Gridrunner,0,1,0,18
Gridrunner II,0,1,0,21
Gyruss,0,3,0,24
H.E.R.O.,0,3,0,17
Halftime Battlin' Bands,0,3,0,19
Happy-Packer,12,1,1,34
HES Mon 64,0,1,1,24
HES Writer 64,0,1,1,21
Hop Along Counting,0,1,0,24
Human Skeleton Tutorial,0,1,1,29
Hypra-Disk-Modul II,0,1,1,34
International Football,0,3,0,30
Jack Attack,0,3,0,33
James Bond 007,0,3,0,22
Jawbreaker,0,1,0,25
Juice!,0,3,0,21
Jukebox,0,1,0,17
Jumpman Junior,0,3,0,18
Jungle Hunt,0,3,0,25
Jupiter Lander (MAX),0,1,2,22
Kickman (MAX),0,1,2,31
Kids on Keys,0,1,0,24
Kindercomp,0,1,0,23
Kung-Fu Master,5,5,1,21
Laser Cycles,0,1,0,25
Lazarian,0,3,0,23
Lazer Zone,0,1,0,19
Leader Board,5,5,1,21
Learning with Leeper,0,3,0,23
LeMans (MAX),0,1,2,31
Linking Logic,0,3,0,23
Lode Runner,0,3,0,24
Logic Levels,0,3,0,22
Lunar Leeper,0,3,0,23
Magic Desk I,19,5,1,23
Magic Formel,14,6,3,24
Mario's Brewery,0,1,0,24
MasterType,0,3,0,26
Math Mileage,0,3,0,21
MAX BASIC (MAX),0,3,2,23
Maze Man,0,1,0,26
Maze Master,0,3,0,19
Memory Manor,0,1,0,22
MicroProse Soccer +2,7,7,0,23
Miner 2049er,0,3,0,31
MINI BASIC I (MAX),0,1,2,23
Minnesota Fat's Pool Challenger,0,1,0,29
Mole Attack (MAX),0,1,2,42
Money Wars (MAX),0,1,2,28
Moon Patrol,0,3,0,27
Moondust,0,1,1,22
Motor Mania,0,3,0,19
Mountain King,0,3,0,22
Movie Musical Madness,0,3,0,24
Mr. Cool,0,1,0,32
Mr. TNT,0,1,0,19
Ms. Pac-Man,0,3,0,18
Muistio 64,0,1,1,22
Music Composer (MAX),0,1,2,21
Music Machine (MAX),0,1,2,31
Myth,15,9,1,30
Narco Police,17,7,1,16
Navy SEALs,5,7,0,24
Ninja Remix,15,9,1,21
Nordic Power Action Cartridge,9,5,0,23
Nova Blast,0,3,0,40
Number Nabber Shape Grabber,0,1,1,21
Number Tumblers,0,1,0,38
Oil's Well,0,3,0,26
Omega Race,0,1,1,21
Omega Race (MAX),0,1,2,21
Pac-Man,0,1,0,27
Paint Brush,0,3,0,18
Pancho,0,3,0,22
Pang,5,7,1,17
Park Patrol,19,5,1,15
Pastfinder,0,3,0,23
Peanut Butter Panic,0,3,0,21
Pinball Spectacular (MAX),0,3,2,30
Pipes,0,1,0,36
Pit,0,1,0,16
Pitfall II,0,3,0,14
Pitfall!,0,1,1,21
Pitstop,0,3,0,19
Pole Position,0,3,0,18
Popeye,0,3,0,24
Power Cartridge,2,3,0,17
Princess and the Frog,0,3,0,26
Professional Skateboard Simulator +2,7,7,0,32
PS-64t,0,1,1,47
Q-bert,0,3,0,17
Rack 'em Up!,0,3,0,17
Radar Rat Race(MAX),0,1,2,23
Ranch,0,3,0,30
Retro Ball,0,1,1,16
REX-Ramfloppy,0,1,1,21
River Raid,0,3,0,24
Road Race (MAX),0,1,2,21
RoboCop 2,5,8,0,26
RoboCop 3,5,7,0,20
Robotron - 2084,0,3,0,20
Rootin' Tootin',0,3,0,26
Sales Cartridge,0,3,0,26
Sammy Lightfoot,0,3,0,26
Satan,17,7,1,26
Save New York,0,1,0,17
Sea Speller,0,1,0,24
Sea Wolf (MAX),0,1,2,22
Seafox,0,3,0,25
Seahorse Hide'n Seek,0,3,0,17
Serpentine,0,3,0,31
Sesame Street,0,3,0,21
Shadow of the Beast,5,8,0,24
Simons' BASIC,4,3,1,30
Solar Fox,0,3,0,24
Song Maker,0,1,0,20
Space Action,0,1,0,21
Space Gun,5,8,1,23
Space Ric-O-Shay,0,1,0,20
Space Shuttle,0,3,0,27
Speed Math & Bingo Math (MAX),0,1,2,24
Speedsaver $C000,0,0,2,40
Speedsaver Combi,0,1,1,27
Spitball,0,1,1,27
Spy Hunter,0,3,0,19
Star Post,0,1,1,21
Star Ranger,0,3,0,20
Star Trek,0,3,0,22
Star Wars,0,3,0,20
Stat 64,0,1,1,20
States and Capitals Tutorial,0,1,1,18
Stix,0,1,0,39
Story Machine,0,3,0,15
Super Alien (MAX),0,1,2,24
Super Expander 64,0,1,1,28
Super Sketch,0,1,1,28
Super Smash,0,1,1,23
Super Snapshot 5,20,6,3,22
Super Zaxxon,18,4,0,28
Tank Wars,0,1,0,24
Tapper,0,3,0,20
Teledata,0,1,1,17
Tennis,19,5,1,19
Tenpins,0,1,1,18
Tenpins +2,19,5,1,18
Terminator 2 +2,5,9,1,22
Threshold,0,1,0,26
Timebound,0,3,0,20
Toki,5,7,0,20
Tool-64,0,1,1,15
Tooth Invaders,0,3,0,18
Toy Bizarre,0,3,0,25
Trashman,0,1,0,22
Turbo Maze Man,0,1,0,19
Tyler's Dungeons,0,1,0,25
Ultrex Quadro Maze,0,1,1,27
Up & Add'Em,0,3,0,29
Up for Grabs,0,1,0,22
Up'n Down,0,3,0,23
Utah Counties Tutorial,0,1,1,20
VIC-Text 64,0,3,0,33
Viduzzles,0,3,0,22
Viking Raider,0,3,0,20
Vindicators,5,6,1,24
Visible Solar System (MAX),0,1,2,22
Warp Speed,16,3,3,37
Webster,0,3,0,22
Wizard of Id's Wiztype,0,3,0,18
Wizard of Wor,0,3,0,33
Wizard of Wor (MAX),0,1,2,24
Wonder Boy,5,6,1,30
Write Now! 64,0,3,0,21
Zaxxon,18,4,0,24
Zenji,0,3,0,18
Zone Ranger,0,3,0,16
EOF,0,0,0,0

File diff suppressed because it is too large Load Diff

23394
sd/gb.txt

File diff suppressed because it is too large Load Diff

20142
sd/gba.txt

File diff suppressed because it is too large Load Diff

4846
sd/gg.txt

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

16158
sd/md.txt

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

6156
sd/n64.txt

File diff suppressed because it is too large Load Diff

18672
sd/nes.txt

File diff suppressed because it is too large Load Diff

2742
sd/pce.txt

File diff suppressed because it is too large Load Diff

View File

@ -1,156 +1,156 @@
Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB211NH).pcw Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB211NH).pcw
505F954E 505F954E
Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB212SS).pcw Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB212SS).pcw
FF3E9B62 FF3E9B62
Shinkenzemi 'Chuugaku Kouza' - Chuugaku Chiri (Japan) (6BD410).pcw Shinkenzemi 'Chuugaku Kouza' - Chuugaku Chiri (Japan) (6BD410).pcw
AD5136AE AD5136AE
Shinkenzemi 'Chuugaku Kouza' - Chuugaku Rekishi (Japan) (5BC410).pcw Shinkenzemi 'Chuugaku Kouza' - Chuugaku Rekishi (Japan) (5BC410).pcw
7865BE62 7865BE62
Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Ei - Sha - Ri) (Japan) (6BI711).pcw Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Ei - Sha - Ri) (Japan) (6BI711).pcw
B9831924 B9831924
Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Koku - Suu) (Japan) (6BI712).pcw Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Koku - Suu) (Japan) (6BI712).pcw
81F4FA3E 81F4FA3E
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB111NH).pcw Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB111NH).pcw
D7FD8C5D D7FD8C5D
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB113NC).pcw Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB113NC).pcw
5711252F 5711252F
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB111NH).pcw Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB111NH).pcw
BE0CFA07 BE0CFA07
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB112SS).pcw Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB112SS).pcw
FEACC308 FEACC308
Shinkenzemi Chuugaku Kouza - Chuu 1 Suugaku (Japan) (1BM111).pcw Shinkenzemi Chuugaku Kouza - Chuu 1 Suugaku (Japan) (1BM111).pcw
5DB9B999 5DB9B999
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB211NH).pcw Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB211NH).pcw
5138519C 5138519C
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB212SS).pcw Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB212SS).pcw
31E9E8CC 31E9E8CC
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB213NC).pcw Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB213NC).pcw
9C279B5A 9C279B5A
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB214TE).pcw Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB214TE).pcw
3C08E0DA 3C08E0DA
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB311NH).pcw Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB311NH).pcw
A18685A5 A18685A5
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB312SS).pcw Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB312SS).pcw
C4676FC9 C4676FC9
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB313NC).pcw Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB313NC).pcw
DDE96468 DDE96468
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB315OW).pcw Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB315OW).pcw
AE06430D AE06430D
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB317CB).pcw Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB317CB).pcw
149501FB 149501FB
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (7BD410).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (7BD410).pcw
8DE1ED5A 8DE1ED5A
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (9BD410).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (9BD410).pcw
A1B3C2C9 A1B3C2C9
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Chiri Soft - Rekishi Soft Kanzen Taiou Ban) (Japan) (8BD400).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Chiri Soft - Rekishi Soft Kanzen Taiou Ban) (Japan) (8BD400).pcw
77D1D534 77D1D534
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD400).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD400).pcw
21895AF8 21895AF8
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD401).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD401).pcw
660E84A5 660E84A5
Shinkenzemi Chuugaku Kouza - Chuugaku Kokugo - Hyakunin Isshu (Japan) (1BK401).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Kokugo - Hyakunin Isshu (Japan) (1BK401).pcw
B0444C88 B0444C88
Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (0BE311).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (0BE311).pcw
BF9DA3EA BF9DA3EA
Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (7BE310).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (7BE310).pcw
EFEF730E EFEF730E
Shinkenzemi Chuugaku Kouza - Chuugaku Rekishi (Japan) (7BC410).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rekishi (Japan) (7BC410).pcw
2EB6506E 2EB6506E
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (7BF411).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (7BF411).pcw
BDC7847D BDC7847D
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (Rev 1) (7BF411).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (Rev 1) (7BF411).pcw
0C80EC13 0C80EC13
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (7BF412).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (7BF412).pcw
A6E409E8 A6E409E8
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (Rev 1) (7BF412).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (Rev 1) (7BF412).pcw
336289BC 336289BC
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (1-bunya - Soft 2-bunya Soft Kanzen Taiou Ban) (Japan) (8BF400).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (1-bunya - Soft 2-bunya Soft Kanzen Taiou Ban) (Japan) (8BF400).pcw
E1D5C9E0 E1D5C9E0
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (0BF400).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (0BF400).pcw
341E732B 341E732B
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (1BF400).pcw Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (1BF400).pcw
6205144B 6205144B
Shinkenzemi Chuugaku Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (8BCD01).pcw Shinkenzemi Chuugaku Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (8BCD01).pcw
38384AD4 38384AD4
Shinkenzemi Chuugaku Kouza - Jitsugi 4-kyouka (Gijutsu Katei, Hoken Taiiku, Ongaku, Bijutsu) (Japan) (9BG410).pcw Shinkenzemi Chuugaku Kouza - Jitsugi 4-kyouka (Gijutsu Katei, Hoken Taiiku, Ongaku, Bijutsu) (Japan) (9BG410).pcw
E34787BB E34787BB
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (0BI711).pcw Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (0BI711).pcw
7F23D0D6 7F23D0D6
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (1BI711).pcw Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (1BI711).pcw
CADEA841 CADEA841
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (9BI711).pcw Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (9BI711).pcw
61F2A31B 61F2A31B
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (7BI711).pcw Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (7BI711).pcw
53C2FF43 53C2FF43
Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (7BI712).pcw Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (7BI712).pcw
410BAC94 410BAC94
Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (9BI712).pcw Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (9BI712).pcw
0FCDC311 0FCDC311
Shinkenzemi Chuugaku Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (8BCD02).pcw Shinkenzemi Chuugaku Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (8BCD02).pcw
68BC5E95 68BC5E95
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eijukugo (Japan) (7BBD02).pcw Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eijukugo (Japan) (7BBD02).pcw
C3DB01F2 C3DB01F2
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eitango (Japan) (7BBD01).pcw Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eitango (Japan) (7BBD01).pcw
2BAD015C 2BAD015C
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Juuyou Eigo Koubun (Japan) (7BBD03).pcw Shinkenzemi Koukou Kouza - Daigaku Juken Series - Juuyou Eigo Koubun (Japan) (7BBD03).pcw
9C9C0426 9C9C0426
Shinkenzemi Koukou Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (9BCD02).pcw Shinkenzemi Koukou Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (9BCD02).pcw
7911AEC2 7911AEC2
Shinkenzemi Koukou Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (9BCD01).pcw Shinkenzemi Koukou Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (9BCD01).pcw
9E274AC9 9E274AC9
Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (0BKD01).pcw Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (0BKD01).pcw
C6157409 C6157409
Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (8BKD01).pcw Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (8BKD01).pcw
F5DF48F5 F5DF48F5

View File

@ -1,59 +1,59 @@
Pichu Bros. Mini (Japan).min Pichu Bros. Mini (Japan).min
00D8C968 00D8C968
Pokemon Anime Card Daisakusen (Japan).min Pokemon Anime Card Daisakusen (Japan).min
199D7AB1 199D7AB1
Pokemon Party Mini (Europe).min Pokemon Party Mini (Europe).min
54ACB670 54ACB670
Pokemon Party Mini (Japan).min Pokemon Party Mini (Japan).min
AE2DDE60 AE2DDE60
Pokemon Party Mini (USA).min Pokemon Party Mini (USA).min
938D3819 938D3819
Pokemon Pinball Mini (Japan).min Pokemon Pinball Mini (Japan).min
398D47DE 398D47DE
Pokemon Pinball Mini (USA, Europe).min Pokemon Pinball Mini (USA, Europe).min
A0091534 A0091534
Pokemon Puzzle Collection (France).min Pokemon Puzzle Collection (France).min
3004C354 3004C354
Pokemon Puzzle Collection (Germany).min Pokemon Puzzle Collection (Germany).min
22101046 22101046
Pokemon Puzzle Collection (Japan).min Pokemon Puzzle Collection (Japan).min
95AFAE59 95AFAE59
Pokemon Puzzle Collection (USA, Europe).min Pokemon Puzzle Collection (USA, Europe).min
2B348340 2B348340
Pokemon Puzzle Collection Vol. 2 (Japan).min Pokemon Puzzle Collection Vol. 2 (Japan).min
76A1BBF8 76A1BBF8
Pokemon Race Mini (Japan).min Pokemon Race Mini (Japan).min
F8C842B5 F8C842B5
Pokemon Shock Tetris (Japan).min Pokemon Shock Tetris (Japan).min
B4B5CC20 B4B5CC20
Pokemon Sodateyasan Mini (Japan).min Pokemon Sodateyasan Mini (Japan).min
D55FC4C8 D55FC4C8
Pokemon Tetris (Europe) (En,Ja,Fr).min Pokemon Tetris (Europe) (En,Ja,Fr).min
2FB23527 2FB23527
Pokemon Zany Cards (France).min Pokemon Zany Cards (France).min
830DA957 830DA957
Pokemon Zany Cards (Germany).min Pokemon Zany Cards (Germany).min
C009D501 C009D501
Pokemon Zany Cards (USA, Europe).min Pokemon Zany Cards (USA, Europe).min
8A2FC063 8A2FC063
Togepi no Daibouken (Japan).min Togepi no Daibouken (Japan).min
33B3492B 33B3492B

File diff suppressed because it is too large Load Diff

4050
sd/sms.txt

File diff suppressed because it is too large Load Diff

23428
sd/snes.txt

File diff suppressed because it is too large Load Diff

198
sd/vb.txt
View File

@ -1,99 +1,99 @@
3-D Tetris (USA).vb 3-D Tetris (USA).vb
BB71B522 BB71B522
Bound High (Japan) (En) (Proto).vb Bound High (Japan) (En) (Proto).vb
E81A3703 E81A3703
Galactic Pinball (Japan, USA) (En).vb Galactic Pinball (Japan, USA) (En).vb
C9710A36 C9710A36
Golf (USA).vb Golf (USA).vb
2199AF41 2199AF41
Hyper Fighting (World) (Aftermarket) (Pirate).vb Hyper Fighting (World) (Aftermarket) (Pirate).vb
3F2A6BA2 3F2A6BA2
Hyper Fighting (World) (Beta) (Aftermarket) (Pirate).vb Hyper Fighting (World) (Beta) (Aftermarket) (Pirate).vb
4450EDE0 4450EDE0
Innsmouth no Yakata (Japan).vb Innsmouth no Yakata (Japan).vb
83CB6A00 83CB6A00
Jack Bros. (USA).vb Jack Bros. (USA).vb
A44DE03C A44DE03C
Jack Bros. no Meiro de Hiihoo! (Japan).vb Jack Bros. no Meiro de Hiihoo! (Japan).vb
CAB61E8B CAB61E8B
Mario Clash (Japan, USA) (En).vb Mario Clash (Japan, USA) (En).vb
A47DE78C A47DE78C
Mario's Tennis (Japan, USA) (En).vb Mario's Tennis (Japan, USA) (En).vb
7CE7460D 7CE7460D
Nester's Funky Bowling (USA).vb Nester's Funky Bowling (USA).vb
DF4D56B4 DF4D56B4
Niko-chan Battle (Japan) (Proto).vb Niko-chan Battle (Japan) (Proto).vb
F3CD40DD F3CD40DD
Panic Bomber (USA).vb Panic Bomber (USA).vb
19BB2DFB 19BB2DFB
Red Alarm (Japan).vb Red Alarm (Japan).vb
7E85C45D 7E85C45D
Red Alarm (USA).vb Red Alarm (USA).vb
AA10A7B4 AA10A7B4
SD Gundam - Dimension War (Japan).vb SD Gundam - Dimension War (Japan).vb
44788197 44788197
Space Invaders - Virtual Collection (Japan).vb Space Invaders - Virtual Collection (Japan).vb
FA44402D FA44402D
Space Pinball (Japan) (En) (Proto).vb Space Pinball (Japan) (En) (Proto).vb
44C2B723 44C2B723
Space Squash (Japan).vb Space Squash (Japan).vb
60895693 60895693
T&E Virtual Golf (Japan).vb T&E Virtual Golf (Japan).vb
6BA07915 6BA07915
Teleroboxer (Japan, USA) (En).vb Teleroboxer (Japan, USA) (En).vb
36103000 36103000
Tobidase! Panibon (Japan).vb Tobidase! Panibon (Japan).vb
40498F5E 40498F5E
V-Tetris (Japan).vb V-Tetris (Japan).vb
3CCB67AE 3CCB67AE
Vertical Force (Japan).vb Vertical Force (Japan).vb
9E9B8B92 9E9B8B92
Vertical Force (USA).vb Vertical Force (USA).vb
4C32BA5E 4C32BA5E
Virtual Bowling (Japan).vb Virtual Bowling (Japan).vb
20688279 20688279
Virtual Boy Wario Land (Japan, USA) (En).vb Virtual Boy Wario Land (Japan, USA) (En).vb
133E9372 133E9372
Virtual Fishing (Japan).vb Virtual Fishing (Japan).vb
526CC969 526CC969
Virtual Lab (Japan).vb Virtual Lab (Japan).vb
8989FE0A 8989FE0A
Virtual League Baseball (USA).vb Virtual League Baseball (USA).vb
736B40D6 736B40D6
Virtual Pro Yakyuu '95 (Japan).vb Virtual Pro Yakyuu '95 (Japan).vb
9BA8BB5E 9BA8BB5E
Waterworld (USA).vb Waterworld (USA).vb
82A95E51 82A95E51

32
sd/vectrexcart.txt Normal file
View File

@ -0,0 +1,32 @@
3D Crazy Coaster,1,0
3D Mine Storm,1,22
3D Narrow Escape,1,20
AnimAction,1,23
Armor..Attack,0,17
Art Master,0,20
Bedlam,0,17
Berzerk,0,13
Blitz!,1,14
Clean Sweep,0,13
Cosmic Chasm,0,18
Fortress of Narzod,1,19
Heads-Up,1,25
HyperChase,0,15
Melody Master,1,17
Mine Storm,0,20
Mine Storm II,0,17
Polar Rescue,1,20
Pole Position,1,19
Rip Off,0,20
Scramble,0,14
Solar Quest,0,15
Space Wars,0,18
Spike,1,17
Spin ball,1,12
Star Castle,0,16
Star Ship,0,18
Star Trek,0,16
StarHawk,0,16
WebWarp,1,15
WebWars,1,14
EOF,0,0

1864
sd/ws.txt

File diff suppressed because it is too large Load Diff

View File

@ -1,210 +1,210 @@
2 in 1 - Block Buster + Cross High (USA, Europe).sv 2 in 1 - Block Buster + Cross High (USA, Europe).sv
7E05D84F,057195A3,64 7E05D84F,057195A3,64
2 in 1 - Hash Blocks + Eagle Plan (USA, Europe).sv 2 in 1 - Hash Blocks + Eagle Plan (USA, Europe).sv
C1354952,21795D9D,64 C1354952,21795D9D,64
Alien (USA, Europe).sv Alien (USA, Europe).sv
8DBB2C53,B587490C,64 8DBB2C53,B587490C,64
Assembloids (World) (Aftermarket) (Unl).sv Assembloids (World) (Aftermarket) (Unl).sv
85A0E7C8,059EB9DC,64 85A0E7C8,059EB9DC,64
Balloon Fight (USA, Europe).sv Balloon Fight (USA, Europe).sv
8188B755,F59A28E2,64 8188B755,F59A28E2,64
Block Buster (USA, Europe).sv Block Buster (USA, Europe).sv
0A3DB285,B2AA7578,64 0A3DB285,B2AA7578,64
Brain Power (USA, Europe).sv Brain Power (USA, Europe).sv
5E6706B9,69BED4DE,64 5E6706B9,69BED4DE,64
Bubble World (USA, Europe).sv Bubble World (USA, Europe).sv
E5C2CFB5,137FA3A1,64 E5C2CFB5,137FA3A1,64
Carrier (USA, Europe).sv Carrier (USA, Europe).sv
5ECFB674,A74DF889,32 5ECFB674,A74DF889,32
Cave Wonders (USA, Europe).sv Cave Wonders (USA, Europe).sv
E0266CE7,B61BDFB4,64 E0266CE7,B61BDFB4,64
Challenger Tank (USA, Europe).sv Challenger Tank (USA, Europe).sv
C92382CE,B2AA7578,64 C92382CE,B2AA7578,64
Chimera (USA, Europe).sv Chimera (USA, Europe).sv
4A458AA8,FFA4C239,64 4A458AA8,FFA4C239,64
Chinese Checkers (USA, Europe).sv Chinese Checkers (USA, Europe).sv
EDED8AEC,9574D04D,64 EDED8AEC,9574D04D,64
Classic Casino (USA, Europe).sv Classic Casino (USA, Europe).sv
72A96443,3E796E26,64 72A96443,3E796E26,64
Climber (USA, Europe).sv Climber (USA, Europe).sv
12C45309,52CC2CD7,32 12C45309,52CC2CD7,32
Cross High (USA, Europe).sv Cross High (USA, Europe).sv
1E6836A2,0176ECF0,64 1E6836A2,0176ECF0,64
Crystball (USA, Europe).sv Crystball (USA, Europe).sv
10DCC110,B2AA7578,64 10DCC110,B2AA7578,64
Dancing Block (USA, Europe).sv Dancing Block (USA, Europe).sv
345CA42A,D08490A7,32 345CA42A,D08490A7,32
Delta Hero (USA, Europe).sv Delta Hero (USA, Europe).sv
32CCDF89,4EFE40D0,64 32CCDF89,4EFE40D0,64
Dream World (USA, Europe).sv Dream World (USA, Europe).sv
DB0F463F,8DD1E2E9,64 DB0F463F,8DD1E2E9,64
Eagle Plan (USA, Europe).sv Eagle Plan (USA, Europe).sv
01CB8364,B2AA7578,64 01CB8364,B2AA7578,64
Earth Defender (USA, Europe).sv Earth Defender (USA, Europe).sv
A6CBB074,B2AA7578,64 A6CBB074,B2AA7578,64
Fatal Craft (USA, Europe).sv Fatal Craft (USA, Europe).sv
917CAB48,B2AA7578,64 917CAB48,B2AA7578,64
Final Combat (USA, Europe).sv Final Combat (USA, Europe).sv
2861DE5E,A1DBD9A6,32 2861DE5E,A1DBD9A6,32
Galactic Crusader (USA, Europe).sv Galactic Crusader (USA, Europe).sv
B494BC5C,DB41A00C,64 B494BC5C,DB41A00C,64
Galaxy Fighter (USA, Europe).sv Galaxy Fighter (USA, Europe).sv
581703BE,083694D0,64 581703BE,083694D0,64
Grand Prix (USA, Europe).sv Grand Prix (USA, Europe).sv
CEF3F295,E8F8829F,64 CEF3F295,E8F8829F,64
Happy Pairs (USA, Europe).sv Happy Pairs (USA, Europe).sv
112F5EED,089CC77D,64 112F5EED,089CC77D,64
Happy Race (USA, Europe).sv Happy Race (USA, Europe).sv
552AFA89,50376A85,64 552AFA89,50376A85,64
Hash Blocks (USA, Europe).sv Hash Blocks (USA, Europe).sv
6BD7C885,B2AA7578,64 6BD7C885,B2AA7578,64
Hero Hawk (USA, Europe).sv Hero Hawk (USA, Europe).sv
99BF6CF5,E69938C1,64 99BF6CF5,E69938C1,64
Hero Kid (USA, Europe).sv Hero Kid (USA, Europe).sv
25DDD6E1,162F0753,64 25DDD6E1,162F0753,64
Honey Bee (USA, Europe).sv Honey Bee (USA, Europe).sv
E856875A,1961B97C,64 E856875A,1961B97C,64
Jacky Lucky (USA, Europe).sv Jacky Lucky (USA, Europe).sv
7D8A607F,ACFF2095,64 7D8A607F,ACFF2095,64
Jaguar Bomber (USA, Europe).sv Jaguar Bomber (USA, Europe).sv
AA4372D4,6F0A43E8,64 AA4372D4,6F0A43E8,64
John Adventure (USA, Europe).sv John Adventure (USA, Europe).sv
E9EA3AE0,874EEC5A,64 E9EA3AE0,874EEC5A,64
Journey to the West (USA).sv Journey to the West (USA).sv
9FB4DB9A,B1F9E5FE,51 9FB4DB9A,B1F9E5FE,51
Juggler (USA, Europe).sv Juggler (USA, Europe).sv
32E68D6F,D0CA45AE,64 32E68D6F,D0CA45AE,64
Kabi Island - Gold in Island (USA, Europe).sv Kabi Island - Gold in Island (USA, Europe).sv
2BC03096,C723789D,64 2BC03096,C723789D,64
Kitchen War (USA, Europe).sv Kitchen War (USA, Europe).sv
20225F5C,B2AA7578,64 20225F5C,B2AA7578,64
Kung-Fu Street (USA, Europe).sv Kung-Fu Street (USA, Europe).sv
7DAED2EB,8D2E613A,64 7DAED2EB,8D2E613A,64
Linear Racing (USA, Europe).sv Linear Racing (USA, Europe).sv
6F8ABAF9,42DE0B39,64 6F8ABAF9,42DE0B39,64
Magincross (USA, Europe).sv Magincross (USA, Europe).sv
E406A91C,C64A27A7,64 E406A91C,C64A27A7,64
Majong (USA, Europe).sv Majong (USA, Europe).sv
96E2E6D7,B2AA7578,64 96E2E6D7,B2AA7578,64
Matta Blatta (USA, Europe).sv Matta Blatta (USA, Europe).sv
21864295,F846E93F,64 21864295,F846E93F,64
Olympic Trials (USA, Europe).sv Olympic Trials (USA, Europe).sv
85DC8111,1DFFC61C,64 85DC8111,1DFFC61C,64
P-52 Sea Battle (USA, Europe).sv P-52 Sea Battle (USA, Europe).sv
748F9DAE,FDB5A1D1,64 748F9DAE,FDB5A1D1,64
PacBoy & Mouse (USA, Europe).sv PacBoy & Mouse (USA, Europe).sv
1A89AC88,B2AA7578,64 1A89AC88,B2AA7578,64
Pacific Battle (USA, Europe).sv Pacific Battle (USA, Europe).sv
E5DCE795,D26572CA,64 E5DCE795,D26572CA,64
Penguin Hideout (USA, Europe).sv Penguin Hideout (USA, Europe).sv
FE5F9774,16D33C46,32 FE5F9774,16D33C46,32
Police Bust (USA, Europe).sv Police Bust (USA, Europe).sv
531F0B51,B2AA7578,64 531F0B51,B2AA7578,64
Popo Team (USA, Europe).sv Popo Team (USA, Europe).sv
E11A756C,9DF52936,64 E11A756C,9DF52936,64
Pyramid (USA, Europe).sv Pyramid (USA, Europe).sv
E0BFE163,74388E90,32 E0BFE163,74388E90,32
Recycle Design (USA, Europe).sv Recycle Design (USA, Europe).sv
C36BD216,5A5C19A8,64 C36BD216,5A5C19A8,64
Scaffolder (USA, Europe).sv Scaffolder (USA, Europe).sv
46FB22C5,3B167A03,64 46FB22C5,3B167A03,64
Soccer Champion (USA, Europe).sv Soccer Champion (USA, Europe).sv
45204DC4,B2AA7578,64 45204DC4,B2AA7578,64
Sonny X'Press (USA, Europe).sv Sonny X'Press (USA, Europe).sv
C99B985A,ADC6B8C6,64 C99B985A,ADC6B8C6,64
Space Fighter (USA, Europe).sv Space Fighter (USA, Europe).sv
7CD650C8,75FE30AA,64 7CD650C8,75FE30AA,64
SSSnake (USA, Europe).sv SSSnake (USA, Europe).sv
BE9B6F10,8EA0C5AB,64 BE9B6F10,8EA0C5AB,64
Super Block (USA, Europe).sv Super Block (USA, Europe).sv
02E2C7AD,5F1DD5D7,32 02E2C7AD,5F1DD5D7,32
Super Kong (USA, Europe).sv Super Kong (USA, Europe).sv
59C7FF64,3438D914,64 59C7FF64,3438D914,64
Super Pang (USA, Europe).sv Super Pang (USA, Europe).sv
181D12DD,653576B2,64 181D12DD,653576B2,64
Tasac 2010 (USA, Europe).sv Tasac 2010 (USA, Europe).sv
3D5F3964,9B451BB4,64 3D5F3964,9B451BB4,64
Tennis Pro '92 (USA, Europe).sv Tennis Pro '92 (USA, Europe).sv
BD004CB7,22802ED1,64 BD004CB7,22802ED1,64
Thunder Shooting (USA, Europe).sv Thunder Shooting (USA, Europe).sv
AD147842,73276EBC,64 AD147842,73276EBC,64
Treasure Hunter (USA, Europe).sv Treasure Hunter (USA, Europe).sv
DB35B809,B2AA7578,64 DB35B809,B2AA7578,64
Treasure Hunter (USA, Europe) (Rev 1).sv Treasure Hunter (USA, Europe) (Rev 1).sv
69068337,3E796E26,64 69068337,3E796E26,64
TV-Link (USA, Europe).sv TV-Link (USA, Europe).sv
AF3EA0DD,96C646A2,32 AF3EA0DD,96C646A2,32
Untouchable (USA, Europe).sv Untouchable (USA, Europe).sv
DB3FE76A,9B4B4770,64 DB3FE76A,9B4B4770,64
Witty Cat (USA, Europe).sv Witty Cat (USA, Europe).sv
24A115F9,964FBC96,64 24A115F9,964FBC96,64