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
an easy to build and easy to modify cartridge dumper.
Date: 2023-07-19
Version: 12.8
Date: 2023-09-22
Version: 12.9
SD lib: https://github.com/greiman/SdFat
LCD lib: https://github.com/olikraus/u8g2
@ -15,13 +15,13 @@
RTC lib: https://github.com/adafruit/RTClib
Frequency lib: https://github.com/PaulStoffregen/FreqCount
Compiled with Arduino IDE 2.1.1
Compiled with Arduino IDE 2.2.1
Thanks to:
MichlK - ROM Reader for Super Nintendo
Jeff Saltzman - 4-Way Button
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
splash5 - GBSmart, Wonderswan, NGP and Super A'can modules
partlyhuman - Casio Loopy module
@ -39,7 +39,8 @@
jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi,
Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman,
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.
@ -252,6 +253,10 @@ void print_STR(byte string_number, boolean newline) {
#define mode_MSX 33
#define mode_POKE 34
#define mode_LOOPY 35
#define mode_C64 36
#define mode_5200 37
#define mode_7800 38
#define mode_VECTREX 39
// optimization-safe nop delay
#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) {
uint32_t idx = ((crc) ^ (ch)) & 0xff;
@ -885,12 +890,24 @@ static const char modeItem21[] PROGMEM = "Pokemon Mini (3V)";
#ifdef enable_LOOPY
static const char modeItem22[] PROGMEM = "Casio Loopy";
#endif
#ifdef enable_FLASH
static const char modeItem23[] PROGMEM = "Flashrom Programmer";
#ifdef enable_C64
static const char modeItem23[] PROGMEM = "Commodore 64";
#endif
static const char modeItem24[] PROGMEM = "Self Test (3V)";
static const char modeItem25[] PROGMEM = "About";
//static const char modeItem25[] PROGMEM = "Reset"; (stored in common strings array)
#ifdef enable_5200
static const char modeItem24[] PROGMEM = "Atari 5200";
#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 = {
#ifdef enable_GBX
modeItem1,
@ -958,10 +975,22 @@ static const char* const modeOptions[] PROGMEM = {
#ifdef enable_LOOPY
modeItem22,
#endif
#ifdef enable_FLASH
#ifdef enable_C64
modeItem23,
#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
@ -1033,6 +1062,18 @@ byte countMenuEntries() {
#ifdef enable_LOOPY
count++;
#endif
#ifdef enable_C64
count++;
#endif
#ifdef enable_5200
count++;
#endif
#ifdef enable_7800
count++;
#endif
#ifdef enable_VECTREX
count++;
#endif
#ifdef enable_FLASH
count++;
#endif
@ -1154,21 +1195,41 @@ unsigned char fixMenuOrder(unsigned char modeMenu) {
currentEntry++;
#endif
#if defined(enable_FLASH)
#if defined(enable_C64)
translationMatrix[currentEntry] = 22;
currentEntry++;
#endif
// Self Test
#if defined(enable_5200)
translationMatrix[currentEntry] = 23;
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
translationMatrix[currentEntry] = 24;
translationMatrix[currentEntry] = 28;
currentEntry++;
// Reset
translationMatrix[currentEntry] = 25;
translationMatrix[currentEntry] = 29;
currentEntry++;
return translationMatrix[modeMenu];
@ -1211,9 +1272,15 @@ void mainMenu() {
num_answers = menuCount - 14;
else
num_answers = 7;
} else { // currPage == 4
} else if (currPage == 4) {
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
convertPgm(modeOptions + option_offset, num_answers);
@ -1389,8 +1456,36 @@ void mainMenu() {
break;
#endif
#ifdef enable_FLASH
#ifdef enable_C64
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
setup_FlashVoltage();
#endif
@ -1399,16 +1494,16 @@ void mainMenu() {
#endif
#ifdef enable_selftest
case 23:
case 27:
selfTest();
break;
#endif
case 24:
case 28:
aboutScreen();
break;
case 25:
case 29:
resetArduino();
break;
@ -3590,7 +3685,26 @@ void loop() {
loopyMenu();
}
#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 {
display_Clear();
println_Msg(F("Menu Error"));

View File

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

View File

@ -1539,8 +1539,13 @@ bool getCartListInfo_MSX() {
println_Msg(F(""));
println_Msg(msxgame);
display.setCursor(0, 48);
println_Msg(F("Press to Change"));
println_Msg(F("Hold to Select"));
#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:"));
@ -1659,4 +1664,4 @@ void setCart_MSX() {
msxcsvFile.close();
}
#endif
#endif

View File

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

View File

@ -1,59 +1,59 @@
Pichu Bros. Mini (Japan).min
00D8C968
Pokemon Anime Card Daisakusen (Japan).min
199D7AB1
Pokemon Party Mini (Europe).min
54ACB670
Pokemon Party Mini (Japan).min
AE2DDE60
Pokemon Party Mini (USA).min
938D3819
Pokemon Pinball Mini (Japan).min
398D47DE
Pokemon Pinball Mini (USA, Europe).min
A0091534
Pokemon Puzzle Collection (France).min
3004C354
Pokemon Puzzle Collection (Germany).min
22101046
Pokemon Puzzle Collection (Japan).min
95AFAE59
Pokemon Puzzle Collection (USA, Europe).min
2B348340
Pokemon Puzzle Collection Vol. 2 (Japan).min
76A1BBF8
Pokemon Race Mini (Japan).min
F8C842B5
Pokemon Shock Tetris (Japan).min
B4B5CC20
Pokemon Sodateyasan Mini (Japan).min
D55FC4C8
Pokemon Tetris (Europe) (En,Ja,Fr).min
2FB23527
Pokemon Zany Cards (France).min
830DA957
Pokemon Zany Cards (Germany).min
C009D501
Pokemon Zany Cards (USA, Europe).min
8A2FC063
Togepi no Daibouken (Japan).min
33B3492B
Pichu Bros. Mini (Japan).min
00D8C968
Pokemon Anime Card Daisakusen (Japan).min
199D7AB1
Pokemon Party Mini (Europe).min
54ACB670
Pokemon Party Mini (Japan).min
AE2DDE60
Pokemon Party Mini (USA).min
938D3819
Pokemon Pinball Mini (Japan).min
398D47DE
Pokemon Pinball Mini (USA, Europe).min
A0091534
Pokemon Puzzle Collection (France).min
3004C354
Pokemon Puzzle Collection (Germany).min
22101046
Pokemon Puzzle Collection (Japan).min
95AFAE59
Pokemon Puzzle Collection (USA, Europe).min
2B348340
Pokemon Puzzle Collection Vol. 2 (Japan).min
76A1BBF8
Pokemon Race Mini (Japan).min
F8C842B5
Pokemon Shock Tetris (Japan).min
B4B5CC20
Pokemon Sodateyasan Mini (Japan).min
D55FC4C8
Pokemon Tetris (Europe) (En,Ja,Fr).min
2FB23527
Pokemon Zany Cards (France).min
830DA957
Pokemon Zany Cards (Germany).min
C009D501
Pokemon Zany Cards (USA, Europe).min
8A2FC063
Togepi no Daibouken (Japan).min
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
BB71B522
Bound High (Japan) (En) (Proto).vb
E81A3703
Galactic Pinball (Japan, USA) (En).vb
C9710A36
Golf (USA).vb
2199AF41
Hyper Fighting (World) (Aftermarket) (Pirate).vb
3F2A6BA2
Hyper Fighting (World) (Beta) (Aftermarket) (Pirate).vb
4450EDE0
Innsmouth no Yakata (Japan).vb
83CB6A00
Jack Bros. (USA).vb
A44DE03C
Jack Bros. no Meiro de Hiihoo! (Japan).vb
CAB61E8B
Mario Clash (Japan, USA) (En).vb
A47DE78C
Mario's Tennis (Japan, USA) (En).vb
7CE7460D
Nester's Funky Bowling (USA).vb
DF4D56B4
Niko-chan Battle (Japan) (Proto).vb
F3CD40DD
Panic Bomber (USA).vb
19BB2DFB
Red Alarm (Japan).vb
7E85C45D
Red Alarm (USA).vb
AA10A7B4
SD Gundam - Dimension War (Japan).vb
44788197
Space Invaders - Virtual Collection (Japan).vb
FA44402D
Space Pinball (Japan) (En) (Proto).vb
44C2B723
Space Squash (Japan).vb
60895693
T&E Virtual Golf (Japan).vb
6BA07915
Teleroboxer (Japan, USA) (En).vb
36103000
Tobidase! Panibon (Japan).vb
40498F5E
V-Tetris (Japan).vb
3CCB67AE
Vertical Force (Japan).vb
9E9B8B92
Vertical Force (USA).vb
4C32BA5E
Virtual Bowling (Japan).vb
20688279
Virtual Boy Wario Land (Japan, USA) (En).vb
133E9372
Virtual Fishing (Japan).vb
526CC969
Virtual Lab (Japan).vb
8989FE0A
Virtual League Baseball (USA).vb
736B40D6
Virtual Pro Yakyuu '95 (Japan).vb
9BA8BB5E
Waterworld (USA).vb
82A95E51
3-D Tetris (USA).vb
BB71B522
Bound High (Japan) (En) (Proto).vb
E81A3703
Galactic Pinball (Japan, USA) (En).vb
C9710A36
Golf (USA).vb
2199AF41
Hyper Fighting (World) (Aftermarket) (Pirate).vb
3F2A6BA2
Hyper Fighting (World) (Beta) (Aftermarket) (Pirate).vb
4450EDE0
Innsmouth no Yakata (Japan).vb
83CB6A00
Jack Bros. (USA).vb
A44DE03C
Jack Bros. no Meiro de Hiihoo! (Japan).vb
CAB61E8B
Mario Clash (Japan, USA) (En).vb
A47DE78C
Mario's Tennis (Japan, USA) (En).vb
7CE7460D
Nester's Funky Bowling (USA).vb
DF4D56B4
Niko-chan Battle (Japan) (Proto).vb
F3CD40DD
Panic Bomber (USA).vb
19BB2DFB
Red Alarm (Japan).vb
7E85C45D
Red Alarm (USA).vb
AA10A7B4
SD Gundam - Dimension War (Japan).vb
44788197
Space Invaders - Virtual Collection (Japan).vb
FA44402D
Space Pinball (Japan) (En) (Proto).vb
44C2B723
Space Squash (Japan).vb
60895693
T&E Virtual Golf (Japan).vb
6BA07915
Teleroboxer (Japan, USA) (En).vb
36103000
Tobidase! Panibon (Japan).vb
40498F5E
V-Tetris (Japan).vb
3CCB67AE
Vertical Force (Japan).vb
9E9B8B92
Vertical Force (USA).vb
4C32BA5E
Virtual Bowling (Japan).vb
20688279
Virtual Boy Wario Land (Japan, USA) (En).vb
133E9372
Virtual Fishing (Japan).vb
526CC969
Virtual Lab (Japan).vb
8989FE0A
Virtual League Baseball (USA).vb
736B40D6
Virtual Pro Yakyuu '95 (Japan).vb
9BA8BB5E
Waterworld (USA).vb
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
7E05D84F,057195A3,64
2 in 1 - Hash Blocks + Eagle Plan (USA, Europe).sv
C1354952,21795D9D,64
Alien (USA, Europe).sv
8DBB2C53,B587490C,64
Assembloids (World) (Aftermarket) (Unl).sv
85A0E7C8,059EB9DC,64
Balloon Fight (USA, Europe).sv
8188B755,F59A28E2,64
Block Buster (USA, Europe).sv
0A3DB285,B2AA7578,64
Brain Power (USA, Europe).sv
5E6706B9,69BED4DE,64
Bubble World (USA, Europe).sv
E5C2CFB5,137FA3A1,64
Carrier (USA, Europe).sv
5ECFB674,A74DF889,32
Cave Wonders (USA, Europe).sv
E0266CE7,B61BDFB4,64
Challenger Tank (USA, Europe).sv
C92382CE,B2AA7578,64
Chimera (USA, Europe).sv
4A458AA8,FFA4C239,64
Chinese Checkers (USA, Europe).sv
EDED8AEC,9574D04D,64
Classic Casino (USA, Europe).sv
72A96443,3E796E26,64
Climber (USA, Europe).sv
12C45309,52CC2CD7,32
Cross High (USA, Europe).sv
1E6836A2,0176ECF0,64
Crystball (USA, Europe).sv
10DCC110,B2AA7578,64
Dancing Block (USA, Europe).sv
345CA42A,D08490A7,32
Delta Hero (USA, Europe).sv
32CCDF89,4EFE40D0,64
Dream World (USA, Europe).sv
DB0F463F,8DD1E2E9,64
Eagle Plan (USA, Europe).sv
01CB8364,B2AA7578,64
Earth Defender (USA, Europe).sv
A6CBB074,B2AA7578,64
Fatal Craft (USA, Europe).sv
917CAB48,B2AA7578,64
Final Combat (USA, Europe).sv
2861DE5E,A1DBD9A6,32
Galactic Crusader (USA, Europe).sv
B494BC5C,DB41A00C,64
Galaxy Fighter (USA, Europe).sv
581703BE,083694D0,64
Grand Prix (USA, Europe).sv
CEF3F295,E8F8829F,64
Happy Pairs (USA, Europe).sv
112F5EED,089CC77D,64
Happy Race (USA, Europe).sv
552AFA89,50376A85,64
Hash Blocks (USA, Europe).sv
6BD7C885,B2AA7578,64
Hero Hawk (USA, Europe).sv
99BF6CF5,E69938C1,64
Hero Kid (USA, Europe).sv
25DDD6E1,162F0753,64
Honey Bee (USA, Europe).sv
E856875A,1961B97C,64
Jacky Lucky (USA, Europe).sv
7D8A607F,ACFF2095,64
Jaguar Bomber (USA, Europe).sv
AA4372D4,6F0A43E8,64
John Adventure (USA, Europe).sv
E9EA3AE0,874EEC5A,64
Journey to the West (USA).sv
9FB4DB9A,B1F9E5FE,51
Juggler (USA, Europe).sv
32E68D6F,D0CA45AE,64
Kabi Island - Gold in Island (USA, Europe).sv
2BC03096,C723789D,64
Kitchen War (USA, Europe).sv
20225F5C,B2AA7578,64
Kung-Fu Street (USA, Europe).sv
7DAED2EB,8D2E613A,64
Linear Racing (USA, Europe).sv
6F8ABAF9,42DE0B39,64
Magincross (USA, Europe).sv
E406A91C,C64A27A7,64
Majong (USA, Europe).sv
96E2E6D7,B2AA7578,64
Matta Blatta (USA, Europe).sv
21864295,F846E93F,64
Olympic Trials (USA, Europe).sv
85DC8111,1DFFC61C,64
P-52 Sea Battle (USA, Europe).sv
748F9DAE,FDB5A1D1,64
PacBoy & Mouse (USA, Europe).sv
1A89AC88,B2AA7578,64
Pacific Battle (USA, Europe).sv
E5DCE795,D26572CA,64
Penguin Hideout (USA, Europe).sv
FE5F9774,16D33C46,32
Police Bust (USA, Europe).sv
531F0B51,B2AA7578,64
Popo Team (USA, Europe).sv
E11A756C,9DF52936,64
Pyramid (USA, Europe).sv
E0BFE163,74388E90,32
Recycle Design (USA, Europe).sv
C36BD216,5A5C19A8,64
Scaffolder (USA, Europe).sv
46FB22C5,3B167A03,64
Soccer Champion (USA, Europe).sv
45204DC4,B2AA7578,64
Sonny X'Press (USA, Europe).sv
C99B985A,ADC6B8C6,64
Space Fighter (USA, Europe).sv
7CD650C8,75FE30AA,64
SSSnake (USA, Europe).sv
BE9B6F10,8EA0C5AB,64
Super Block (USA, Europe).sv
02E2C7AD,5F1DD5D7,32
Super Kong (USA, Europe).sv
59C7FF64,3438D914,64
Super Pang (USA, Europe).sv
181D12DD,653576B2,64
Tasac 2010 (USA, Europe).sv
3D5F3964,9B451BB4,64
Tennis Pro '92 (USA, Europe).sv
BD004CB7,22802ED1,64
Thunder Shooting (USA, Europe).sv
AD147842,73276EBC,64
Treasure Hunter (USA, Europe).sv
DB35B809,B2AA7578,64
Treasure Hunter (USA, Europe) (Rev 1).sv
69068337,3E796E26,64
TV-Link (USA, Europe).sv
AF3EA0DD,96C646A2,32
Untouchable (USA, Europe).sv
DB3FE76A,9B4B4770,64
Witty Cat (USA, Europe).sv
24A115F9,964FBC96,64
2 in 1 - Block Buster + Cross High (USA, Europe).sv
7E05D84F,057195A3,64
2 in 1 - Hash Blocks + Eagle Plan (USA, Europe).sv
C1354952,21795D9D,64
Alien (USA, Europe).sv
8DBB2C53,B587490C,64
Assembloids (World) (Aftermarket) (Unl).sv
85A0E7C8,059EB9DC,64
Balloon Fight (USA, Europe).sv
8188B755,F59A28E2,64
Block Buster (USA, Europe).sv
0A3DB285,B2AA7578,64
Brain Power (USA, Europe).sv
5E6706B9,69BED4DE,64
Bubble World (USA, Europe).sv
E5C2CFB5,137FA3A1,64
Carrier (USA, Europe).sv
5ECFB674,A74DF889,32
Cave Wonders (USA, Europe).sv
E0266CE7,B61BDFB4,64
Challenger Tank (USA, Europe).sv
C92382CE,B2AA7578,64
Chimera (USA, Europe).sv
4A458AA8,FFA4C239,64
Chinese Checkers (USA, Europe).sv
EDED8AEC,9574D04D,64
Classic Casino (USA, Europe).sv
72A96443,3E796E26,64
Climber (USA, Europe).sv
12C45309,52CC2CD7,32
Cross High (USA, Europe).sv
1E6836A2,0176ECF0,64
Crystball (USA, Europe).sv
10DCC110,B2AA7578,64
Dancing Block (USA, Europe).sv
345CA42A,D08490A7,32
Delta Hero (USA, Europe).sv
32CCDF89,4EFE40D0,64
Dream World (USA, Europe).sv
DB0F463F,8DD1E2E9,64
Eagle Plan (USA, Europe).sv
01CB8364,B2AA7578,64
Earth Defender (USA, Europe).sv
A6CBB074,B2AA7578,64
Fatal Craft (USA, Europe).sv
917CAB48,B2AA7578,64
Final Combat (USA, Europe).sv
2861DE5E,A1DBD9A6,32
Galactic Crusader (USA, Europe).sv
B494BC5C,DB41A00C,64
Galaxy Fighter (USA, Europe).sv
581703BE,083694D0,64
Grand Prix (USA, Europe).sv
CEF3F295,E8F8829F,64
Happy Pairs (USA, Europe).sv
112F5EED,089CC77D,64
Happy Race (USA, Europe).sv
552AFA89,50376A85,64
Hash Blocks (USA, Europe).sv
6BD7C885,B2AA7578,64
Hero Hawk (USA, Europe).sv
99BF6CF5,E69938C1,64
Hero Kid (USA, Europe).sv
25DDD6E1,162F0753,64
Honey Bee (USA, Europe).sv
E856875A,1961B97C,64
Jacky Lucky (USA, Europe).sv
7D8A607F,ACFF2095,64
Jaguar Bomber (USA, Europe).sv
AA4372D4,6F0A43E8,64
John Adventure (USA, Europe).sv
E9EA3AE0,874EEC5A,64
Journey to the West (USA).sv
9FB4DB9A,B1F9E5FE,51
Juggler (USA, Europe).sv
32E68D6F,D0CA45AE,64
Kabi Island - Gold in Island (USA, Europe).sv
2BC03096,C723789D,64
Kitchen War (USA, Europe).sv
20225F5C,B2AA7578,64
Kung-Fu Street (USA, Europe).sv
7DAED2EB,8D2E613A,64
Linear Racing (USA, Europe).sv
6F8ABAF9,42DE0B39,64
Magincross (USA, Europe).sv
E406A91C,C64A27A7,64
Majong (USA, Europe).sv
96E2E6D7,B2AA7578,64
Matta Blatta (USA, Europe).sv
21864295,F846E93F,64
Olympic Trials (USA, Europe).sv
85DC8111,1DFFC61C,64
P-52 Sea Battle (USA, Europe).sv
748F9DAE,FDB5A1D1,64
PacBoy & Mouse (USA, Europe).sv
1A89AC88,B2AA7578,64
Pacific Battle (USA, Europe).sv
E5DCE795,D26572CA,64
Penguin Hideout (USA, Europe).sv
FE5F9774,16D33C46,32
Police Bust (USA, Europe).sv
531F0B51,B2AA7578,64
Popo Team (USA, Europe).sv
E11A756C,9DF52936,64
Pyramid (USA, Europe).sv
E0BFE163,74388E90,32
Recycle Design (USA, Europe).sv
C36BD216,5A5C19A8,64
Scaffolder (USA, Europe).sv
46FB22C5,3B167A03,64
Soccer Champion (USA, Europe).sv
45204DC4,B2AA7578,64
Sonny X'Press (USA, Europe).sv
C99B985A,ADC6B8C6,64
Space Fighter (USA, Europe).sv
7CD650C8,75FE30AA,64
SSSnake (USA, Europe).sv
BE9B6F10,8EA0C5AB,64
Super Block (USA, Europe).sv
02E2C7AD,5F1DD5D7,32
Super Kong (USA, Europe).sv
59C7FF64,3438D914,64
Super Pang (USA, Europe).sv
181D12DD,653576B2,64
Tasac 2010 (USA, Europe).sv
3D5F3964,9B451BB4,64
Tennis Pro '92 (USA, Europe).sv
BD004CB7,22802ED1,64
Thunder Shooting (USA, Europe).sv
AD147842,73276EBC,64
Treasure Hunter (USA, Europe).sv
DB35B809,B2AA7578,64
Treasure Hunter (USA, Europe) (Rev 1).sv
69068337,3E796E26,64
TV-Link (USA, Europe).sv
AF3EA0DD,96C646A2,32
Untouchable (USA, Europe).sv
DB3FE76A,9B4B4770,64
Witty Cat (USA, Europe).sv
24A115F9,964FBC96,64