mirror of
https://github.com/sanni/cartreader.git
synced 2024-12-26 04:51:52 +01:00
Merge branch 'master' into support-casio-loopy
This commit is contained in:
commit
52da1a1c36
@ -56,6 +56,9 @@ static const char arcMenuItem4[] PROGMEM = "Reset";
|
|||||||
static const char* const menuOptionsARC[] PROGMEM = { arcMenuItem1, arcMenuItem2, arcMenuItem3, arcMenuItem4 };
|
static const char* const menuOptionsARC[] PROGMEM = { arcMenuItem1, arcMenuItem2, arcMenuItem3, arcMenuItem4 };
|
||||||
|
|
||||||
void setup_ARC() {
|
void setup_ARC() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
// Arcadia 2001 uses A0-A13 [A14-A23 UNUSED]
|
// Arcadia 2001 uses A0-A13 [A14-A23 UNUSED]
|
||||||
//A0-A7
|
//A0-A7
|
||||||
@ -94,7 +97,6 @@ void setup_ARC() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void arcMenu() {
|
void arcMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsARC, 4);
|
convertPgm(menuOptionsARC, 4);
|
||||||
uint8_t mainMenu = question_box(F("ARCADIA 2001 MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("ARCADIA 2001 MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -63,6 +63,9 @@ static const char atariMenuItem4[] PROGMEM = "Reset";
|
|||||||
static const char* const menuOptionsATARI[] PROGMEM = { atariMenuItem1, atariMenuItem2, atariMenuItem3, atariMenuItem4 };
|
static const char* const menuOptionsATARI[] PROGMEM = { atariMenuItem1, atariMenuItem2, atariMenuItem3, atariMenuItem4 };
|
||||||
|
|
||||||
void setup_ATARI() {
|
void setup_ATARI() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
// Atari 2600 uses A0-A12 [A13-A23 UNUSED]
|
// Atari 2600 uses A0-A12 [A13-A23 UNUSED]
|
||||||
//A0-A7
|
//A0-A7
|
||||||
@ -101,7 +104,6 @@ void setup_ATARI() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void atariMenu() {
|
void atariMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsATARI, 4);
|
convertPgm(menuOptionsATARI, 4);
|
||||||
uint8_t mainMenu = question_box(F("ATARI 2600 MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("ATARI 2600 MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -55,6 +55,9 @@ static const char colMenuItem3[] PROGMEM = "Set Size";
|
|||||||
static const char* const menuOptionsCOL[] PROGMEM = { colMenuItem1, colMenuItem2, colMenuItem3, string_reset2 };
|
static const char* const menuOptionsCOL[] PROGMEM = { colMenuItem1, colMenuItem2, colMenuItem3, string_reset2 };
|
||||||
|
|
||||||
void setup_COL() {
|
void setup_COL() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
// Colecovision uses A0-A14 [A15-A23 UNUSED]
|
// Colecovision uses A0-A14 [A15-A23 UNUSED]
|
||||||
//A0-A7
|
//A0-A7
|
||||||
@ -93,7 +96,6 @@ void setup_COL() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void colMenu() {
|
void colMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsCOL, 4);
|
convertPgm(menuOptionsCOL, 4);
|
||||||
uint8_t mainMenu = question_box(F("COLECOVISION MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("COLECOVISION MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -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-03-29
|
Date: 2023-06-26
|
||||||
Version: 12.5
|
Version: 12.6
|
||||||
|
|
||||||
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.0.4
|
Compiled with Arduino IDE 2.1.0
|
||||||
|
|
||||||
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 modules
|
skaman - Cart ROM READER SNES ENHANCED, Famicom Cart Dumper, Coleco-, Intellivision, Virtual Boy, WSV, PCW, ARC, Atari, ODY2, Fairchild, MSX2, Pokemon Mini 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
|
||||||
hkz & themanbehindthecurtain - N64 flashram commands
|
hkz & themanbehindthecurtain - N64 flashram commands
|
||||||
@ -38,7 +38,7 @@
|
|||||||
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
|
vpelletier, Ancyker, mattiacci, RWeick, joshman196
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
@ -248,6 +248,8 @@ void print_STR(byte string_number, boolean newline) {
|
|||||||
#define mode_ARC 30
|
#define mode_ARC 30
|
||||||
#define mode_FAIRCHILD 31
|
#define mode_FAIRCHILD 31
|
||||||
#define mode_SUPRACAN 32
|
#define mode_SUPRACAN 32
|
||||||
|
#define mode_MSX 33
|
||||||
|
#define mode_POKE 34
|
||||||
|
|
||||||
// optimization-safe nop delay
|
// optimization-safe nop delay
|
||||||
#define NOP __asm__ __volatile__("nop\n\t")
|
#define NOP __asm__ __volatile__("nop\n\t")
|
||||||
@ -367,7 +369,6 @@ void draw_progressbar(uint32_t processedsize, uint32_t totalsize);
|
|||||||
byte eepbit[8];
|
byte eepbit[8];
|
||||||
byte eeptemp;
|
byte eeptemp;
|
||||||
|
|
||||||
#ifdef nointro
|
|
||||||
// Array to hold iNES header
|
// Array to hold iNES header
|
||||||
byte iNES_HEADER[16];
|
byte iNES_HEADER[16];
|
||||||
//ID 0-3
|
//ID 0-3
|
||||||
@ -382,7 +383,6 @@ byte iNES_HEADER[16];
|
|||||||
//TV_system 12
|
//TV_system 12
|
||||||
//VS_hardware 13
|
//VS_hardware 13
|
||||||
//reserved 14, 15
|
//reserved 14, 15
|
||||||
#endif
|
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
// CRC32
|
// CRC32
|
||||||
@ -491,7 +491,7 @@ uint32_t calculateCRC(char* fileName, char* folder, int offset) {
|
|||||||
/******************************************
|
/******************************************
|
||||||
CRC Functions for Atari, Fairchild, Ody2, Arc modules
|
CRC Functions for Atari, Fairchild, Ody2, Arc modules
|
||||||
*****************************************/
|
*****************************************/
|
||||||
#if (defined(enable_ATARI) || defined(enable_ODY2) || defined(enable_ARC) || defined(enable_FAIRCHILD))
|
#if (defined(enable_ATARI) || defined(enable_ODY2) || defined(enable_ARC) || defined(enable_FAIRCHILD) || defined(enable_MSX) || defined(enable_POKE))
|
||||||
|
|
||||||
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;
|
||||||
@ -610,7 +610,6 @@ void rewind_line(FsFile& readfile, byte count = 1) {
|
|||||||
|
|
||||||
// Calculate CRC32 if needed and compare it to CRC read from database
|
// Calculate CRC32 if needed and compare it to CRC read from database
|
||||||
boolean compareCRC(const char* database, uint32_t crc32sum, boolean renamerom, int offset) {
|
boolean compareCRC(const char* database, uint32_t crc32sum, boolean renamerom, int offset) {
|
||||||
#ifdef nointro
|
|
||||||
char crcStr[9];
|
char crcStr[9];
|
||||||
print_Msg(F("CRC32... "));
|
print_Msg(F("CRC32... "));
|
||||||
display_Update();
|
display_Update();
|
||||||
@ -688,7 +687,7 @@ boolean compareCRC(const char* database, uint32_t crc32sum, boolean renamerom, i
|
|||||||
if (renamerom) {
|
if (renamerom) {
|
||||||
println_Msg(gamename);
|
println_Msg(gamename);
|
||||||
|
|
||||||
// Rename file to nointro
|
// Rename file to database name
|
||||||
sd.chdir(folder);
|
sd.chdir(folder);
|
||||||
delay(100);
|
delay(100);
|
||||||
if (myFile.open(fileName, O_READ)) {
|
if (myFile.open(fileName, O_READ)) {
|
||||||
@ -712,9 +711,6 @@ boolean compareCRC(const char* database, uint32_t crc32sum, boolean renamerom, i
|
|||||||
print_Error(F("Database missing"));
|
print_Error(F("Database missing"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else // nointro
|
|
||||||
println_Msg("");
|
|
||||||
#endif // !nointro
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -835,18 +831,20 @@ static const char modeItem9[] PROGMEM = "NeoGeo Pocket (3V)";
|
|||||||
static const char modeItem10[] PROGMEM = "Intellivision";
|
static const char modeItem10[] PROGMEM = "Intellivision";
|
||||||
static const char modeItem11[] PROGMEM = "Colecovision";
|
static const char modeItem11[] PROGMEM = "Colecovision";
|
||||||
static const char modeItem12[] PROGMEM = "Virtual Boy";
|
static const char modeItem12[] PROGMEM = "Virtual Boy";
|
||||||
static const char modeItem13[] PROGMEM = "Watara Supervision";
|
static const char modeItem13[] PROGMEM = "Watara Supervision (3V)";
|
||||||
static const char modeItem14[] PROGMEM = "Pocket Challenge W";
|
static const char modeItem14[] PROGMEM = "Pocket Challenge W";
|
||||||
static const char modeItem15[] PROGMEM = "Atari 2600";
|
static const char modeItem15[] PROGMEM = "Atari 2600";
|
||||||
static const char modeItem16[] PROGMEM = "Magnavox Odyssey 2";
|
static const char modeItem16[] PROGMEM = "Magnavox Odyssey 2";
|
||||||
static const char modeItem17[] PROGMEM = "Arcadia 2001";
|
static const char modeItem17[] PROGMEM = "Arcadia 2001";
|
||||||
static const char modeItem18[] PROGMEM = "Fairchild Channel F";
|
static const char modeItem18[] PROGMEM = "Fairchild Channel F";
|
||||||
static const char modeItem19[] PROGMEM = "Super A'can";
|
static const char modeItem19[] PROGMEM = "Super A'can";
|
||||||
static const char modeItem20[] PROGMEM = "Flashrom Programmer";
|
static const char modeItem20[] PROGMEM = "MSX";
|
||||||
static const char modeItem21[] PROGMEM = "Self Test";
|
static const char modeItem21[] PROGMEM = "Pokemon Mini (3V)";
|
||||||
static const char modeItem22[] PROGMEM = "About";
|
static const char modeItem22[] PROGMEM = "Flashrom Programmer";
|
||||||
//static const char modeItem22[] PROGMEM = "Reset"; (stored in common strings array)
|
static const char modeItem23[] PROGMEM = "Self Test (3V)";
|
||||||
static const char* const modeOptions[] PROGMEM = { modeItem1, modeItem2, modeItem3, modeItem4, modeItem5, modeItem6, modeItem7, modeItem8, modeItem9, modeItem10, modeItem11, modeItem12, modeItem13, modeItem14, modeItem15, modeItem16, modeItem17, modeItem18, modeItem19, modeItem20, modeItem21, modeItem22, string_reset2 };
|
static const char modeItem24[] PROGMEM = "About";
|
||||||
|
//static const char modeItem25[] PROGMEM = "Reset"; (stored in common strings array)
|
||||||
|
static const char* const modeOptions[] PROGMEM = { modeItem1, modeItem2, modeItem3, modeItem4, modeItem5, modeItem6, modeItem7, modeItem8, modeItem9, modeItem10, modeItem11, modeItem12, modeItem13, modeItem14, modeItem15, modeItem16, modeItem17, modeItem18, modeItem19, modeItem20, modeItem21, modeItem22, modeItem23, modeItem24, string_reset2 };
|
||||||
|
|
||||||
// All included slots
|
// All included slots
|
||||||
void mainMenu() {
|
void mainMenu() {
|
||||||
@ -872,7 +870,7 @@ void mainMenu() {
|
|||||||
num_answers = 7;
|
num_answers = 7;
|
||||||
} else { // currPage == 4
|
} else { // currPage == 4
|
||||||
option_offset = 21;
|
option_offset = 21;
|
||||||
num_answers = 2;
|
num_answers = 4;
|
||||||
}
|
}
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(modeOptions + option_offset, num_answers);
|
convertPgm(modeOptions + option_offset, num_answers);
|
||||||
@ -901,9 +899,7 @@ void mainMenu() {
|
|||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
setup_NES();
|
setup_NES();
|
||||||
#ifdef nointro
|
|
||||||
getMapping();
|
getMapping();
|
||||||
#endif
|
|
||||||
checkStatus_NES();
|
checkStatus_NES();
|
||||||
nesMenu();
|
nesMenu();
|
||||||
break;
|
break;
|
||||||
@ -1026,23 +1022,40 @@ void mainMenu() {
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_MSX
|
||||||
case 19:
|
case 19:
|
||||||
|
setup_MSX();
|
||||||
|
msxMenu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_POKE
|
||||||
|
case 20:
|
||||||
|
setup_POKE();
|
||||||
|
pokeMenu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_FLASH
|
||||||
|
case 21:
|
||||||
|
#ifdef ENABLE_VSELECT
|
||||||
|
setup_FlashVoltage();
|
||||||
|
#endif
|
||||||
flashMenu();
|
flashMenu();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef enable_selftest
|
#ifdef enable_selftest
|
||||||
case 20:
|
case 22:
|
||||||
selfTest();
|
selfTest();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 21:
|
case 23:
|
||||||
aboutScreen();
|
aboutScreen();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 22:
|
case 24:
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1093,8 +1106,9 @@ static const char* const consoles70Options[] PROGMEM = { consoles70Item1, consol
|
|||||||
static const char consoles80Item1[] PROGMEM = "NES/Famicom";
|
static const char consoles80Item1[] PROGMEM = "NES/Famicom";
|
||||||
static const char consoles80Item2[] PROGMEM = "PC Engine/TG16";
|
static const char consoles80Item2[] PROGMEM = "PC Engine/TG16";
|
||||||
static const char consoles80Item3[] PROGMEM = "SMS/GG/MIII/SG-1000";
|
static const char consoles80Item3[] PROGMEM = "SMS/GG/MIII/SG-1000";
|
||||||
//static const char consoles80Item4[] PROGMEM = "Reset"; (stored in common strings array)
|
static const char consoles80Item4[] PROGMEM = "MSX";
|
||||||
static const char* const consoles80Options[] PROGMEM = { consoles80Item1, consoles80Item2, consoles80Item3, string_reset2 };
|
//static const char consoles80Item5[] PROGMEM = "Reset"; (stored in common strings array)
|
||||||
|
static const char* const consoles80Options[] PROGMEM = { consoles80Item1, consoles80Item2, consoles80Item3, consoles80Item4, string_reset2 };
|
||||||
|
|
||||||
// 90s Consoles submenu
|
// 90s Consoles submenu
|
||||||
static const char consoles90Item1[] PROGMEM = "Super A'can";
|
static const char consoles90Item1[] PROGMEM = "Super A'can";
|
||||||
@ -1104,10 +1118,11 @@ static const char* const consoles90Options[] PROGMEM = { consoles90Item1, string
|
|||||||
static const char handheldsItem1[] PROGMEM = "Virtual Boy";
|
static const char handheldsItem1[] PROGMEM = "Virtual Boy";
|
||||||
static const char handheldsItem2[] PROGMEM = "WonderSwan (3V)";
|
static const char handheldsItem2[] PROGMEM = "WonderSwan (3V)";
|
||||||
static const char handheldsItem3[] PROGMEM = "NeoGeo Pocket (3V)";
|
static const char handheldsItem3[] PROGMEM = "NeoGeo Pocket (3V)";
|
||||||
static const char handheldsItem4[] PROGMEM = "Watara Supervision";
|
static const char handheldsItem4[] PROGMEM = "Watara Supervision (3V)";
|
||||||
static const char handheldsItem5[] PROGMEM = "Pocket Challenge W";
|
static const char handheldsItem5[] PROGMEM = "Pocket Challenge W";
|
||||||
|
static const char handheldsItem6[] PROGMEM = "Pokemon Mini (3V)";
|
||||||
//static const char handheldsItem6[] PROGMEM = "Reset"; (stored in common strings array)
|
//static const char handheldsItem6[] PROGMEM = "Reset"; (stored in common strings array)
|
||||||
static const char* const handheldsOptions[] PROGMEM = { handheldsItem1, handheldsItem2, handheldsItem3, handheldsItem4, handheldsItem5, string_reset2 };
|
static const char* const handheldsOptions[] PROGMEM = { handheldsItem1, handheldsItem2, handheldsItem3, handheldsItem4, handheldsItem5, handheldsItem6, string_reset2 };
|
||||||
|
|
||||||
// All included slots
|
// All included slots
|
||||||
void mainMenu() {
|
void mainMenu() {
|
||||||
@ -1191,6 +1206,9 @@ void addonMenu() {
|
|||||||
|
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_FLASH
|
||||||
case 4:
|
case 4:
|
||||||
|
#ifdef ENABLE_VSELECT
|
||||||
|
setup_FlashVoltage();
|
||||||
|
#endif
|
||||||
flashMenu();
|
flashMenu();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
@ -1275,8 +1293,8 @@ void consoles80Menu() {
|
|||||||
// create menu with title and 6 options to choose from
|
// create menu with title and 6 options to choose from
|
||||||
unsigned char consoles80Menu;
|
unsigned char consoles80Menu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(consoles80Options, 4);
|
convertPgm(consoles80Options, 5);
|
||||||
consoles80Menu = question_box(F("Choose Adapter"), menuOptions, 4, 0);
|
consoles80Menu = question_box(F("Choose Adapter"), menuOptions, 5, 0);
|
||||||
|
|
||||||
// wait for user choice to come back from the question box menu
|
// wait for user choice to come back from the question box menu
|
||||||
switch (consoles80Menu) {
|
switch (consoles80Menu) {
|
||||||
@ -1286,9 +1304,7 @@ void consoles80Menu() {
|
|||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
setup_NES();
|
setup_NES();
|
||||||
#ifdef nointro
|
|
||||||
getMapping();
|
getMapping();
|
||||||
#endif
|
|
||||||
checkStatus_NES();
|
checkStatus_NES();
|
||||||
nesMenu();
|
nesMenu();
|
||||||
break;
|
break;
|
||||||
@ -1306,7 +1322,14 @@ void consoles80Menu() {
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_MSX
|
||||||
case 3:
|
case 3:
|
||||||
|
setup_MSX();
|
||||||
|
msxMenu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
case 4:
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1345,8 +1368,8 @@ void handheldMenu() {
|
|||||||
// create menu with title and 6 options to choose from
|
// create menu with title and 6 options to choose from
|
||||||
unsigned char handheldsMenu;
|
unsigned char handheldsMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(handheldsOptions, 6);
|
convertPgm(handheldsOptions, 7);
|
||||||
handheldsMenu = question_box(F("Choose Adapter"), menuOptions, 6, 0);
|
handheldsMenu = question_box(F("Choose Adapter"), menuOptions, 7, 0);
|
||||||
|
|
||||||
// wait for user choice to come back from the question box menu
|
// wait for user choice to come back from the question box menu
|
||||||
switch (handheldsMenu) {
|
switch (handheldsMenu) {
|
||||||
@ -1389,7 +1412,14 @@ void handheldMenu() {
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef enable_POKE
|
||||||
case 5:
|
case 5:
|
||||||
|
setup_POKE();
|
||||||
|
pokeMenu();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
case 6:
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1405,6 +1435,11 @@ void handheldMenu() {
|
|||||||
#ifdef enable_selftest
|
#ifdef enable_selftest
|
||||||
|
|
||||||
void selfTest() {
|
void selfTest() {
|
||||||
|
#ifdef ENABLE_VSELECT
|
||||||
|
// Set Automatic Voltage Selection to 3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
#endif
|
||||||
|
|
||||||
display_Clear();
|
display_Clear();
|
||||||
println_Msg(F("Self Test"));
|
println_Msg(F("Self Test"));
|
||||||
println_Msg(F(""));
|
println_Msg(F(""));
|
||||||
@ -2036,8 +2071,10 @@ void setup() {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_VSELECT
|
||||||
// Set power to low to protect carts
|
// Set power to low to protect carts
|
||||||
setVoltage(VOLTS_SET_3V3);
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef enable_OLED
|
#ifdef enable_OLED
|
||||||
display.begin();
|
display.begin();
|
||||||
@ -2100,7 +2137,7 @@ void setup() {
|
|||||||
statusLED(true);
|
statusLED(true);
|
||||||
|
|
||||||
// Start menu system
|
// Start menu system
|
||||||
startMenu();
|
mainMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
@ -3548,6 +3585,16 @@ void loop() {
|
|||||||
else if (mode == mode_SUPRACAN) {
|
else if (mode == mode_SUPRACAN) {
|
||||||
suprAcanMenu();
|
suprAcanMenu();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef enable_MSX
|
||||||
|
else if (mode == mode_MSX) {
|
||||||
|
msxMenu();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef enable_POKE
|
||||||
|
else if (mode == mode_POKE) {
|
||||||
|
pokeMenu();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
display_Clear();
|
display_Clear();
|
||||||
|
@ -151,6 +151,13 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
|
/* [ MSX ------------------------------------------- ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#define enable_MSX
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
/* [ PC Engine/TurboGrafx 16 -------------------------------------- ]
|
/* [ PC Engine/TurboGrafx 16 -------------------------------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -158,6 +165,13 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
|
/* [ Pokemon Mini -------------------------------------- ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#define enable_POKE
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
/* [ Sega Master System/Mark III/Game Gear/SG-1000 ---------------- ]
|
/* [ Sega Master System/Mark III/Game Gear/SG-1000 ---------------- ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -253,7 +267,7 @@
|
|||||||
* other than HW5 and HW3.
|
* other than HW5 and HW3.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define ENABLE_UPDATER
|
//#define ENABLE_UPDATER
|
||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
@ -265,19 +279,6 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Start Menu --------------------------------------------------- ]
|
|
||||||
* Change this when using a single slot cart reader to always start
|
|
||||||
* in that menu.
|
|
||||||
*
|
|
||||||
* OPTIONS :
|
|
||||||
* mainMenu, snsMenu, mdMenu, n64Menu, gbxMenu, pcsMenu,
|
|
||||||
* flashMenu, nesMenu, smsMenu
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define startMenu mainMenu
|
|
||||||
|
|
||||||
/****/
|
|
||||||
|
|
||||||
/* [ Logging ------------------------------------------------------ ]
|
/* [ Logging ------------------------------------------------------ ]
|
||||||
* Write all info to OSCR_LOG.txt in root dir
|
* Write all info to OSCR_LOG.txt in root dir
|
||||||
*/
|
*/
|
||||||
@ -286,14 +287,6 @@
|
|||||||
|
|
||||||
/****/
|
/****/
|
||||||
|
|
||||||
/* [ Use No Intro Database ---------------------------------------- ]
|
|
||||||
* Renames ROM if found in database
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define nointro
|
|
||||||
|
|
||||||
/****/
|
|
||||||
|
|
||||||
/* [ 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
|
||||||
*/
|
*/
|
||||||
|
@ -87,6 +87,9 @@ static const char fairchildMenuItem5[] PROGMEM = "Reset";
|
|||||||
static const char* const menuOptionsFAIRCHILD[] PROGMEM = { fairchildMenuItem1, fairchildMenuItem2, fairchildMenuItem3, fairchildMenuItem4, fairchildMenuItem5 };
|
static const char* const menuOptionsFAIRCHILD[] PROGMEM = { fairchildMenuItem1, fairchildMenuItem2, fairchildMenuItem3, fairchildMenuItem4, fairchildMenuItem5 };
|
||||||
|
|
||||||
void setup_FAIRCHILD() {
|
void setup_FAIRCHILD() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
// Channel F uses A0-A4 [A5-A23 UNUSED]
|
// Channel F uses A0-A4 [A5-A23 UNUSED]
|
||||||
//A0-A7
|
//A0-A7
|
||||||
@ -126,7 +129,6 @@ void setup_FAIRCHILD() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void fairchildMenu() {
|
void fairchildMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsFAIRCHILD, 5);
|
convertPgm(menuOptionsFAIRCHILD, 5);
|
||||||
uint8_t mainMenu = question_box(F("CHANNEL F MENU"), menuOptions, 5, 0);
|
uint8_t mainMenu = question_box(F("CHANNEL F MENU"), menuOptions, 5, 0);
|
||||||
|
|
||||||
|
@ -680,6 +680,41 @@ void id_Flash16() {
|
|||||||
/******************************************
|
/******************************************
|
||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
|
#if defined(ENABLE_VSELECT) || defined(ENABLE_3V3FIX)
|
||||||
|
static const char flashvoltItem1[] PROGMEM = "3.3V";
|
||||||
|
static const char flashvoltItem2[] PROGMEM = "5V";
|
||||||
|
//static const char flashvoltItem3[] PROGMEM = "Reset"; (stored in common strings array)
|
||||||
|
static const char* const flashvoltOptions[] PROGMEM = { flashvoltItem1, flashvoltItem2, string_reset2 };
|
||||||
|
|
||||||
|
void setup_FlashVoltage() {
|
||||||
|
// create menu with title and 3 options to choose from
|
||||||
|
unsigned char flashvolt;
|
||||||
|
// Copy menuOptions out of progmem
|
||||||
|
convertPgm(flashvoltOptions, 3);
|
||||||
|
flashvolt = question_box(F("Select Flash Voltage"), menuOptions, 3, 0);
|
||||||
|
|
||||||
|
// wait for user choice to come back from the question box menu
|
||||||
|
switch (flashvolt) {
|
||||||
|
case 0:
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
resetArduino();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// The compiler will optimize this out when this condition is met.
|
||||||
|
void setup_FlashVoltage() {}
|
||||||
|
#endif
|
||||||
|
|
||||||
void setup_Flash8() {
|
void setup_Flash8() {
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A0-A7
|
//A0-A7
|
||||||
|
@ -41,8 +41,7 @@ static const char* const menuOptionsGBFlash[] PROGMEM = { GBFlashItem1, GBFlashI
|
|||||||
|
|
||||||
// Start menu for both GB and GBA
|
// Start menu for both GB and GBA
|
||||||
void gbxMenu() {
|
void gbxMenu() {
|
||||||
setVoltage(VOLTS_SET_3V3);
|
// create menu with title and 5 options to choose from
|
||||||
// create menu with title and 4 options to choose from
|
|
||||||
unsigned char gbType;
|
unsigned char gbType;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(menuOptionsGBx, 5);
|
convertPgm(menuOptionsGBx, 5);
|
||||||
@ -51,7 +50,6 @@ void gbxMenu() {
|
|||||||
// wait for user choice to come back from the question box menu
|
// wait for user choice to come back from the question box menu
|
||||||
switch (gbType) {
|
switch (gbType) {
|
||||||
case 0:
|
case 0:
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
setup_GB();
|
setup_GB();
|
||||||
@ -59,7 +57,6 @@ void gbxMenu() {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
setVoltage(VOLTS_SET_3V3);
|
|
||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
setup_GBA();
|
setup_GBA();
|
||||||
@ -69,7 +66,6 @@ void gbxMenu() {
|
|||||||
case 2:
|
case 2:
|
||||||
// create submenu with title and 7 options to choose from
|
// create submenu with title and 7 options to choose from
|
||||||
unsigned char gbFlash;
|
unsigned char gbFlash;
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(menuOptionsGBFlash, 7);
|
convertPgm(menuOptionsGBFlash, 7);
|
||||||
gbFlash = question_box(F("Select type"), menuOptions, 7, 0);
|
gbFlash = question_box(F("Select type"), menuOptions, 7, 0);
|
||||||
@ -97,7 +93,6 @@ void gbxMenu() {
|
|||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
//Flash MBC5
|
//Flash MBC5
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
setup_GB();
|
setup_GB();
|
||||||
@ -291,7 +286,7 @@ void gbxMenu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void gbMenu() {
|
void gbMenu() {
|
||||||
// create menu with title and 3 options to choose from
|
// create menu with title and 4 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(menuOptionsGB, 4);
|
convertPgm(menuOptionsGB, 4);
|
||||||
@ -375,6 +370,9 @@ void gbMenu() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_GB() {
|
void setup_GB() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A0-A7
|
//A0-A7
|
||||||
DDRF = 0xFF;
|
DDRF = 0xFF;
|
||||||
@ -876,7 +874,7 @@ void getCartInfo_GB() {
|
|||||||
if (romType == 32) {
|
if (romType == 32) {
|
||||||
sramBanks = 8;
|
sramBanks = 8;
|
||||||
lastByte = 0xAFFF;
|
lastByte = 0xAFFF;
|
||||||
} else if (romType == 34) { // MBC7
|
} else if (romType == 34) { // MBC7
|
||||||
lastByte = (*((uint16_t*)(eepbit + 6)) == 0xa5be ? 512 : 256); // Only "Command Master" use LC66 EEPROM
|
lastByte = (*((uint16_t*)(eepbit + 6)) == 0xa5be ? 512 : 256); // Only "Command Master" use LC66 EEPROM
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ static const char GBASaveItem6[] PROGMEM = "1M FLASH";
|
|||||||
static const char* const saveOptionsGBA[] PROGMEM = { GBASaveItem1, GBASaveItem2, GBASaveItem3, GBASaveItem4, GBASaveItem5, GBASaveItem6 };
|
static const char* const saveOptionsGBA[] PROGMEM = { GBASaveItem1, GBASaveItem2, GBASaveItem3, GBASaveItem4, GBASaveItem5, GBASaveItem6 };
|
||||||
|
|
||||||
void gbaMenu() {
|
void gbaMenu() {
|
||||||
setVoltage(VOLTS_SET_3V3);
|
|
||||||
// create menu with title and 4 options to choose from
|
// create menu with title and 4 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -247,6 +246,9 @@ void gbaMenu() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_GBA() {
|
void setup_GBA() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
setROM_GBA();
|
setROM_GBA();
|
||||||
|
|
||||||
// Get cart info
|
// Get cart info
|
||||||
@ -761,7 +763,7 @@ void getCartInfo_GBA() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get name
|
// Get name
|
||||||
buildRomName(romName, &sdBuffer[0xA0], 11);
|
buildRomName(romName, &sdBuffer[0xA0], 12);
|
||||||
|
|
||||||
// Get ROM version
|
// Get ROM version
|
||||||
romVersion = sdBuffer[0xBC];
|
romVersion = sdBuffer[0xBC];
|
||||||
@ -894,6 +896,18 @@ void readROM_GBA() {
|
|||||||
draw_progressbar(processedProgressBar, totalProgressBar);
|
draw_progressbar(processedProgressBar, totalProgressBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fix unmapped ROM area of cartridges with 32 MB ROM + EEPROM save type
|
||||||
|
if ((cartSize == 0x2000000) && ((saveType == 1) || (saveType == 2))) {
|
||||||
|
byte padding_byte[256];
|
||||||
|
char tempStr[32];
|
||||||
|
myFile.seek(0x1FFFEFF);
|
||||||
|
myFile.read(padding_byte, 1);
|
||||||
|
sprintf(tempStr, "Fixing ROM padding (0x%02X)", padding_byte[0]);
|
||||||
|
println_Msg(tempStr);
|
||||||
|
memset(padding_byte + 1, padding_byte[0], 255);
|
||||||
|
myFile.write(padding_byte, 256);
|
||||||
|
}
|
||||||
|
|
||||||
// Close the file:
|
// Close the file:
|
||||||
myFile.close();
|
myFile.close();
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ static const char gbmMenuItem7[] PROGMEM = "Write Mapping";
|
|||||||
static const char* const menuOptionsGBM[] PROGMEM = { gbmMenuItem1, gbmMenuItem2, gbmMenuItem3, gbmMenuItem4, gbmMenuItem5, gbmMenuItem6, gbmMenuItem7 };
|
static const char* const menuOptionsGBM[] PROGMEM = { gbmMenuItem1, gbmMenuItem2, gbmMenuItem3, gbmMenuItem4, gbmMenuItem5, gbmMenuItem6, gbmMenuItem7 };
|
||||||
|
|
||||||
void gbmMenu() {
|
void gbmMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 7 options to choose from
|
// create menu with title and 7 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -185,6 +184,9 @@ void gbmMenu() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_GBM() {
|
void setup_GBM() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set RST(PH0) to Input
|
// Set RST(PH0) to Input
|
||||||
DDRH &= ~(1 << 0);
|
DDRH &= ~(1 << 0);
|
||||||
// Activate Internal Pullup Resistors
|
// Activate Internal Pullup Resistors
|
||||||
|
@ -109,6 +109,9 @@ byte readByte_GBS(word myAddress) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup_GBSmart() {
|
void setup_GBSmart() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// take from setup_GB
|
// take from setup_GB
|
||||||
// Set RST(PH0) to Input
|
// Set RST(PH0) to Input
|
||||||
DDRH &= ~(1 << 0);
|
DDRH &= ~(1 << 0);
|
||||||
@ -145,7 +148,6 @@ void setup_GBSmart() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void gbSmartMenu() {
|
void gbSmartMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
uint8_t mainMenu;
|
uint8_t mainMenu;
|
||||||
|
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
|
@ -99,6 +99,9 @@ static const char intvMenuItem3[] PROGMEM = "Set Mapper + Size";
|
|||||||
static const char* const menuOptionsINTV[] PROGMEM = { intvMenuItem1, intvMenuItem2, intvMenuItem3, string_reset2 };
|
static const char* const menuOptionsINTV[] PROGMEM = { intvMenuItem1, intvMenuItem2, intvMenuItem3, string_reset2 };
|
||||||
|
|
||||||
void setup_INTV() {
|
void setup_INTV() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output (UNUSED)
|
// Set Address Pins to Output (UNUSED)
|
||||||
//A0-A7
|
//A0-A7
|
||||||
DDRF = 0xFF;
|
DDRF = 0xFF;
|
||||||
@ -135,7 +138,6 @@ void setup_INTV() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void intvMenu() {
|
void intvMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsINTV, 4);
|
convertPgm(menuOptionsINTV, 4);
|
||||||
uint8_t mainMenu = question_box(F("INTELLIVISION MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("INTELLIVISION MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ word addrhi;
|
|||||||
word addrlo;
|
word addrlo;
|
||||||
word chksum;
|
word chksum;
|
||||||
boolean is32x = 0;
|
boolean is32x = 0;
|
||||||
|
boolean isSVP = 0;
|
||||||
|
|
||||||
//***********************************************
|
//***********************************************
|
||||||
// EEPROM SAVE TYPES
|
// EEPROM SAVE TYPES
|
||||||
@ -86,7 +87,7 @@ unsigned long bramSize = 0;
|
|||||||
boolean realtec = 0;
|
boolean realtec = 0;
|
||||||
|
|
||||||
#ifndef DEFAULT_VALUE_segaSram16bit
|
#ifndef DEFAULT_VALUE_segaSram16bit
|
||||||
#define DEFAULT_VALUE_segaSram16bit 0
|
#define DEFAULT_VALUE_segaSram16bit 0
|
||||||
#endif
|
#endif
|
||||||
int segaSram16bit = DEFAULT_VALUE_segaSram16bit;
|
int segaSram16bit = DEFAULT_VALUE_segaSram16bit;
|
||||||
|
|
||||||
@ -183,6 +184,11 @@ void mdLoadConf() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void pulse_clock(int n) {
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
PORTH ^= (1 << 1);
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Menu
|
Menu
|
||||||
*****************************************/
|
*****************************************/
|
||||||
@ -211,7 +217,6 @@ static const char* const menuOptionsSCD[] PROGMEM = { SCDMenuItem1, SCDMenuItem2
|
|||||||
|
|
||||||
// Sega start menu
|
// Sega start menu
|
||||||
void mdMenu() {
|
void mdMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 4 options to choose from
|
// create menu with title and 4 options to choose from
|
||||||
unsigned char mdDev;
|
unsigned char mdDev;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -308,7 +313,7 @@ void mdCartMenu() {
|
|||||||
readRealtec_MD();
|
readRealtec_MD();
|
||||||
} else {
|
} else {
|
||||||
readROM_MD();
|
readROM_MD();
|
||||||
// Calculate and compare CRC32 with nointro
|
// Calculate and compare CRC32 with database
|
||||||
if (is32x)
|
if (is32x)
|
||||||
//database, crcString, renamerom, offset
|
//database, crcString, renamerom, offset
|
||||||
compareCRC("32x.txt", 0, 1, 0);
|
compareCRC("32x.txt", 0, 1, 0);
|
||||||
@ -458,6 +463,9 @@ void segaCDMenu() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_MD() {
|
void setup_MD() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
#ifdef use_md_conf
|
#ifdef use_md_conf
|
||||||
mdLoadConf();
|
mdLoadConf();
|
||||||
#endif
|
#endif
|
||||||
@ -473,18 +481,24 @@ void setup_MD() {
|
|||||||
// Set Control Pins to Output RST(PH0) CLK(PH1) CS(PH3) WRH(PH4) WRL(PH5) OE(PH6)
|
// Set Control Pins to Output RST(PH0) CLK(PH1) CS(PH3) WRH(PH4) WRL(PH5) OE(PH6)
|
||||||
DDRH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
|
DDRH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
|
||||||
|
|
||||||
// Set TIME(PJ0) to Output
|
// Set TIME(PJ0), AS(PJ1) to Output
|
||||||
DDRJ |= (1 << 0);
|
DDRJ |= (1 << 0) | (1 << 1);
|
||||||
|
|
||||||
|
//set ASEL(PG5) to Output
|
||||||
|
DDRG |= (1 << 5);
|
||||||
|
|
||||||
// Set Data Pins (D0-D15) to Input
|
// Set Data Pins (D0-D15) to Input
|
||||||
DDRC = 0x00;
|
DDRC = 0x00;
|
||||||
DDRA = 0x00;
|
DDRA = 0x00;
|
||||||
|
|
||||||
// Setting RST(PH0) CLK(PH1) CS(PH3) WRH(PH4) WRL(PH5) OE(PH6) HIGH
|
// Setting RST(PH0) CS(PH3) WRH(PH4) WRL(PH5) OE(PH6) HIGH
|
||||||
PORTH |= (1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
|
PORTH |= (1 << 0) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6);
|
||||||
|
|
||||||
// Setting TIME(PJ0) HIGH
|
// Setting TIME(PJ0) AS(PJ1) HIGH
|
||||||
PORTJ |= (1 << 0);
|
PORTJ |= (1 << 0) | (1 << 1);
|
||||||
|
|
||||||
|
// setting ASEL(PG5) HIGH
|
||||||
|
PORTG |= (1 << 5);
|
||||||
|
|
||||||
delay(200);
|
delay(200);
|
||||||
|
|
||||||
@ -556,6 +570,12 @@ word readWord_MD(unsigned long myAddress) {
|
|||||||
PORTH &= ~(1 << 3);
|
PORTH &= ~(1 << 3);
|
||||||
// Setting OE(PH6) LOW
|
// Setting OE(PH6) LOW
|
||||||
PORTH &= ~(1 << 6);
|
PORTH &= ~(1 << 6);
|
||||||
|
// Setting AS(PJ1) LOW
|
||||||
|
PORTJ &= ~(1 << 1);
|
||||||
|
// Setting ASEL(PG5) LOW
|
||||||
|
PORTG &= ~(1 << 5);
|
||||||
|
// Pulse CLK(PH1), needed for SVP enhanced carts
|
||||||
|
pulse_clock(10);
|
||||||
|
|
||||||
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
||||||
NOP;
|
NOP;
|
||||||
@ -572,6 +592,12 @@ word readWord_MD(unsigned long myAddress) {
|
|||||||
PORTH |= (1 << 3);
|
PORTH |= (1 << 3);
|
||||||
// Setting OE(PH6) HIGH
|
// Setting OE(PH6) HIGH
|
||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
|
// Setting AS(PJ1) HIGH
|
||||||
|
PORTJ |= (1 << 1);
|
||||||
|
// Setting ASEL(PG5) HIGH
|
||||||
|
PORTG |= (1 << 5);
|
||||||
|
// Pulse CLK(PH1), needed for SVP enhanced carts
|
||||||
|
pulse_clock(10);
|
||||||
|
|
||||||
// these 6x nop delays have been here before, unknown what they mean
|
// these 6x nop delays have been here before, unknown what they mean
|
||||||
NOP;
|
NOP;
|
||||||
@ -718,6 +744,12 @@ void getCartInfo_MD() {
|
|||||||
id[c + 1] = loByte;
|
id[c + 1] = loByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Identify games using SVP chip
|
||||||
|
if (!strncmp("GM MK-1229 ", id, 11) || !strncmp("GM G-7001 ", id, 11)) // Virtua Racing (E/U/J)
|
||||||
|
isSVP = 1;
|
||||||
|
else
|
||||||
|
isSVP = 0;
|
||||||
|
|
||||||
// Fix cartridge sizes according to no-intro database
|
// Fix cartridge sizes according to no-intro database
|
||||||
if (cartSize == 0x400000) {
|
if (cartSize == 0x400000) {
|
||||||
switch (chksum) {
|
switch (chksum) {
|
||||||
@ -1414,6 +1446,14 @@ void readROM_MD() {
|
|||||||
PORTH &= ~(1 << 3);
|
PORTH &= ~(1 << 3);
|
||||||
// Setting OE(PH6) LOW
|
// Setting OE(PH6) LOW
|
||||||
PORTH &= ~(1 << 6);
|
PORTH &= ~(1 << 6);
|
||||||
|
// Setting AS(PJ1) LOW
|
||||||
|
PORTJ &= ~(1 << 1);
|
||||||
|
// Setting ASEL(PG5) LOW
|
||||||
|
PORTG &= ~(1 << 5);
|
||||||
|
// Pulse CLK(PH1)
|
||||||
|
if (isSVP)
|
||||||
|
pulse_clock(10);
|
||||||
|
|
||||||
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
||||||
NOP;
|
NOP;
|
||||||
NOP;
|
NOP;
|
||||||
@ -1430,6 +1470,13 @@ void readROM_MD() {
|
|||||||
PORTH |= (1 << 3);
|
PORTH |= (1 << 3);
|
||||||
// Setting OE(PH6) HIGH
|
// Setting OE(PH6) HIGH
|
||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
|
// Setting AS(PJ1) HIGH
|
||||||
|
PORTJ |= (1 << 1);
|
||||||
|
// Setting ASEL(PG5) HIGH
|
||||||
|
PORTG |= (1 << 5);
|
||||||
|
// Pulse CLK(PH1)
|
||||||
|
if (isSVP)
|
||||||
|
pulse_clock(10);
|
||||||
|
|
||||||
// Skip first 256 words
|
// Skip first 256 words
|
||||||
if (((currBuffer == 0) && (currWord >= 256)) || (currBuffer > 0)) {
|
if (((currBuffer == 0) && (currWord >= 256)) || (currBuffer > 0)) {
|
||||||
@ -1463,6 +1510,14 @@ void readROM_MD() {
|
|||||||
PORTH &= ~(1 << 3);
|
PORTH &= ~(1 << 3);
|
||||||
// Setting OE(PH6) LOW
|
// Setting OE(PH6) LOW
|
||||||
PORTH &= ~(1 << 6);
|
PORTH &= ~(1 << 6);
|
||||||
|
// Setting AS(PJ1) LOW
|
||||||
|
PORTJ &= ~(1 << 1);
|
||||||
|
// Setting ASEL(PG5) LOW
|
||||||
|
PORTG &= ~(1 << 5);
|
||||||
|
// Pulse CLK(PH1)
|
||||||
|
if (isSVP)
|
||||||
|
pulse_clock(10);
|
||||||
|
|
||||||
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
||||||
NOP;
|
NOP;
|
||||||
NOP;
|
NOP;
|
||||||
@ -1479,6 +1534,13 @@ void readROM_MD() {
|
|||||||
PORTH |= (1 << 3);
|
PORTH |= (1 << 3);
|
||||||
// Setting OE(PH6) HIGH
|
// Setting OE(PH6) HIGH
|
||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
|
// Setting AS(PJ1) HIGH
|
||||||
|
PORTJ |= (1 << 1);
|
||||||
|
// Setting ASEL(PG5) HIGH
|
||||||
|
PORTG |= (1 << 5);
|
||||||
|
// Pulse CLK(PH1)
|
||||||
|
if (isSVP)
|
||||||
|
pulse_clock(10);
|
||||||
|
|
||||||
// Skip first 256 words
|
// Skip first 256 words
|
||||||
if (((currBuffer == 0) && (currWord >= 256)) || (currBuffer > 0)) {
|
if (((currBuffer == 0) && (currWord >= 256)) || (currBuffer > 0)) {
|
||||||
@ -1513,6 +1575,14 @@ void readROM_MD() {
|
|||||||
PORTH &= ~(1 << 3);
|
PORTH &= ~(1 << 3);
|
||||||
// Setting OE(PH6) LOW
|
// Setting OE(PH6) LOW
|
||||||
PORTH &= ~(1 << 6);
|
PORTH &= ~(1 << 6);
|
||||||
|
// Setting AS(PJ1) LOW
|
||||||
|
PORTJ &= ~(1 << 1);
|
||||||
|
// Setting ASEL(PG5) LOW
|
||||||
|
PORTG &= ~(1 << 5);
|
||||||
|
// Pulse CLK(PH1)
|
||||||
|
if (isSVP)
|
||||||
|
PORTH ^= (1 << 1);
|
||||||
|
|
||||||
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
// most MD ROMs are 200ns, comparable to SNES > use similar access delay of 6 x 62.5 = 375ns
|
||||||
NOP;
|
NOP;
|
||||||
NOP;
|
NOP;
|
||||||
@ -1529,6 +1599,13 @@ void readROM_MD() {
|
|||||||
PORTH |= (1 << 3);
|
PORTH |= (1 << 3);
|
||||||
// Setting OE(PH6) HIGH
|
// Setting OE(PH6) HIGH
|
||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
|
// Setting AS(PJ1) HIGH
|
||||||
|
PORTJ |= (1 << 1);
|
||||||
|
// Setting ASEL(PG5) HIGH
|
||||||
|
PORTG |= (1 << 5);
|
||||||
|
// Pulse CLK(PH1)
|
||||||
|
if (isSVP)
|
||||||
|
PORTH ^= (1 << 1);
|
||||||
|
|
||||||
calcCKSSonic2 += ((buffer[d] << 8) | buffer[d + 1]);
|
calcCKSSonic2 += ((buffer[d] << 8) | buffer[d + 1]);
|
||||||
d += 2;
|
d += 2;
|
||||||
@ -2006,13 +2083,12 @@ void busyCheck_MD() {
|
|||||||
//******************************************
|
//******************************************
|
||||||
// EEPROM Functions
|
// EEPROM Functions
|
||||||
//******************************************
|
//******************************************
|
||||||
void EepromInit(byte eepmode) { // Acclaim Type 2
|
void EepromInit(byte eepmode) { // Acclaim Type 2
|
||||||
PORTF = 0x00; // ADDR A0-A7
|
PORTF = 0x00; // ADDR A0-A7
|
||||||
PORTK = 0x00; // ADDR A8-A15
|
PORTK = 0x00; // ADDR A8-A15
|
||||||
PORTL = 0x10; // ADDR A16-A23
|
PORTL = 0x10; // ADDR A16-A23
|
||||||
PORTA = 0x00; // DATA D8-D15
|
PORTA = 0x00; // DATA D8-D15
|
||||||
PORTH |= (1 << 0); // /RES HIGH
|
PORTH |= (1 << 0); // /RES HIGH
|
||||||
|
|
||||||
PORTC = eepmode; // EEPROM Switch: 0 = Enable (Read EEPROM), 1 = Disable (Read ROM)
|
PORTC = eepmode; // EEPROM Switch: 0 = Enable (Read EEPROM), 1 = Disable (Read ROM)
|
||||||
PORTH &= ~(1 << 3); // CE LOW
|
PORTH &= ~(1 << 3); // CE LOW
|
||||||
PORTH &= ~(1 << 4) & ~(1 << 5); // /UDSW + /LDSW LOW
|
PORTH &= ~(1 << 4) & ~(1 << 5); // /UDSW + /LDSW LOW
|
||||||
@ -2250,7 +2326,6 @@ void EepromSet1() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EepromDevice() { // 24C02+
|
void EepromDevice() { // 24C02+
|
||||||
EepromSet1();
|
EepromSet1();
|
||||||
EepromSet0();
|
EepromSet0();
|
||||||
|
1662
Cart_Reader/MSX.ino
Normal file
1662
Cart_Reader/MSX.ino
Normal file
File diff suppressed because it is too large
Load Diff
@ -114,7 +114,6 @@ static const char* const sectorOptionsN64[] PROGMEM = { N64SectorItem1, N64Secto
|
|||||||
|
|
||||||
// N64 start menu
|
// N64 start menu
|
||||||
void n64Menu() {
|
void n64Menu() {
|
||||||
setVoltage(VOLTS_SET_3V3);
|
|
||||||
// create menu with title and 5 options to choose from
|
// create menu with title and 5 options to choose from
|
||||||
unsigned char n64Dev;
|
unsigned char n64Dev;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -400,6 +399,9 @@ void n64CartMenu() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_N64_Controller() {
|
void setup_N64_Controller() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
// Output a low signal
|
// Output a low signal
|
||||||
PORTH &= ~(1 << 4);
|
PORTH &= ~(1 << 4);
|
||||||
// Set Controller Data Pin(PH4) to Input
|
// Set Controller Data Pin(PH4) to Input
|
||||||
@ -407,6 +409,9 @@ void setup_N64_Controller() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup_N64_Cart() {
|
void setup_N64_Cart() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
// Set Address Pins to Output and set them low
|
// Set Address Pins to Output and set them low
|
||||||
//A0-A7
|
//A0-A7
|
||||||
DDRF = 0xFF;
|
DDRF = 0xFF;
|
||||||
@ -1052,7 +1057,7 @@ void nextscreen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void controllerTest_Display() {
|
void controllerTest_Display() {
|
||||||
int mode = 0;
|
boolean cmode = 1;
|
||||||
|
|
||||||
//name of the current displayed result
|
//name of the current displayed result
|
||||||
String anastick = "";
|
String anastick = "";
|
||||||
@ -1162,7 +1167,7 @@ void controllerTest_Display() {
|
|||||||
display.drawStr(36, 8, "Range Test");
|
display.drawStr(36, 8, "Range Test");
|
||||||
display.drawLine(0, 9, 128, 9);
|
display.drawLine(0, 9, 128, 9);
|
||||||
|
|
||||||
if (mode == 0) {
|
if (cmode == 0) {
|
||||||
// Print Stick X Value
|
// Print Stick X Value
|
||||||
String stickx = String("X:" + String(N64_status.stick_x, DEC) + " ");
|
String stickx = String("X:" + String(N64_status.stick_x, DEC) + " ");
|
||||||
printSTR(stickx, 22 + 54, 26);
|
printSTR(stickx, 22 + 54, 26);
|
||||||
@ -1186,7 +1191,7 @@ void controllerTest_Display() {
|
|||||||
display.drawPixel(10 + xax - 68 / 4, 12 + yax + 68 / 4);
|
display.drawPixel(10 + xax - 68 / 4, 12 + yax + 68 / 4);
|
||||||
|
|
||||||
//Draw Analog Stick
|
//Draw Analog Stick
|
||||||
if (mode == 1) {
|
if (cmode == 1) {
|
||||||
display.drawPixel(10 + xax + N64_status.stick_x / 4, 12 + yax - N64_status.stick_y / 4);
|
display.drawPixel(10 + xax + N64_status.stick_x / 4, 12 + yax - N64_status.stick_y / 4);
|
||||||
//Update LCD
|
//Update LCD
|
||||||
display.updateDisplay();
|
display.updateDisplay();
|
||||||
@ -1199,11 +1204,11 @@ void controllerTest_Display() {
|
|||||||
|
|
||||||
// switch mode
|
// switch mode
|
||||||
if (button == "Press a button" && lastbutton == "Z") {
|
if (button == "Press a button" && lastbutton == "Z") {
|
||||||
if (mode == 0) {
|
if (cmode == 0) {
|
||||||
mode = 1;
|
cmode = 1;
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
} else {
|
} else {
|
||||||
mode = 0;
|
cmode = 0;
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1635
Cart_Reader/NES.ino
1635
Cart_Reader/NES.ino
File diff suppressed because it is too large
Load Diff
@ -21,6 +21,9 @@ uint8_t manufacturerID;
|
|||||||
uint8_t deviceID;
|
uint8_t deviceID;
|
||||||
|
|
||||||
void setup_NGP() {
|
void setup_NGP() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
// A0 - A7
|
// A0 - A7
|
||||||
DDRF = 0xff;
|
DDRF = 0xff;
|
||||||
// A8 - A15
|
// A8 - A15
|
||||||
@ -52,7 +55,6 @@ void setup_NGP() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ngpMenu() {
|
void ngpMenu() {
|
||||||
setVoltage(VOLTS_SET_3V3);
|
|
||||||
uint8_t mainMenu;
|
uint8_t mainMenu;
|
||||||
|
|
||||||
convertPgm(menuOptionsNGP, 4);
|
convertPgm(menuOptionsNGP, 4);
|
||||||
|
@ -69,6 +69,9 @@ static const char ody2MenuItem4[] PROGMEM = "Reset";
|
|||||||
static const char* const menuOptionsODY2[] PROGMEM = { ody2MenuItem1, ody2MenuItem2, ody2MenuItem3, ody2MenuItem4 };
|
static const char* const menuOptionsODY2[] PROGMEM = { ody2MenuItem1, ody2MenuItem2, ody2MenuItem3, ody2MenuItem4 };
|
||||||
|
|
||||||
void setup_ODY2() {
|
void setup_ODY2() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
// Odyssey 2 uses A0-A13 [A14-A23 UNUSED]
|
// Odyssey 2 uses A0-A13 [A14-A23 UNUSED]
|
||||||
//A0-A7
|
//A0-A7
|
||||||
@ -110,7 +113,6 @@ void setup_ODY2() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ody2Menu() {
|
void ody2Menu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsODY2, 4);
|
convertPgm(menuOptionsODY2, 4);
|
||||||
uint8_t mainMenu = question_box(F("ODYSSEY 2 MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("ODYSSEY 2 MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
/*==== VARIABLES ==================================================*/
|
/*==== VARIABLES ==================================================*/
|
||||||
|
|
||||||
// Firmware Version
|
// Firmware Version
|
||||||
char ver[5] = "12.5";
|
char ver[5] = "12.6";
|
||||||
|
|
||||||
// Clock speed
|
// Clock speed
|
||||||
unsigned long clock = CS_16MHZ;
|
unsigned long clock = CS_16MHZ;
|
||||||
@ -173,55 +173,76 @@ VOLTS setVoltage(VOLTS volts) {
|
|||||||
switch(volts) {
|
switch(volts) {
|
||||||
/* 5V */
|
/* 5V */
|
||||||
case VOLTS_SET_5V:
|
case VOLTS_SET_5V:
|
||||||
if (clock == CS_16MHZ && volts == VOLTS_SET_5V) return VOLTS_SUCCESS; // Just return if already as requested
|
if (
|
||||||
|
#if defined(ENABLE_3V3FIX)
|
||||||
|
clock == CS_16MHZ
|
||||||
|
#endif
|
||||||
|
#if defined(ENABLE_VSELECT) && defined(ENABLE_3V3FIX)
|
||||||
|
&&
|
||||||
|
#endif
|
||||||
|
#if defined(ENABLE_VSELECT)
|
||||||
|
VOLTS_SET_5V == voltage
|
||||||
|
#endif
|
||||||
|
) return VOLTS_SUCCESS; // Just return if already as requested
|
||||||
|
|
||||||
// Adjust voltage high if VSELECT is available
|
// Adjust voltage high if VSELECT is available
|
||||||
#if defined(ENABLE_VSELECT)
|
#if defined(ENABLE_VSELECT)
|
||||||
PORTD &= ~(1 << 7); /*[1]*/
|
PORTD &= ~(1 << 7); /*[1]*/
|
||||||
voltage = VOLTS_SET_5V;
|
voltage = VOLTS_SET_5V;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Adjust clock speed when 3V3FIX is enabled
|
// Adjust clock speed when 3V3FIX is enabled
|
||||||
#if defined(ENABLE_3V3FIX)
|
#if defined(ENABLE_3V3FIX)
|
||||||
// Stop serial if running
|
// Stop serial if running
|
||||||
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
||||||
ClockedSerial.end();
|
ClockedSerial.end();
|
||||||
#endif
|
#endif
|
||||||
// Set clock speed
|
// Set clock speed
|
||||||
clock = CS_16MHZ;
|
clock = CS_16MHZ;
|
||||||
setClockScale(volts); /*[2]*/
|
setClockScale(volts); /*[2]*/
|
||||||
// Restart serial
|
// Restart serial
|
||||||
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
||||||
ClockedSerial.begin(UPD_BAUD);
|
ClockedSerial.begin(UPD_BAUD);
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
clock = CS_16MHZ;
|
clock = CS_16MHZ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
return VOLTS_SUCCESS;
|
return VOLTS_SUCCESS;
|
||||||
|
|
||||||
/* 3.3V */
|
/* 3.3V */
|
||||||
case VOLTS_SET_3V3:
|
case VOLTS_SET_3V3:
|
||||||
if (clock == CS_8MHZ && volts == VOLTS_SET_3V3) return VOLTS_SUCCESS; // Just return if already as requested
|
if (
|
||||||
|
#if defined(ENABLE_3V3FIX)
|
||||||
|
clock == CS_8MHZ
|
||||||
|
#endif
|
||||||
|
#if defined(ENABLE_VSELECT) && defined(ENABLE_3V3FIX)
|
||||||
|
&&
|
||||||
|
#endif
|
||||||
|
#if defined(ENABLE_VSELECT)
|
||||||
|
VOLTS_SET_3V3 == voltage
|
||||||
|
#endif
|
||||||
|
) return VOLTS_SUCCESS; // Just return if already as requested
|
||||||
|
|
||||||
// Adjust clock speed when 3V3FIX is enabled
|
// Adjust clock speed when 3V3FIX is enabled
|
||||||
#if defined(ENABLE_3V3FIX)
|
#if defined(ENABLE_3V3FIX)
|
||||||
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
||||||
ClockedSerial.end();
|
ClockedSerial.end();
|
||||||
#endif
|
#endif
|
||||||
clock = CS_8MHZ;
|
// Set clock speed
|
||||||
setClockScale(volts); /*[2]*/
|
clock = CS_8MHZ;
|
||||||
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
setClockScale(volts); /*[2]*/
|
||||||
ClockedSerial.begin(UPD_BAUD);
|
#if !defined(enable_serial) && defined(ENABLE_UPDATER)
|
||||||
#endif
|
ClockedSerial.begin(UPD_BAUD);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Adjust voltage high if VSELECT is available
|
// Adjust voltage high if VSELECT is available
|
||||||
#if defined(ENABLE_VSELECT)
|
#if defined(ENABLE_VSELECT)
|
||||||
PORTD |= (1 << 7); /*[1]*/
|
PORTD |= (1 << 7); /*[1]*/
|
||||||
voltage = VOLTS_SET_3V3;
|
voltage = VOLTS_SET_3V3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
return VOLTS_SUCCESS;
|
return VOLTS_SUCCESS;
|
||||||
@ -232,6 +253,9 @@ VOLTS setVoltage(VOLTS volts) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
// The compiler will optimize this out when this condition is met.
|
||||||
|
// Yes, even though it has a return value it will only be compiled
|
||||||
|
// if something reads that value. Currently nothing does.
|
||||||
VOLTS setVoltage(VOLTS volts __attribute__((unused))) {
|
VOLTS setVoltage(VOLTS volts __attribute__((unused))) {
|
||||||
return VOLTS_NOTENABLED;
|
return VOLTS_NOTENABLED;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,6 @@ static const char *const menuOptionspceTC[] PROGMEM = { pceTCMenuItem1, string_r
|
|||||||
|
|
||||||
// PCE start menu
|
// PCE start menu
|
||||||
void pcsMenu(void) {
|
void pcsMenu(void) {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 3 options to choose from
|
// create menu with title and 3 options to choose from
|
||||||
unsigned char pceDev;
|
unsigned char pceDev;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -171,6 +170,9 @@ void pin_init_PCE(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup_cart_PCE(void) {
|
void setup_cart_PCE(void) {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set cicrstPin(PG1) to Output
|
// Set cicrstPin(PG1) to Output
|
||||||
DDRG |= (1 << 1);
|
DDRG |= (1 << 1);
|
||||||
// Output a high to disable CIC
|
// Output a high to disable CIC
|
||||||
@ -411,6 +413,12 @@ uint32_t detect_rom_size_PCE(void) {
|
|||||||
rom_size = 512;
|
rom_size = 512;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (rom_size == 384) {
|
||||||
|
//"CD-ROM² Super System Card (v3.0)(Japan)" or "Arcade Card Pro CD-ROM²"
|
||||||
|
if (read_byte_PCE(0x29D1) == 'V' && read_byte_PCE(0x29D2) == 'E' && read_byte_PCE(0x29D3) == 'R' && read_byte_PCE(0x29D4) == '.' && read_byte_PCE(0x29D5) == ' ' && read_byte_PCE(0x29D6) == '3' && read_byte_PCE(0x29D7) == '.' && read_byte_PCE(0x29D8) == '0' && read_byte_PCE(0x29D9) == '0') {
|
||||||
|
rom_size = 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return rom_size;
|
return rom_size;
|
||||||
}
|
}
|
||||||
|
@ -101,6 +101,9 @@ byte bank1;
|
|||||||
//******************************************
|
//******************************************
|
||||||
|
|
||||||
void setup_PCW() {
|
void setup_PCW() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A8-A15
|
//A8-A15
|
||||||
DDRK = 0xFF;
|
DDRK = 0xFF;
|
||||||
@ -141,7 +144,6 @@ static const char pcwmenuItem3[] PROGMEM = "Write SRAM";
|
|||||||
static const char* const menuOptionsPCW[] PROGMEM = { pcwmenuItem1, pcwmenuItem2, pcwmenuItem3, string_reset2 };
|
static const char* const menuOptionsPCW[] PROGMEM = { pcwmenuItem1, pcwmenuItem2, pcwmenuItem3, string_reset2 };
|
||||||
|
|
||||||
void pcwMenu() {
|
void pcwMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsPCW, 4);
|
convertPgm(menuOptionsPCW, 4);
|
||||||
uint8_t mainMenu = question_box(F(" POCKET CHALLENGE W"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F(" POCKET CHALLENGE W"), menuOptions, 4, 0);
|
||||||
|
|
||||||
@ -629,7 +631,7 @@ uint32_t detect_rom_size_PCW(void) {
|
|||||||
} else if (detect_2m == DETECTION_SIZE) {
|
} else if (detect_2m == DETECTION_SIZE) {
|
||||||
rom_size = 0x200000;
|
rom_size = 0x200000;
|
||||||
} else {
|
} else {
|
||||||
rom_size = 0x400000;
|
rom_size = 0x400000;
|
||||||
}
|
}
|
||||||
|
|
||||||
return rom_size;
|
return rom_size;
|
||||||
|
283
Cart_Reader/POKEMINI.ino
Normal file
283
Cart_Reader/POKEMINI.ino
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
//******************************************
|
||||||
|
// POKEMON MINI MODULE
|
||||||
|
//******************************************
|
||||||
|
#ifdef enable_POKE
|
||||||
|
// Pokemon Mini
|
||||||
|
// Cartridge Pinout
|
||||||
|
// 32P 0.5mm pitch
|
||||||
|
// NOTE: Console SMD connector - 33P 1.0mm pitch
|
||||||
|
//
|
||||||
|
// TOP ROW BOTTOM ROW
|
||||||
|
// +----------+
|
||||||
|
// VCC (3.3V) -| B1 |
|
||||||
|
// | A1 |- VCC (3.3V)
|
||||||
|
// A20 -| B2 |
|
||||||
|
// | A2 |- A9/A19
|
||||||
|
// A8/A18 -| B3 |
|
||||||
|
// | A3 |- A7/A17
|
||||||
|
// A6/A16 -| B4 |
|
||||||
|
// | A4 |- A5/A15
|
||||||
|
// A4/A14 -| B5 |
|
||||||
|
// | A5 |- A3/A13
|
||||||
|
// A2/A12 -| B6 |
|
||||||
|
// | A6 |- A1/A11
|
||||||
|
// A0/A10 -| B7 |
|
||||||
|
// | A7 |- VCC (3.3V)
|
||||||
|
// HALE -| B8 |
|
||||||
|
// | -- |
|
||||||
|
// LALE -| B9 |
|
||||||
|
// | A8 |- GND
|
||||||
|
// D0 -| B10 |
|
||||||
|
// | A9 |- D1
|
||||||
|
// D2 -| B11 |
|
||||||
|
// | A10 |- D3
|
||||||
|
// D4 -| B12 |
|
||||||
|
// | A11 |- D5
|
||||||
|
// D6 -| B13 |
|
||||||
|
// | A12 |- D7
|
||||||
|
// OE -| B14 |
|
||||||
|
// | A13 |- IRQ
|
||||||
|
// WE -| B15 |
|
||||||
|
// | A14 |- CS
|
||||||
|
// CARD_N -| B16 |
|
||||||
|
// | A15 |- GND
|
||||||
|
// GND -| B17 |
|
||||||
|
// +----------+
|
||||||
|
//
|
||||||
|
// TOP
|
||||||
|
// +----------------------------------------------------------------------------+
|
||||||
|
// | B17 B16 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 |
|
||||||
|
// LEFT | | RIGHT
|
||||||
|
// | A15 A14 A13 A12 A11 A10 A9 A8 --- A7 A6 A5 A4 A3 A2 A1 |
|
||||||
|
// +----------------------------------------------------------------------------+
|
||||||
|
// BOTTOM
|
||||||
|
|
||||||
|
// CONTROL PINS:
|
||||||
|
// HALE(PH0) - SNES RESET
|
||||||
|
// CS(PH3) - SNES /CS
|
||||||
|
// LALE(PH4) - SNES /IRQ
|
||||||
|
// WE(PH5) - SNES /WR
|
||||||
|
// OE(PH6) - SNES /RD
|
||||||
|
|
||||||
|
// NOTE: SET VOLTAGE TO 3.3V
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// Defines
|
||||||
|
//******************************************
|
||||||
|
#define HALE_ENABLE PORTH |= (1 << 0) // LATCH HIGH ADDRESS
|
||||||
|
#define HALE_DISABLE PORTH &= ~(1 << 0)
|
||||||
|
#define LALE_ENABLE PORTH |= (1 << 4) // LATCH LOW ADDRESS
|
||||||
|
#define LALE_DISABLE PORTH &= ~(1 << 4)
|
||||||
|
#define CS_ENABLE PORTH |= (1 << 3) // CHIP SELECT
|
||||||
|
#define CS_DISABLE PORTH &= ~(1 << 3)
|
||||||
|
#define WE_ENABLE PORTH |= (1 << 5) // WRITE ENABLE
|
||||||
|
#define WE_DISABLE PORTH &= ~(1 << 5)
|
||||||
|
#define OE_ENABLE PORTH |= (1 << 6) // OUTPUT ENABLE
|
||||||
|
#define OE_DISABLE PORTH &= ~(1 << 6)
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// Menu
|
||||||
|
//******************************************
|
||||||
|
// Base Menu
|
||||||
|
static const char pokeMenuItem1[] PROGMEM = "Read ROM";
|
||||||
|
static const char* const menuOptionsPOKE[] PROGMEM = { pokeMenuItem1, string_reset2 };
|
||||||
|
|
||||||
|
void pokeMenu() {
|
||||||
|
convertPgm(menuOptionsPOKE, 2);
|
||||||
|
uint8_t mainMenu = question_box(F("POKEMON MINI MENU"), menuOptions, 2, 0);
|
||||||
|
|
||||||
|
switch (mainMenu) {
|
||||||
|
case 0:
|
||||||
|
// Read ROM
|
||||||
|
sd.chdir("/");
|
||||||
|
readROM_POKE();
|
||||||
|
sd.chdir("/");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
// reset
|
||||||
|
resetArduino();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// SETUP
|
||||||
|
//******************************************
|
||||||
|
void setup_POKE() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
|
// Set Address Pins to Output
|
||||||
|
// Pokemon Mini uses A0-A9 (DUAL A10-A19) + A20 (CONNECT TO SNES A10) [A11-A23 UNUSED]
|
||||||
|
//A0-A7
|
||||||
|
DDRF = 0xFF;
|
||||||
|
//A8-A15
|
||||||
|
DDRK = 0xFF;
|
||||||
|
//A16-A23
|
||||||
|
DDRL = 0xFF;
|
||||||
|
|
||||||
|
// Set Control Pins to Output
|
||||||
|
// LALE(PH0) ---(PH1) CS(PH3) HALE(PH4) WE(PH5) OE(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 LOW (DISABLE)
|
||||||
|
// LALE(PH0) CS(PH3) HALE(PH4) WE(PH5) OE(PH6)
|
||||||
|
PORTH &= ~(1 << 0) & ~(1 << 3) & ~(1 << 4) & ~(1 << 5) & ~(1 << 6);
|
||||||
|
|
||||||
|
// SET CS HIGH
|
||||||
|
PORTH |= (1 << 3); // CS HIGH (ENABLE)
|
||||||
|
|
||||||
|
// Set Unused Data Pins (PA0-PA7) to Output
|
||||||
|
DDRA = 0xFF;
|
||||||
|
|
||||||
|
// Set Unused Pins HIGH
|
||||||
|
PORTA = 0xFF;
|
||||||
|
PORTH |= (1 << 1); // CPUCLK(PH1)
|
||||||
|
PORTL = 0xFF; // A16-A23
|
||||||
|
PORTJ |= (1 << 0); // TIME(PJ0)
|
||||||
|
|
||||||
|
strcpy(romName, "POKEMINI");
|
||||||
|
|
||||||
|
mode = mode_POKE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// READ DATA
|
||||||
|
//******************************************
|
||||||
|
uint8_t readData_POKE(uint32_t addr) {
|
||||||
|
// Address Lines A0-A20 = 1MB (ALL ROMS ARE 512K)
|
||||||
|
// 100000 = 1 0000 0000 0000 0000 0000 = 100 0000 0000|00 0000 0000
|
||||||
|
|
||||||
|
// High Address A10-A20
|
||||||
|
PORTF = (addr >> 10) & 0xFF; // A10-A17
|
||||||
|
PORTK = (addr >> 18) & 0x07; // A18-A20
|
||||||
|
HALE_ENABLE; // LATCH HIGH ADDRESS
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
HALE_DISABLE;
|
||||||
|
|
||||||
|
// Low Address A0-A9
|
||||||
|
PORTF = addr & 0xFF; // A0-A7
|
||||||
|
PORTK = (addr >> 8) & 0x03; // A8-A9
|
||||||
|
LALE_ENABLE; // LATCH LOW ADDRESS
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
|
||||||
|
// Read Enable
|
||||||
|
OE_ENABLE; // OE HIGH
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
|
||||||
|
// Data
|
||||||
|
uint8_t ret = PINC;
|
||||||
|
|
||||||
|
// Read Disable
|
||||||
|
OE_DISABLE; // OE LOW
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
|
||||||
|
LALE_DISABLE;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// WRITE DATA
|
||||||
|
//******************************************
|
||||||
|
void writeData_POKE(uint32_t addr, uint8_t data) {
|
||||||
|
// High Address A10-A20
|
||||||
|
PORTF = (addr >> 10) & 0xFF; // A10-A17
|
||||||
|
PORTK = (addr >> 18) & 0x07; // A18-A20
|
||||||
|
HALE_ENABLE; // LATCH HIGH ADDRESS
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
HALE_DISABLE;
|
||||||
|
|
||||||
|
// Low Address A0-A9
|
||||||
|
PORTF = addr & 0xFF; // A0-A7
|
||||||
|
PORTK = (addr >> 8) & 0x03; // A8-A9
|
||||||
|
LALE_ENABLE; // LATCH LOW ADDRESS
|
||||||
|
|
||||||
|
// Set Data to Output
|
||||||
|
DDRC = 0xFF;
|
||||||
|
PORTC = data;
|
||||||
|
|
||||||
|
// Write Enable
|
||||||
|
WE_ENABLE; // WE HIGH
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
|
||||||
|
// Write Disable
|
||||||
|
WE_DISABLE; // OE LOW
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
NOP;
|
||||||
|
|
||||||
|
LALE_DISABLE;
|
||||||
|
|
||||||
|
// Reset Data to Input
|
||||||
|
DDRC = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// READ ROM
|
||||||
|
//******************************************
|
||||||
|
|
||||||
|
void readROM_POKE() {
|
||||||
|
strcpy(fileName, romName);
|
||||||
|
strcat(fileName, ".min");
|
||||||
|
|
||||||
|
// create a new folder for storing rom file
|
||||||
|
EEPROM_readAnything(0, foldern);
|
||||||
|
sprintf(folder, "POKE/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);
|
||||||
|
|
||||||
|
for (uint32_t addr = 0; addr < 0x80000; addr += 512) { // 512K
|
||||||
|
for (int w = 0; w < 512; w++) {
|
||||||
|
uint8_t temp = readData_POKE(addr + w);
|
||||||
|
sdBuffer[w] = temp;
|
||||||
|
}
|
||||||
|
myFile.write(sdBuffer, 512);
|
||||||
|
}
|
||||||
|
myFile.close();
|
||||||
|
|
||||||
|
calcCRC(fileName, 0x80000, NULL, 0); // 512K
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
#endif
|
@ -50,7 +50,6 @@ static const char sfmGameMenuItem4[] PROGMEM = "Switch Game";
|
|||||||
static const char* const menuOptionsSFMGame[] PROGMEM = { sfmGameMenuItem1, sfmGameMenuItem2, sfmGameMenuItem3, sfmGameMenuItem4, string_reset2 };
|
static const char* const menuOptionsSFMGame[] PROGMEM = { sfmGameMenuItem1, sfmGameMenuItem2, sfmGameMenuItem3, sfmGameMenuItem4, string_reset2 };
|
||||||
|
|
||||||
void sfmMenu() {
|
void sfmMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 3 options to choose from
|
// create menu with title and 3 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -525,6 +524,9 @@ void getGames(char gameCode[8][20], boolean* hasMenu, byte* numGames) {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_SFM() {
|
void setup_SFM() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set cicrstPin(PG1) to Output
|
// Set cicrstPin(PG1) to Output
|
||||||
DDRG |= (1 << 1);
|
DDRG |= (1 << 1);
|
||||||
// Output a high signal to disable snesCIC
|
// Output a high signal to disable snesCIC
|
||||||
|
@ -26,31 +26,30 @@ static const char SMSRomSizeItem1[] PROGMEM = "8 KB";
|
|||||||
static const char SMSRomSizeItem2[] PROGMEM = "16 KB";
|
static const char SMSRomSizeItem2[] PROGMEM = "16 KB";
|
||||||
static const char SMSRomSizeItem3[] PROGMEM = "24 KB";
|
static const char SMSRomSizeItem3[] PROGMEM = "24 KB";
|
||||||
static const char SMSRomSizeItem4[] PROGMEM = "32 KB";
|
static const char SMSRomSizeItem4[] PROGMEM = "32 KB";
|
||||||
static const char SMSRomSizeItem5[] PROGMEM = "40 KB"; //SG-1000 40k mapping not yet supported
|
static const char SMSRomSizeItem5[] PROGMEM = "40 KB"; //SG-1000 40k mapping not yet supported
|
||||||
static const char SMSRomSizeItem6[] PROGMEM = "48 KB"; //SG-1000 40k mapping not yet supported
|
static const char SMSRomSizeItem6[] PROGMEM = "48 KB"; //SG-1000 40k mapping not yet supported
|
||||||
static const char SMSRomSizeItem7[] PROGMEM = "64 KB";
|
static const char SMSRomSizeItem7[] PROGMEM = "64 KB";
|
||||||
static const char SMSRomSizeItem8[] PROGMEM = "128 KB";
|
static const char SMSRomSizeItem8[] PROGMEM = "128 KB";
|
||||||
static const char SMSRomSizeItem9[] PROGMEM = "256 KB";
|
static const char SMSRomSizeItem9[] PROGMEM = "256 KB";
|
||||||
static const char SMSRomSizeItem10[] PROGMEM = "512 KB";
|
static const char SMSRomSizeItem10[] PROGMEM = "512 KB";
|
||||||
static const char SMSRomSizeItem11[] PROGMEM = "1024 KB";
|
static const char SMSRomSizeItem11[] PROGMEM = "1024 KB";
|
||||||
static const char* const SG1RomSizeMenu[] PROGMEM = { SMSRomSizeItem1, SMSRomSizeItem2, SMSRomSizeItem3, SMSRomSizeItem4}; // Rom sizes for SG-1000
|
static const char* const SG1RomSizeMenu[] PROGMEM = { SMSRomSizeItem1, SMSRomSizeItem2, SMSRomSizeItem3, SMSRomSizeItem4 }; // Rom sizes for SG-1000
|
||||||
static const char* const SMSRomSizeMenu[] PROGMEM = { SMSRomSizeItem4, SMSRomSizeItem7, SMSRomSizeItem8, SMSRomSizeItem9, SMSRomSizeItem10, SMSRomSizeItem11}; // Rom sizes for SMS and GG
|
static const char* const SMSRomSizeMenu[] PROGMEM = { SMSRomSizeItem4, SMSRomSizeItem7, SMSRomSizeItem8, SMSRomSizeItem9, SMSRomSizeItem10, SMSRomSizeItem11 }; // Rom sizes for SMS and GG
|
||||||
|
|
||||||
// Init systems
|
// Init systems
|
||||||
static bool system_sms = false; // SMS or MarkIII
|
static bool system_sms = false; // SMS or MarkIII
|
||||||
static bool system_gg = false; // GameGear
|
static bool system_gg = false; // GameGear
|
||||||
static bool system_sg1000 = false; // SG-1000
|
static bool system_sg1000 = false; // SG-1000
|
||||||
|
|
||||||
// Init adapters
|
// Init adapters
|
||||||
static bool adapter_raphnet = false; // raphet adapater (SMS-to-MD or MIII-to-MD)
|
static bool adapter_raphnet = false; // raphet adapater (SMS-to-MD or MIII-to-MD)
|
||||||
static bool adapter_retrode = false; // Retrode adapter (SMS-to-MD or GG-to-MD)
|
static bool adapter_retrode = false; // Retrode adapter (SMS-to-MD or GG-to-MD)
|
||||||
static bool adapter_retron = false; // Retron 3in1 adapter (SMS-to-MD or GG-to-MD)
|
static bool adapter_retron = false; // Retron 3in1 adapter (SMS-to-MD or GG-to-MD)
|
||||||
|
|
||||||
//*********************************************************
|
//*********************************************************
|
||||||
// Main menu with systems/adapters setups to choose from
|
// Main menu with systems/adapters setups to choose from
|
||||||
//*********************************************************
|
//*********************************************************
|
||||||
void smsMenu() {
|
void smsMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
unsigned char SMSSetup;
|
unsigned char SMSSetup;
|
||||||
convertPgm(SMSAdapterMenu, 6);
|
convertPgm(SMSAdapterMenu, 6);
|
||||||
SMSSetup = question_box(F("Select your setup"), menuOptions, 6, 0);
|
SMSSetup = question_box(F("Select your setup"), menuOptions, 6, 0);
|
||||||
@ -62,7 +61,7 @@ void smsMenu() {
|
|||||||
adapter_raphnet = true;
|
adapter_raphnet = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
// SMS with Retrode adapter
|
// SMS with Retrode adapter
|
||||||
system_sms = true;
|
system_sms = true;
|
||||||
adapter_retrode = true;
|
adapter_retrode = true;
|
||||||
@ -156,6 +155,9 @@ void smsOperations() {
|
|||||||
// Setup I/O
|
// Setup I/O
|
||||||
//********************************
|
//********************************
|
||||||
void setup_SMS() {
|
void setup_SMS() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A0-A7
|
//A0-A7
|
||||||
DDRF = 0xFF;
|
DDRF = 0xFF;
|
||||||
@ -178,7 +180,7 @@ void setup_SMS() {
|
|||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
// Setting WR(PL5) and RD(PL6) HIGH
|
// Setting WR(PL5) and RD(PL6) HIGH
|
||||||
PORTL |= (1 << 5) | (1 << 6);
|
PORTL |= (1 << 5) | (1 << 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
// For Raphnet and Retron adapters
|
// For Raphnet and Retron adapters
|
||||||
else {
|
else {
|
||||||
@ -215,7 +217,7 @@ void setup_SMS() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//*****************************************
|
//*****************************************
|
||||||
// Low level functions
|
// Low level functions
|
||||||
//*****************************************
|
//*****************************************
|
||||||
void writeByte_SMS(word myAddress, byte myData) {
|
void writeByte_SMS(word myAddress, byte myData) {
|
||||||
if (adapter_retrode && system_gg) {
|
if (adapter_retrode && system_gg) {
|
||||||
@ -354,7 +356,7 @@ byte readNibble(byte data, byte number) {
|
|||||||
//*****************************************
|
//*****************************************
|
||||||
// Cartridges functions
|
// Cartridges functions
|
||||||
//*****************************************
|
//*****************************************
|
||||||
void getCartInfo_SMS() {
|
void getCartInfo_SMS() {
|
||||||
// Get rom size
|
// Get rom size
|
||||||
switch (readNibble(readByte_SMS(0x7FFF), 0)) {
|
switch (readNibble(readByte_SMS(0x7FFF), 0)) {
|
||||||
// Adding UL gets rid of integer overflow compiler warning
|
// Adding UL gets rid of integer overflow compiler warning
|
||||||
@ -450,7 +452,7 @@ void getCartInfo_SMS() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If "TMR SEGA" header is not found
|
// If "TMR SEGA" header is not found
|
||||||
if (strcmp(romName, "TMR SEGA") != 0) {
|
if (strcmp(romName, "TMR SEGA") != 0) {
|
||||||
// Set rom size manually
|
// Set rom size manually
|
||||||
unsigned char SMSRomSize;
|
unsigned char SMSRomSize;
|
||||||
|
|
||||||
@ -460,23 +462,23 @@ void getCartInfo_SMS() {
|
|||||||
SMSRomSize = question_box(F("Select ROM size"), menuOptions, 4, 0);
|
SMSRomSize = question_box(F("Select ROM size"), menuOptions, 4, 0);
|
||||||
switch (SMSRomSize) {
|
switch (SMSRomSize) {
|
||||||
case 0:
|
case 0:
|
||||||
cartSize = 8 * 1024UL; // 8KB
|
cartSize = 8 * 1024UL; // 8KB
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
cartSize = 16 * 1024UL; // 16KB
|
cartSize = 16 * 1024UL; // 16KB
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
cartSize = 24 * 1024UL; // 24KB
|
cartSize = 24 * 1024UL; // 24KB
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
cartSize = 32 * 1024UL; // 32KB
|
cartSize = 32 * 1024UL; // 32KB
|
||||||
break;
|
break;
|
||||||
//case 4:
|
//case 4:
|
||||||
// cartSize = 40 * 1024UL; // 40KB
|
// cartSize = 40 * 1024UL; // 40KB
|
||||||
// break;
|
// break;
|
||||||
//case 5:
|
//case 5:
|
||||||
// cartSize = 48 * 1024UL; // 48KB
|
// cartSize = 48 * 1024UL; // 48KB
|
||||||
// break;
|
// break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Rom sizes for SMS and GG
|
// Rom sizes for SMS and GG
|
||||||
@ -484,22 +486,22 @@ void getCartInfo_SMS() {
|
|||||||
SMSRomSize = question_box(F("Select ROM size"), menuOptions, 6, 0);
|
SMSRomSize = question_box(F("Select ROM size"), menuOptions, 6, 0);
|
||||||
switch (SMSRomSize) {
|
switch (SMSRomSize) {
|
||||||
case 0:
|
case 0:
|
||||||
cartSize = 32 * 1024UL; // 32KB
|
cartSize = 32 * 1024UL; // 32KB
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
cartSize = 64 * 1024UL; // 64KB
|
cartSize = 64 * 1024UL; // 64KB
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
cartSize = 128 * 1024UL; // 128KB
|
cartSize = 128 * 1024UL; // 128KB
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
cartSize = 256 * 1024UL; // 256KB
|
cartSize = 256 * 1024UL; // 256KB
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
cartSize = 512 * 1024UL; // 512KB
|
cartSize = 512 * 1024UL; // 512KB
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
cartSize = 1024 * 1024UL; // 1MB
|
cartSize = 1024 * 1024UL; // 1MB
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -534,13 +536,13 @@ void getCartInfo_SMS() {
|
|||||||
println_Msg(F(" "));
|
println_Msg(F(" "));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for user input
|
// Wait for user input
|
||||||
#if (defined(enable_LCD) || defined(enable_OLED))
|
#if (defined(enable_LCD) || defined(enable_OLED))
|
||||||
// Prints string out of the common strings array either with or without newline
|
// Prints string out of the common strings array either with or without newline
|
||||||
print_STR(press_button_STR, 1);
|
print_STR(press_button_STR, 1);
|
||||||
display_Update();
|
display_Update();
|
||||||
wait();
|
wait();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Turn off LED
|
// Turn off LED
|
||||||
setColor_RGB(0, 0, 0);
|
setColor_RGB(0, 0, 0);
|
||||||
@ -647,9 +649,9 @@ void readROM_SMS() {
|
|||||||
compareCRC("sg1000.txt", 0, 1, 0);
|
compareCRC("sg1000.txt", 0, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef global_log
|
#ifdef global_log
|
||||||
save_log();
|
save_log();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
print_STR(press_button_STR, 1);
|
print_STR(press_button_STR, 1);
|
||||||
}
|
}
|
||||||
@ -709,7 +711,7 @@ void readSRAM_SMS() {
|
|||||||
print_STR(press_button_STR, 1);
|
print_STR(press_button_STR, 1);
|
||||||
display_Update();
|
display_Update();
|
||||||
} else {
|
} else {
|
||||||
print_FatalError(sd_error_STR);
|
print_FatalError(sd_error_STR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,6 @@ static const char* const menuOptionsRepro[] PROGMEM = { reproMenuItem1, reproMen
|
|||||||
|
|
||||||
// SNES repro menu
|
// SNES repro menu
|
||||||
void reproMenu() {
|
void reproMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 6 options to choose from
|
// create menu with title and 6 options to choose from
|
||||||
unsigned char snsRepro;
|
unsigned char snsRepro;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -133,7 +132,6 @@ void reproMenu() {
|
|||||||
|
|
||||||
// SNES start menu
|
// SNES start menu
|
||||||
void snsMenu() {
|
void snsMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 6 options to choose from
|
// create menu with title and 6 options to choose from
|
||||||
unsigned char snsCart;
|
unsigned char snsCart;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -174,6 +172,7 @@ void snsMenu() {
|
|||||||
|
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_FLASH
|
||||||
case 3:
|
case 3:
|
||||||
|
setup_FlashVoltage();
|
||||||
reproMenu();
|
reproMenu();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
@ -192,7 +191,6 @@ void snsMenu() {
|
|||||||
|
|
||||||
// SNES Menu
|
// SNES Menu
|
||||||
void snesMenu() {
|
void snesMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 7 options to choose from
|
// create menu with title and 7 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -388,6 +386,9 @@ void stopSnesClocks_resetCic_resetCart() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_Snes() {
|
void setup_Snes() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set cicrstPin(PG1) to Output
|
// Set cicrstPin(PG1) to Output
|
||||||
DDRG |= (1 << 1);
|
DDRG |= (1 << 1);
|
||||||
// Output a high signal until we're ready to start
|
// Output a high signal until we're ready to start
|
||||||
|
@ -17,6 +17,7 @@ static const char acanMenuItem6[] PROGMEM = "Flash repro";
|
|||||||
static const char *const menuOptionsAcan[] PROGMEM = { acanMenuItem1, acanMenuItem2, acanMenuItem3, acanMenuItem4, acanMenuItem5, string_reset2, acanMenuItem6 };
|
static const char *const menuOptionsAcan[] PROGMEM = { acanMenuItem1, acanMenuItem2, acanMenuItem3, acanMenuItem4, acanMenuItem5, string_reset2, acanMenuItem6 };
|
||||||
|
|
||||||
void setup_SuprAcan() {
|
void setup_SuprAcan() {
|
||||||
|
// Request 5V
|
||||||
setVoltage(VOLTS_SET_5V);
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// addr as output
|
// addr as output
|
||||||
|
@ -42,7 +42,6 @@ static const char* const menuOptionsSVFlash[] PROGMEM = { svFlashMenuItem1, svFl
|
|||||||
|
|
||||||
|
|
||||||
void svMenu() {
|
void svMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
// create menu with title and 3 options to choose from
|
// create menu with title and 3 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
@ -102,6 +101,9 @@ void svMenu() {
|
|||||||
Setup
|
Setup
|
||||||
*****************************************/
|
*****************************************/
|
||||||
void setup_SV() {
|
void setup_SV() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set cicrstPin(PG1) to Output
|
// Set cicrstPin(PG1) to Output
|
||||||
DDRG |= (1 << 1);
|
DDRG |= (1 << 1);
|
||||||
// Output a high signal until we're ready to start
|
// Output a high signal until we're ready to start
|
||||||
|
@ -56,6 +56,9 @@
|
|||||||
//******************************************
|
//******************************************
|
||||||
|
|
||||||
void setup_VBOY() {
|
void setup_VBOY() {
|
||||||
|
// Request 5V
|
||||||
|
setVoltage(VOLTS_SET_5V);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A0-A7
|
//A0-A7
|
||||||
DDRF = 0xFF;
|
DDRF = 0xFF;
|
||||||
@ -101,7 +104,6 @@ static const char vboyMenuItem3[] PROGMEM = "Write SRAM";
|
|||||||
static const char* const menuOptionsVBOY[] PROGMEM = { vboyMenuItem1, vboyMenuItem2, vboyMenuItem3, string_reset2 };
|
static const char* const menuOptionsVBOY[] PROGMEM = { vboyMenuItem1, vboyMenuItem2, vboyMenuItem3, string_reset2 };
|
||||||
|
|
||||||
void vboyMenu() {
|
void vboyMenu() {
|
||||||
setVoltage(VOLTS_SET_5V);
|
|
||||||
convertPgm(menuOptionsVBOY, 4);
|
convertPgm(menuOptionsVBOY, 4);
|
||||||
uint8_t mainMenu = question_box(F("VIRTUALBOY MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("VIRTUALBOY MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -46,6 +46,9 @@ static uint8_t wsEepromShiftReg[2];
|
|||||||
static boolean wsWitch = false;
|
static boolean wsWitch = false;
|
||||||
|
|
||||||
void setup_WS() {
|
void setup_WS() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
// A-1 - A6
|
// A-1 - A6
|
||||||
DDRF = 0xff;
|
DDRF = 0xff;
|
||||||
// A7 - A14
|
// A7 - A14
|
||||||
@ -117,7 +120,6 @@ static boolean headerCheck() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void wsMenu() {
|
void wsMenu() {
|
||||||
setVoltage(VOLTS_SET_3V3);
|
|
||||||
uint8_t mainMenu = (wsWitch ? 5 : 4);
|
uint8_t mainMenu = (wsWitch ? 5 : 4);
|
||||||
|
|
||||||
convertPgm(menuOptionsWS, mainMenu);
|
convertPgm(menuOptionsWS, mainMenu);
|
||||||
|
@ -53,6 +53,9 @@ byte newwsvsize;
|
|||||||
//******************************************
|
//******************************************
|
||||||
|
|
||||||
void setup_WSV() {
|
void setup_WSV() {
|
||||||
|
// Request 3.3V
|
||||||
|
setVoltage(VOLTS_SET_3V3);
|
||||||
|
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A0-A7
|
//A0-A7
|
||||||
DDRF = 0xFF;
|
DDRF = 0xFF;
|
||||||
@ -106,7 +109,6 @@ static const char wsvMenuItem3[] PROGMEM = "Set Size";
|
|||||||
static const char* const menuOptionsSV[] PROGMEM = { wsvMenuItem1, wsvMenuItem2, wsvMenuItem3, string_reset2 };
|
static const char* const menuOptionsSV[] PROGMEM = { wsvMenuItem1, wsvMenuItem2, wsvMenuItem3, string_reset2 };
|
||||||
|
|
||||||
void wsvMenu() {
|
void wsvMenu() {
|
||||||
setVoltage(VOLTS_SET_3V3);
|
|
||||||
convertPgm(menuOptionsSV, 4);
|
convertPgm(menuOptionsSV, 4);
|
||||||
uint8_t mainMenu = question_box(F("SUPERVISION MENU"), menuOptions, 4, 0);
|
uint8_t mainMenu = question_box(F("SUPERVISION MENU"), menuOptions, 4, 0);
|
||||||
|
|
||||||
|
@ -50,6 +50,8 @@ Happy making. 🔧🔨😊
|
|||||||
- Fairchild Channel F
|
- Fairchild Channel F
|
||||||
- Magnavox Odyssey 2
|
- Magnavox Odyssey 2
|
||||||
- Super A'Can
|
- Super A'Can
|
||||||
|
- MSX
|
||||||
|
- Pokemon Mini
|
||||||
|
|
||||||
#### Open Source Licenses:
|
#### Open Source Licenses:
|
||||||
- Software(everything in Cart_Reader folder) = GPL v3
|
- Software(everything in Cart_Reader folder) = GPL v3
|
||||||
|
@ -78,11 +78,6 @@ BA58ED29,716956B4,4E45531A100010080000070700000001
|
|||||||
Name
|
Name
|
||||||
CRC32 (prg+chr combined), CRC32 (512 bytes), iNES Header
|
CRC32 (prg+chr combined), CRC32 (512 bytes), iNES Header
|
||||||
|
|
||||||
## nes20db.txt
|
|
||||||
This file stores NES 2.0 data about NES ROMs, generated from [NewRisingSun's nes20db XML file on NesDev](https://forums.nesdev.org/viewtopic.php?t=19940). Converting updated versions of the XML file to this format requires compiling and running [NES20Tool](https://github.com/Kreeblah/NES20Tool) with the following options at runtime:
|
|
||||||
|
|
||||||
NES20Tool -operation transform -xml-file nes20db.xml -xml-format nes20db -format-transform-type sanni -format-transform-destination nes20db.txt
|
|
||||||
|
|
||||||
## snes.txt
|
## snes.txt
|
||||||
This file is needed for odd sized SNES games like Final Fantasy (JAP), Super Metroid(US/JAP) or Tales of Symphonia. Without this file you will get overdumps and the checksum calculation will fail.
|
This file is needed for odd sized SNES games like Final Fantasy (JAP), Super Metroid(US/JAP) or Tales of Symphonia. Without this file you will get overdumps and the checksum calculation will fail.
|
||||||
|
|
||||||
|
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 Gargamel's Castle,248,19
|
Smurf Rescue in Gargamels Castle,248,19
|
||||||
Smurfs Save the Day,248,44
|
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,248,21
|
Time Pilot,248,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
|
||||||
|
727
sd/msxcart.txt
Normal file
727
sd/msxcart.txt
Normal file
@ -0,0 +1,727 @@
|
|||||||
|
1942,1,5,0,0
|
||||||
|
10-Yard Fight,0,3,0,15
|
||||||
|
3-D Golf Simulation,0,2,0,24
|
||||||
|
3D Tennis,0,2,0,30
|
||||||
|
3D Water Driver,0,2,0,20
|
||||||
|
A Life Planet M36,1,5,0,26
|
||||||
|
A Ressha de Ikou,2,5,2,28
|
||||||
|
A.E.,0,2,0,27
|
||||||
|
A1 Spirit,9,5,0,15
|
||||||
|
AcroJet,2,5,0,20
|
||||||
|
Actman,0,2,0,18
|
||||||
|
Adven' Chuta!,0,2,0,17
|
||||||
|
Adventure Island,0,3,0,24
|
||||||
|
Afternoon Angels,0,3,0,27
|
||||||
|
Albatross,0,3,0,27
|
||||||
|
Alcazar,0,2,0,20
|
||||||
|
Aleste,2,6,0,18
|
||||||
|
Algeese no Tsubasa,1,6,0,17
|
||||||
|
Alibaba and 40 Thieves,0,2,0,29
|
||||||
|
Alien 8,0,3,0,33
|
||||||
|
Aliens,2,5,0,18
|
||||||
|
Alpha Roid,0,3,0,17
|
||||||
|
Alpha Squadron,0,2,0,21
|
||||||
|
American Soccer,1,4,0,25
|
||||||
|
American Truck,0,3,0,26
|
||||||
|
Anaza,0,3,0,25
|
||||||
|
Androgynus,2,6,0,16
|
||||||
|
Angelo,0,2,0,21
|
||||||
|
Animal Land,1,5,0,17
|
||||||
|
Antarctic Adventure,0,2,0,22
|
||||||
|
Anty,0,2,0,30
|
||||||
|
Aoki Ookami - Genchou Hishi,7,8,4,15
|
||||||
|
Aoki Ookami - Genghis Khan,7,7,2,38
|
||||||
|
Aquapolis SOS,0,2,0,37
|
||||||
|
Aquattack,0,2,0,24
|
||||||
|
Aramo,0,3,0,20
|
||||||
|
Arctic,2,5,0,16
|
||||||
|
Arkanoid,0,3,0,17
|
||||||
|
Arkanoid II,1,5,0,19
|
||||||
|
AshGuine,1,5,0,22
|
||||||
|
AshGuine Story II,1,6,0,19
|
||||||
|
AshGuine Story III,1,6,0,28
|
||||||
|
Athletic Ball,0,2,0,29
|
||||||
|
Athletic Land,0,2,0,24
|
||||||
|
Attack Four,0,3,0,24
|
||||||
|
B.C.'s Quest,0,3,0,22
|
||||||
|
B.C. II - Grog's Revenge,0,3,0,23
|
||||||
|
Back to the Future,0,3,0,35
|
||||||
|
Backgammon,0,3,0,29
|
||||||
|
Balance,0,2,0,21
|
||||||
|
Banana,0,2,0,18
|
||||||
|
Bank Panic,0,3,0,17
|
||||||
|
Baseball Craze,0,3,0,21
|
||||||
|
BASIC Lessons 1,0,3,0,25
|
||||||
|
BASIC Lessons 2,0,3,0,26
|
||||||
|
Batman,1,4,0,26
|
||||||
|
Batten Tanuki no Daibouken,0,3,0,17
|
||||||
|
Battle Cross,0,2,0,37
|
||||||
|
Battle Ship Clapton II,0,2,0,23
|
||||||
|
Beamrider,0,3,0,33
|
||||||
|
Becky,0,2,0,20
|
||||||
|
Bee & Flower,0,2,0,16
|
||||||
|
Black Onyx,0,3,0,23
|
||||||
|
Black Onyx II,2,5,0,21
|
||||||
|
Blockade Runner,0,2,0,24
|
||||||
|
Boggy '84,0,1,0,26
|
||||||
|
Boing Boing,0,1,0,20
|
||||||
|
Bokosuka Wars,0,2,0,22
|
||||||
|
Bomber King,1,5,0,24
|
||||||
|
Bomber Man,0,1,0,22
|
||||||
|
Boogie Woogi Jungle,0,2,0,21
|
||||||
|
Boomerang,0,2,0,30
|
||||||
|
Borfesu,2,5,0,20
|
||||||
|
Bosconian (Star Destroyer),0,3,0,18
|
||||||
|
Bouken Roman,0,3,0,37
|
||||||
|
Boulder Dash,0,3,0,23
|
||||||
|
Brain,0,2,0,23
|
||||||
|
Break In,0,4,0,16
|
||||||
|
Break Out,0,2,0,19
|
||||||
|
Bruce Lee,0,3,0,20
|
||||||
|
Bubble Bobble,1,5,0,20
|
||||||
|
Bug Bomb,0,2,0,24
|
||||||
|
Bull and Mighty's Slim Chance,0,3,0,19
|
||||||
|
Burger Time,0,3,0,40
|
||||||
|
Butamaru Pants,0,2,0,22
|
||||||
|
Cabbage Patch Kids,0,2,0,25
|
||||||
|
Candoo Ninja,0,2,0,29
|
||||||
|
Cannon Ball,0,2,0,23
|
||||||
|
Captain Chef,0,1,0,22
|
||||||
|
Captain Cosmo,0,2,0,23
|
||||||
|
Car Fighter,0,2,0,24
|
||||||
|
Car Jamboree,0,3,0,22
|
||||||
|
Car Race,0,2,0,23
|
||||||
|
Carry's Great Escape,0,3,0,19
|
||||||
|
Casio Daishogai Keiba,0,2,0,31
|
||||||
|
Casio World Open,0,3,0,32
|
||||||
|
Castle,0,3,0,27
|
||||||
|
Castle Excellent,0,3,0,17
|
||||||
|
Chack'n Pop,0,2,0,27
|
||||||
|
Challenge Derby,0,3,0,22
|
||||||
|
Champion Boxing,0,3,0,26
|
||||||
|
Champion Ice Hockey,0,3,0,26
|
||||||
|
Champion Kendo,0,3,0,30
|
||||||
|
Champion Pro Wrestling,0,3,0,25
|
||||||
|
Champion Soccer,0,2,0,33
|
||||||
|
Championship Lode Runner,0,3,0,26
|
||||||
|
Checkers in Tan Tan Tanuki,0,2,0,35
|
||||||
|
Cheese,0,2,0,37
|
||||||
|
Cheese 2,0,3,0,17
|
||||||
|
Chess,0,2,0,19
|
||||||
|
Chima Chima,0,3,0,16
|
||||||
|
Choplifter,0,3,0,22
|
||||||
|
ChoroQ,0,2,0,21
|
||||||
|
Circus Charlie,0,2,0,17
|
||||||
|
City Connection,0,3,0,25
|
||||||
|
Coaster Race,0,3,0,26
|
||||||
|
Cockpit,2,5,0,23
|
||||||
|
Color Ball,0,2,0,18
|
||||||
|
Color Midway,0,2,0,21
|
||||||
|
Come On! Picot,0,3,0,23
|
||||||
|
Comet Tail,0,2,0,25
|
||||||
|
Comic Bakery,0,2,0,21
|
||||||
|
Computer Billiards,0,1,0,23
|
||||||
|
Computer Master,0,3,0,29
|
||||||
|
Computer Othello,0,2,0,26
|
||||||
|
Computer Pachinko,0,2,0,27
|
||||||
|
Computer Painting,0,2,0,28
|
||||||
|
Con-dori,0,2,0,28
|
||||||
|
Contra,9,5,0,19
|
||||||
|
Cosmo Explorer,0,3,0,17
|
||||||
|
Courageous Perseus,0,3,0,25
|
||||||
|
Craze,2,5,0,29
|
||||||
|
Crazy Bullet,0,2,0,16
|
||||||
|
Crazy Cars,0,3,0,23
|
||||||
|
Crazy Train,0,1,0,21
|
||||||
|
Creamy Lemon - Star Trap,0,3,0,22
|
||||||
|
Crest of the Dragon King,0,3,0,35
|
||||||
|
Crimson,1,6,0,35
|
||||||
|
Cross Blaim,3,4,0,18
|
||||||
|
Crusader,0,3,0,22
|
||||||
|
C-So!,0,2,0,19
|
||||||
|
Dai Dassou,0,3,0,16
|
||||||
|
Daikoukai Jidai,7,7,4,21
|
||||||
|
Daisenryaku,2,5,1,26
|
||||||
|
Daiva Story 4,1,6,0,22
|
||||||
|
Dam Busters,0,3,0,24
|
||||||
|
DangerX4,0,2,0,22
|
||||||
|
Darwin 4078,1,5,0,19
|
||||||
|
David II,0,2,0,22
|
||||||
|
Dawn Patrol,0,4,0,19
|
||||||
|
D-Day,0,2,0,22
|
||||||
|
Decathlon,0,3,0,16
|
||||||
|
Deep Dungeon,1,5,2,20
|
||||||
|
Deep Dungeon II,1,5,2,23
|
||||||
|
Deep Forest,1,5,0,26
|
||||||
|
Demon Crystal,0,3,0,22
|
||||||
|
Designer's Pencil,0,2,0,24
|
||||||
|
Devil's Heaven,0,2,0,28
|
||||||
|
Dig Dug,0,3,0,25
|
||||||
|
Digital Devil Monogatari,1,5,0,18
|
||||||
|
Dip Dip,0,2,0,35
|
||||||
|
Dires,1,5,1,18
|
||||||
|
Doki Doki Penguin Land,0,3,0,16
|
||||||
|
Door Door mkII,0,2,0,33
|
||||||
|
Dorodon,0,2,0,25
|
||||||
|
Double Vision,1,6,0,18
|
||||||
|
Dr. Copy,0,2,0,24
|
||||||
|
Dragon Attack,0,2,0,19
|
||||||
|
Dragon Buster,1,5,0,24
|
||||||
|
Dragon Quest,1,5,0,24
|
||||||
|
Dragon Quest II,1,6,0,23
|
||||||
|
Dragon Slayer,0,3,0,26
|
||||||
|
Dragon Slayer II,1,6,2,24
|
||||||
|
Dragon Slayer IV,1,6,0,27
|
||||||
|
Dragon Slayer Jr.,2,5,0,27
|
||||||
|
Drainer,0,3,0,28
|
||||||
|
Druaga no Tou,0,3,0,18
|
||||||
|
Druid,1,5,0,24
|
||||||
|
Dungeon Hunter,2,5,0,16
|
||||||
|
Dungeon Master,0,3,0,25
|
||||||
|
Dunk Shot,0,3,0,25
|
||||||
|
DX7 Voicing Program,0,2,0,20
|
||||||
|
Dynamite Bowl,2,5,0,30
|
||||||
|
E.I.,0,2,0,24
|
||||||
|
Eagle Fighter,0,3,0,15
|
||||||
|
Eddy II,0,2,0,24
|
||||||
|
Eggerland Mystery,0,3,0,18
|
||||||
|
Eidolon,1,5,0,28
|
||||||
|
Eiwa Jiten,1,5,0,18
|
||||||
|
Elevator Action,0,3,0,21
|
||||||
|
Elthlead,1,5,2,26
|
||||||
|
Erika,0,3,0,19
|
||||||
|
Europe Sensen,7,8,4,16
|
||||||
|
Exchanger,0,2,0,24
|
||||||
|
Exciting Baseball,0,2,0,20
|
||||||
|
Exciting Jockey,0,2,0,28
|
||||||
|
Exerion,0,2,0,26
|
||||||
|
Exerion II,0,2,0,18
|
||||||
|
Exoide-Z,0,2,0,21
|
||||||
|
Exoide-Z Area 5,0,3,0,19
|
||||||
|
F-1 Spirit,9,5,0,26
|
||||||
|
F-15 Strike Eagle,1,5,0,21
|
||||||
|
F16 Fighting Falcon,0,2,0,28
|
||||||
|
Fairy,0,2,0,30
|
||||||
|
Fairy Land Story,1,5,0,16
|
||||||
|
Famicle Parodic,1,6,0,27
|
||||||
|
Family Automation Language,0,3,0,26
|
||||||
|
Family Billiards,1,4,0,37
|
||||||
|
Family Boxing,1,6,0,27
|
||||||
|
Family Stadium Pro Baseball,2,6,0,24
|
||||||
|
Fandom Library #1,1,6,0,38
|
||||||
|
Fandom Library #2,1,6,0,28
|
||||||
|
Fandom Library #3,1,6,0,28
|
||||||
|
Fantasy Zone,1,5,0,28
|
||||||
|
Fantasy Zone II,2,6,0,23
|
||||||
|
Farm Kit,0,3,0,26
|
||||||
|
Fathom,0,3,0,19
|
||||||
|
FB-01 Voicing Program,0,3,0,17
|
||||||
|
Final Justice,0,2,0,32
|
||||||
|
Final Mahjong,0,2,0,24
|
||||||
|
Final Mystery Murder Club,1,7,0,24
|
||||||
|
Final Zone Wolf,1,5,0,36
|
||||||
|
Fire Ball,1,5,0,26
|
||||||
|
Fire Rescue,0,2,0,20
|
||||||
|
Firebird,8,5,0,22
|
||||||
|
Flappy Limited '85,0,2,0,19
|
||||||
|
Flash Splash,0,1,0,29
|
||||||
|
Fleet Commander II,1,6,0,23
|
||||||
|
Flicky,0,3,0,29
|
||||||
|
Flight Deck II,0,4,0,17
|
||||||
|
Flight Simulator,1,5,0,25
|
||||||
|
Flipper Slipper,0,2,0,27
|
||||||
|
Flower Card a Carp,0,2,0,26
|
||||||
|
FM Music Composer,0,2,0,29
|
||||||
|
FM Music Composer II,0,3,0,28
|
||||||
|
FM Music Macro,0,3,0,31
|
||||||
|
FM Musiwriter,0,2,0,25
|
||||||
|
FM PAC,11,4,2,24
|
||||||
|
FM Voicing Program,0,2,0,18
|
||||||
|
Formation Z,0,3,0,29
|
||||||
|
Four Battle Mahjong,0,2,0,22
|
||||||
|
Frogger,0,2,0,30
|
||||||
|
Front Line,0,2,0,18
|
||||||
|
Fruit Search,0,2,0,21
|
||||||
|
Funky Mouse,0,2,0,23
|
||||||
|
G.P. World,0,3,0,22
|
||||||
|
Gakuen Monogatari,2,6,0,21
|
||||||
|
Galactic Drifter Vifam,0,2,0,28
|
||||||
|
Galaga,0,3,0,33
|
||||||
|
Galaxian,0,1,0,17
|
||||||
|
Gall Force,2,5,0,19
|
||||||
|
Gambler Jiko Chuushinha,1,6,0,21
|
||||||
|
Gambler Jiko Chuushinha 2,1,6,0,34
|
||||||
|
Game Land,0,3,0,36
|
||||||
|
Game Master,0,2,0,20
|
||||||
|
Game Master II,4,5,2,22
|
||||||
|
Ganbare Goemon!,8,5,0,25
|
||||||
|
Gang Master,0,2,0,26
|
||||||
|
Garakuta,2,4,0,22
|
||||||
|
Garyuu Ou,1,6,0,19
|
||||||
|
Gate of Labyrinth,2,5,0,20
|
||||||
|
Gekitotsu Pennant Race,9,5,0,28
|
||||||
|
Gekitotsu Pennant Race 2,9,5,0,33
|
||||||
|
Ghost House,0,3,0,35
|
||||||
|
Ghostbusters,0,3,0,22
|
||||||
|
Girly Block,2,5,0,23
|
||||||
|
Glider,0,2,0,22
|
||||||
|
Goblin,0,4,0,17
|
||||||
|
Gojira vs 3 Daikaijuu,0,2,0,17
|
||||||
|
Gojira-kun,0,3,0,32
|
||||||
|
Gokiburi Daisakusen,0,2,0,21
|
||||||
|
Golf Game,0,2,0,30
|
||||||
|
Golgo 13 - Wolf's Nest,0,3,0,20
|
||||||
|
Golvellius,2,5,0,33
|
||||||
|
Gomoku Narabe,0,2,0,21
|
||||||
|
Goonies,0,3,0,24
|
||||||
|
Green Beret,0,3,0,18
|
||||||
|
Grog's Revenge,0,3,0,22
|
||||||
|
Guardic,0,3,0,25
|
||||||
|
Gulkave,0,3,0,18
|
||||||
|
Gun Fright,0,3,0,18
|
||||||
|
Gyrodine,0,3,0,21
|
||||||
|
H.E.R.O.,0,3,0,19
|
||||||
|
Hacker,2,5,0,19
|
||||||
|
Hades no Monshou,0,3,0,17
|
||||||
|
Hai no Majutsushi,8,5,0,27
|
||||||
|
Haja No Fuin,1,5,0,28
|
||||||
|
Hal Note,5,8,3,23
|
||||||
|
Han Seimei Senki Androgynus,2,6,0,19
|
||||||
|
Hanafuda,0,3,0,38
|
||||||
|
Hanafuda Koi Koi,0,2,0,19
|
||||||
|
Hang On,0,3,0,27
|
||||||
|
Harapeko Pakkun,0,1,0,18
|
||||||
|
Hard Ball,1,5,0,26
|
||||||
|
Harry Fox MSX Special,2,5,1,20
|
||||||
|
Harry Fox - Yuki no Maou Hen,6,4,0,32
|
||||||
|
Heavy Boxing,0,2,0,39
|
||||||
|
Heist,0,3,0,23
|
||||||
|
Heli-tank,0,2,0,16
|
||||||
|
Heroes of the Lance,1,7,2,20
|
||||||
|
Hi no Tori,8,5,0,30
|
||||||
|
Higemaru Makai Shima,2,5,0,21
|
||||||
|
High School! Kimengumi,1,5,0,31
|
||||||
|
High Way Star,0,2,0,33
|
||||||
|
Hisha,0,2,0,24
|
||||||
|
Hitsuji Yai,0,1,0,16
|
||||||
|
Hole in One,0,2,0,22
|
||||||
|
Hole in One Professional,0,3,0,22
|
||||||
|
Hole in One Special,2,5,0,35
|
||||||
|
Home Calc,0,2,0,30
|
||||||
|
Home Writer,0,2,0,20
|
||||||
|
Hudson 3D Golf,0,3,0,22
|
||||||
|
Hustle! Chumy,0,2,0,25
|
||||||
|
Hydlide,0,3,0,24
|
||||||
|
Hydlide II,2,5,1,18
|
||||||
|
Hydlide 3,1,7,0,21
|
||||||
|
Hyper Olympic 1,0,2,0,20
|
||||||
|
Hyper Olympic 2,0,2,0,26
|
||||||
|
Hyper Rally,0,2,0,26
|
||||||
|
Hyper Sports 1,0,2,0,22
|
||||||
|
Hyper Sports 2,0,2,0,25
|
||||||
|
Hyper Sports 3,0,3,0,25
|
||||||
|
Ice World,0,2,0,25
|
||||||
|
Ide Yousuke Meijin Mahjong,1,5,0,20
|
||||||
|
Iga Ninpou Chou,0,2,0,37
|
||||||
|
Iga Ninpou Chou 2,0,3,0,26
|
||||||
|
Ikari,2,6,0,28
|
||||||
|
Indian no Bouken,0,2,0,16
|
||||||
|
Inemuri-ryuu Asada Mahjong,2,5,0,27
|
||||||
|
Inindou,7,8,4,37
|
||||||
|
Iriegas - Theseus,0,2,0,18
|
||||||
|
Iriegas Episode IV,0,2,0,28
|
||||||
|
Inspecteur Z,0,3,0,29
|
||||||
|
Ishin no Arashi,7,7,4,23
|
||||||
|
Issunboushi no Donnamondai,0,3,0,26
|
||||||
|
J.P. Winkle,0,3,0,37
|
||||||
|
Jagur,2,5,0,22
|
||||||
|
Janka,0,2,0,16
|
||||||
|
Jansei,2,5,1,16
|
||||||
|
Janyu Mahjong,0,3,0,17
|
||||||
|
Japanese MSX-Write,1,7,0,24
|
||||||
|
Japanese MSX-Write II,1,7,2,29
|
||||||
|
Jet Set Willy,0,2,0,32
|
||||||
|
Jigsaw Set,0,2,0,24
|
||||||
|
Jissen - 4-nin Mahjong,0,2,0,21
|
||||||
|
Jong Kyo,0,2,0,33
|
||||||
|
Joytelop,0,3,0,19
|
||||||
|
Jump,0,2,0,19
|
||||||
|
Jump Coaster,0,1,0,15
|
||||||
|
Junior High English Words 1,0,3,0,23
|
||||||
|
Juno First,0,3,0,38
|
||||||
|
Kage no Densetsu,0,3,0,21
|
||||||
|
Kakikukekon,0,2,0,27
|
||||||
|
Karamaru's Strange Trip,0,2,0,22
|
||||||
|
Karuizawa,1,5,0,34
|
||||||
|
Kazuo Morita's Othello,0,3,0,20
|
||||||
|
Kempelen Chess,2,5,0,33
|
||||||
|
Keystone Kapers,0,3,0,25
|
||||||
|
Kick It!,0,3,0,26
|
||||||
|
Kiki Kaikai,1,5,0,19
|
||||||
|
King & Balloon,0,3,0,22
|
||||||
|
King Knight,2,5,0,25
|
||||||
|
King Kong 2,8,5,0,22
|
||||||
|
King's Valley,0,2,0,22
|
||||||
|
King's Valley II,9,5,0,24
|
||||||
|
Kin-nikuman,0,3,0,27
|
||||||
|
Kisei,1,5,2,22
|
||||||
|
Kitahei,1,5,0,16
|
||||||
|
Knight Lore,0,3,0,18
|
||||||
|
Knightmare,0,3,0,22
|
||||||
|
Knightmare II,8,5,0,21
|
||||||
|
Knightmare III,8,6,0,24
|
||||||
|
Knither Special,2,5,0,25
|
||||||
|
Koji Tanigawa's Shougi,0,3,0,26
|
||||||
|
Koji Tanigawa's Shougi 2,1,5,2,33
|
||||||
|
Konami's Baseball,0,2,0,35
|
||||||
|
Konami's Billiards,0,1,0,28
|
||||||
|
Konami's Boxing,0,3,0,29
|
||||||
|
Konami's Football,0,3,0,26
|
||||||
|
Konami's Golf,0,2,0,28
|
||||||
|
Konami's Mahjong,0,3,0,24
|
||||||
|
Konami's Ping Pong,0,2,0,27
|
||||||
|
Konami's Soccer,0,3,0,29
|
||||||
|
Konami's Tennis,0,2,0,26
|
||||||
|
Koneko no Daibouken,0,3,0,26
|
||||||
|
Koronis Rift,2,6,0,30
|
||||||
|
Kung Fu Master,0,2,0,23
|
||||||
|
Kung Fu Taigun,0,2,0,25
|
||||||
|
L' Empereur,7,7,4,25
|
||||||
|
Labyrinth,1,6,0,22
|
||||||
|
Ladder Building,0,2,0,20
|
||||||
|
Laptick'2,0,3,0,26
|
||||||
|
Legend of Kage,0,3,0,20
|
||||||
|
Legend of Takeru,0,3,0,25
|
||||||
|
Let's Take the A-Train,2,5,2,27
|
||||||
|
Light Corridor,2,4,0,33
|
||||||
|
Lode Runner,0,3,0,25
|
||||||
|
Lode Runner II,0,3,0,22
|
||||||
|
Lord Over,0,2,0,25
|
||||||
|
Lot Lot,0,3,0,20
|
||||||
|
Lunar Ball,0,3,0,18
|
||||||
|
Lupin Sansei - Babylon,1,5,0,21
|
||||||
|
Lupin Sansei - Cagliostro,1,5,0,33
|
||||||
|
M36,1,5,0,36
|
||||||
|
Macross Countdown,0,3,0,14
|
||||||
|
Mad Rider,1,5,0,28
|
||||||
|
Mado Fuki Kaisha no Swing-kun,0,2,0,20
|
||||||
|
Magical Kid Wiz,0,3,0,40
|
||||||
|
Magical Tree,0,2,0,26
|
||||||
|
Magnum Prohibition 1931,2,5,0,23
|
||||||
|
Mahjong Friend,0,2,0,34
|
||||||
|
Maison Ikkoku - Kanketsu Hen,1,7,0,25
|
||||||
|
Maison Ikkoku - Omoide,1,6,0,39
|
||||||
|
Make-a-Face,0,1,0,33
|
||||||
|
Malaya no Hihou,2,5,0,22
|
||||||
|
Manes,0,2,0,26
|
||||||
|
Mappy,0,3,0,16
|
||||||
|
Marchen Veil I,1,5,0,16
|
||||||
|
Marine Battle,0,2,0,25
|
||||||
|
Mashou no Yakata Goblin,0,4,0,24
|
||||||
|
Megalopolis SOS,0,2,0,34
|
||||||
|
Meikyuu Shinwa,2,5,0,26
|
||||||
|
Metal Gear,8,5,0,25
|
||||||
|
Metal Gear 2,9,7,0,21
|
||||||
|
MIDI Macro,0,3,0,23
|
||||||
|
Midnight Brothers,0,3,0,21
|
||||||
|
Midnight Building,0,2,0,28
|
||||||
|
Mini Golf,0,3,0,28
|
||||||
|
Mirai,1,5,0,20
|
||||||
|
Mississippi Satsujinjiken,1,5,0,16
|
||||||
|
Mitsumega Toohru,1,5,0,36
|
||||||
|
Moai no Hihou,0,3,0,27
|
||||||
|
Mobile Planet Styllus,0,3,0,24
|
||||||
|
Mobile-Suit Gundam,0,3,0,32
|
||||||
|
Moero!! Nettou Yakyuu '88,1,6,0,29
|
||||||
|
Mo-Karimakka,0,3,0,36
|
||||||
|
Mole,0,2,0,23
|
||||||
|
Mole Mole 2,0,3,0,15
|
||||||
|
Monkey Academy,0,2,0,22
|
||||||
|
Monmon Kaibutsu,1,5,0,25
|
||||||
|
Monster's Fair,0,3,0,26
|
||||||
|
Moon Landing,0,2,0,25
|
||||||
|
Moon Patrol,0,2,0,23
|
||||||
|
Moonsweeper,0,3,0,22
|
||||||
|
Mopiranger,0,2,0,22
|
||||||
|
Morita Kazuo no Othello,0,3,0,21
|
||||||
|
Mouser,0,2,0,34
|
||||||
|
Mr. Chin,0,1,0,17
|
||||||
|
Mr. Do!,0,1,0,19
|
||||||
|
Mr. Do! vs Unicorns,0,2,0,18
|
||||||
|
Mr. Do's Wild Ride,0,2,0,30
|
||||||
|
MSX Baseball,0,2,0,29
|
||||||
|
MSX Baseball II,0,2,0,23
|
||||||
|
MSX Derby,0,2,0,26
|
||||||
|
MSX Rugby,0,2,0,20
|
||||||
|
MSX Shougi Game,0,3,0,20
|
||||||
|
MSX Soccer,0,2,0,26
|
||||||
|
MSX-21,0,2,0,21
|
||||||
|
MSX-AID,0,2,0,17
|
||||||
|
MSX-BASIC-kun,0,2,0,18
|
||||||
|
MSX-BASIC-kun Plus,0,2,0,24
|
||||||
|
MSX-Logo,0,3,0,29
|
||||||
|
Mugen Senshi Valis,1,5,0,19
|
||||||
|
Music Editor,0,2,0,29
|
||||||
|
Music Harmonizer 3,0,2,0,23
|
||||||
|
Music Studio G7,0,3,0,29
|
||||||
|
Nausicaa,0,2,0,26
|
||||||
|
Nekketsu Juudou,1,6,0,19
|
||||||
|
Nemesis,8,5,0,26
|
||||||
|
Nemesis 2,9,5,0,18
|
||||||
|
Nemesis 3,9,6,0,20
|
||||||
|
Nessen Koushien,0,2,0,20
|
||||||
|
New Horizon,1,5,0,26
|
||||||
|
Night Shade,0,3,0,22
|
||||||
|
Nihon-Shi Nenpyou,0,3,0,22
|
||||||
|
Ninja Jajamaru-kun,0,3,0,28
|
||||||
|
Ninja Princess,0,3,0,29
|
||||||
|
Ninja-kun,0,2,0,25
|
||||||
|
Ninja-kun - Asura no Shou,1,5,0,20
|
||||||
|
Ninja-kun - Majou no Bouken,0,3,0,36
|
||||||
|
Ninjya Kage,0,2,0,38
|
||||||
|
Nobunaga no Yabou - Bushou,7,8,4,22
|
||||||
|
Nobunaga no Yabou - Sengoku,7,7,4,37
|
||||||
|
Nobunaga no Yabou Zenkoku MSX,7,6,2,38
|
||||||
|
Nobunaga no Yabou Zenkoku MSX2,7,7,2,40
|
||||||
|
Nyan Nyan Pro Wrestling,0,3,0,41
|
||||||
|
Nyorols,0,2,0,34
|
||||||
|
Ogre,2,6,0,18
|
||||||
|
Oil's Well,0,3,0,15
|
||||||
|
O'Mac Farmer,0,2,0,21
|
||||||
|
Othello,0,3,0,23
|
||||||
|
Ouke no Tani,9,5,0,18
|
||||||
|
Out Run,1,6,0,23
|
||||||
|
Oyoide Tango,0,1,0,18
|
||||||
|
PAC,11,0,2,23
|
||||||
|
Pachi Pro Densetsu,1,5,0,15
|
||||||
|
Pachicom,0,3,0,29
|
||||||
|
Pachinko-U.F.O.,0,2,0,19
|
||||||
|
Pac-Man,0,3,0,26
|
||||||
|
Pac-Mania,1,6,0,18
|
||||||
|
Pai Panic,0,2,0,20
|
||||||
|
Pairs,0,2,0,20
|
||||||
|
Parodius,9,5,0,16
|
||||||
|
Pass Ball,0,2,0,19
|
||||||
|
Pastfinder,0,2,0,20
|
||||||
|
Payload,0,3,0,21
|
||||||
|
Peetan,0,1,0,18
|
||||||
|
Pegasus,0,3,0,17
|
||||||
|
Penguin Adventure,8,5,0,18
|
||||||
|
Penguin-kun Wars,0,3,0,28
|
||||||
|
Penguin-kun Wars 2,2,6,0,27
|
||||||
|
Picture Puzzle,0,1,0,29
|
||||||
|
Pillbox,0,2,0,25
|
||||||
|
Pinball Blaster,2,4,0,18
|
||||||
|
Pinball Maker,0,2,0,26
|
||||||
|
Pine Applin,0,2,0,24
|
||||||
|
Pinky Chase,0,2,0,22
|
||||||
|
Pipi,0,3,0,22
|
||||||
|
Pippols,0,2,0,15
|
||||||
|
Pitfall II,0,2,0,18
|
||||||
|
Pitfall!,0,2,0,21
|
||||||
|
Playball,0,3,0,19
|
||||||
|
Point X Senryou Sakusen,0,3,0,19
|
||||||
|
Police Story,0,3,0,34
|
||||||
|
Poppaq the Fish,0,2,0,23
|
||||||
|
Predator,1,5,0,26
|
||||||
|
Pretty Sheep,0,1,0,19
|
||||||
|
Price of Magik,2,4,0,23
|
||||||
|
Pro Yakyuu Family Stadium,2,6,0,25
|
||||||
|
Pro Yakyuu Fan,1,6,0,36
|
||||||
|
Professional Baseball,0,3,0,25
|
||||||
|
Professional Mahjong,0,3,0,32
|
||||||
|
Professional Mahjong Gokuu,2,5,1,31
|
||||||
|
Project A2,1,5,0,37
|
||||||
|
Protector,0,2,0,21
|
||||||
|
PSG Musiwriter,0,2,0,20
|
||||||
|
Psychic War,1,6,2,25
|
||||||
|
Puzzle Panic,0,3,0,22
|
||||||
|
Pyramid Warp,0,1,0,23
|
||||||
|
Q-bert,0,3,0,23
|
||||||
|
Quarth,9,5,0,17
|
||||||
|
Queen's Golf,0,2,0,17
|
||||||
|
Quinpl,1,6,0,23
|
||||||
|
Raccoon Dog,0,3,0,17
|
||||||
|
Raid on Bungeling Bay,0,3,0,22
|
||||||
|
Rally-X,0,3,0,32
|
||||||
|
Rambo,0,3,0,18
|
||||||
|
Rastan Saga,1,6,0,16
|
||||||
|
Real Tennis,0,1,0,22
|
||||||
|
Red Zone,0,2,0,22
|
||||||
|
Relics MSX,1,5,0,19
|
||||||
|
Relics MSX2,1,6,0,21
|
||||||
|
Renju & Ojama Dogs,0,2,0,22
|
||||||
|
Replicart,1,5,0,29
|
||||||
|
Return of Ishtar,2,6,0,20
|
||||||
|
Return of Jelda,1,5,0,27
|
||||||
|
Rick to Mick no Daibouken,1,5,0,26
|
||||||
|
Rise Out,0,2,0,36
|
||||||
|
River Raid,0,3,0,19
|
||||||
|
Road Fighter,0,2,0,21
|
||||||
|
Robo Wres 2001,2,5,0,23
|
||||||
|
Robofrog,0,2,0,25
|
||||||
|
Rockn' Bolt,0,2,0,19
|
||||||
|
Roger Rubbish,0,2,0,22
|
||||||
|
Roller Ball,0,2,0,24
|
||||||
|
Romancia,2,5,0,22
|
||||||
|
Rotors,0,2,0,19
|
||||||
|
Royal Blood,7,8,4,17
|
||||||
|
R-Type,12,7,0,22
|
||||||
|
Salamander,9,5,0,18
|
||||||
|
Sangokushi MSX,7,6,0,21
|
||||||
|
Sangokushi MSX2,7,7,4,25
|
||||||
|
Sangokushi II,7,8,4,26
|
||||||
|
Sasa,0,2,0,24
|
||||||
|
Scarlet 7,0,3,0,15
|
||||||
|
Scion,0,2,0,20
|
||||||
|
Scope On,0,2,0,16
|
||||||
|
Scramble Eggs,0,1,0,19
|
||||||
|
Scramble Formation,1,6,0,24
|
||||||
|
Sea Hunter,0,2,0,29
|
||||||
|
Secret Treasure of Moai,0,3,0,21
|
||||||
|
Seiken Acho,0,3,0,34
|
||||||
|
Seikima II Special,1,5,0,22
|
||||||
|
Senjo no Ookami,1,5,0,29
|
||||||
|
Senjyo,0,2,0,26
|
||||||
|
Sewer Sam,0,3,0,17
|
||||||
|
Shanghai,2,5,0,20
|
||||||
|
Shiryou Sensen,1,6,2,19
|
||||||
|
Shougi (Micro Cabin),0,2,0,25
|
||||||
|
Shougi (Pony),0,3,0,31
|
||||||
|
Shougi Expert,0,3,0,24
|
||||||
|
Shougi Meijin,0,3,0,24
|
||||||
|
Shougun,1,5,2,24
|
||||||
|
Shout Match,0,3,0,18
|
||||||
|
Simple ASM 1.0,0,2,0,22
|
||||||
|
Sinbad,0,2,0,25
|
||||||
|
Ski Command,0,2,0,17
|
||||||
|
Skooter,0,3,0,22
|
||||||
|
Sky Jaguar,0,2,0,18
|
||||||
|
Skygaldo,0,3,0,21
|
||||||
|
Slapshot,0,2,0,19
|
||||||
|
Small Boy's Quiz,0,3,0,19
|
||||||
|
Snake It,0,3,0,27
|
||||||
|
Sofia,1,4,0,19
|
||||||
|
Soukoban,0,3,0,16
|
||||||
|
Space Camp,0,3,0,19
|
||||||
|
Space Invaders,0,2,0,21
|
||||||
|
Space Manbow,9,6,0,25
|
||||||
|
Space Maze Attack,0,2,0,23
|
||||||
|
Space Trouble,0,1,0,28
|
||||||
|
Sparkie,0,3,0,24
|
||||||
|
Spelunker,0,3,0,18
|
||||||
|
Square Dancer,0,2,0,20
|
||||||
|
Squish'em,0,2,0,24
|
||||||
|
Star Blazer,0,2,0,20
|
||||||
|
Star Command,0,2,0,22
|
||||||
|
Star Trap,0,3,0,23
|
||||||
|
Star Virgin,1,5,0,20
|
||||||
|
Starship Simulator,0,2,0,22
|
||||||
|
Step Up,0,1,0,29
|
||||||
|
Stepper,0,2,0,18
|
||||||
|
Stone of Wisdom,0,3,0,18
|
||||||
|
Strange Loop,0,3,0,26
|
||||||
|
Strategic Mars,2,5,0,23
|
||||||
|
Suikoden,7,7,4,25
|
||||||
|
Super Billiards,0,1,0,19
|
||||||
|
Super Cobra,0,1,0,26
|
||||||
|
Super Cross Force,0,2,0,22
|
||||||
|
Super Daisenryaku,2,6,1,28
|
||||||
|
Super Drinker,0,2,0,28
|
||||||
|
Super Golf,0,3,0,24
|
||||||
|
Super Laydock,1,6,0,21
|
||||||
|
Super Lode Runner,13,5,0,24
|
||||||
|
Super Pachinko,0,2,0,29
|
||||||
|
Super Pierrot,2,5,0,25
|
||||||
|
Super Rambo Special,2,5,0,24
|
||||||
|
Super Runner,1,5,0,30
|
||||||
|
Super Snake,0,2,0,23
|
||||||
|
Super Soccer,0,3,0,22
|
||||||
|
Super Synth,0,2,0,23
|
||||||
|
Super Tennis,0,2,0,22
|
||||||
|
Super Tritorn,1,5,0,23
|
||||||
|
Supertripper,0,3,0,24
|
||||||
|
Sweet Acorn,0,2,0,23
|
||||||
|
Swimming Tango,0,1,0,22
|
||||||
|
Synth Saurus,1,4,0,25
|
||||||
|
Taiyou no Shinden,1,6,2,23
|
||||||
|
Takahashi Meijin no Boukenjima,0,3,0,28
|
||||||
|
Takeru Densetsu,0,3,0,41
|
||||||
|
Tanigawa Koji no Shougi,0,3,0,26
|
||||||
|
Tanigawa Koji no Shougi 2,1,5,2,34
|
||||||
|
Tank Battalion,0,1,0,36
|
||||||
|
Tatica,0,2,0,25
|
||||||
|
Tawara-kun,0,2,0,17
|
||||||
|
Tear of Nile,0,3,0,21
|
||||||
|
Teitoku no Ketsudan,7,8,4,23
|
||||||
|
Telebunnie,0,2,0,30
|
||||||
|
Tengoku Yoitoko,1,5,0,21
|
||||||
|
Tensai Rabbian Daifunsen,0,3,0,26
|
||||||
|
Tenshi-tachi no Gogo,0,3,0,35
|
||||||
|
Tetra Horror,0,2,0,31
|
||||||
|
Tetris,1,5,0,23
|
||||||
|
Tetsuman,0,2,0,17
|
||||||
|
Thexder,0,3,0,19
|
||||||
|
Thunder Ball,0,3,0,18
|
||||||
|
Thunderbolt,0,3,0,23
|
||||||
|
Time Pilot,0,2,0,22
|
||||||
|
Top Roller,0,2,0,21
|
||||||
|
Topple Zip MSX,0,3,0,21
|
||||||
|
Topple Zip MSX2,1,5,0,25
|
||||||
|
Tower of Druaga,0,3,0,26
|
||||||
|
Track & Field 1,0,2,0,26
|
||||||
|
Track & Field 2,0,2,0,26
|
||||||
|
Traffic,0,3,0,26
|
||||||
|
Treasure of Usas,8,5,0,18
|
||||||
|
Trial Ski,0,2,0,27
|
||||||
|
Tritorn,0,3,0,20
|
||||||
|
Trump Aid,0,3,0,18
|
||||||
|
Tsumego 120,2,5,0,20
|
||||||
|
Tsurikichi Sanpei - Blue,1,5,0,22
|
||||||
|
Tsurikichi Sanpei - Tsuri,1,6,0,35
|
||||||
|
Turboat,0,2,0,36
|
||||||
|
Turmoil,0,2,0,18
|
||||||
|
Twinbee,0,3,0,18
|
||||||
|
TZR Grandprix Rider,0,3,0,18
|
||||||
|
Ultima Exodus,1,6,2,30
|
||||||
|
Ultraman,0,2,0,24
|
||||||
|
Urusei Yatsura,1,7,0,19
|
||||||
|
Vampire Killer,8,5,0,25
|
||||||
|
Vaxol,2,5,0,25
|
||||||
|
Venus Fire,0,3,0,16
|
||||||
|
Victorious Nine II,2,5,0,21
|
||||||
|
Video Hustler,0,1,0,29
|
||||||
|
Vifam,0,2,0,24
|
||||||
|
Volguard,0,3,0,16
|
||||||
|
Warp & Warp,0,1,0,19
|
||||||
|
Warroid,0,3,0,22
|
||||||
|
Wing Man 2,1,5,0,18
|
||||||
|
Wizardry,1,7,2,21
|
||||||
|
Wonderboy,0,3,0,19
|
||||||
|
Woody Poco,2,5,0,20
|
||||||
|
Wrangler,0,2,0,21
|
||||||
|
Wreck,0,3,0,19
|
||||||
|
Xanadu,1,6,2,16
|
||||||
|
Xevious,2,6,0,17
|
||||||
|
Xyzolog,0,2,0,18
|
||||||
|
Yaksa,1,6,0,18
|
||||||
|
Yakyuu-kyou,0,3,0,16
|
||||||
|
Yamaha Play Card System,0,2,0,22
|
||||||
|
Yamamura Misa Suspense,1,6,0,34
|
||||||
|
Yellow Submarine,0,2,0,33
|
||||||
|
Yie Ar Kung-Fu,0,2,0,27
|
||||||
|
Yie Ar Kung-Fu II,0,3,0,25
|
||||||
|
Youkai Yashiki,0,3,0,28
|
||||||
|
Young Sherlock,1,5,0,25
|
||||||
|
Yuurei-kun,1,6,0,25
|
||||||
|
Zaider,0,3,0,21
|
||||||
|
Zanac A.I.,0,3,0,17
|
||||||
|
Zanac Ex,2,5,0,21
|
||||||
|
Zaxxon,0,3,0,19
|
||||||
|
Zenji,0,3,0,17
|
||||||
|
Zexas Limited,0,3,0,16
|
||||||
|
Zoids,2,5,0,24
|
||||||
|
Zombie Hunter,1,5,0,16
|
||||||
|
Zoom 909,0,3,0,24
|
||||||
|
Zukkoke Yajikita,1,5,0,19
|
||||||
|
EOF,0,0,0,0
|
BIN
sd/nes20db.txt
BIN
sd/nes20db.txt
Binary file not shown.
Loading…
Reference in New Issue
Block a user