mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-30 00:14:15 +01:00
Add support for Atari 5200/7800, C64, Vectrex (thx to skaman)
This commit is contained in:
parent
b373b662d2
commit
559010079c
929
Cart_Reader/5200.ino
Normal file
929
Cart_Reader/5200.ino
Normal 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
1021
Cart_Reader/7800.ino
Normal file
File diff suppressed because it is too large
Load Diff
1502
Cart_Reader/C64.ino
Normal file
1502
Cart_Reader/C64.ino
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,8 +4,8 @@
|
|||||||
This project represents a community-driven effort to provide
|
This project represents a community-driven effort to provide
|
||||||
an easy to build and easy to modify cartridge dumper.
|
an easy to build and easy to modify cartridge dumper.
|
||||||
|
|
||||||
Date: 2023-07-19
|
Date: 2023-09-22
|
||||||
Version: 12.8
|
Version: 12.9
|
||||||
|
|
||||||
SD lib: https://github.com/greiman/SdFat
|
SD lib: https://github.com/greiman/SdFat
|
||||||
LCD lib: https://github.com/olikraus/u8g2
|
LCD lib: https://github.com/olikraus/u8g2
|
||||||
@ -15,13 +15,13 @@
|
|||||||
RTC lib: https://github.com/adafruit/RTClib
|
RTC lib: https://github.com/adafruit/RTClib
|
||||||
Frequency lib: https://github.com/PaulStoffregen/FreqCount
|
Frequency lib: https://github.com/PaulStoffregen/FreqCount
|
||||||
|
|
||||||
Compiled with Arduino IDE 2.1.1
|
Compiled with Arduino IDE 2.2.1
|
||||||
|
|
||||||
Thanks to:
|
Thanks to:
|
||||||
MichlK - ROM Reader for Super Nintendo
|
MichlK - ROM Reader for Super Nintendo
|
||||||
Jeff Saltzman - 4-Way Button
|
Jeff Saltzman - 4-Way Button
|
||||||
Wayne and Layne - Video Game Shield menu
|
Wayne and Layne - Video Game Shield menu
|
||||||
skaman - Cart ROM READER SNES ENHANCED, Famicom Cart Dumper, Coleco-, Intellivision, Virtual Boy, WSV, PCW, ARC, Atari, ODY2, Fairchild, MSX, Pokemon Mini modules
|
skaman - Cart ROM READER SNES ENHANCED, Famicom Cart Dumper, Coleco-, Intellivision, Virtual Boy, WSV, PCW, ARC, Atari 2600/5200/7800, ODY2, Fairchild, MSX, Pokemon Mini, C64, Vectrex modules
|
||||||
Tamanegi_taro - PCE and Satellaview modules
|
Tamanegi_taro - PCE and Satellaview modules
|
||||||
splash5 - GBSmart, Wonderswan, NGP and Super A'can modules
|
splash5 - GBSmart, Wonderswan, NGP and Super A'can modules
|
||||||
partlyhuman - Casio Loopy module
|
partlyhuman - Casio Loopy module
|
||||||
@ -39,7 +39,8 @@
|
|||||||
jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi,
|
jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi,
|
||||||
Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman,
|
Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman,
|
||||||
philenotfound, karimhadjsalem, nsx0r, ducky92, niklasweber, Lesserkuma, BacteriaMage,
|
philenotfound, karimhadjsalem, nsx0r, ducky92, niklasweber, Lesserkuma, BacteriaMage,
|
||||||
vpelletier, Ancyker, mattiacci, RWeick, joshman196, partlyhuman
|
vpelletier, Ancyker, mattiacci, RWeick, joshman196, partlyhuman, ButThouMust, hxlnt,
|
||||||
|
breyell
|
||||||
|
|
||||||
And to nocash for figuring out the secrets of the SFC Nintendo Power cartridge.
|
And to nocash for figuring out the secrets of the SFC Nintendo Power cartridge.
|
||||||
|
|
||||||
@ -252,6 +253,10 @@ void print_STR(byte string_number, boolean newline) {
|
|||||||
#define mode_MSX 33
|
#define mode_MSX 33
|
||||||
#define mode_POKE 34
|
#define mode_POKE 34
|
||||||
#define mode_LOOPY 35
|
#define mode_LOOPY 35
|
||||||
|
#define mode_C64 36
|
||||||
|
#define mode_5200 37
|
||||||
|
#define mode_7800 38
|
||||||
|
#define mode_VECTREX 39
|
||||||
|
|
||||||
// optimization-safe nop delay
|
// optimization-safe nop delay
|
||||||
#define NOP __asm__ __volatile__("nop\n\t")
|
#define NOP __asm__ __volatile__("nop\n\t")
|
||||||
@ -491,9 +496,9 @@ uint32_t calculateCRC(char* fileName, char* folder, int offset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
CRC Functions for Atari, Fairchild, Ody2, Arc modules
|
CRC Functions for Atari, Fairchild, Ody2, Arc, etc. modules
|
||||||
*****************************************/
|
*****************************************/
|
||||||
#if (defined(enable_ATARI) || defined(enable_ODY2) || defined(enable_ARC) || defined(enable_FAIRCHILD) || defined(enable_MSX) || defined(enable_POKE))
|
#if (defined(enable_ATARI) || defined(enable_ODY2) || defined(enable_ARC) || defined(enable_FAIRCHILD) || defined(enable_MSX) || defined(enable_POKE) || defined(enable_5200) || defined(enable_7800) || defined(enable_C64) || defined(enable_VECTREX))
|
||||||
|
|
||||||
inline uint32_t updateCRC(uint8_t ch, uint32_t crc) {
|
inline uint32_t updateCRC(uint8_t ch, uint32_t crc) {
|
||||||
uint32_t idx = ((crc) ^ (ch)) & 0xff;
|
uint32_t idx = ((crc) ^ (ch)) & 0xff;
|
||||||
@ -885,12 +890,24 @@ static const char modeItem21[] PROGMEM = "Pokemon Mini (3V)";
|
|||||||
#ifdef enable_LOOPY
|
#ifdef enable_LOOPY
|
||||||
static const char modeItem22[] PROGMEM = "Casio Loopy";
|
static const char modeItem22[] PROGMEM = "Casio Loopy";
|
||||||
#endif
|
#endif
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_C64
|
||||||
static const char modeItem23[] PROGMEM = "Flashrom Programmer";
|
static const char modeItem23[] PROGMEM = "Commodore 64";
|
||||||
#endif
|
#endif
|
||||||
static const char modeItem24[] PROGMEM = "Self Test (3V)";
|
#ifdef enable_5200
|
||||||
static const char modeItem25[] PROGMEM = "About";
|
static const char modeItem24[] PROGMEM = "Atari 5200";
|
||||||
//static const char modeItem25[] PROGMEM = "Reset"; (stored in common strings array)
|
#endif
|
||||||
|
#ifdef enable_7800
|
||||||
|
static const char modeItem25[] PROGMEM = "Atari 7800";
|
||||||
|
#endif
|
||||||
|
#ifdef enable_VECTREX
|
||||||
|
static const char modeItem26[] PROGMEM = "Vectrex";
|
||||||
|
#endif
|
||||||
|
#ifdef enable_FLASH
|
||||||
|
static const char modeItem27[] PROGMEM = "Flashrom Programmer";
|
||||||
|
#endif
|
||||||
|
static const char modeItem28[] PROGMEM = "Self Test (3V)";
|
||||||
|
static const char modeItem29[] PROGMEM = "About";
|
||||||
|
//static const char modeItem30[] PROGMEM = "Reset"; (stored in common strings array)
|
||||||
static const char* const modeOptions[] PROGMEM = {
|
static const char* const modeOptions[] PROGMEM = {
|
||||||
#ifdef enable_GBX
|
#ifdef enable_GBX
|
||||||
modeItem1,
|
modeItem1,
|
||||||
@ -958,10 +975,22 @@ static const char* const modeOptions[] PROGMEM = {
|
|||||||
#ifdef enable_LOOPY
|
#ifdef enable_LOOPY
|
||||||
modeItem22,
|
modeItem22,
|
||||||
#endif
|
#endif
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_C64
|
||||||
modeItem23,
|
modeItem23,
|
||||||
#endif
|
#endif
|
||||||
modeItem24, modeItem25, string_reset2
|
#ifdef enable_5200
|
||||||
|
modeItem24,
|
||||||
|
#endif
|
||||||
|
#ifdef enable_7800
|
||||||
|
modeItem25,
|
||||||
|
#endif
|
||||||
|
#ifdef enable_VECTREX
|
||||||
|
modeItem26,
|
||||||
|
#endif
|
||||||
|
#ifdef enable_FLASH
|
||||||
|
modeItem27,
|
||||||
|
#endif
|
||||||
|
modeItem28, modeItem29, string_reset2
|
||||||
};
|
};
|
||||||
|
|
||||||
// Count menu entries
|
// Count menu entries
|
||||||
@ -1033,6 +1062,18 @@ byte countMenuEntries() {
|
|||||||
#ifdef enable_LOOPY
|
#ifdef enable_LOOPY
|
||||||
count++;
|
count++;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef enable_C64
|
||||||
|
count++;
|
||||||
|
#endif
|
||||||
|
#ifdef enable_5200
|
||||||
|
count++;
|
||||||
|
#endif
|
||||||
|
#ifdef enable_7800
|
||||||
|
count++;
|
||||||
|
#endif
|
||||||
|
#ifdef enable_VECTREX
|
||||||
|
count++;
|
||||||
|
#endif
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_FLASH
|
||||||
count++;
|
count++;
|
||||||
#endif
|
#endif
|
||||||
@ -1154,21 +1195,41 @@ unsigned char fixMenuOrder(unsigned char modeMenu) {
|
|||||||
currentEntry++;
|
currentEntry++;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(enable_FLASH)
|
#if defined(enable_C64)
|
||||||
translationMatrix[currentEntry] = 22;
|
translationMatrix[currentEntry] = 22;
|
||||||
currentEntry++;
|
currentEntry++;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Self Test
|
#if defined(enable_5200)
|
||||||
translationMatrix[currentEntry] = 23;
|
translationMatrix[currentEntry] = 23;
|
||||||
currentEntry++;
|
currentEntry++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(enable_7800)
|
||||||
|
translationMatrix[currentEntry] = 24;
|
||||||
|
currentEntry++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(enable_VECTREX)
|
||||||
|
translationMatrix[currentEntry] = 25;
|
||||||
|
currentEntry++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(enable_FLASH)
|
||||||
|
translationMatrix[currentEntry] = 26;
|
||||||
|
currentEntry++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Self Test
|
||||||
|
translationMatrix[currentEntry] = 27;
|
||||||
|
currentEntry++;
|
||||||
|
|
||||||
// About
|
// About
|
||||||
translationMatrix[currentEntry] = 24;
|
translationMatrix[currentEntry] = 28;
|
||||||
currentEntry++;
|
currentEntry++;
|
||||||
|
|
||||||
// Reset
|
// Reset
|
||||||
translationMatrix[currentEntry] = 25;
|
translationMatrix[currentEntry] = 29;
|
||||||
currentEntry++;
|
currentEntry++;
|
||||||
|
|
||||||
return translationMatrix[modeMenu];
|
return translationMatrix[modeMenu];
|
||||||
@ -1211,9 +1272,15 @@ void mainMenu() {
|
|||||||
num_answers = menuCount - 14;
|
num_answers = menuCount - 14;
|
||||||
else
|
else
|
||||||
num_answers = 7;
|
num_answers = 7;
|
||||||
} else { // currPage == 4
|
} else if (currPage == 4) {
|
||||||
option_offset = 21;
|
option_offset = 21;
|
||||||
num_answers = menuCount - 21;
|
if (menuCount < 28)
|
||||||
|
num_answers = menuCount - 21;
|
||||||
|
else
|
||||||
|
num_answers = 7;
|
||||||
|
} else { // currPage == 5
|
||||||
|
option_offset = 28;
|
||||||
|
num_answers = menuCount - 28;
|
||||||
}
|
}
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(modeOptions + option_offset, num_answers);
|
convertPgm(modeOptions + option_offset, num_answers);
|
||||||
@ -1389,8 +1456,36 @@ void mainMenu() {
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_C64
|
||||||
case 22:
|
case 22:
|
||||||
|
setup_C64();
|
||||||
|
c64Menu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_5200
|
||||||
|
case 23:
|
||||||
|
setup_5200();
|
||||||
|
a5200Menu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_7800
|
||||||
|
case 24:
|
||||||
|
setup_7800();
|
||||||
|
a7800Menu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_VECTREX
|
||||||
|
case 25:
|
||||||
|
setup_VECTREX();
|
||||||
|
vectrexMenu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_FLASH
|
||||||
|
case 26:
|
||||||
#ifdef ENABLE_VSELECT
|
#ifdef ENABLE_VSELECT
|
||||||
setup_FlashVoltage();
|
setup_FlashVoltage();
|
||||||
#endif
|
#endif
|
||||||
@ -1399,16 +1494,16 @@ void mainMenu() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef enable_selftest
|
#ifdef enable_selftest
|
||||||
case 23:
|
case 27:
|
||||||
selfTest();
|
selfTest();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 24:
|
case 28:
|
||||||
aboutScreen();
|
aboutScreen();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 25:
|
case 29:
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3590,7 +3685,26 @@ void loop() {
|
|||||||
loopyMenu();
|
loopyMenu();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef enable_C64
|
||||||
|
else if (mode == mode_C64) {
|
||||||
|
c64Menu();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef enable_5200
|
||||||
|
else if (mode == mode_5200) {
|
||||||
|
a5200Menu();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef enable_7800
|
||||||
|
else if (mode == mode_7800) {
|
||||||
|
a7800Menu();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef enable_VECTREX
|
||||||
|
else if (mode == mode_VECTREX) {
|
||||||
|
vectrexMenu();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else {
|
else {
|
||||||
display_Clear();
|
display_Clear();
|
||||||
println_Msg(F("Menu Error"));
|
println_Msg(F("Menu Error"));
|
||||||
|
@ -1,32 +1,32 @@
|
|||||||
/********************************************************************
|
/********************************************************************
|
||||||
* Open Source Cartridge Reader *
|
Open Source Cartridge Reader
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_H_
|
#ifndef CONFIG_H_
|
||||||
#define CONFIG_H_
|
#define CONFIG_H_
|
||||||
|
|
||||||
/***** FIRMWARE CONFIGURATION **************************************
|
/***** FIRMWARE CONFIGURATION **************************************
|
||||||
*
|
|
||||||
* Add or remove the "//" in front of items to toggle them.
|
Add or remove the "//" in front of items to toggle them.
|
||||||
*
|
|
||||||
* Disabled:
|
Disabled:
|
||||||
* //#define HW5
|
//#define HW5
|
||||||
*
|
|
||||||
* Enabled:
|
Enabled:
|
||||||
* #define HW5
|
#define HW5
|
||||||
*
|
|
||||||
* Things in ** blocks like this are comments. Changing them doesn't
|
Things in ** blocks like this are comments. Changing them doesn't
|
||||||
* affect the firmware that is flashed to your OSCR.
|
affect the firmware that is flashed to your OSCR.
|
||||||
*
|
|
||||||
* If you only get a blank screen or "Press Button" message after
|
If you only get a blank screen or "Press Button" message after
|
||||||
* flashing you have enabled too many modules.
|
flashing you have enabled too many modules.
|
||||||
*
|
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
/*==== HARDWARE VERSION ===========================================*/
|
/*==== HARDWARE VERSION ===========================================*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Choose your hardware version:
|
Choose your hardware version:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define HW5
|
//#define HW5
|
||||||
@ -41,7 +41,7 @@
|
|||||||
/*==== HARDWARE MODULES ===========================================*/
|
/*==== HARDWARE MODULES ===========================================*/
|
||||||
|
|
||||||
/* [ Automatic Voltage Selection ---------------------------------- ]
|
/* [ Automatic Voltage Selection ---------------------------------- ]
|
||||||
* Enable this if you have the VSELECT module.
|
Enable this if you have the VSELECT module.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define ENABLE_VSELECT
|
//#define ENABLE_VSELECT
|
||||||
@ -49,8 +49,8 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Clock Generator ---------------------------------------------- ]
|
/* [ Clock Generator ---------------------------------------------- ]
|
||||||
* Enable this if you have the clock generator module. This will
|
Enable this if you have the clock generator module. This will
|
||||||
* automatically be enabled if you selected HW2 or newer above.
|
automatically be enabled if you selected HW2 or newer above.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define clockgen_installed
|
//#define clockgen_installed
|
||||||
@ -58,8 +58,8 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Real Time Clock ---------------------------------------------- ]
|
/* [ Real Time Clock ---------------------------------------------- ]
|
||||||
* Enable this if you have the RTC module. You can configure the
|
Enable this if you have the RTC module. You can configure the
|
||||||
* type later in this file.
|
type later in this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define RTC_installed
|
//#define RTC_installed
|
||||||
@ -75,6 +75,20 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
|
/* [ Atari 5200 --------------------------------------------------- ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#define enable_5200
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
|
/* [ Atari 7800 --------------------------------------------------- ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#define enable_7800
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
/* [ Benesse Pocket Challenge W ----------------------------------- ]
|
/* [ Benesse Pocket Challenge W ----------------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -82,6 +96,13 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
|
/* [ C64 --------------------------------------------------- ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#define enable_C64
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
/* [ ColecoVision ------------------------------------------------- ]
|
/* [ ColecoVision ------------------------------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -106,7 +127,7 @@
|
|||||||
/* [ Flashrom Programmer for SNES repros -------------------------- ]
|
/* [ Flashrom Programmer for SNES repros -------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define enable_FLASH
|
//#define enable_FLASH
|
||||||
//#define enable_FLASH16
|
//#define enable_FLASH16
|
||||||
|
|
||||||
/****/
|
/****/
|
||||||
@ -191,14 +212,14 @@
|
|||||||
/* [ Super Famicom SF Memory Cassette ----------------------------- ]
|
/* [ Super Famicom SF Memory Cassette ----------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define enable_SFM
|
//#define enable_SFM
|
||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Super Famicom Satellaview ------------------------------------ ]
|
/* [ Super Famicom Satellaview ------------------------------------ ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define enable_SV
|
//#define enable_SV
|
||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
@ -209,6 +230,13 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
|
/* [ Vectrex --------------------------------------------------- ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#define enable_VECTREX
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
/* [ Virtual Boy -------------------------------------------------- ]
|
/* [ Virtual Boy -------------------------------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -216,7 +244,7 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Watara Supervision ------------------------------------------- ]
|
/* [ Watara Supervision ------------------------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define enable_WSV
|
//#define enable_WSV
|
||||||
@ -247,10 +275,10 @@
|
|||||||
/*==== FIRMWARE OPTIONS ===========================================*/
|
/*==== FIRMWARE OPTIONS ===========================================*/
|
||||||
|
|
||||||
/* [ LCD: Background Color ---------------------------------------- ]
|
/* [ LCD: Background Color ---------------------------------------- ]
|
||||||
* Set the backlight color of the LCD if you have one.
|
Set the backlight color of the LCD if you have one.
|
||||||
*
|
|
||||||
* PARAMETERS:
|
PARAMETERS:
|
||||||
* Green, Red, Blue
|
Green, Red, Blue
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define background_color 100, 0, 0
|
#define background_color 100, 0, 0
|
||||||
@ -258,12 +286,12 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ 3.3V Stability Fix (3V3FIX) ---------------------------------- ]
|
/* [ 3.3V Stability Fix (3V3FIX) ---------------------------------- ]
|
||||||
* Enable this if you are having stability issues when using 3.3V,
|
Enable this if you are having stability issues when using 3.3V,
|
||||||
* works best with VSELECT.
|
works best with VSELECT.
|
||||||
*
|
|
||||||
* If not using VSELECT, always turn the cart reader on with the
|
If not using VSELECT, always turn the cart reader on with the
|
||||||
* voltage switch set to 5V and switch to 5V before selecting a
|
voltage switch set to 5V and switch to 5V before selecting a
|
||||||
* cartridge from the menu.
|
cartridge from the menu.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define ENABLE_3V3FIX
|
//#define ENABLE_3V3FIX
|
||||||
@ -271,9 +299,9 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Updater ------------------------------------------------------ ]
|
/* [ Updater ------------------------------------------------------ ]
|
||||||
* Disable this if you don't plan to/want to use the firmware
|
Disable this if you don't plan to/want to use the firmware
|
||||||
* updater utility. This setting is ignored on hardware versions
|
updater utility. This setting is ignored on hardware versions
|
||||||
* other than HW5 and HW3.
|
other than HW5 and HW3.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define ENABLE_UPDATER
|
#define ENABLE_UPDATER
|
||||||
@ -281,7 +309,7 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Self Test ---------------------------------------------------- ]
|
/* [ Self Test ---------------------------------------------------- ]
|
||||||
* Tests for shorts and other issues in your OSCR build.
|
Tests for shorts and other issues in your OSCR build.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define enable_selftest
|
#define enable_selftest
|
||||||
@ -289,7 +317,7 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Logging ------------------------------------------------------ ]
|
/* [ Logging ------------------------------------------------------ ]
|
||||||
* Write all info to OSCR_LOG.txt in root dir
|
Write all info to OSCR_LOG.txt in root dir
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define global_log
|
#define global_log
|
||||||
@ -297,8 +325,8 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ RTC: IC Type ------------------------------------------------- ]
|
/* [ RTC: IC Type ------------------------------------------------- ]
|
||||||
* When the RTC module is installed, choose the type here. This
|
When the RTC module is installed, choose the type here. This
|
||||||
* setting is ignored if the RTC option is not enabled.
|
setting is ignored if the RTC option is not enabled.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define DS3231
|
#define DS3231
|
||||||
@ -307,7 +335,7 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ SNES Core/CLOCKGEN: Read Clock Generator Calibration Data ---- ]
|
/* [ SNES Core/CLOCKGEN: Read Clock Generator Calibration Data ---- ]
|
||||||
* Toggle to use calibration data from snes_clk.txt
|
Toggle to use calibration data from snes_clk.txt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define clockgen_calibration
|
//#define clockgen_calibration
|
||||||
@ -315,22 +343,22 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ MegaDrive/Genesis Core: Compatibility Settings --------------- ]
|
/* [ MegaDrive/Genesis Core: Compatibility Settings --------------- ]
|
||||||
* Allows you to create a text file on the SD card called
|
Allows you to create a text file on the SD card called
|
||||||
* "mdconf.txt" which you should place the following into:
|
"mdconf.txt" which you should place the following into:
|
||||||
*
|
|
||||||
* [segaSram16bit] N
|
[segaSram16bit] N
|
||||||
*
|
|
||||||
* Where N is:
|
Where N is:
|
||||||
* 0: Output each byte once. Not supported by emulators. (default)
|
0: Output each byte once. Not supported by emulators. (default)
|
||||||
* 1: Duplicate each byte. Usable by Kega Fusion.
|
1: Duplicate each byte. Usable by Kega Fusion.
|
||||||
* 2: Same as 1 + pad with 0xFF so that the file size is 64KB.
|
2: Same as 1 + pad with 0xFF so that the file size is 64KB.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define use_md_conf
|
//#define use_md_conf
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Alternatively, define it here by uncommenting and changing the
|
Alternatively, define it here by uncommenting and changing the
|
||||||
* following line. Setting both allows you to change the default.
|
following line. Setting both allows you to change the default.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define DEFAULT_VALUE_segaSram16bit 0
|
//#define DEFAULT_VALUE_segaSram16bit 0
|
||||||
@ -338,9 +366,9 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ N64 Core: Fast CRC ------------------------------------------- ]
|
/* [ N64 Core: Fast CRC ------------------------------------------- ]
|
||||||
* Toggle so the CRC for N64 Roms will be calculated during dumping
|
Toggle so the CRC for N64 Roms will be calculated during dumping
|
||||||
* from memory instead of after dumping from SD card, not compatible
|
from memory instead of after dumping from SD card, not compatible
|
||||||
* with all Cart Readers
|
with all Cart Readers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define fastcrc
|
//#define fastcrc
|
||||||
@ -348,7 +376,7 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ N64 Core: Log Summary ---------------------------------------- ]
|
/* [ N64 Core: Log Summary ---------------------------------------- ]
|
||||||
* Enable to save a n64log.txt file with rom info in /N64/ROM
|
Enable to save a n64log.txt file with rom info in /N64/ROM
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define savesummarytotxt
|
//#define savesummarytotxt
|
||||||
@ -358,42 +386,42 @@
|
|||||||
/*==== PROCESSING =================================================*/
|
/*==== PROCESSING =================================================*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* You probably shouldn't change this stuff!
|
You probably shouldn't change this stuff!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if (defined(HW4) || defined(HW5))
|
#if (defined(HW4) || defined(HW5))
|
||||||
#define enable_LCD
|
#define enable_LCD
|
||||||
#define enable_neopixel
|
#define enable_neopixel
|
||||||
#define enable_rotary
|
#define enable_rotary
|
||||||
//#define rotate_counter_clockwise
|
//#define rotate_counter_clockwise
|
||||||
#define clockgen_installed
|
#define clockgen_installed
|
||||||
#define fastcrc
|
#define fastcrc
|
||||||
#define ws_adapter_v2
|
#define ws_adapter_v2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(HW2) || defined(HW3))
|
#if (defined(HW2) || defined(HW3))
|
||||||
#define enable_OLED
|
#define enable_OLED
|
||||||
#define enable_Button2
|
#define enable_Button2
|
||||||
#define clockgen_installed
|
#define clockgen_installed
|
||||||
#define CA_LED
|
#define CA_LED
|
||||||
#define fastcrc
|
#define fastcrc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HW1)
|
#if defined(HW1)
|
||||||
#define enable_OLED
|
#define enable_OLED
|
||||||
//#define clockgen_installed
|
//#define clockgen_installed
|
||||||
//#define fastcrc
|
//#define fastcrc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SERIAL_MONITOR)
|
#if defined(SERIAL_MONITOR)
|
||||||
#define enable_serial
|
#define enable_serial
|
||||||
//#define clockgen_installed
|
//#define clockgen_installed
|
||||||
//#define fastcrc
|
//#define fastcrc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Firmware updater only works with HW3 and HW5 */
|
/* Firmware updater only works with HW3 and HW5 */
|
||||||
#if !(defined(HW5) || defined(HW3))
|
#if !(defined(HW5) || defined(HW3))
|
||||||
#undef ENABLE_UPDATER
|
#undef ENABLE_UPDATER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* End of settings */
|
/* End of settings */
|
||||||
|
@ -1539,8 +1539,13 @@ bool getCartListInfo_MSX() {
|
|||||||
println_Msg(F(""));
|
println_Msg(F(""));
|
||||||
println_Msg(msxgame);
|
println_Msg(msxgame);
|
||||||
display.setCursor(0, 48);
|
display.setCursor(0, 48);
|
||||||
println_Msg(F("Press to Change"));
|
#if defined(enable_OLED)
|
||||||
println_Msg(F("Hold to Select"));
|
print_STR(press_to_change_STR, 1);
|
||||||
|
print_STR(right_to_select_STR, 1);
|
||||||
|
#elif defined(enable_LCD)
|
||||||
|
print_STR(rotate_to_change_STR, 1);
|
||||||
|
print_STR(press_to_select_STR, 1);
|
||||||
|
#endif
|
||||||
display_Update();
|
display_Update();
|
||||||
#else
|
#else
|
||||||
Serial.print(F("CART TITLE:"));
|
Serial.print(F("CART TITLE:"));
|
||||||
@ -1659,4 +1664,4 @@ void setCart_MSX() {
|
|||||||
|
|
||||||
msxcsvFile.close();
|
msxcsvFile.close();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -186,6 +186,9 @@ void snsMenu() {
|
|||||||
#endif
|
#endif
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
print_MissingModule(); // does not return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
631
Cart_Reader/VECTREX.ino
Normal file
631
Cart_Reader/VECTREX.ino
Normal 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
1278
sd/32x.txt
File diff suppressed because it is too large
Load Diff
76
sd/5200cart.txt
Normal file
76
sd/5200cart.txt
Normal 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
71
sd/7800cart.txt
Normal 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
|
988
sd/ataricart.txt
988
sd/ataricart.txt
@ -1,494 +1,494 @@
|
|||||||
32 in 1,240,0
|
32 in 1,240,0
|
||||||
3-D Tic-Tac-Toe,32,15
|
3-D Tic-Tac-Toe,32,15
|
||||||
Acid Drop,246,23
|
Acid Drop,246,23
|
||||||
Action Force,64,18
|
Action Force,64,18
|
||||||
Adventure,64,20
|
Adventure,64,20
|
||||||
Adventures of TRON,64,17
|
Adventures of TRON,64,17
|
||||||
Air Raid,64,26
|
Air Raid,64,26
|
||||||
Air Raiders,64,16
|
Air Raiders,64,16
|
||||||
Airlock,64,19
|
Airlock,64,19
|
||||||
Air-Sea Battle,32,15
|
Air-Sea Battle,32,15
|
||||||
AKA Space Adventure,64,22
|
AKA Space Adventure,64,22
|
||||||
Alien,64,27
|
Alien,64,27
|
||||||
Alpha Beam with Ernie,248,13
|
Alpha Beam with Ernie,248,13
|
||||||
Amidar,64,30
|
Amidar,64,30
|
||||||
Armor Ambush,64,14
|
Armor Ambush,64,14
|
||||||
Artillery Duel,248,20
|
Artillery Duel,248,20
|
||||||
Assault,64,23
|
Assault,64,23
|
||||||
Asterix,248,15
|
Asterix,248,15
|
||||||
Asteroids,248,16
|
Asteroids,248,16
|
||||||
Astroblast,64,18
|
Astroblast,64,18
|
||||||
Atari Video Cube,64,18
|
Atari Video Cube,64,18
|
||||||
Atlantis,64,24
|
Atlantis,64,24
|
||||||
Atlantis II,64,16
|
Atlantis II,64,16
|
||||||
Bachelor Party,64,19
|
Bachelor Party,64,19
|
||||||
Bachelorette Party,64,22
|
Bachelorette Party,64,22
|
||||||
Backgammon,64,26
|
Backgammon,64,26
|
||||||
Bank Heist,64,18
|
Bank Heist,64,18
|
||||||
Barnstorming,64,18
|
Barnstorming,64,18
|
||||||
Base Attack,64,20
|
Base Attack,64,20
|
||||||
Basic Math,32,19
|
Basic Math,32,19
|
||||||
BASIC Programming,64,18
|
BASIC Programming,64,18
|
||||||
Basketball,32,25
|
Basketball,32,25
|
||||||
Battlezone,248,18
|
Battlezone,248,18
|
||||||
Beamrider,248,19
|
Beamrider,248,19
|
||||||
Beany Bopper,64,18
|
Beany Bopper,64,18
|
||||||
Beat 'Em & Eat 'Em,64,20
|
Beat 'Em & Eat 'Em,64,20
|
||||||
Berenstain Bears,248,26
|
Berenstain Bears,248,26
|
||||||
Bermuda,64,25
|
Bermuda,64,25
|
||||||
Bermuda Triangle,64,15
|
Bermuda Triangle,64,15
|
||||||
Berzerk,64,24
|
Berzerk,64,24
|
||||||
Big Bird's Egg Catch,248,15
|
Big Bird's Egg Catch,248,15
|
||||||
Blackjack,32,29
|
Blackjack,32,29
|
||||||
Blueprint,248,17
|
Blueprint,248,17
|
||||||
BMX Air Master,246,18
|
BMX Air Master,246,18
|
||||||
Bobby Is Going Home,64,23
|
Bobby Is Going Home,64,23
|
||||||
Boing!,64,27
|
Boing!,64,27
|
||||||
Bowling,32,14
|
Bowling,32,14
|
||||||
Boxing,32,15
|
Boxing,32,15
|
||||||
Brain Games,32,14
|
Brain Games,32,14
|
||||||
Breakout,32,19
|
Breakout,32,19
|
||||||
Bridge,64,16
|
Bridge,64,16
|
||||||
Buck Rogers - Planet of Zoom,248,14
|
Buck Rogers - Planet of Zoom,248,14
|
||||||
Bugs,64,37
|
Bugs,64,37
|
||||||
Bump 'n' Jump,231,12
|
Bump 'n' Jump,231,12
|
||||||
Bumper Bash,64,22
|
Bumper Bash,64,22
|
||||||
BurgerTime,231,19
|
BurgerTime,231,19
|
||||||
Burning Desire,64,19
|
Burning Desire,64,19
|
||||||
Cakewalk,64,22
|
Cakewalk,64,22
|
||||||
California Games,246,16
|
California Games,246,16
|
||||||
Canyon Bomber,32,25
|
Canyon Bomber,32,25
|
||||||
Carnival,64,21
|
Carnival,64,21
|
||||||
Casino,64,16
|
Casino,64,16
|
||||||
Cat Trax,64,14
|
Cat Trax,64,14
|
||||||
Cathouse Blues,64,16
|
Cathouse Blues,64,16
|
||||||
Centipede,248,22
|
Centipede,248,22
|
||||||
Challenge,248,18
|
Challenge,248,18
|
||||||
Challenge of.... Nexar,64,18
|
Challenge of.... Nexar,64,18
|
||||||
Chase the Chuckwagon,64,30
|
Chase the Chuckwagon,64,30
|
||||||
Checkers,32,28
|
Checkers,32,28
|
||||||
China Syndrome,64,16
|
China Syndrome,64,16
|
||||||
Chopper Command,64,22
|
Chopper Command,64,22
|
||||||
Chuck Norris Superkicks,248,23
|
Chuck Norris Superkicks,248,23
|
||||||
Circus Atari,64,32
|
Circus Atari,64,32
|
||||||
Coco Nuts,64,20
|
Coco Nuts,64,20
|
||||||
Codebreaker,32,17
|
Codebreaker,32,17
|
||||||
Combat,32,19
|
Combat,32,19
|
||||||
Commando,246,14
|
Commando,246,14
|
||||||
Commando Raid,64,17
|
Commando Raid,64,17
|
||||||
Condor Attack,64,21
|
Condor Attack,64,21
|
||||||
Confrontation,64,21
|
Confrontation,64,21
|
||||||
Congo Bongo,248,21
|
Congo Bongo,248,21
|
||||||
Cookie Monster Munch,248,20
|
Cookie Monster Munch,248,20
|
||||||
Cosmic Ark,64,29
|
Cosmic Ark,64,29
|
||||||
Cosmic Commuter,64,18
|
Cosmic Commuter,64,18
|
||||||
Cosmic Corridor,64,23
|
Cosmic Corridor,64,23
|
||||||
Cosmic Creeps,64,23
|
Cosmic Creeps,64,23
|
||||||
Cosmic Swarm,32,21
|
Cosmic Swarm,32,21
|
||||||
Crackpots,64,20
|
Crackpots,64,20
|
||||||
Crash Dive,64,17
|
Crash Dive,64,17
|
||||||
Crazy Climber,248,18
|
Crazy Climber,248,18
|
||||||
Cross Force,64,22
|
Cross Force,64,22
|
||||||
Crossbow,246,19
|
Crossbow,246,19
|
||||||
Crypts of Chaos,64,17
|
Crypts of Chaos,64,17
|
||||||
Crystal Castles,246,23
|
Crystal Castles,246,23
|
||||||
Cubicolor,64,24
|
Cubicolor,64,24
|
||||||
Cubo Magico,64,17
|
Cubo Magico,64,17
|
||||||
Custer's Revenge,64,19
|
Custer's Revenge,64,19
|
||||||
Dancing Plate,64,24
|
Dancing Plate,64,24
|
||||||
Dark Cavern,64,21
|
Dark Cavern,64,21
|
||||||
Dark Chambers,246,19
|
Dark Chambers,246,19
|
||||||
Dark Mage,248,22
|
Dark Mage,248,22
|
||||||
Deadly Duck,64,18
|
Deadly Duck,64,18
|
||||||
Death Trap,64,19
|
Death Trap,64,19
|
||||||
Decathlon,254,18
|
Decathlon,254,18
|
||||||
Defender,64,18
|
Defender,64,18
|
||||||
Defender II,248,16
|
Defender II,248,16
|
||||||
Demolition Herby,64,20
|
Demolition Herby,64,20
|
||||||
Demon Attack,64,24
|
Demon Attack,64,24
|
||||||
Demons to Diamonds,64,20
|
Demons to Diamonds,64,20
|
||||||
Desert Falcon,246,26
|
Desert Falcon,246,26
|
||||||
Dice Puzzle,64,22
|
Dice Puzzle,64,22
|
||||||
Dig Dug,246,19
|
Dig Dug,246,19
|
||||||
Dishaster,64,16
|
Dishaster,64,16
|
||||||
Dodge 'Em,64,17
|
Dodge 'Em,64,17
|
||||||
Dolphin,64,17
|
Dolphin,64,17
|
||||||
Donald Duck's Speedboat,248,15
|
Donald Duck's Speedboat,248,15
|
||||||
Donkey Kong,64,32
|
Donkey Kong,64,32
|
||||||
Donkey Kong Jr,248,19
|
Donkey Kong Jr,248,19
|
||||||
Double Dragon,246,23
|
Double Dragon,246,23
|
||||||
Double Dunk,246,22
|
Double Dunk,246,22
|
||||||
Dragon Defender,64,20
|
Dragon Defender,64,20
|
||||||
Dragonfire,64,23
|
Dragonfire,64,23
|
||||||
Dragster,32,18
|
Dragster,32,18
|
||||||
Dukes of Hazzard,246,16
|
Dukes of Hazzard,246,16
|
||||||
E.T.,248,25
|
E.T.,248,25
|
||||||
Earth Dies Screaming,64,13
|
Earth Dies Screaming,64,13
|
||||||
Eggomania,64,28
|
Eggomania,64,28
|
||||||
Elevator Action,248,17
|
Elevator Action,248,17
|
||||||
Eli's Ladder,64,24
|
Eli's Ladder,64,24
|
||||||
Encounter at L-5,64,20
|
Encounter at L-5,64,20
|
||||||
Enduro,64,24
|
Enduro,64,24
|
||||||
Entombed,64,14
|
Entombed,64,14
|
||||||
Espial,63,16
|
Espial,63,16
|
||||||
Exocet,64,14
|
Exocet,64,14
|
||||||
Extra Terrestrials,64,14
|
Extra Terrestrials,64,14
|
||||||
Fantastic Voyage,64,26
|
Fantastic Voyage,64,26
|
||||||
Farmyard Fun,64,24
|
Farmyard Fun,64,24
|
||||||
Fast Eddie,64,20
|
Fast Eddie,64,20
|
||||||
Fast Food,64,18
|
Fast Food,64,18
|
||||||
Fatal Run,244,17
|
Fatal Run,244,17
|
||||||
Fathom,248,18
|
Fathom,248,18
|
||||||
Fighter Pilot,246,15
|
Fighter Pilot,246,15
|
||||||
Final Approach,64,22
|
Final Approach,64,22
|
||||||
Fire Fighter,64,22
|
Fire Fighter,64,22
|
||||||
Fire Fly,64,20
|
Fire Fly,64,20
|
||||||
Fishing Derby,32,16
|
Fishing Derby,32,16
|
||||||
Flag Capture,32,21
|
Flag Capture,32,21
|
||||||
Flash Gordon,64,20
|
Flash Gordon,64,20
|
||||||
Football,32,20
|
Football,32,20
|
||||||
Forest,64,16
|
Forest,64,16
|
||||||
Frankenstein's Monster,64,14
|
Frankenstein's Monster,64,14
|
||||||
Freeway,32,30
|
Freeway,32,30
|
||||||
Frisco,64,15
|
Frisco,64,15
|
||||||
Frog Pond,248,14
|
Frog Pond,248,14
|
||||||
Frogger,64,18
|
Frogger,64,18
|
||||||
Frogger II,224,15
|
Frogger II,224,15
|
||||||
Frogs and Flies,64,19
|
Frogs and Flies,64,19
|
||||||
Front Line,248,23
|
Front Line,248,23
|
||||||
Frostbite,64,19
|
Frostbite,64,19
|
||||||
G.I. Joe,64,17
|
G.I. Joe,64,17
|
||||||
Galaxian,248,16
|
Galaxian,248,16
|
||||||
Gamma Attack,32,17
|
Gamma Attack,32,17
|
||||||
Gangster Alley,64,20
|
Gangster Alley,64,20
|
||||||
Gas Hog,64,22
|
Gas Hog,64,22
|
||||||
Gauntlet,64,15
|
Gauntlet,64,15
|
||||||
Ghost Manor,248,16
|
Ghost Manor,248,16
|
||||||
Ghostbusters,248,20
|
Ghostbusters,248,20
|
||||||
Ghostbusters II,246,21
|
Ghostbusters II,246,21
|
||||||
Gigolo,64,24
|
Gigolo,64,24
|
||||||
Glacier Patrol,64,14
|
Glacier Patrol,64,14
|
||||||
Glib,64,22
|
Glib,64,22
|
||||||
Golf,32,12
|
Golf,32,12
|
||||||
Gopher,64,12
|
Gopher,64,12
|
||||||
Gorf,64,14
|
Gorf,64,14
|
||||||
Grand Prix,246,12
|
Grand Prix,246,12
|
||||||
Gravitar,248,19
|
Gravitar,248,19
|
||||||
Great Escape,64,17
|
Great Escape,64,17
|
||||||
Gremlins,248,20
|
Gremlins,248,20
|
||||||
Guardian,64,17
|
Guardian,64,17
|
||||||
Gyruss,224,16
|
Gyruss,224,16
|
||||||
H.E.R.O.,248,15
|
H.E.R.O.,248,15
|
||||||
Halloween,64,17
|
Halloween,64,17
|
||||||
Hangman,64,17
|
Hangman,64,17
|
||||||
Harbor Escape,64,15
|
Harbor Escape,64,15
|
||||||
Haunted House,64,21
|
Haunted House,64,21
|
||||||
Hole Hunter,64,21
|
Hole Hunter,64,21
|
||||||
Home Run,32,19
|
Home Run,32,19
|
||||||
Human Cannonball,32,16
|
Human Cannonball,32,16
|
||||||
Hunt & Score,32,24
|
Hunt & Score,32,24
|
||||||
I Want My Mommy,64,20
|
I Want My Mommy,64,20
|
||||||
Ice Hockey,64,23
|
Ice Hockey,64,23
|
||||||
Ikari Warriors,246,18
|
Ikari Warriors,246,18
|
||||||
Indy 500,32,23
|
Indy 500,32,23
|
||||||
Infiltrate,64,16
|
Infiltrate,64,16
|
||||||
International Soccer,64,18
|
International Soccer,64,18
|
||||||
IQ 180,64,28
|
IQ 180,64,28
|
||||||
James Bond 007,224,14
|
James Bond 007,224,14
|
||||||
Jaw Breaker,64,23
|
Jaw Breaker,64,23
|
||||||
Journey Escape,64,19
|
Journey Escape,64,19
|
||||||
Joust,248,22
|
Joust,248,22
|
||||||
JoustPong,64,14
|
JoustPong,64,14
|
||||||
Jr. Pac-Man,246,17
|
Jr. Pac-Man,246,17
|
||||||
Jungle Fever,64,20
|
Jungle Fever,64,20
|
||||||
Jungle Hunt,248,20
|
Jungle Hunt,248,20
|
||||||
Kaboom!,32,20
|
Kaboom!,32,20
|
||||||
Kangaroo,248,15
|
Kangaroo,248,15
|
||||||
Karate,64,17
|
Karate,64,17
|
||||||
Keystone Kapers,64,14
|
Keystone Kapers,64,14
|
||||||
King Kong,64,23
|
King Kong,64,23
|
||||||
Klax,246,17
|
Klax,246,17
|
||||||
Knight on the Town,64,13
|
Knight on the Town,64,13
|
||||||
Kool-Aid Man,64,26
|
Kool-Aid Man,64,26
|
||||||
Krull,248,20
|
Krull,248,20
|
||||||
Kung Fu Superkicks,248,14
|
Kung Fu Superkicks,248,14
|
||||||
Kung-Fu Master,248,27
|
Kung-Fu Master,248,27
|
||||||
Lady in Wading,64,23
|
Lady in Wading,64,23
|
||||||
Laser Blast,32,22
|
Laser Blast,32,22
|
||||||
Laser Gates,64,19
|
Laser Gates,64,19
|
||||||
Lilly Advenure,64,19
|
Lilly Advenure,64,19
|
||||||
Lochjaw,64,22
|
Lochjaw,64,22
|
||||||
Lock 'n' Chase,64,15
|
Lock 'n' Chase,64,15
|
||||||
London Blitz,64,22
|
London Blitz,64,22
|
||||||
Lost Luggage,64,20
|
Lost Luggage,64,20
|
||||||
M.A.D.,64,20
|
M.A.D.,64,20
|
||||||
M.A.S.H,64,14
|
M.A.S.H,64,14
|
||||||
MagiCard,192,15
|
MagiCard,192,15
|
||||||
Malagai,64,17
|
Malagai,64,17
|
||||||
Mangia',64,15
|
Mangia',64,15
|
||||||
Marauder,64,15
|
Marauder,64,15
|
||||||
Marine Wars,64,16
|
Marine Wars,64,16
|
||||||
Mario Bros.,248,19
|
Mario Bros.,248,19
|
||||||
Master Builder,64,20
|
Master Builder,64,20
|
||||||
Masters of the Universe,231,22
|
Masters of the Universe,231,22
|
||||||
Math Gran Prix,64,32
|
Math Gran Prix,64,32
|
||||||
Maze Craze,64,22
|
Maze Craze,64,22
|
||||||
Mega Force,64,18
|
Mega Force,64,18
|
||||||
MegaBoy,240,18
|
MegaBoy,240,18
|
||||||
MegaMania,64,16
|
MegaMania,64,16
|
||||||
Midnight Magic,246,17
|
Midnight Magic,246,17
|
||||||
Millipede,246,23
|
Millipede,246,23
|
||||||
Mind Maze,248,18
|
Mind Maze,248,18
|
||||||
Miner 2049er,63,18
|
Miner 2049er,63,18
|
||||||
Miner 2049er Volume II,63,20
|
Miner 2049er Volume II,63,20
|
||||||
Mines of Minos,64,30
|
Mines of Minos,64,30
|
||||||
Miniature Golf,32,22
|
Miniature Golf,32,22
|
||||||
Miss Piggy's Wedding,248,22
|
Miss Piggy's Wedding,248,22
|
||||||
Missile Command,64,29
|
Missile Command,64,29
|
||||||
Missile Control,64,23
|
Missile Control,64,23
|
||||||
Mission 3000 A.D.,64,23
|
Mission 3000 A.D.,64,23
|
||||||
Mission Survive,64,25
|
Mission Survive,64,25
|
||||||
Mogul Maniac,64,23
|
Mogul Maniac,64,23
|
||||||
Montezuma's Revenge,224,20
|
Montezuma's Revenge,224,20
|
||||||
Moon Patrol,248,28
|
Moon Patrol,248,28
|
||||||
Moonsweeper,248,20
|
Moonsweeper,248,20
|
||||||
Motocross,64,20
|
Motocross,64,20
|
||||||
Motocross Racer,248,17
|
Motocross Racer,248,17
|
||||||
MotoRodeo,246,24
|
MotoRodeo,246,24
|
||||||
Mountain King,250,18
|
Mountain King,250,18
|
||||||
Mouse Trap,64,22
|
Mouse Trap,64,22
|
||||||
Mr. Do!,248,18
|
Mr. Do!,248,18
|
||||||
Mr. Do!'s Castle,224,16
|
Mr. Do!'s Castle,224,16
|
||||||
Mr. Postman,64,25
|
Mr. Postman,64,25
|
||||||
Ms. Pac-Man,248,19
|
Ms. Pac-Man,248,19
|
||||||
Music Machine,64,20
|
Music Machine,64,20
|
||||||
My Golf,248,21
|
My Golf,248,21
|
||||||
Name This Game,64,16
|
Name This Game,64,16
|
||||||
Night Driver,32,22
|
Night Driver,32,22
|
||||||
Night Stalker,64,20
|
Night Stalker,64,20
|
||||||
Nightmare,64,21
|
Nightmare,64,21
|
||||||
No Escape!,64,17
|
No Escape!,64,17
|
||||||
Nuts,64,18
|
Nuts,64,18
|
||||||
Obelix,248,12
|
Obelix,248,12
|
||||||
Off the Wall,246,15
|
Off the Wall,246,15
|
||||||
Oink!,64,21
|
Oink!,64,21
|
||||||
Omega Race,250,13
|
Omega Race,250,13
|
||||||
Open Sesame,64,19
|
Open Sesame,64,19
|
||||||
Oscar's Trash Race,248,19
|
Oscar's Trash Race,248,19
|
||||||
Othello,32,27
|
Othello,32,27
|
||||||
Out of Control,64,15
|
Out of Control,64,15
|
||||||
Outlaw,32,22
|
Outlaw,32,22
|
||||||
Pac-Kong,64,14
|
Pac-Kong,64,14
|
||||||
Pac-Man,64,16
|
Pac-Man,64,16
|
||||||
Panda Chase,64,15
|
Panda Chase,64,15
|
||||||
Parachute,64,19
|
Parachute,64,19
|
||||||
Pele's Soccer,64,17
|
Pele's Soccer,64,17
|
||||||
Pengo,248,21
|
Pengo,248,21
|
||||||
Pepsi Invaders,64,14
|
Pepsi Invaders,64,14
|
||||||
Pete Rose Baseball,246,22
|
Pete Rose Baseball,246,22
|
||||||
Phantom Tank,64,27
|
Phantom Tank,64,27
|
||||||
Pharaoh's Curse,64,20
|
Pharaoh's Curse,64,20
|
||||||
Philly Flasher,64,23
|
Philly Flasher,64,23
|
||||||
Phoenix,248,22
|
Phoenix,248,22
|
||||||
Pick 'n' Pile,246,16
|
Pick 'n' Pile,246,16
|
||||||
Picnic,64,22
|
Picnic,64,22
|
||||||
Piece o' Cake,64,14
|
Piece o' Cake,64,14
|
||||||
Pigs in Space,248,21
|
Pigs in Space,248,21
|
||||||
Pitfall II,208,22
|
Pitfall II,208,22
|
||||||
Pitfall!,64,19
|
Pitfall!,64,19
|
||||||
Planet Patrol,64,16
|
Planet Patrol,64,16
|
||||||
Plaque Attack,64,21
|
Plaque Attack,64,21
|
||||||
Polaris,63,21
|
Polaris,63,21
|
||||||
Pole Position,248,15
|
Pole Position,248,15
|
||||||
Polo,32,22
|
Polo,32,22
|
||||||
Pompeii,64,12
|
Pompeii,64,12
|
||||||
Pooyan,64,15
|
Pooyan,64,15
|
||||||
Popeye,224,14
|
Popeye,224,14
|
||||||
Porky's,248,15
|
Porky's,248,15
|
||||||
Pressure Cooker,248,16
|
Pressure Cooker,248,16
|
||||||
Private Eye,248,24
|
Private Eye,248,24
|
||||||
Pyramid War,64,20
|
Pyramid War,64,20
|
||||||
Q-bert,64,19
|
Q-bert,64,19
|
||||||
Q-bert's Qubes,224,14
|
Q-bert's Qubes,224,14
|
||||||
Quadrun,248,23
|
Quadrun,248,23
|
||||||
Quest for Quintana Roo,248,16
|
Quest for Quintana Roo,248,16
|
||||||
Quick Step!,64,31
|
Quick Step!,64,31
|
||||||
Rabbit Transit,248,19
|
Rabbit Transit,248,19
|
||||||
Racing Car,64,23
|
Racing Car,64,23
|
||||||
Racquetball,64,18
|
Racquetball,64,18
|
||||||
Radar Lock,246,19
|
Radar Lock,246,19
|
||||||
Raft Rider,64,19
|
Raft Rider,64,19
|
||||||
Raiders of the Lost Ark,248,18
|
Raiders of the Lost Ark,248,18
|
||||||
Ram It,64,32
|
Ram It,64,32
|
||||||
Rampage!,246,14
|
Rampage!,246,14
|
||||||
Raumpatrouille,64,17
|
Raumpatrouille,64,17
|
||||||
Reactor,64,22
|
Reactor,64,22
|
||||||
RealSports Baseball,248,15
|
RealSports Baseball,248,15
|
||||||
RealSports Boxing,246,28
|
RealSports Boxing,246,28
|
||||||
RealSports Football,248,26
|
RealSports Football,248,26
|
||||||
RealSports Soccer,248,28
|
RealSports Soccer,248,28
|
||||||
RealSports Tennis,248,26
|
RealSports Tennis,248,26
|
||||||
RealSports Volleyball,64,26
|
RealSports Volleyball,64,26
|
||||||
Rescue Terra I,64,29
|
Rescue Terra I,64,29
|
||||||
Resgate Espacial,248,22
|
Resgate Espacial,248,22
|
||||||
Revenge of the Beefsteak Tomatoes,64,25
|
Revenge of the Beefsteak Tomatoes,64,25
|
||||||
Riddle of the Sphinx,64,41
|
Riddle of the Sphinx,64,41
|
||||||
River Patrol,63,28
|
River Patrol,63,28
|
||||||
River Raid,64,20
|
River Raid,64,20
|
||||||
River Raid II,246,18
|
River Raid II,246,18
|
||||||
Road Runner,246,22
|
Road Runner,246,22
|
||||||
Robin Hood,248,20
|
Robin Hood,248,20
|
||||||
Robot Tank,254,19
|
Robot Tank,254,19
|
||||||
Roc 'n Rope,248,19
|
Roc 'n Rope,248,19
|
||||||
Room of Doom,64,20
|
Room of Doom,64,20
|
||||||
Rubik's Cube,64,20
|
Rubik's Cube,64,20
|
||||||
Save Our Ship,64,20
|
Save Our Ship,64,20
|
||||||
Scuba Diver,64,21
|
Scuba Diver,64,21
|
||||||
Sea Hawk,64,19
|
Sea Hawk,64,19
|
||||||
Sea Hunt,64,16
|
Sea Hunt,64,16
|
||||||
Sea Monster,64,16
|
Sea Monster,64,16
|
||||||
Seaquest,64,19
|
Seaquest,64,19
|
||||||
Secret Quest,246,16
|
Secret Quest,246,16
|
||||||
Sentinel,246,21
|
Sentinel,246,21
|
||||||
Shark Attack,64,17
|
Shark Attack,64,17
|
||||||
Shootin' Gallery,64,20
|
Shootin' Gallery,64,20
|
||||||
Shuttle Orbiter,64,24
|
Shuttle Orbiter,64,24
|
||||||
Sir Lancelot,248,23
|
Sir Lancelot,248,23
|
||||||
Skate Boardin',248,21
|
Skate Boardin',248,21
|
||||||
Skeet Shoot,32,23
|
Skeet Shoot,32,23
|
||||||
Ski Hunt,64,19
|
Ski Hunt,64,19
|
||||||
Ski Run,64,16
|
Ski Run,64,16
|
||||||
Skiing,32,15
|
Skiing,32,15
|
||||||
Sky Diver,32,14
|
Sky Diver,32,14
|
||||||
Sky Jinks,32,17
|
Sky Jinks,32,17
|
||||||
Sky Skipper,64,17
|
Sky Skipper,64,17
|
||||||
Slot Machine,32,19
|
Slot Machine,32,19
|
||||||
Slot Racers,32,20
|
Slot Racers,32,20
|
||||||
Smurf Rescue in Gargamels Castle,248,19
|
Smurf Rescue in Gargamels Castle,248,19
|
||||||
Smurfs Save the Day,248,41
|
Smurfs Save the Day,248,41
|
||||||
Sneak 'n Peek,64,28
|
Sneak 'n Peek,64,28
|
||||||
Snoopy and the Red Baron,248,21
|
Snoopy and the Red Baron,248,21
|
||||||
Solar Fox,248,33
|
Solar Fox,248,33
|
||||||
Solar Storm,64,18
|
Solar Storm,64,18
|
||||||
Solaris,246,19
|
Solaris,246,19
|
||||||
Sorcerer,64,16
|
Sorcerer,64,16
|
||||||
Sorcerer's Apprentice,248,16
|
Sorcerer's Apprentice,248,16
|
||||||
Space Attack,64,30
|
Space Attack,64,30
|
||||||
Space Canyon,64,20
|
Space Canyon,64,20
|
||||||
Space Cavern,64,20
|
Space Cavern,64,20
|
||||||
Space Invaders,64,20
|
Space Invaders,64,20
|
||||||
Space Jockey,32,22
|
Space Jockey,32,22
|
||||||
Space Shuttle,248,20
|
Space Shuttle,248,20
|
||||||
Space Tunnel,64,22
|
Space Tunnel,64,22
|
||||||
Space War,32,20
|
Space War,32,20
|
||||||
Spacechase,64,17
|
Spacechase,64,17
|
||||||
SpaceMaster X-7,64,18
|
SpaceMaster X-7,64,18
|
||||||
Spider Fighter,64,23
|
Spider Fighter,64,23
|
||||||
Spider Maze,64,22
|
Spider Maze,64,22
|
||||||
Spider-Man,64,19
|
Spider-Man,64,19
|
||||||
Spike's Peak,248,18
|
Spike's Peak,248,18
|
||||||
Spitfire Attack,64,21
|
Spitfire Attack,64,21
|
||||||
Springer,63,23
|
Springer,63,23
|
||||||
Sprint Master,246,16
|
Sprint Master,246,16
|
||||||
Spy Hunter,248,22
|
Spy Hunter,248,22
|
||||||
Squeeze Box,64,19
|
Squeeze Box,64,19
|
||||||
Squirrel,64,19
|
Squirrel,64,19
|
||||||
Sssnake,64,16
|
Sssnake,64,16
|
||||||
Stampede,32,15
|
Stampede,32,15
|
||||||
Star Fox,64,16
|
Star Fox,64,16
|
||||||
Star Raiders,248,16
|
Star Raiders,248,16
|
||||||
Star Ship,32,21
|
Star Ship,32,21
|
||||||
Star Strike,64,17
|
Star Strike,64,17
|
||||||
Star Trek,248,19
|
Star Trek,248,19
|
||||||
Star Voyager,64,18
|
Star Voyager,64,18
|
||||||
Star Wars - Arcade Game,224,20
|
Star Wars - Arcade Game,224,20
|
||||||
Star Wars - Death Star Battle,224,32
|
Star Wars - Death Star Battle,224,32
|
||||||
Star Wars - Empire Strikes Back,64,38
|
Star Wars - Empire Strikes Back,64,38
|
||||||
Star Wars - Jedi Arena,64,39
|
Star Wars - Jedi Arena,64,39
|
||||||
Stargate,246,30
|
Stargate,246,30
|
||||||
Stargunner,64,17
|
Stargunner,64,17
|
||||||
StarMaster,64,18
|
StarMaster,64,18
|
||||||
Steeplechase,32,18
|
Steeplechase,32,18
|
||||||
Stellar Track,64,20
|
Stellar Track,64,20
|
||||||
Strategy X,64,21
|
Strategy X,64,21
|
||||||
Strawberry Shortcake,64,18
|
Strawberry Shortcake,64,18
|
||||||
Street Racer,32,28
|
Street Racer,32,28
|
||||||
Stronghold,64,20
|
Stronghold,64,20
|
||||||
Stunt Man,64,18
|
Stunt Man,64,18
|
||||||
Submarine Commander,64,17
|
Submarine Commander,64,17
|
||||||
Sub-Scan,64,27
|
Sub-Scan,64,27
|
||||||
Subterranea,248,16
|
Subterranea,248,16
|
||||||
Summer Games,246,20
|
Summer Games,246,20
|
||||||
Super Baseball,246,21
|
Super Baseball,246,21
|
||||||
Super Breakout,64,23
|
Super Breakout,64,23
|
||||||
Super Challenge Baseball,64,22
|
Super Challenge Baseball,64,22
|
||||||
Super Challenge Football,64,32
|
Super Challenge Football,64,32
|
||||||
Super Cobra,224,32
|
Super Cobra,224,32
|
||||||
Super Football,248,20
|
Super Football,248,20
|
||||||
Superman,64,23
|
Superman,64,23
|
||||||
Surfer's Paradise,64,16
|
Surfer's Paradise,64,16
|
||||||
Surround,32,25
|
Surround,32,25
|
||||||
Survival Run,64,16
|
Survival Run,64,16
|
||||||
SwordQuest - EarthWorld,248,20
|
SwordQuest - EarthWorld,248,20
|
||||||
SwordQuest - FireWorld,248,32
|
SwordQuest - FireWorld,248,32
|
||||||
SwordQuest - WaterWorld,248,31
|
SwordQuest - WaterWorld,248,31
|
||||||
Tac-Scan,64,32
|
Tac-Scan,64,32
|
||||||
Tanks But No Tanks,64,16
|
Tanks But No Tanks,64,16
|
||||||
Tapeworm,64,26
|
Tapeworm,64,26
|
||||||
Tapper,248,16
|
Tapper,248,16
|
||||||
Tax Avoiders,248,15
|
Tax Avoiders,248,15
|
||||||
Taz,248,21
|
Taz,248,21
|
||||||
Tempest,248,12
|
Tempest,248,12
|
||||||
Tennis,32,16
|
Tennis,32,16
|
||||||
Texas Chainsaw Massacre,64,14
|
Texas Chainsaw Massacre,64,14
|
||||||
Threshold,64,31
|
Threshold,64,31
|
||||||
Thunderground,64,17
|
Thunderground,64,17
|
||||||
Time Pilot,249,21
|
Time Pilot,249,21
|
||||||
Time Warp,64,19
|
Time Warp,64,19
|
||||||
Title Match Pro Wrestling,248,17
|
Title Match Pro Wrestling,248,17
|
||||||
Tomarc the Barbarian,248,34
|
Tomarc the Barbarian,248,34
|
||||||
Tomcat,246,29
|
Tomcat,246,29
|
||||||
Tooth Protectors,224,15
|
Tooth Protectors,224,15
|
||||||
Towering Inferno,64,25
|
Towering Inferno,64,25
|
||||||
Track and Field,246,24
|
Track and Field,246,24
|
||||||
Treasure Below,64,24
|
Treasure Below,64,24
|
||||||
Treasure Island,64,22
|
Treasure Island,64,22
|
||||||
Trick Shot,64,23
|
Trick Shot,64,23
|
||||||
TRON - Deadly Discs,64,18
|
TRON - Deadly Discs,64,18
|
||||||
Tunnel Runner,250,27
|
Tunnel Runner,250,27
|
||||||
Turmoil,64,22
|
Turmoil,64,22
|
||||||
Tutankham,224,15
|
Tutankham,224,15
|
||||||
Universal Chaos,64,18
|
Universal Chaos,64,18
|
||||||
Up 'n Down,248,23
|
Up 'n Down,248,23
|
||||||
Vanguard,248,19
|
Vanguard,248,19
|
||||||
Venture,64,17
|
Venture,64,17
|
||||||
Video Checkers,64,15
|
Video Checkers,64,15
|
||||||
Video Chess,64,22
|
Video Chess,64,22
|
||||||
Video Jogger,64,19
|
Video Jogger,64,19
|
||||||
Video Life,32,20
|
Video Life,32,20
|
||||||
Video Olympics,32,18
|
Video Olympics,32,18
|
||||||
Video Pinball,64,22
|
Video Pinball,64,22
|
||||||
Video Reflex,64,21
|
Video Reflex,64,21
|
||||||
Vogel Flieh,64,20
|
Vogel Flieh,64,20
|
||||||
Vulture Attack,64,19
|
Vulture Attack,64,19
|
||||||
Wabbit,64,22
|
Wabbit,64,22
|
||||||
Walker,64,14
|
Walker,64,14
|
||||||
Wall Ball,64,14
|
Wall Ball,64,14
|
||||||
Wall Break,64,17
|
Wall Break,64,17
|
||||||
Wall-Defender,64,18
|
Wall-Defender,64,18
|
||||||
Warlords,64,21
|
Warlords,64,21
|
||||||
Warplock,64,16
|
Warplock,64,16
|
||||||
Wing War,248,16
|
Wing War,248,16
|
||||||
Wings,250,17
|
Wings,250,17
|
||||||
Winter Games,246,14
|
Winter Games,246,14
|
||||||
Wizard of Wor,64,21
|
Wizard of Wor,64,21
|
||||||
Word Zapper,64,21
|
Word Zapper,64,21
|
||||||
World End,64,19
|
World End,64,19
|
||||||
Worm War I,64,17
|
Worm War I,64,17
|
||||||
Xenophobe,246,18
|
Xenophobe,246,18
|
||||||
X-Man,64,18
|
X-Man,64,18
|
||||||
Yars' Revenge,64,13
|
Yars' Revenge,64,13
|
||||||
Zaxxon,248,21
|
Zaxxon,248,21
|
||||||
Zoo Fun,64,15
|
Zoo Fun,64,15
|
||||||
Z-Tack,64,15
|
Z-Tack,64,15
|
||||||
EOF,0,0
|
EOF,0,0
|
||||||
|
274
sd/c64cart.txt
Normal file
274
sd/c64cart.txt
Normal 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
|
1170
sd/colv.txt
1170
sd/colv.txt
File diff suppressed because it is too large
Load Diff
20142
sd/gba.txt
20142
sd/gba.txt
File diff suppressed because it is too large
Load Diff
1158
sd/intv.txt
1158
sd/intv.txt
File diff suppressed because it is too large
Load Diff
1452
sd/msxcart.txt
1452
sd/msxcart.txt
File diff suppressed because it is too large
Load Diff
6156
sd/n64.txt
6156
sd/n64.txt
File diff suppressed because it is too large
Load Diff
18672
sd/nes.txt
18672
sd/nes.txt
File diff suppressed because it is too large
Load Diff
2742
sd/pce.txt
2742
sd/pce.txt
File diff suppressed because it is too large
Load Diff
312
sd/pcw.txt
312
sd/pcw.txt
@ -1,156 +1,156 @@
|
|||||||
Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB211NH).pcw
|
Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB211NH).pcw
|
||||||
505F954E
|
505F954E
|
||||||
|
|
||||||
Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB212SS).pcw
|
Shinkenzemi 'Chuugaku Kouza' - Chuu 2 Eigo (Japan) (5BB212SS).pcw
|
||||||
FF3E9B62
|
FF3E9B62
|
||||||
|
|
||||||
Shinkenzemi 'Chuugaku Kouza' - Chuugaku Chiri (Japan) (6BD410).pcw
|
Shinkenzemi 'Chuugaku Kouza' - Chuugaku Chiri (Japan) (6BD410).pcw
|
||||||
AD5136AE
|
AD5136AE
|
||||||
|
|
||||||
Shinkenzemi 'Chuugaku Kouza' - Chuugaku Rekishi (Japan) (5BC410).pcw
|
Shinkenzemi 'Chuugaku Kouza' - Chuugaku Rekishi (Japan) (5BC410).pcw
|
||||||
7865BE62
|
7865BE62
|
||||||
|
|
||||||
Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Ei - Sha - Ri) (Japan) (6BI711).pcw
|
Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Ei - Sha - Ri) (Japan) (6BI711).pcw
|
||||||
B9831924
|
B9831924
|
||||||
|
|
||||||
Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Koku - Suu) (Japan) (6BI712).pcw
|
Shinkenzemi 'Chuugaku Kouza' - Koukou Juken (Koku - Suu) (Japan) (6BI712).pcw
|
||||||
81F4FA3E
|
81F4FA3E
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB111NH).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB111NH).pcw
|
||||||
D7FD8C5D
|
D7FD8C5D
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB113NC).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (0BB113NC).pcw
|
||||||
5711252F
|
5711252F
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB111NH).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB111NH).pcw
|
||||||
BE0CFA07
|
BE0CFA07
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB112SS).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 1 Eigo (Japan) (7BB112SS).pcw
|
||||||
FEACC308
|
FEACC308
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 1 Suugaku (Japan) (1BM111).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 1 Suugaku (Japan) (1BM111).pcw
|
||||||
5DB9B999
|
5DB9B999
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB211NH).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB211NH).pcw
|
||||||
5138519C
|
5138519C
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB212SS).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB212SS).pcw
|
||||||
31E9E8CC
|
31E9E8CC
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB213NC).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB213NC).pcw
|
||||||
9C279B5A
|
9C279B5A
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB214TE).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 2 Eigo (Japan) (7BB214TE).pcw
|
||||||
3C08E0DA
|
3C08E0DA
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB311NH).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB311NH).pcw
|
||||||
A18685A5
|
A18685A5
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB312SS).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB312SS).pcw
|
||||||
C4676FC9
|
C4676FC9
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB313NC).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB313NC).pcw
|
||||||
DDE96468
|
DDE96468
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB315OW).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB315OW).pcw
|
||||||
AE06430D
|
AE06430D
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB317CB).pcw
|
Shinkenzemi Chuugaku Kouza - Chuu 3 Eigo (Japan) (7BB317CB).pcw
|
||||||
149501FB
|
149501FB
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (7BD410).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (7BD410).pcw
|
||||||
8DE1ED5A
|
8DE1ED5A
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (9BD410).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri (Japan) (9BD410).pcw
|
||||||
A1B3C2C9
|
A1B3C2C9
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Chiri Soft - Rekishi Soft Kanzen Taiou Ban) (Japan) (8BD400).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Chiri Soft - Rekishi Soft Kanzen Taiou Ban) (Japan) (8BD400).pcw
|
||||||
77D1D534
|
77D1D534
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD400).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD400).pcw
|
||||||
21895AF8
|
21895AF8
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD401).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Chiri - Rekishi Pack (Japan) (0BD401).pcw
|
||||||
660E84A5
|
660E84A5
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Kokugo - Hyakunin Isshu (Japan) (1BK401).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Kokugo - Hyakunin Isshu (Japan) (1BK401).pcw
|
||||||
B0444C88
|
B0444C88
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (0BE311).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (0BE311).pcw
|
||||||
BF9DA3EA
|
BF9DA3EA
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (7BE310).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Koumin (Japan) (7BE310).pcw
|
||||||
EFEF730E
|
EFEF730E
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rekishi (Japan) (7BC410).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rekishi (Japan) (7BC410).pcw
|
||||||
2EB6506E
|
2EB6506E
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (7BF411).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (7BF411).pcw
|
||||||
BDC7847D
|
BDC7847D
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (Rev 1) (7BF411).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (1-bunya) (Japan) (Rev 1) (7BF411).pcw
|
||||||
0C80EC13
|
0C80EC13
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (7BF412).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (7BF412).pcw
|
||||||
A6E409E8
|
A6E409E8
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (Rev 1) (7BF412).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika (2-bunya) (Japan) (Rev 1) (7BF412).pcw
|
||||||
336289BC
|
336289BC
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (1-bunya - Soft 2-bunya Soft Kanzen Taiou Ban) (Japan) (8BF400).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (1-bunya - Soft 2-bunya Soft Kanzen Taiou Ban) (Japan) (8BF400).pcw
|
||||||
E1D5C9E0
|
E1D5C9E0
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (0BF400).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (0BF400).pcw
|
||||||
341E732B
|
341E732B
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (1BF400).pcw
|
Shinkenzemi Chuugaku Kouza - Chuugaku Rika Pack (Japan) (1BF400).pcw
|
||||||
6205144B
|
6205144B
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (8BCD01).pcw
|
Shinkenzemi Chuugaku Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (8BCD01).pcw
|
||||||
38384AD4
|
38384AD4
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Jitsugi 4-kyouka (Gijutsu Katei, Hoken Taiiku, Ongaku, Bijutsu) (Japan) (9BG410).pcw
|
Shinkenzemi Chuugaku Kouza - Jitsugi 4-kyouka (Gijutsu Katei, Hoken Taiiku, Ongaku, Bijutsu) (Japan) (9BG410).pcw
|
||||||
E34787BB
|
E34787BB
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (0BI711).pcw
|
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (0BI711).pcw
|
||||||
7F23D0D6
|
7F23D0D6
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (1BI711).pcw
|
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (1BI711).pcw
|
||||||
CADEA841
|
CADEA841
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (9BI711).pcw
|
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (9BI711).pcw
|
||||||
61F2A31B
|
61F2A31B
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (7BI711).pcw
|
Shinkenzemi Chuugaku Kouza - Koukou Juken (Ei - Sha - Ri) (Japan) (7BI711).pcw
|
||||||
53C2FF43
|
53C2FF43
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (7BI712).pcw
|
Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (7BI712).pcw
|
||||||
410BAC94
|
410BAC94
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (9BI712).pcw
|
Shinkenzemi Chuugaku Kouza - Koukou Juken (Koku - Suu) (Japan) (9BI712).pcw
|
||||||
0FCDC311
|
0FCDC311
|
||||||
|
|
||||||
Shinkenzemi Chuugaku Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (8BCD02).pcw
|
Shinkenzemi Chuugaku Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (8BCD02).pcw
|
||||||
68BC5E95
|
68BC5E95
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eijukugo (Japan) (7BBD02).pcw
|
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eijukugo (Japan) (7BBD02).pcw
|
||||||
C3DB01F2
|
C3DB01F2
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eitango (Japan) (7BBD01).pcw
|
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Hinshutsu Eitango (Japan) (7BBD01).pcw
|
||||||
2BAD015C
|
2BAD015C
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Juuyou Eigo Koubun (Japan) (7BBD03).pcw
|
Shinkenzemi Koukou Kouza - Daigaku Juken Series - Juuyou Eigo Koubun (Japan) (7BBD03).pcw
|
||||||
9C9C0426
|
9C9C0426
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (9BCD02).pcw
|
Shinkenzemi Koukou Kouza - Hinshutsu Nihonshi Kouryaku (Japan) (9BCD02).pcw
|
||||||
7911AEC2
|
7911AEC2
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (9BCD01).pcw
|
Shinkenzemi Koukou Kouza - Hinshutsu Sekaishi Kouryaku (Japan) (9BCD01).pcw
|
||||||
9E274AC9
|
9E274AC9
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (0BKD01).pcw
|
Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (0BKD01).pcw
|
||||||
C6157409
|
C6157409
|
||||||
|
|
||||||
Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (8BKD01).pcw
|
Shinkenzemi Koukou Kouza - Juuyou Kobun Kouryaku (Japan) (8BKD01).pcw
|
||||||
F5DF48F5
|
F5DF48F5
|
||||||
|
|
||||||
|
118
sd/pkmn.txt
118
sd/pkmn.txt
@ -1,59 +1,59 @@
|
|||||||
Pichu Bros. Mini (Japan).min
|
Pichu Bros. Mini (Japan).min
|
||||||
00D8C968
|
00D8C968
|
||||||
|
|
||||||
Pokemon Anime Card Daisakusen (Japan).min
|
Pokemon Anime Card Daisakusen (Japan).min
|
||||||
199D7AB1
|
199D7AB1
|
||||||
|
|
||||||
Pokemon Party Mini (Europe).min
|
Pokemon Party Mini (Europe).min
|
||||||
54ACB670
|
54ACB670
|
||||||
|
|
||||||
Pokemon Party Mini (Japan).min
|
Pokemon Party Mini (Japan).min
|
||||||
AE2DDE60
|
AE2DDE60
|
||||||
|
|
||||||
Pokemon Party Mini (USA).min
|
Pokemon Party Mini (USA).min
|
||||||
938D3819
|
938D3819
|
||||||
|
|
||||||
Pokemon Pinball Mini (Japan).min
|
Pokemon Pinball Mini (Japan).min
|
||||||
398D47DE
|
398D47DE
|
||||||
|
|
||||||
Pokemon Pinball Mini (USA, Europe).min
|
Pokemon Pinball Mini (USA, Europe).min
|
||||||
A0091534
|
A0091534
|
||||||
|
|
||||||
Pokemon Puzzle Collection (France).min
|
Pokemon Puzzle Collection (France).min
|
||||||
3004C354
|
3004C354
|
||||||
|
|
||||||
Pokemon Puzzle Collection (Germany).min
|
Pokemon Puzzle Collection (Germany).min
|
||||||
22101046
|
22101046
|
||||||
|
|
||||||
Pokemon Puzzle Collection (Japan).min
|
Pokemon Puzzle Collection (Japan).min
|
||||||
95AFAE59
|
95AFAE59
|
||||||
|
|
||||||
Pokemon Puzzle Collection (USA, Europe).min
|
Pokemon Puzzle Collection (USA, Europe).min
|
||||||
2B348340
|
2B348340
|
||||||
|
|
||||||
Pokemon Puzzle Collection Vol. 2 (Japan).min
|
Pokemon Puzzle Collection Vol. 2 (Japan).min
|
||||||
76A1BBF8
|
76A1BBF8
|
||||||
|
|
||||||
Pokemon Race Mini (Japan).min
|
Pokemon Race Mini (Japan).min
|
||||||
F8C842B5
|
F8C842B5
|
||||||
|
|
||||||
Pokemon Shock Tetris (Japan).min
|
Pokemon Shock Tetris (Japan).min
|
||||||
B4B5CC20
|
B4B5CC20
|
||||||
|
|
||||||
Pokemon Sodateyasan Mini (Japan).min
|
Pokemon Sodateyasan Mini (Japan).min
|
||||||
D55FC4C8
|
D55FC4C8
|
||||||
|
|
||||||
Pokemon Tetris (Europe) (En,Ja,Fr).min
|
Pokemon Tetris (Europe) (En,Ja,Fr).min
|
||||||
2FB23527
|
2FB23527
|
||||||
|
|
||||||
Pokemon Zany Cards (France).min
|
Pokemon Zany Cards (France).min
|
||||||
830DA957
|
830DA957
|
||||||
|
|
||||||
Pokemon Zany Cards (Germany).min
|
Pokemon Zany Cards (Germany).min
|
||||||
C009D501
|
C009D501
|
||||||
|
|
||||||
Pokemon Zany Cards (USA, Europe).min
|
Pokemon Zany Cards (USA, Europe).min
|
||||||
8A2FC063
|
8A2FC063
|
||||||
|
|
||||||
Togepi no Daibouken (Japan).min
|
Togepi no Daibouken (Japan).min
|
||||||
33B3492B
|
33B3492B
|
||||||
|
1476
sd/sg1000.txt
1476
sd/sg1000.txt
File diff suppressed because it is too large
Load Diff
4050
sd/sms.txt
4050
sd/sms.txt
File diff suppressed because it is too large
Load Diff
23428
sd/snes.txt
23428
sd/snes.txt
File diff suppressed because it is too large
Load Diff
198
sd/vb.txt
198
sd/vb.txt
@ -1,99 +1,99 @@
|
|||||||
3-D Tetris (USA).vb
|
3-D Tetris (USA).vb
|
||||||
BB71B522
|
BB71B522
|
||||||
|
|
||||||
Bound High (Japan) (En) (Proto).vb
|
Bound High (Japan) (En) (Proto).vb
|
||||||
E81A3703
|
E81A3703
|
||||||
|
|
||||||
Galactic Pinball (Japan, USA) (En).vb
|
Galactic Pinball (Japan, USA) (En).vb
|
||||||
C9710A36
|
C9710A36
|
||||||
|
|
||||||
Golf (USA).vb
|
Golf (USA).vb
|
||||||
2199AF41
|
2199AF41
|
||||||
|
|
||||||
Hyper Fighting (World) (Aftermarket) (Pirate).vb
|
Hyper Fighting (World) (Aftermarket) (Pirate).vb
|
||||||
3F2A6BA2
|
3F2A6BA2
|
||||||
|
|
||||||
Hyper Fighting (World) (Beta) (Aftermarket) (Pirate).vb
|
Hyper Fighting (World) (Beta) (Aftermarket) (Pirate).vb
|
||||||
4450EDE0
|
4450EDE0
|
||||||
|
|
||||||
Innsmouth no Yakata (Japan).vb
|
Innsmouth no Yakata (Japan).vb
|
||||||
83CB6A00
|
83CB6A00
|
||||||
|
|
||||||
Jack Bros. (USA).vb
|
Jack Bros. (USA).vb
|
||||||
A44DE03C
|
A44DE03C
|
||||||
|
|
||||||
Jack Bros. no Meiro de Hiihoo! (Japan).vb
|
Jack Bros. no Meiro de Hiihoo! (Japan).vb
|
||||||
CAB61E8B
|
CAB61E8B
|
||||||
|
|
||||||
Mario Clash (Japan, USA) (En).vb
|
Mario Clash (Japan, USA) (En).vb
|
||||||
A47DE78C
|
A47DE78C
|
||||||
|
|
||||||
Mario's Tennis (Japan, USA) (En).vb
|
Mario's Tennis (Japan, USA) (En).vb
|
||||||
7CE7460D
|
7CE7460D
|
||||||
|
|
||||||
Nester's Funky Bowling (USA).vb
|
Nester's Funky Bowling (USA).vb
|
||||||
DF4D56B4
|
DF4D56B4
|
||||||
|
|
||||||
Niko-chan Battle (Japan) (Proto).vb
|
Niko-chan Battle (Japan) (Proto).vb
|
||||||
F3CD40DD
|
F3CD40DD
|
||||||
|
|
||||||
Panic Bomber (USA).vb
|
Panic Bomber (USA).vb
|
||||||
19BB2DFB
|
19BB2DFB
|
||||||
|
|
||||||
Red Alarm (Japan).vb
|
Red Alarm (Japan).vb
|
||||||
7E85C45D
|
7E85C45D
|
||||||
|
|
||||||
Red Alarm (USA).vb
|
Red Alarm (USA).vb
|
||||||
AA10A7B4
|
AA10A7B4
|
||||||
|
|
||||||
SD Gundam - Dimension War (Japan).vb
|
SD Gundam - Dimension War (Japan).vb
|
||||||
44788197
|
44788197
|
||||||
|
|
||||||
Space Invaders - Virtual Collection (Japan).vb
|
Space Invaders - Virtual Collection (Japan).vb
|
||||||
FA44402D
|
FA44402D
|
||||||
|
|
||||||
Space Pinball (Japan) (En) (Proto).vb
|
Space Pinball (Japan) (En) (Proto).vb
|
||||||
44C2B723
|
44C2B723
|
||||||
|
|
||||||
Space Squash (Japan).vb
|
Space Squash (Japan).vb
|
||||||
60895693
|
60895693
|
||||||
|
|
||||||
T&E Virtual Golf (Japan).vb
|
T&E Virtual Golf (Japan).vb
|
||||||
6BA07915
|
6BA07915
|
||||||
|
|
||||||
Teleroboxer (Japan, USA) (En).vb
|
Teleroboxer (Japan, USA) (En).vb
|
||||||
36103000
|
36103000
|
||||||
|
|
||||||
Tobidase! Panibon (Japan).vb
|
Tobidase! Panibon (Japan).vb
|
||||||
40498F5E
|
40498F5E
|
||||||
|
|
||||||
V-Tetris (Japan).vb
|
V-Tetris (Japan).vb
|
||||||
3CCB67AE
|
3CCB67AE
|
||||||
|
|
||||||
Vertical Force (Japan).vb
|
Vertical Force (Japan).vb
|
||||||
9E9B8B92
|
9E9B8B92
|
||||||
|
|
||||||
Vertical Force (USA).vb
|
Vertical Force (USA).vb
|
||||||
4C32BA5E
|
4C32BA5E
|
||||||
|
|
||||||
Virtual Bowling (Japan).vb
|
Virtual Bowling (Japan).vb
|
||||||
20688279
|
20688279
|
||||||
|
|
||||||
Virtual Boy Wario Land (Japan, USA) (En).vb
|
Virtual Boy Wario Land (Japan, USA) (En).vb
|
||||||
133E9372
|
133E9372
|
||||||
|
|
||||||
Virtual Fishing (Japan).vb
|
Virtual Fishing (Japan).vb
|
||||||
526CC969
|
526CC969
|
||||||
|
|
||||||
Virtual Lab (Japan).vb
|
Virtual Lab (Japan).vb
|
||||||
8989FE0A
|
8989FE0A
|
||||||
|
|
||||||
Virtual League Baseball (USA).vb
|
Virtual League Baseball (USA).vb
|
||||||
736B40D6
|
736B40D6
|
||||||
|
|
||||||
Virtual Pro Yakyuu '95 (Japan).vb
|
Virtual Pro Yakyuu '95 (Japan).vb
|
||||||
9BA8BB5E
|
9BA8BB5E
|
||||||
|
|
||||||
Waterworld (USA).vb
|
Waterworld (USA).vb
|
||||||
82A95E51
|
82A95E51
|
||||||
|
|
||||||
|
32
sd/vectrexcart.txt
Normal file
32
sd/vectrexcart.txt
Normal 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
|
420
sd/wsv.txt
420
sd/wsv.txt
@ -1,210 +1,210 @@
|
|||||||
2 in 1 - Block Buster + Cross High (USA, Europe).sv
|
2 in 1 - Block Buster + Cross High (USA, Europe).sv
|
||||||
7E05D84F,057195A3,64
|
7E05D84F,057195A3,64
|
||||||
|
|
||||||
2 in 1 - Hash Blocks + Eagle Plan (USA, Europe).sv
|
2 in 1 - Hash Blocks + Eagle Plan (USA, Europe).sv
|
||||||
C1354952,21795D9D,64
|
C1354952,21795D9D,64
|
||||||
|
|
||||||
Alien (USA, Europe).sv
|
Alien (USA, Europe).sv
|
||||||
8DBB2C53,B587490C,64
|
8DBB2C53,B587490C,64
|
||||||
|
|
||||||
Assembloids (World) (Aftermarket) (Unl).sv
|
Assembloids (World) (Aftermarket) (Unl).sv
|
||||||
85A0E7C8,059EB9DC,64
|
85A0E7C8,059EB9DC,64
|
||||||
|
|
||||||
Balloon Fight (USA, Europe).sv
|
Balloon Fight (USA, Europe).sv
|
||||||
8188B755,F59A28E2,64
|
8188B755,F59A28E2,64
|
||||||
|
|
||||||
Block Buster (USA, Europe).sv
|
Block Buster (USA, Europe).sv
|
||||||
0A3DB285,B2AA7578,64
|
0A3DB285,B2AA7578,64
|
||||||
|
|
||||||
Brain Power (USA, Europe).sv
|
Brain Power (USA, Europe).sv
|
||||||
5E6706B9,69BED4DE,64
|
5E6706B9,69BED4DE,64
|
||||||
|
|
||||||
Bubble World (USA, Europe).sv
|
Bubble World (USA, Europe).sv
|
||||||
E5C2CFB5,137FA3A1,64
|
E5C2CFB5,137FA3A1,64
|
||||||
|
|
||||||
Carrier (USA, Europe).sv
|
Carrier (USA, Europe).sv
|
||||||
5ECFB674,A74DF889,32
|
5ECFB674,A74DF889,32
|
||||||
|
|
||||||
Cave Wonders (USA, Europe).sv
|
Cave Wonders (USA, Europe).sv
|
||||||
E0266CE7,B61BDFB4,64
|
E0266CE7,B61BDFB4,64
|
||||||
|
|
||||||
Challenger Tank (USA, Europe).sv
|
Challenger Tank (USA, Europe).sv
|
||||||
C92382CE,B2AA7578,64
|
C92382CE,B2AA7578,64
|
||||||
|
|
||||||
Chimera (USA, Europe).sv
|
Chimera (USA, Europe).sv
|
||||||
4A458AA8,FFA4C239,64
|
4A458AA8,FFA4C239,64
|
||||||
|
|
||||||
Chinese Checkers (USA, Europe).sv
|
Chinese Checkers (USA, Europe).sv
|
||||||
EDED8AEC,9574D04D,64
|
EDED8AEC,9574D04D,64
|
||||||
|
|
||||||
Classic Casino (USA, Europe).sv
|
Classic Casino (USA, Europe).sv
|
||||||
72A96443,3E796E26,64
|
72A96443,3E796E26,64
|
||||||
|
|
||||||
Climber (USA, Europe).sv
|
Climber (USA, Europe).sv
|
||||||
12C45309,52CC2CD7,32
|
12C45309,52CC2CD7,32
|
||||||
|
|
||||||
Cross High (USA, Europe).sv
|
Cross High (USA, Europe).sv
|
||||||
1E6836A2,0176ECF0,64
|
1E6836A2,0176ECF0,64
|
||||||
|
|
||||||
Crystball (USA, Europe).sv
|
Crystball (USA, Europe).sv
|
||||||
10DCC110,B2AA7578,64
|
10DCC110,B2AA7578,64
|
||||||
|
|
||||||
Dancing Block (USA, Europe).sv
|
Dancing Block (USA, Europe).sv
|
||||||
345CA42A,D08490A7,32
|
345CA42A,D08490A7,32
|
||||||
|
|
||||||
Delta Hero (USA, Europe).sv
|
Delta Hero (USA, Europe).sv
|
||||||
32CCDF89,4EFE40D0,64
|
32CCDF89,4EFE40D0,64
|
||||||
|
|
||||||
Dream World (USA, Europe).sv
|
Dream World (USA, Europe).sv
|
||||||
DB0F463F,8DD1E2E9,64
|
DB0F463F,8DD1E2E9,64
|
||||||
|
|
||||||
Eagle Plan (USA, Europe).sv
|
Eagle Plan (USA, Europe).sv
|
||||||
01CB8364,B2AA7578,64
|
01CB8364,B2AA7578,64
|
||||||
|
|
||||||
Earth Defender (USA, Europe).sv
|
Earth Defender (USA, Europe).sv
|
||||||
A6CBB074,B2AA7578,64
|
A6CBB074,B2AA7578,64
|
||||||
|
|
||||||
Fatal Craft (USA, Europe).sv
|
Fatal Craft (USA, Europe).sv
|
||||||
917CAB48,B2AA7578,64
|
917CAB48,B2AA7578,64
|
||||||
|
|
||||||
Final Combat (USA, Europe).sv
|
Final Combat (USA, Europe).sv
|
||||||
2861DE5E,A1DBD9A6,32
|
2861DE5E,A1DBD9A6,32
|
||||||
|
|
||||||
Galactic Crusader (USA, Europe).sv
|
Galactic Crusader (USA, Europe).sv
|
||||||
B494BC5C,DB41A00C,64
|
B494BC5C,DB41A00C,64
|
||||||
|
|
||||||
Galaxy Fighter (USA, Europe).sv
|
Galaxy Fighter (USA, Europe).sv
|
||||||
581703BE,083694D0,64
|
581703BE,083694D0,64
|
||||||
|
|
||||||
Grand Prix (USA, Europe).sv
|
Grand Prix (USA, Europe).sv
|
||||||
CEF3F295,E8F8829F,64
|
CEF3F295,E8F8829F,64
|
||||||
|
|
||||||
Happy Pairs (USA, Europe).sv
|
Happy Pairs (USA, Europe).sv
|
||||||
112F5EED,089CC77D,64
|
112F5EED,089CC77D,64
|
||||||
|
|
||||||
Happy Race (USA, Europe).sv
|
Happy Race (USA, Europe).sv
|
||||||
552AFA89,50376A85,64
|
552AFA89,50376A85,64
|
||||||
|
|
||||||
Hash Blocks (USA, Europe).sv
|
Hash Blocks (USA, Europe).sv
|
||||||
6BD7C885,B2AA7578,64
|
6BD7C885,B2AA7578,64
|
||||||
|
|
||||||
Hero Hawk (USA, Europe).sv
|
Hero Hawk (USA, Europe).sv
|
||||||
99BF6CF5,E69938C1,64
|
99BF6CF5,E69938C1,64
|
||||||
|
|
||||||
Hero Kid (USA, Europe).sv
|
Hero Kid (USA, Europe).sv
|
||||||
25DDD6E1,162F0753,64
|
25DDD6E1,162F0753,64
|
||||||
|
|
||||||
Honey Bee (USA, Europe).sv
|
Honey Bee (USA, Europe).sv
|
||||||
E856875A,1961B97C,64
|
E856875A,1961B97C,64
|
||||||
|
|
||||||
Jacky Lucky (USA, Europe).sv
|
Jacky Lucky (USA, Europe).sv
|
||||||
7D8A607F,ACFF2095,64
|
7D8A607F,ACFF2095,64
|
||||||
|
|
||||||
Jaguar Bomber (USA, Europe).sv
|
Jaguar Bomber (USA, Europe).sv
|
||||||
AA4372D4,6F0A43E8,64
|
AA4372D4,6F0A43E8,64
|
||||||
|
|
||||||
John Adventure (USA, Europe).sv
|
John Adventure (USA, Europe).sv
|
||||||
E9EA3AE0,874EEC5A,64
|
E9EA3AE0,874EEC5A,64
|
||||||
|
|
||||||
Journey to the West (USA).sv
|
Journey to the West (USA).sv
|
||||||
9FB4DB9A,B1F9E5FE,51
|
9FB4DB9A,B1F9E5FE,51
|
||||||
|
|
||||||
Juggler (USA, Europe).sv
|
Juggler (USA, Europe).sv
|
||||||
32E68D6F,D0CA45AE,64
|
32E68D6F,D0CA45AE,64
|
||||||
|
|
||||||
Kabi Island - Gold in Island (USA, Europe).sv
|
Kabi Island - Gold in Island (USA, Europe).sv
|
||||||
2BC03096,C723789D,64
|
2BC03096,C723789D,64
|
||||||
|
|
||||||
Kitchen War (USA, Europe).sv
|
Kitchen War (USA, Europe).sv
|
||||||
20225F5C,B2AA7578,64
|
20225F5C,B2AA7578,64
|
||||||
|
|
||||||
Kung-Fu Street (USA, Europe).sv
|
Kung-Fu Street (USA, Europe).sv
|
||||||
7DAED2EB,8D2E613A,64
|
7DAED2EB,8D2E613A,64
|
||||||
|
|
||||||
Linear Racing (USA, Europe).sv
|
Linear Racing (USA, Europe).sv
|
||||||
6F8ABAF9,42DE0B39,64
|
6F8ABAF9,42DE0B39,64
|
||||||
|
|
||||||
Magincross (USA, Europe).sv
|
Magincross (USA, Europe).sv
|
||||||
E406A91C,C64A27A7,64
|
E406A91C,C64A27A7,64
|
||||||
|
|
||||||
Majong (USA, Europe).sv
|
Majong (USA, Europe).sv
|
||||||
96E2E6D7,B2AA7578,64
|
96E2E6D7,B2AA7578,64
|
||||||
|
|
||||||
Matta Blatta (USA, Europe).sv
|
Matta Blatta (USA, Europe).sv
|
||||||
21864295,F846E93F,64
|
21864295,F846E93F,64
|
||||||
|
|
||||||
Olympic Trials (USA, Europe).sv
|
Olympic Trials (USA, Europe).sv
|
||||||
85DC8111,1DFFC61C,64
|
85DC8111,1DFFC61C,64
|
||||||
|
|
||||||
P-52 Sea Battle (USA, Europe).sv
|
P-52 Sea Battle (USA, Europe).sv
|
||||||
748F9DAE,FDB5A1D1,64
|
748F9DAE,FDB5A1D1,64
|
||||||
|
|
||||||
PacBoy & Mouse (USA, Europe).sv
|
PacBoy & Mouse (USA, Europe).sv
|
||||||
1A89AC88,B2AA7578,64
|
1A89AC88,B2AA7578,64
|
||||||
|
|
||||||
Pacific Battle (USA, Europe).sv
|
Pacific Battle (USA, Europe).sv
|
||||||
E5DCE795,D26572CA,64
|
E5DCE795,D26572CA,64
|
||||||
|
|
||||||
Penguin Hideout (USA, Europe).sv
|
Penguin Hideout (USA, Europe).sv
|
||||||
FE5F9774,16D33C46,32
|
FE5F9774,16D33C46,32
|
||||||
|
|
||||||
Police Bust (USA, Europe).sv
|
Police Bust (USA, Europe).sv
|
||||||
531F0B51,B2AA7578,64
|
531F0B51,B2AA7578,64
|
||||||
|
|
||||||
Popo Team (USA, Europe).sv
|
Popo Team (USA, Europe).sv
|
||||||
E11A756C,9DF52936,64
|
E11A756C,9DF52936,64
|
||||||
|
|
||||||
Pyramid (USA, Europe).sv
|
Pyramid (USA, Europe).sv
|
||||||
E0BFE163,74388E90,32
|
E0BFE163,74388E90,32
|
||||||
|
|
||||||
Recycle Design (USA, Europe).sv
|
Recycle Design (USA, Europe).sv
|
||||||
C36BD216,5A5C19A8,64
|
C36BD216,5A5C19A8,64
|
||||||
|
|
||||||
Scaffolder (USA, Europe).sv
|
Scaffolder (USA, Europe).sv
|
||||||
46FB22C5,3B167A03,64
|
46FB22C5,3B167A03,64
|
||||||
|
|
||||||
Soccer Champion (USA, Europe).sv
|
Soccer Champion (USA, Europe).sv
|
||||||
45204DC4,B2AA7578,64
|
45204DC4,B2AA7578,64
|
||||||
|
|
||||||
Sonny X'Press (USA, Europe).sv
|
Sonny X'Press (USA, Europe).sv
|
||||||
C99B985A,ADC6B8C6,64
|
C99B985A,ADC6B8C6,64
|
||||||
|
|
||||||
Space Fighter (USA, Europe).sv
|
Space Fighter (USA, Europe).sv
|
||||||
7CD650C8,75FE30AA,64
|
7CD650C8,75FE30AA,64
|
||||||
|
|
||||||
SSSnake (USA, Europe).sv
|
SSSnake (USA, Europe).sv
|
||||||
BE9B6F10,8EA0C5AB,64
|
BE9B6F10,8EA0C5AB,64
|
||||||
|
|
||||||
Super Block (USA, Europe).sv
|
Super Block (USA, Europe).sv
|
||||||
02E2C7AD,5F1DD5D7,32
|
02E2C7AD,5F1DD5D7,32
|
||||||
|
|
||||||
Super Kong (USA, Europe).sv
|
Super Kong (USA, Europe).sv
|
||||||
59C7FF64,3438D914,64
|
59C7FF64,3438D914,64
|
||||||
|
|
||||||
Super Pang (USA, Europe).sv
|
Super Pang (USA, Europe).sv
|
||||||
181D12DD,653576B2,64
|
181D12DD,653576B2,64
|
||||||
|
|
||||||
Tasac 2010 (USA, Europe).sv
|
Tasac 2010 (USA, Europe).sv
|
||||||
3D5F3964,9B451BB4,64
|
3D5F3964,9B451BB4,64
|
||||||
|
|
||||||
Tennis Pro '92 (USA, Europe).sv
|
Tennis Pro '92 (USA, Europe).sv
|
||||||
BD004CB7,22802ED1,64
|
BD004CB7,22802ED1,64
|
||||||
|
|
||||||
Thunder Shooting (USA, Europe).sv
|
Thunder Shooting (USA, Europe).sv
|
||||||
AD147842,73276EBC,64
|
AD147842,73276EBC,64
|
||||||
|
|
||||||
Treasure Hunter (USA, Europe).sv
|
Treasure Hunter (USA, Europe).sv
|
||||||
DB35B809,B2AA7578,64
|
DB35B809,B2AA7578,64
|
||||||
|
|
||||||
Treasure Hunter (USA, Europe) (Rev 1).sv
|
Treasure Hunter (USA, Europe) (Rev 1).sv
|
||||||
69068337,3E796E26,64
|
69068337,3E796E26,64
|
||||||
|
|
||||||
TV-Link (USA, Europe).sv
|
TV-Link (USA, Europe).sv
|
||||||
AF3EA0DD,96C646A2,32
|
AF3EA0DD,96C646A2,32
|
||||||
|
|
||||||
Untouchable (USA, Europe).sv
|
Untouchable (USA, Europe).sv
|
||||||
DB3FE76A,9B4B4770,64
|
DB3FE76A,9B4B4770,64
|
||||||
|
|
||||||
Witty Cat (USA, Europe).sv
|
Witty Cat (USA, Europe).sv
|
||||||
24A115F9,964FBC96,64
|
24A115F9,964FBC96,64
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user