From bb12c99fac68e107dd1858a67c2bad880c332422 Mon Sep 17 00:00:00 2001 From: smesgr9000 Date: Wed, 1 May 2024 09:06:23 +0200 Subject: [PATCH] replace FAIRCHILD, ODY2, MSX and VECTREX cart selection code with code used in NES, COLV & INTV. Define "Database not found" in OSCR.cpp --- Cart_Reader/2600.ino | 2 +- Cart_Reader/5200.ino | 2 +- Cart_Reader/7800.ino | 2 +- Cart_Reader/ARC.ino | 2 +- Cart_Reader/C64.ino | 2 +- Cart_Reader/COLV.ino | 2 +- Cart_Reader/FAIRCHILD.ino | 250 +--- Cart_Reader/INTV.ino | 2 +- Cart_Reader/MSX.ino | 284 +--- Cart_Reader/NES.ino | 2 +- Cart_Reader/ODY2.ino | 267 +--- Cart_Reader/OSCR.cpp | 4 +- Cart_Reader/OSCR.h | 4 +- Cart_Reader/VECTREX.ino | 248 +--- Cart_Reader/WSV.ino | 2 +- sd/fairchildcart.txt | 129 +- sd/msxcart.txt | 2905 +++++++++++++++++++++++++++---------- sd/ody2cart.txt | 533 +++++-- sd/vectrexcart.txt | 126 +- 19 files changed, 2892 insertions(+), 1876 deletions(-) diff --git a/Cart_Reader/2600.ino b/Cart_Reader/2600.ino index 88c2896..8fd55d0 100644 --- a/Cart_Reader/2600.ino +++ b/Cart_Reader/2600.ino @@ -826,7 +826,7 @@ void setCart_2600() { } } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/5200.ino b/Cart_Reader/5200.ino index 18f49a9..893bf7c 100644 --- a/Cart_Reader/5200.ino +++ b/Cart_Reader/5200.ino @@ -668,7 +668,7 @@ void setCart_5200() { EEPROM_writeAnything(8, entry.gameSize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/7800.ino b/Cart_Reader/7800.ino index e439e8e..aa42dae 100644 --- a/Cart_Reader/7800.ino +++ b/Cart_Reader/7800.ino @@ -818,7 +818,7 @@ void setCart_7800() { EEPROM_writeAnything(8, entry.gameSize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/ARC.ino b/Cart_Reader/ARC.ino index 308b3c6..e05d3d7 100644 --- a/Cart_Reader/ARC.ino +++ b/Cart_Reader/ARC.ino @@ -360,7 +360,7 @@ void setCart_ARC() { EEPROM_writeAnything(8, gameSize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/C64.ino b/Cart_Reader/C64.ino index 8988505..a2affd8 100644 --- a/Cart_Reader/C64.ino +++ b/Cart_Reader/C64.ino @@ -1066,7 +1066,7 @@ void setCart_C64() { EEPROM_writeAnything(8, entry.gameSize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/COLV.ino b/Cart_Reader/COLV.ino index 9b36242..6af47d8 100644 --- a/Cart_Reader/COLV.ino +++ b/Cart_Reader/COLV.ino @@ -448,7 +448,7 @@ void setCart_COL() { EEPROM_writeAnything(8, colsize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/FAIRCHILD.ino b/Cart_Reader/FAIRCHILD.ino index 5ef93e1..937279c 100644 --- a/Cart_Reader/FAIRCHILD.ino +++ b/Cart_Reader/FAIRCHILD.ino @@ -70,7 +70,6 @@ byte fairchildlo = 0; // Lowest Entry byte fairchildhi = 3; // Highest Entry byte fairchildsize; -byte newfairchildsize; // EEPROM MAPPING // 08 ROM SIZE @@ -540,6 +539,7 @@ void read16K_FAIRCHILD() // Read 16K Bytes //****************************************** void setROMSize_FAIRCHILD() { + byte newfairchildsize; #if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) display_Clear(); if (fairchildlo == fairchildhi) @@ -672,239 +672,33 @@ void checkStatus_FAIRCHILD() { //****************************************** // CART SELECT CODE //****************************************** +void readDataLine_FAIRCHILD(FsFile& database, byte* gameSize) { + // Read rom size + (*gameSize) = database.read() - 48; -FsFile fairchildcsvFile; -char fairchildgame[33]; // title -char fairchildrr[3]; // romsize -char fairchildll[4]; // linelength (previous line) -unsigned long fairchildcsvpos; // CSV File Position -char fairchildcartCSV[] = "fairchildcart.txt"; // CSV List -char fairchildcsvEND[] = "EOF"; // CSV End Marker for scrolling - -bool readLine_FAIRCHILD(FsFile& f, char* line, size_t maxLen) { - for (size_t n = 0; n < maxLen; n++) { - int c = f.read(); - if (c < 0 && n == 0) return false; // EOF - if (c < 0 || c == '\n') { - line[n] = 0; - return true; - } - line[n] = c; - } - return false; // line too long -} - -bool readVals_FAIRCHILD(char* fairchildgame, char* fairchildrr, char* fairchildll) { - char line[39]; - fairchildcsvpos = fairchildcsvFile.position(); - if (!readLine_FAIRCHILD(fairchildcsvFile, line, sizeof(line))) { - return false; // EOF or too long - } - char* comma = strtok(line, ","); - int x = 0; - while (comma != NULL) { - if (x == 0) - strcpy(fairchildgame, comma); - else if (x == 1) - strcpy(fairchildrr, comma); - else if (x == 2) - strcpy(fairchildll, comma); - comma = strtok(NULL, ","); - x += 1; - } - return true; -} - -bool getCartListInfo_FAIRCHILD() { - bool buttonreleased = 0; - bool cartselected = 0; -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F(" HOLD TO FAST CYCLE")); - display_Update(); -#else - Serial.println(F("HOLD BUTTON TO FAST CYCLE")); -#endif - delay(2000); -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - boolean buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == LOW) { // Button Held - Fast Cycle - while (1) { // Scroll Game List - while (readVals_FAIRCHILD(fairchildgame, fairchildrr, fairchildll)) { - if (strcmp(fairchildcsvEND, fairchildgame) == 0) { - fairchildcsvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(fairchildgame); - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(fairchildgame); -#endif -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) { // Button Released - buttonreleased = 1; - break; - } - if (buttonreleased) { - buttonreleased = 0; // Reset Flag - break; - } - } - } -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) // Button Released - break; - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(F("FAST CYCLE OFF")); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(F("FAST CYCLE OFF")); - Serial.println(F("PRESS BUTTON TO STEP FORWARD")); - Serial.println(F("DOUBLE CLICK TO STEP BACK")); - Serial.println(F("HOLD TO SELECT")); - Serial.println(FS(FSTRING_EMPTY)); -#endif - while (readVals_FAIRCHILD(fairchildgame, fairchildrr, fairchildll)) { - if (strcmp(fairchildcsvEND, fairchildgame) == 0) { - fairchildcsvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(fairchildgame); - display.setCursor(0, 48); -#if defined(ENABLE_OLED) - print_STR(press_to_change_STR, 1); - print_STR(right_to_select_STR, 1); -#elif defined(ENABLE_LCD) - print_STR(rotate_to_change_STR, 1); - print_STR(press_to_select_STR, 1); -#endif - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(fairchildgame); -#endif - while (1) { // Single Step - uint8_t b = checkButton(); - if (b == 1) { // Continue (press) - break; - } - if (b == 2) { // Reset to Start of List (doubleclick) - byte prevline = strtol(fairchildll, NULL, 10); - fairchildcsvpos -= prevline; - fairchildcsvFile.seek(fairchildcsvpos); - break; - } - if (b == 3) { // Long Press - Select Cart (hold) - newfairchildsize = strtol(fairchildrr, NULL, 10); - EEPROM_writeAnything(8, newfairchildsize); - cartselected = 1; // SELECTION MADE -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(F("SELECTION MADE")); - display_Update(); -#else - Serial.println(F("SELECTION MADE")); -#endif - break; - } - } - if (cartselected) { - cartselected = 0; // Reset Flag - return true; - } - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(FS(FSTRING_END_OF_FILE)); - display_Update(); -#else - Serial.println(FS(FSTRING_END_OF_FILE)); -#endif - - return false; -} - -void checkCSV_FAIRCHILD() { - if (getCartListInfo_FAIRCHILD()) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(FS(FSTRING_CART_SELECTED)); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(fairchildgame); - display_Update(); - // Display Settings - display.setCursor(0, 56); - print_Msg(F("CODE: R")); - println_Msg(newfairchildsize); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(FS(FSTRING_CART_SELECTED)); - Serial.println(fairchildgame); - // Display Settings - Serial.print(F("CODE: R")); - Serial.println(newfairchildsize); - Serial.println(FS(FSTRING_EMPTY)); -#endif - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(FS(FSTRING_NO_SELECTION)); - display_Update(); -#else - Serial.println(FS(FSTRING_NO_SELECTION)); -#endif - } + // Skip rest of line + database.seekCur(2); } void setCart_FAIRCHILD() { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(fairchildcartCSV); - display_Update(); -#endif + //go to root sd.chdir(); - sprintf(folder, "FAIRCHILD/CSV"); - sd.chdir(folder); // Switch Folder - fairchildcsvFile = sd.open(fairchildcartCSV, O_READ); - if (!fairchildcsvFile) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CSV FILE NOT FOUND!")); - display_Update(); -#else - Serial.println(F("CSV FILE NOT FOUND!")); -#endif - while (1) { - if (checkButton() != 0) - setup_FAIRCHILD(); - } - } - checkCSV_FAIRCHILD(); - fairchildcsvFile.close(); + byte gameSize; + + // Select starting letter + //byte myLetter = starting_letter(); + + // Open database + if (myFile.open("fairchildcart.txt", O_READ)) { + // seek_first_letter_in_database(myFile, myLetter); + + if(checkCartSelection(myFile, &readDataLine_ARC, &gameSize)) { + EEPROM_writeAnything(8, gameSize); + } + } else { + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); + } } #endif //****************************************** diff --git a/Cart_Reader/INTV.ino b/Cart_Reader/INTV.ino index 61a6ae8..10f07a6 100644 --- a/Cart_Reader/INTV.ino +++ b/Cart_Reader/INTV.ino @@ -857,7 +857,7 @@ void setCart_INTV() { EEPROM_writeAnything(8, intvsize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/Cart_Reader/MSX.ino b/Cart_Reader/MSX.ino index f67ebcc..17653d5 100644 --- a/Cart_Reader/MSX.ino +++ b/Cart_Reader/MSX.ino @@ -105,11 +105,8 @@ byte msxmapselect; int msxindex; byte msxmapper; -byte newmsxmapper; byte msxsize; -byte newmsxsize; byte msxramsize; -byte newmsxramsize; uint8_t msxbanks; byte chipselect; @@ -139,7 +136,6 @@ void msxMenu() { case 0: // Select Cart setCart_MSX(); - wait(); setup_MSX(); break; @@ -862,6 +858,7 @@ void writeRAM_MSX() { // MAPPER CODE //****************************************** void setMapper_MSX() { + byte newmsxmapper; #if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) uint8_t b = 0; int i = 0; @@ -1021,6 +1018,7 @@ void checkMapperSize_MSX() { // SET ROM SIZE //****************************************** void setROMSize_MSX() { + byte newmsxsize; #if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) display_Clear(); if (msxlo == msxhi) @@ -1162,6 +1160,7 @@ setrom: // SET RAM SIZE //****************************************** void setRAMSize_MSX() { + byte newmsxramsize; #if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) display_Clear(); if (msxramlo == msxramhi) @@ -1412,255 +1411,52 @@ void printMapper(byte msxmaplabel) { //****************************************** // CART SELECT CODE //****************************************** -FsFile msxcsvFile; -char msxgame[31]; // title -char msxmm[3]; // mapper -char msxrr[3]; // romsize -char msxss[3]; // ramsize -char msxll[4]; // linelength (previous line) -unsigned long msxcsvpos; // CSV File Position -char msxcartCSV[] = "msxcart.txt"; // CSV List -char msxcsvEND[] = "EOF"; // CSV End Marker for scrolling +struct database_entry_MSX { + byte gameMapper; + byte gameSize; + byte ramSize; +}; -bool readLine_MSX(FsFile& f, char* line, size_t maxLen) { - for (size_t n = 0; n < maxLen; n++) { - int c = f.read(); - if (c < 0 && n == 0) return false; // EOF - if (c < 0 || c == '\n') { - line[n] = 0; - return true; - } - line[n] = c; - } - return false; // line too long -} +void readDataLine_MSX(FsFile& database, struct database_entry_MSX* entry) { + // Read mapper + entry->gameMapper = database.read() - 48; -bool readVals_MSX(char* msxgame, char* msxmm, char* msxrr, char* msxss, char* msxll) { - char line[41]; - msxcsvpos = msxcsvFile.position(); - if (!readLine_MSX(msxcsvFile, line, sizeof(line))) { - return false; // EOF or too long - } - char* comma = strtok(line, ","); - int x = 0; - while (comma != NULL) { - if (x == 0) - strcpy(msxgame, comma); - else if (x == 1) - strcpy(msxmm, comma); - else if (x == 2) - strcpy(msxrr, comma); - else if (x == 3) - strcpy(msxss, comma); - else if (x == 4) - strcpy(msxll, comma); - comma = strtok(NULL, ","); - x += 1; - } - return true; -} + // Skip over semicolon + database.seekCur(1); -bool getCartListInfo_MSX() { - bool buttonreleased = 0; - bool cartselected = 0; -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F(" HOLD TO FAST CYCLE")); - display_Update(); -#else - Serial.println(F("HOLD BUTTON TO FAST CYCLE")); -#endif - delay(2000); -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - boolean buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == LOW) { // Button Held - Fast Cycle - while (1) { // Scroll Game List - while (readVals_MSX(msxgame, msxmm, msxrr, msxss, msxll)) { - if (strcmp(msxcsvEND, msxgame) == 0) { - msxcsvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(msxgame); - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(msxgame); -#endif -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) { // Button Released - buttonreleased = 1; - break; - } - if (buttonreleased) { - buttonreleased = 0; // Reset Flag - break; - } - } - } -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) // Button Released - break; - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(F("FAST CYCLE OFF")); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(F("FAST CYCLE OFF")); - Serial.println(F("PRESS BUTTON TO STEP FORWARD")); - Serial.println(F("DOUBLE CLICK TO STEP BACK")); - Serial.println(F("HOLD TO SELECT")); - Serial.println(FS(FSTRING_EMPTY)); -#endif - while (readVals_MSX(msxgame, msxmm, msxrr, msxss, msxll)) { - if (strcmp(msxcsvEND, msxgame) == 0) { - msxcsvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(msxgame); - display.setCursor(0, 48); -#if defined(ENABLE_OLED) - print_STR(press_to_change_STR, 1); - print_STR(right_to_select_STR, 1); -#elif defined(ENABLE_LCD) - print_STR(rotate_to_change_STR, 1); - print_STR(press_to_select_STR, 1); -#endif - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(msxgame); -#endif - while (1) { // Single Step - uint8_t b = checkButton(); - if (b == 1) { // Continue (press) - break; - } - if (b == 2) { // Reset to Start of List (doubleclick) - byte prevline = strtol(msxll, NULL, 10); - msxcsvpos -= prevline; - msxcsvFile.seek(msxcsvpos); - break; - } - if (b == 3) { // Long Press - Select Cart (hold) - newmsxmapper = strtol(msxmm, NULL, 10); - newmsxsize = strtol(msxrr, NULL, 10); - newmsxramsize = strtol(msxss, NULL, 10); - EEPROM_writeAnything(7, newmsxmapper); - EEPROM_writeAnything(8, newmsxsize); - EEPROM_writeAnything(10, newmsxramsize); - cartselected = 1; // SELECTION MADE -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(F("SELECTION MADE")); - display_Update(); -#else - Serial.println(F("SELECTION MADE")); -#endif - break; - } - } - if (cartselected) { - cartselected = 0; // Reset Flag - return true; - } - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(FS(FSTRING_END_OF_FILE)); - display_Update(); -#else - Serial.println(FS(FSTRING_END_OF_FILE)); -#endif + // Read rom size + entry->gameSize = database.read() - 48; - return false; -} + // Skip over semicolon + database.seekCur(1); -void checkCSV_MSX() { - if (getCartListInfo_MSX()) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(FS(FSTRING_CART_SELECTED)); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(msxgame); - display_Update(); - // Display Settings - display.setCursor(0, 56); - print_Msg(F("CODE: M")); - print_Msg(newmsxmapper); - print_Msg(F("/R")); - print_Msg(newmsxsize); - print_Msg(F("/S")); - println_Msg(newmsxramsize); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(FS(FSTRING_CART_SELECTED)); - Serial.println(msxgame); - // Display Settings - Serial.print(F("CODE: M")); - Serial.print(newmsxmapper); - Serial.print(F("/R")); - Serial.print(newmsxsize); - Serial.print(F("/S")); - Serial.println(newmsxramsize); - Serial.println(FS(FSTRING_EMPTY)); -#endif - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(FS(FSTRING_NO_SELECTION)); - display_Update(); -#else - Serial.println(FS(FSTRING_NO_SELECTION)); -#endif - } + // Read ram size + entry->ramSize = database.read() - 48; + + // Skip rest of line + database.seekCur(2); } void setCart_MSX() { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(msxcartCSV); - display_Update(); -#endif + //go to root sd.chdir(); - sprintf(folder, "MSX/CSV"); - sd.chdir(folder); // Switch Folder - msxcsvFile = sd.open(msxcartCSV, O_READ); - if (!msxcsvFile) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CSV FILE NOT FOUND!")); - display_Update(); -#else - Serial.println(F("CSV FILE NOT FOUND!")); -#endif - while (1) { - if (checkButton() != 0) - setup_MSX(); - } - } - checkCSV_MSX(); - msxcsvFile.close(); + struct database_entry_MSX entry; + + // Select starting letter + byte myLetter = starting_letter(); + + // Open database + if (myFile.open("msxcart.txt", O_READ)) { + seek_first_letter_in_database(myFile, myLetter); + + if(checkCartSelection(myFile, &readDataLine_MSX, &entry)) { + EEPROM_writeAnything(7, entry.gameMapper); + EEPROM_writeAnything(8, entry.gameSize); + EEPROM_writeAnything(10, entry.ramSize); + } + } else { + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); + } } #endif diff --git a/Cart_Reader/NES.ino b/Cart_Reader/NES.ino index c77c9fd..4bbf6e2 100644 --- a/Cart_Reader/NES.ino +++ b/Cart_Reader/NES.ino @@ -587,7 +587,7 @@ void getMapping() { sd.chdir(); if (!database.open("nes.txt", O_READ)) { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); // never reached } diff --git a/Cart_Reader/ODY2.ino b/Cart_Reader/ODY2.ino index e961fd5..cfdd7dc 100644 --- a/Cart_Reader/ODY2.ino +++ b/Cart_Reader/ODY2.ino @@ -50,9 +50,7 @@ byte ody2lo = 0; // Lowest Entry byte ody2hi = 4; // Highest Entry byte ody2mapper; -byte newody2mapper; byte ody2size; -byte newody2size; // EEPROM MAPPING // 07 MAPPER @@ -116,7 +114,6 @@ void ody2Menu() { case 0: // Select Cart setCart_ODY2(); - wait(); setup_ODY2(); break; @@ -281,6 +278,7 @@ void readROM_ODY2() { //****************************************** void setROMSize_ODY2() { + byte newody2size; #if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) display_Clear(); if (ody2lo == ody2hi) @@ -425,248 +423,45 @@ void checkStatus_ODY2() { //****************************************** // CART SELECT CODE //****************************************** +struct database_entry_ODY2 { + byte gameMapper; + byte gameSize; +}; -FsFile ody2csvFile; -char ody2game[51]; // title -char ody2mm[3]; // mapper (A10) -char ody2rr[3]; // romsize -char ody2ll[4]; // linelength (previous line) -unsigned long ody2csvpos; // CSV File Position -char ody2cartCSV[] = "ody2cart.txt"; // CSV List -char ody2csvEND[] = "EOF"; // CSV End Marker for scrolling +void readDataLine_ODY2(FsFile& database, struct database_entry_ODY2* entry) { + // Read mapper + entry->gameMapper = database.read() - 48; -bool readLine_ODY2(FsFile& f, char* line, size_t maxLen) { - for (size_t n = 0; n < maxLen; n++) { - int c = f.read(); - if (c < 0 && n == 0) return false; // EOF - if (c < 0 || c == '\n') { - line[n] = 0; - return true; - } - line[n] = c; - } - return false; // line too long -} + // Skip over semicolon + database.seekCur(1); -bool readVals_ODY2(char* ody2game, char* ody2mm, char* ody2rr, char* ody2ll) { - char line[59]; - ody2csvpos = ody2csvFile.position(); - if (!readLine_ODY2(ody2csvFile, line, sizeof(line))) { - return false; // EOF or too long - } - char* comma = strtok(line, ","); - int x = 0; - while (comma != NULL) { - if (x == 0) - strcpy(ody2game, comma); - else if (x == 1) - strcpy(ody2mm, comma); - else if (x == 2) - strcpy(ody2rr, comma); - else if (x == 3) - strcpy(ody2ll, comma); - comma = strtok(NULL, ","); - x += 1; - } - return true; -} + // Read rom size + entry->gameSize = database.read() - 48; -bool getCartListInfo_ODY2() { - bool buttonreleased = 0; - bool cartselected = 0; -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F(" HOLD TO FAST CYCLE")); - display_Update(); -#else - Serial.println(F("HOLD BUTTON TO FAST CYCLE")); -#endif - delay(2000); -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - boolean buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == LOW) { // Button Held - Fast Cycle - while (1) { // Scroll Game List - while (readVals_ODY2(ody2game, ody2mm, ody2rr, ody2ll)) { - if (strcmp(ody2csvEND, ody2game) == 0) { - ody2csvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(ody2game); - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(ody2game); -#endif -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) { // Button Released - buttonreleased = 1; - break; - } - if (buttonreleased) { - buttonreleased = 0; // Reset Flag - break; - } - } - } -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) // Button Released - break; - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(F("FAST CYCLE OFF")); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(F("FAST CYCLE OFF")); - Serial.println(F("PRESS BUTTON TO STEP FORWARD")); - Serial.println(F("DOUBLE CLICK TO STEP BACK")); - Serial.println(F("HOLD TO SELECT")); - Serial.println(FS(FSTRING_EMPTY)); -#endif - while (readVals_ODY2(ody2game, ody2mm, ody2rr, ody2ll)) { - if (strcmp(ody2csvEND, ody2game) == 0) { - ody2csvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(ody2game); - display.setCursor(0, 48); -#if defined(ENABLE_OLED) - print_STR(press_to_change_STR, 1); - print_STR(right_to_select_STR, 1); -#elif defined(ENABLE_LCD) - print_STR(rotate_to_change_STR, 1); - print_STR(press_to_select_STR, 1); -#endif - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(ody2game); -#endif - while (1) { // Single Step - uint8_t b = checkButton(); - if (b == 1) { // Continue (press) - break; - } - if (b == 2) { // Reset to Start of List (doubleclick) - byte prevline = strtol(ody2ll, NULL, 10); - ody2csvpos -= prevline; - ody2csvFile.seek(ody2csvpos); - break; - } - if (b == 3) { // Long Press - Select Cart (hold) - newody2mapper = strtol(ody2mm, NULL, 10); - newody2size = strtol(ody2rr, NULL, 10); - EEPROM_writeAnything(7, newody2mapper); - EEPROM_writeAnything(8, newody2size); - cartselected = 1; // SELECTION MADE -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(F("SELECTION MADE")); - display_Update(); -#else - Serial.println(F("SELECTION MADE")); -#endif - break; - } - } - if (cartselected) { - cartselected = 0; // Reset Flag - return true; - } - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(FS(FSTRING_END_OF_FILE)); - display_Update(); -#else - Serial.println(FS(FSTRING_END_OF_FILE)); -#endif - - return false; -} - -void checkCSV_ODY2() { - if (getCartListInfo_ODY2()) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(FS(FSTRING_CART_SELECTED)); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(ody2game); - display_Update(); - // Display Settings - display.setCursor(0, 56); - print_Msg(F("CODE: M")); - print_Msg(newody2mapper); - print_Msg(F("/R")); - println_Msg(newody2size); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(FS(FSTRING_CART_SELECTED)); - Serial.println(ody2game); - // Display Settings - Serial.print(F("CODE: M")); - Serial.print(newody2mapper); - Serial.print(F("/R")); - Serial.println(newody2size); - Serial.println(FS(FSTRING_EMPTY)); -#endif - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(FS(FSTRING_NO_SELECTION)); - display_Update(); -#else - Serial.println(FS(FSTRING_NO_SELECTION)); -#endif - } + // Skip rest of line + database.seekCur(2); } void setCart_ODY2() { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(ody2cartCSV); - display_Update(); -#endif + //go to root sd.chdir(); - sprintf(folder, "ODY2/CSV"); - sd.chdir(folder); // Switch Folder - ody2csvFile = sd.open(ody2cartCSV, O_READ); - if (!ody2csvFile) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CSV FILE NOT FOUND!")); - display_Update(); -#else - Serial.println(F("CSV FILE NOT FOUND!")); -#endif - while (1) { - if (checkButton() != 0) - setup_ODY2(); - } - } - checkCSV_ODY2(); - ody2csvFile.close(); + struct database_entry_ODY2 entry; + + // Select starting letter + byte myLetter = starting_letter(); + + // Open database + if (myFile.open("ody2cart.txt", O_READ)) { + seek_first_letter_in_database(myFile, myLetter); + + if(checkCartSelection(myFile, &readDataLine_ODY2, &entry)) { + EEPROM_writeAnything(7, entry.gameMapper); + EEPROM_writeAnything(8, entry.gameSize); + } + } else { + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); + } } #endif //****************************************** diff --git a/Cart_Reader/OSCR.cpp b/Cart_Reader/OSCR.cpp index 6761c1f..341dc46 100644 --- a/Cart_Reader/OSCR.cpp +++ b/Cart_Reader/OSCR.cpp @@ -57,12 +57,11 @@ constexpr char PROGMEM FSTRING_OK[] = "OK"; constexpr char PROGMEM FSTRING_EMPTY[] = ""; constexpr char PROGMEM FSTRING_SPACE[] = " "; constexpr char PROGMEM FSTRING_CURRENT_SETTINGS[] = "CURRENT SETTINGS"; -constexpr char PROGMEM FSTRING_NO_SELECTION[] = "NO SELECTION"; -constexpr char PROGMEM FSTRING_END_OF_FILE[] = "END OF FILE"; // Messages constexpr char PROGMEM FSTRING_OSCR[] = "OSCR"; constexpr char PROGMEM FSTRING_MODULE_NOT_ENABLED[] = "Module is not enabled."; +constexpr char PROGMEM FSTRING_DATABASE_FILE_NOT_FOUND[] = "Database file not found"; // Cart constexpr char PROGMEM FSTRING_READ_ROM[] = "Read ROM"; @@ -72,7 +71,6 @@ constexpr char PROGMEM FSTRING_SELECT_CART[] = "Select Cart"; constexpr char PROGMEM FSTRING_SELECT_CART_TYPE[] = "Select Cart Type"; constexpr char PROGMEM FSTRING_SET_SIZE[] = "Set Size"; constexpr char PROGMEM FSTRING_REFRESH_CART[] = "Refresh Cart"; -constexpr char PROGMEM FSTRING_CART_SELECTED[] = "CART SELECTED"; /*==== /CONSTANTS =================================================*/ diff --git a/Cart_Reader/OSCR.h b/Cart_Reader/OSCR.h index 47b9dd6..7cb215d 100644 --- a/Cart_Reader/OSCR.h +++ b/Cart_Reader/OSCR.h @@ -37,12 +37,11 @@ extern const char PROGMEM FSTRING_EMPTY[]; extern const char PROGMEM FSTRING_SPACE[]; extern const char PROGMEM FSTRING_RESET[]; extern const char PROGMEM FSTRING_CURRENT_SETTINGS[]; -extern const char PROGMEM FSTRING_NO_SELECTION[]; -extern const char PROGMEM FSTRING_END_OF_FILE[]; // Messages extern const char PROGMEM FSTRING_OSCR[]; extern const char PROGMEM FSTRING_MODULE_NOT_ENABLED[]; +extern const char FSTRING_DATABASE_FILE_NOT_FOUND[]; // Cart extern const char PROGMEM FSTRING_READ_ROM[]; @@ -52,7 +51,6 @@ extern const char PROGMEM FSTRING_SELECT_CART[]; extern const char PROGMEM FSTRING_SELECT_CART_TYPE[]; extern const char PROGMEM FSTRING_SET_SIZE[]; extern const char PROGMEM FSTRING_REFRESH_CART[]; -extern const char PROGMEM FSTRING_CART_SELECTED[]; #define FS(pmem_string) (reinterpret_cast(pmem_string)) diff --git a/Cart_Reader/VECTREX.ino b/Cart_Reader/VECTREX.ino index 6da91e3..718d67f 100644 --- a/Cart_Reader/VECTREX.ino +++ b/Cart_Reader/VECTREX.ino @@ -59,7 +59,6 @@ byte VECTREX[] = { 4, 8, 12, 16, 32, 64 }; byte vectrexlo = 0; // Lowest Entry byte vectrexhi = 5; // Highest Entry byte vectrexsize; -byte newvectrexsize; // EEPROM MAPPING // 08 ROM SIZE @@ -124,7 +123,6 @@ void vectrexMenu() { case 0: // Select Cart setCart_VECTREX(); - wait(); setup_VECTREX(); break; @@ -260,6 +258,7 @@ void readROM_VECTREX() { //****************************************** void setROMSize_VECTREX() { + byte newvectrexsize; #if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) display_Clear(); if (vectrexlo == vectrexhi) @@ -393,237 +392,32 @@ void checkStatus_VECTREX() { //****************************************** // CART SELECT CODE //****************************************** +void readDataLine_VECTREX(FsFile& database, byte* gameSize) { + // Read rom size + (*gameSize) = database.read() - 48; -FsFile vectrexcsvFile; -char vectrexgame[25]; // title -char vectrexrr[4]; // romsize -char vectrexll[4]; // linelength (previous line) -unsigned long vectrexcsvpos; // CSV File Position -char vectrexcartCSV[] = "vectrexcart.txt"; // CSV List -char vectrexcsvEND[] = "EOF"; // CSV End Marker for scrolling - -bool readLine_VECTREX(FsFile& f, char* line, size_t maxLen) { - for (size_t n = 0; n < maxLen; n++) { - int c = f.read(); - if (c < 0 && n == 0) return false; // EOF - if (c < 0 || c == '\n') { - line[n] = 0; - return true; - } - line[n] = c; - } - return false; // line too long -} - -bool readVals_VECTREX(char* vectrexgame, char* vectrexrr, char* vectrexll) { - char line[31]; - vectrexcsvpos = vectrexcsvFile.position(); - if (!readLine_VECTREX(vectrexcsvFile, line, sizeof(line))) { - return false; // EOF or too long - } - char* comma = strtok(line, ","); - int x = 0; - while (comma != NULL) { - if (x == 0) - strcpy(vectrexgame, comma); - else if (x == 1) - strcpy(vectrexrr, comma); - else if (x == 2) - strcpy(vectrexll, comma); - comma = strtok(NULL, ","); - x += 1; - } - return true; -} - -bool getCartListInfo_VECTREX() { - bool buttonreleased = 0; - bool cartselected = 0; -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F(" HOLD TO FAST CYCLE")); - display_Update(); -#else - Serial.println(F("HOLD BUTTON TO FAST CYCLE")); -#endif - delay(2000); -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - boolean buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == LOW) { // Button Held - Fast Cycle - while (1) { // Scroll Game List - while (readVals_VECTREX(vectrexgame, vectrexrr, vectrexll)) { - if (strcmp(vectrexcsvEND, vectrexgame) == 0) { - vectrexcsvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(vectrexgame); - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(vectrexgame); -#endif -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - boolean buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) { // Button Released - buttonreleased = 1; - break; - } - if (buttonreleased) { - buttonreleased = 0; // Reset Flag - break; - } - } - } -#if defined(ENABLE_OLED) - buttonVal1 = (PIND & (1 << 7)); // PD7 -#elif defined(ENABLE_LCD) - boolean buttonVal1 = (PING & (1 << 2)); //PG2 -#endif - if (buttonVal1 == HIGH) // Button Released - break; - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(F("FAST CYCLE OFF")); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(F("FAST CYCLE OFF")); - Serial.println(F("PRESS BUTTON TO STEP FORWARD")); - Serial.println(F("DOUBLE CLICK TO STEP BACK")); - Serial.println(F("HOLD TO SELECT")); - Serial.println(FS(FSTRING_EMPTY)); -#endif - while (readVals_VECTREX(vectrexgame, vectrexrr, vectrexll)) { - if (strcmp(vectrexcsvEND, vectrexgame) == 0) { - vectrexcsvFile.seek(0); // Restart - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CART TITLE:")); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(vectrexgame); - display.setCursor(0, 48); -#if defined(ENABLE_OLED) - print_STR(press_to_change_STR, 1); - print_STR(right_to_select_STR, 1); -#elif defined(ENABLE_LCD) - print_STR(rotate_to_change_STR, 1); - print_STR(press_to_select_STR, 1); -#endif - display_Update(); -#else - Serial.print(F("CART TITLE:")); - Serial.println(vectrexgame); -#endif - while (1) { // Single Step - uint8_t b = checkButton(); - if (b == 1) { // Continue (press) - break; - } - if (b == 2) { // Reset to Start of List (doubleclick) - byte prevline = strtol(vectrexll, NULL, 10); - vectrexcsvpos -= prevline; - vectrexcsvFile.seek(vectrexcsvpos); - break; - } - if (b == 3) { // Long Press - Select Cart (hold) - newvectrexsize = strtol(vectrexrr, NULL, 10); - EEPROM_writeAnything(8, newvectrexsize); - cartselected = 1; // SELECTION MADE -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(F("SELECTION MADE")); - display_Update(); -#else - Serial.println(F("SELECTION MADE")); -#endif - break; - } - } - if (cartselected) { - cartselected = 0; // Reset Flag - return true; - } - } - } -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(FS(FSTRING_END_OF_FILE)); - display_Update(); -#else - Serial.println(FS(FSTRING_END_OF_FILE)); -#endif - - return false; -} - -void checkCSV_VECTREX() { - if (getCartListInfo_VECTREX()) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(FS(FSTRING_CART_SELECTED)); - println_Msg(FS(FSTRING_EMPTY)); - println_Msg(vectrexgame); - display_Update(); - // Display Settings - display.setCursor(0, 56); - print_Msg(F("CODE: R")); - println_Msg(newvectrexsize); - display_Update(); -#else - Serial.println(FS(FSTRING_EMPTY)); - Serial.println(FS(FSTRING_CART_SELECTED)); - Serial.println(vectrexgame); - // Display Settings - Serial.print(F("CODE: R")); - Serial.println(newvectrexsize); - Serial.println(FS(FSTRING_EMPTY)); -#endif - } else { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display.setCursor(0, 56); - println_Msg(FS(FSTRING_NO_SELECTION)); - display_Update(); -#else - Serial.println(FS(FSTRING_NO_SELECTION)); -#endif - } + // Skip rest of line + database.seekCur(2); } void setCart_VECTREX() { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(vectrexcartCSV); - display_Update(); -#endif + //go to root sd.chdir(); - sprintf(folder, "VECTREX/CSV"); - sd.chdir(folder); // Switch Folder - vectrexcsvFile = sd.open(vectrexcartCSV, O_READ); - if (!vectrexcsvFile) { -#if (defined(ENABLE_OLED) || defined(ENABLE_LCD)) - display_Clear(); - println_Msg(F("CSV FILE NOT FOUND!")); - display_Update(); -#else - Serial.println(F("CSV FILE NOT FOUND!")); -#endif - while (1) { - if (checkButton() != 0) - setup_VECTREX(); + + byte gameSize; + + // Select starting letter + //byte myLetter = starting_letter(); + + // Open database + if (myFile.open("vectrexcart.txt", O_READ)) { + // seek_first_letter_in_database(myFile, myLetter); + + if(checkCartSelection(myFile, &readDataLine_ARC, &gameSize)) { + EEPROM_writeAnything(8, gameSize); } + } else { + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } - checkCSV_VECTREX(); - vectrexcsvFile.close(); } #endif diff --git a/Cart_Reader/WSV.ino b/Cart_Reader/WSV.ino index e766266..f523f24 100644 --- a/Cart_Reader/WSV.ino +++ b/Cart_Reader/WSV.ino @@ -449,7 +449,7 @@ void setCart_WSV() { EEPROM_writeAnything(8, wsvsize); } } else { - print_FatalError(F("Database file not found")); + print_FatalError(FS(FSTRING_DATABASE_FILE_NOT_FOUND)); } } #endif diff --git a/sd/fairchildcart.txt b/sd/fairchildcart.txt index dd00e44..55d97c6 100644 --- a/sd/fairchildcart.txt +++ b/sd/fairchildcart.txt @@ -1,33 +1,96 @@ -Alien Invasion,2,0 -Backgammon/Acey-Deucey,0,20 -Baseball,0,29 -Bowling,0,15 -Casino Poker,2,14 -Checkers,0,19 -Demonstration Cartridge,0,15 -Demonstration Cartridge 2,0,30 -Desert Fox/Shooting Gallery,0,32 -Dodge It,0,34 -Drag Race,0,15 -Galactic Space Wars/Lunar Lander,0,16 -Hangman,1,39 -Magic Numbers,0,14 -Math Quiz I,0,20 -Math Quiz II,0,18 -Maze (Multi),0,19 -Memory Match 1 & 2,0,19 -Muehle (Multi),0,25 -Ordtaevling,1,21 -Pinball Challenge,0,18 -Pro Football,2,24 -Rat' Mal,1,19 -Robot War/Torpedo Alley,0,15 -Schach,3,30 -Slot Machine,0,13 -Sonar Search,0,19 -Space War,0,19 -Spitfire,0,16 -Tic-Tac-Toe (Multi),0,15 -Video Blackjack,0,26 -Video Whizball,1,22 -EOF,0,0 +Alien Invasion +2 + +Backgammon/Acey-Deucey +0 + +Baseball +0 + +Bowling +0 + +Casino Poker +2 + +Checkers +0 + +Demonstration Cartridge +0 + +Demonstration Cartridge 2 +0 + +Desert Fox/Shooting Gallery +0 + +Dodge It +0 + +Drag Race +0 + +Galactic Space Wars/Lunar Lander +0 + +Hangman +1 + +Magic Numbers +0 + +Math Quiz I +0 + +Math Quiz II +0 + +Maze (Multi) +0 + +Memory Match 1 & 2 +0 + +Muehle (Multi) +0 + +Ordtaevling +1 + +Pinball Challenge +0 + +Pro Football +2 + +Rat' Mal +1 + +Robot War/Torpedo Alley +0 + +Schach +3 + +Slot Machine +0 + +Sonar Search +0 + +Space War +0 + +Spitfire +0 + +Tic-Tac-Toe (Multi) +0 + +Video Blackjack +0 + +Video Whizball +1 + diff --git a/sd/msxcart.txt b/sd/msxcart.txt index 3f6cd25..972029f 100644 --- a/sd/msxcart.txt +++ b/sd/msxcart.txt @@ -1,727 +1,2178 @@ -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 \ No newline at end of file +1942 +1,5,0 + +10-Yard Fight +0,3,0 + +3-D Golf Simulation +0,2,0 + +3D Tennis +0,2,0 + +3D Water Driver +0,2,0 + +A Life Planet M36 +1,5,0 + +A Ressha de Ikou +2,5,2 + +A.E. +0,2,0 + +A1 Spirit +9,5,0 + +AcroJet +2,5,0 + +Actman +0,2,0 + +Adven' Chuta! +0,2,0 + +Adventure Island +0,3,0 + +Afternoon Angels +0,3,0 + +Albatross +0,3,0 + +Alcazar +0,2,0 + +Aleste +2,6,0 + +Algeese no Tsubasa +1,6,0 + +Alibaba and 40 Thieves +0,2,0 + +Alien 8 +0,3,0 + +Aliens +2,5,0 + +Alpha Roid +0,3,0 + +Alpha Squadron +0,2,0 + +American Soccer +1,4,0 + +American Truck +0,3,0 + +Anaza +0,3,0 + +Androgynus +2,6,0 + +Angelo +0,2,0 + +Animal Land +1,5,0 + +Antarctic Adventure +0,2,0 + +Anty +0,2,0 + +Aoki Ookami - Genchou Hishi +7,8,4 + +Aoki Ookami - Genghis Khan +7,7,2 + +Aquapolis SOS +0,2,0 + +Aquattack +0,2,0 + +Aramo +0,3,0 + +Arctic +2,5,0 + +Arkanoid +0,3,0 + +Arkanoid II +1,5,0 + +AshGuine +1,5,0 + +AshGuine Story II +1,6,0 + +AshGuine Story III +1,6,0 + +Athletic Ball +0,2,0 + +Athletic Land +0,2,0 + +Attack Four +0,3,0 + +B.C.'s Quest +0,3,0 + +B.C. II - Grog's Revenge +0,3,0 + +Back to the Future +0,3,0 + +Backgammon +0,3,0 + +Balance +0,2,0 + +Banana +0,2,0 + +Bank Panic +0,3,0 + +Baseball Craze +0,3,0 + +BASIC Lessons 1 +0,3,0 + +BASIC Lessons 2 +0,3,0 + +Batman +1,4,0 + +Batten Tanuki no Daibouken +0,3,0 + +Battle Cross +0,2,0 + +Battle Ship Clapton II +0,2,0 + +Beamrider +0,3,0 + +Becky +0,2,0 + +Bee & Flower +0,2,0 + +Black Onyx +0,3,0 + +Black Onyx II +2,5,0 + +Blockade Runner +0,2,0 + +Boggy '84 +0,1,0 + +Boing Boing +0,1,0 + +Bokosuka Wars +0,2,0 + +Bomber King +1,5,0 + +Bomber Man +0,1,0 + +Boogie Woogi Jungle +0,2,0 + +Boomerang +0,2,0 + +Borfesu +2,5,0 + +Bosconian (Star Destroyer) +0,3,0 + +Bouken Roman +0,3,0 + +Boulder Dash +0,3,0 + +Brain +0,2,0 + +Break In +0,4,0 + +Break Out +0,2,0 + +Bruce Lee +0,3,0 + +Bubble Bobble +1,5,0 + +Bug Bomb +0,2,0 + +Bull and Mighty's Slim Chance +0,3,0 + +Burger Time +0,3,0 + +Butamaru Pants +0,2,0 + +Cabbage Patch Kids +0,2,0 + +Candoo Ninja +0,2,0 + +Cannon Ball +0,2,0 + +Captain Chef +0,1,0 + +Captain Cosmo +0,2,0 + +Car Fighter +0,2,0 + +Car Jamboree +0,3,0 + +Car Race +0,2,0 + +Carry's Great Escape +0,3,0 + +Casio Daishogai Keiba +0,2,0 + +Casio World Open +0,3,0 + +Castle +0,3,0 + +Castle Excellent +0,3,0 + +Chack'n Pop +0,2,0 + +Challenge Derby +0,3,0 + +Champion Boxing +0,3,0 + +Champion Ice Hockey +0,3,0 + +Champion Kendo +0,3,0 + +Champion Pro Wrestling +0,3,0 + +Champion Soccer +0,2,0 + +Championship Lode Runner +0,3,0 + +Checkers in Tan Tan Tanuki +0,2,0 + +Cheese +0,2,0 + +Cheese 2 +0,3,0 + +Chess +0,2,0 + +Chima Chima +0,3,0 + +Choplifter +0,3,0 + +ChoroQ +0,2,0 + +Circus Charlie +0,2,0 + +City Connection +0,3,0 + +Coaster Race +0,3,0 + +Cockpit +2,5,0 + +Color Ball +0,2,0 + +Color Midway +0,2,0 + +Come On! Picot +0,3,0 + +Comet Tail +0,2,0 + +Comic Bakery +0,2,0 + +Computer Billiards +0,1,0 + +Computer Master +0,3,0 + +Computer Othello +0,2,0 + +Computer Pachinko +0,2,0 + +Computer Painting +0,2,0 + +Con-dori +0,2,0 + +Contra +9,5,0 + +Cosmo Explorer +0,3,0 + +Courageous Perseus +0,3,0 + +Craze +2,5,0 + +Crazy Bullet +0,2,0 + +Crazy Cars +0,3,0 + +Crazy Train +0,1,0 + +Creamy Lemon - Star Trap +0,3,0 + +Crest of the Dragon King +0,3,0 + +Crimson +1,6,0 + +Cross Blaim +3,4,0 + +Crusader +0,3,0 + +C-So! +0,2,0 + +Dai Dassou +0,3,0 + +Daikoukai Jidai +7,7,4 + +Daisenryaku +2,5,1 + +Daiva Story 4 +1,6,0 + +Dam Busters +0,3,0 + +DangerX4 +0,2,0 + +Darwin 4078 +1,5,0 + +David II +0,2,0 + +Dawn Patrol +0,4,0 + +D-Day +0,2,0 + +Decathlon +0,3,0 + +Deep Dungeon +1,5,2 + +Deep Dungeon II +1,5,2 + +Deep Forest +1,5,0 + +Demon Crystal +0,3,0 + +Designer's Pencil +0,2,0 + +Devil's Heaven +0,2,0 + +Dig Dug +0,3,0 + +Digital Devil Monogatari +1,5,0 + +Dip Dip +0,2,0 + +Dires +1,5,1 + +Doki Doki Penguin Land +0,3,0 + +Door Door mkII +0,2,0 + +Dorodon +0,2,0 + +Double Vision +1,6,0 + +Dr. Copy +0,2,0 + +Dragon Attack +0,2,0 + +Dragon Buster +1,5,0 + +Dragon Quest +1,5,0 + +Dragon Quest II +1,6,0 + +Dragon Slayer +0,3,0 + +Dragon Slayer II +1,6,2 + +Dragon Slayer IV +1,6,0 + +Dragon Slayer Jr. +2,5,0 + +Drainer +0,3,0 + +Druaga no Tou +0,3,0 + +Druid +1,5,0 + +Dungeon Hunter +2,5,0 + +Dungeon Master +0,3,0 + +Dunk Shot +0,3,0 + +DX7 Voicing Program +0,2,0 + +Dynamite Bowl +2,5,0 + +E.I. +0,2,0 + +Eagle Fighter +0,3,0 + +Eddy II +0,2,0 + +Eggerland Mystery +0,3,0 + +Eidolon +1,5,0 + +Eiwa Jiten +1,5,0 + +Elevator Action +0,3,0 + +Elthlead +1,5,2 + +Erika +0,3,0 + +Europe Sensen +7,8,4 + +Exchanger +0,2,0 + +Exciting Baseball +0,2,0 + +Exciting Jockey +0,2,0 + +Exerion +0,2,0 + +Exerion II +0,2,0 + +Exoide-Z +0,2,0 + +Exoide-Z Area 5 +0,3,0 + +F-1 Spirit +9,5,0 + +F-15 Strike Eagle +1,5,0 + +F16 Fighting Falcon +0,2,0 + +Fairy +0,2,0 + +Fairy Land Story +1,5,0 + +Famicle Parodic +1,6,0 + +Family Automation Language +0,3,0 + +Family Billiards +1,4,0 + +Family Boxing +1,6,0 + +Family Stadium Pro Baseball +2,6,0 + +Fandom Library #1 +1,6,0 + +Fandom Library #2 +1,6,0 + +Fandom Library #3 +1,6,0 + +Fantasy Zone +1,5,0 + +Fantasy Zone II +2,6,0 + +Farm Kit +0,3,0 + +Fathom +0,3,0 + +FB-01 Voicing Program +0,3,0 + +Final Justice +0,2,0 + +Final Mahjong +0,2,0 + +Final Mystery Murder Club +1,7,0 + +Final Zone Wolf +1,5,0 + +Fire Ball +1,5,0 + +Fire Rescue +0,2,0 + +Firebird +8,5,0 + +Flappy Limited '85 +0,2,0 + +Flash Splash +0,1,0 + +Fleet Commander II +1,6,0 + +Flicky +0,3,0 + +Flight Deck II +0,4,0 + +Flight Simulator +1,5,0 + +Flipper Slipper +0,2,0 + +Flower Card a Carp +0,2,0 + +FM Music Composer +0,2,0 + +FM Music Composer II +0,3,0 + +FM Music Macro +0,3,0 + +FM Musiwriter +0,2,0 + +FM PAC +11,4,2 + +FM Voicing Program +0,2,0 + +Formation Z +0,3,0 + +Four Battle Mahjong +0,2,0 + +Frogger +0,2,0 + +Front Line +0,2,0 + +Fruit Search +0,2,0 + +Funky Mouse +0,2,0 + +G.P. World +0,3,0 + +Gakuen Monogatari +2,6,0 + +Galactic Drifter Vifam +0,2,0 + +Galaga +0,3,0 + +Galaxian +0,1,0 + +Gall Force +2,5,0 + +Gambler Jiko Chuushinha +1,6,0 + +Gambler Jiko Chuushinha 2 +1,6,0 + +Game Land +0,3,0 + +Game Master +0,2,0 + +Game Master II +4,5,2 + +Ganbare Goemon! +8,5,0 + +Gang Master +0,2,0 + +Garakuta +2,4,0 + +Garyuu Ou +1,6,0 + +Gate of Labyrinth +2,5,0 + +Gekitotsu Pennant Race +9,5,0 + +Gekitotsu Pennant Race 2 +9,5,0 + +Ghost House +0,3,0 + +Ghostbusters +0,3,0 + +Girly Block +2,5,0 + +Glider +0,2,0 + +Goblin +0,4,0 + +Gojira vs 3 Daikaijuu +0,2,0 + +Gojira-kun +0,3,0 + +Gokiburi Daisakusen +0,2,0 + +Golf Game +0,2,0 + +Golgo 13 - Wolf's Nest +0,3,0 + +Golvellius +2,5,0 + +Gomoku Narabe +0,2,0 + +Goonies +0,3,0 + +Green Beret +0,3,0 + +Grog's Revenge +0,3,0 + +Guardic +0,3,0 + +Gulkave +0,3,0 + +Gun Fright +0,3,0 + +Gyrodine +0,3,0 + +H.E.R.O. +0,3,0 + +Hacker +2,5,0 + +Hades no Monshou +0,3,0 + +Hai no Majutsushi +8,5,0 + +Haja No Fuin +1,5,0 + +Hal Note +5,8,3 + +Han Seimei Senki Androgynus +2,6,0 + +Hanafuda +0,3,0 + +Hanafuda Koi Koi +0,2,0 + +Hang On +0,3,0 + +Harapeko Pakkun +0,1,0 + +Hard Ball +1,5,0 + +Harry Fox MSX Special +2,5,1 + +Harry Fox - Yuki no Maou Hen +6,4,0 + +Heavy Boxing +0,2,0 + +Heist +0,3,0 + +Heli-tank +0,2,0 + +Heroes of the Lance +1,7,2 + +Hi no Tori +8,5,0 + +Higemaru Makai Shima +2,5,0 + +High School! Kimengumi +1,5,0 + +High Way Star +0,2,0 + +Hisha +0,2,0 + +Hitsuji Yai +0,1,0 + +Hole in One +0,2,0 + +Hole in One Professional +0,3,0 + +Hole in One Special +2,5,0 + +Home Calc +0,2,0 + +Home Writer +0,2,0 + +Hudson 3D Golf +0,3,0 + +Hustle! Chumy +0,2,0 + +Hydlide +0,3,0 + +Hydlide II +2,5,1 + +Hydlide 3 +1,7,0 + +Hyper Olympic 1 +0,2,0 + +Hyper Olympic 2 +0,2,0 + +Hyper Rally +0,2,0 + +Hyper Sports 1 +0,2,0 + +Hyper Sports 2 +0,2,0 + +Hyper Sports 3 +0,3,0 + +Ice World +0,2,0 + +Ide Yousuke Meijin Mahjong +1,5,0 + +Iga Ninpou Chou +0,2,0 + +Iga Ninpou Chou 2 +0,3,0 + +Ikari +2,6,0 + +Indian no Bouken +0,2,0 + +Inemuri-ryuu Asada Mahjong +2,5,0 + +Inindou +7,8,4 + +Iriegas - Theseus +0,2,0 + +Iriegas Episode IV +0,2,0 + +Inspecteur Z +0,3,0 + +Ishin no Arashi +7,7,4 + +Issunboushi no Donnamondai +0,3,0 + +J.P. Winkle +0,3,0 + +Jagur +2,5,0 + +Janka +0,2,0 + +Jansei +2,5,1 + +Janyu Mahjong +0,3,0 + +Japanese MSX-Write +1,7,0 + +Japanese MSX-Write II +1,7,2 + +Jet Set Willy +0,2,0 + +Jigsaw Set +0,2,0 + +Jissen - 4-nin Mahjong +0,2,0 + +Jong Kyo +0,2,0 + +Joytelop +0,3,0 + +Jump +0,2,0 + +Jump Coaster +0,1,0 + +Junior High English Words 1 +0,3,0 + +Juno First +0,3,0 + +Kage no Densetsu +0,3,0 + +Kakikukekon +0,2,0 + +Karamaru's Strange Trip +0,2,0 + +Karuizawa +1,5,0 + +Kazuo Morita's Othello +0,3,0 + +Kempelen Chess +2,5,0 + +Keystone Kapers +0,3,0 + +Kick It! +0,3,0 + +Kiki Kaikai +1,5,0 + +King & Balloon +0,3,0 + +King Knight +2,5,0 + +King Kong 2 +8,5,0 + +King's Valley +0,2,0 + +King's Valley II +9,5,0 + +Kin-nikuman +0,3,0 + +Kisei +1,5,2 + +Kitahei +1,5,0 + +Knight Lore +0,3,0 + +Knightmare +0,3,0 + +Knightmare II +8,5,0 + +Knightmare III +8,6,0 + +Knither Special +2,5,0 + +Koji Tanigawa's Shougi +0,3,0 + +Koji Tanigawa's Shougi 2 +1,5,2 + +Konami's Baseball +0,2,0 + +Konami's Billiards +0,1,0 + +Konami's Boxing +0,3,0 + +Konami's Football +0,3,0 + +Konami's Golf +0,2,0 + +Konami's Mahjong +0,3,0 + +Konami's Ping Pong +0,2,0 + +Konami's Soccer +0,3,0 + +Konami's Tennis +0,2,0 + +Koneko no Daibouken +0,3,0 + +Koronis Rift +2,6,0 + +Kung Fu Master +0,2,0 + +Kung Fu Taigun +0,2,0 + +L' Empereur +7,7,4 + +Labyrinth +1,6,0 + +Ladder Building +0,2,0 + +Laptick'2 +0,3,0 + +Legend of Kage +0,3,0 + +Legend of Takeru +0,3,0 + +Let's Take the A-Train +2,5,2 + +Light Corridor +2,4,0 + +Lode Runner +0,3,0 + +Lode Runner II +0,3,0 + +Lord Over +0,2,0 + +Lot Lot +0,3,0 + +Lunar Ball +0,3,0 + +Lupin Sansei - Babylon +1,5,0 + +Lupin Sansei - Cagliostro +1,5,0 + +M36 +1,5,0 + +Macross Countdown +0,3,0 + +Mad Rider +1,5,0 + +Mado Fuki Kaisha no Swing-kun +0,2,0 + +Magical Kid Wiz +0,3,0 + +Magical Tree +0,2,0 + +Magnum Prohibition 1931 +2,5,0 + +Mahjong Friend +0,2,0 + +Maison Ikkoku - Kanketsu Hen +1,7,0 + +Maison Ikkoku - Omoide +1,6,0 + +Make-a-Face +0,1,0 + +Malaya no Hihou +2,5,0 + +Manes +0,2,0 + +Mappy +0,3,0 + +Marchen Veil I +1,5,0 + +Marine Battle +0,2,0 + +Mashou no Yakata Goblin +0,4,0 + +Megalopolis SOS +0,2,0 + +Meikyuu Shinwa +2,5,0 + +Metal Gear +8,5,0 + +Metal Gear 2 +9,7,0 + +MIDI Macro +0,3,0 + +Midnight Brothers +0,3,0 + +Midnight Building +0,2,0 + +Mini Golf +0,3,0 + +Mirai +1,5,0 + +Mississippi Satsujinjiken +1,5,0 + +Mitsumega Toohru +1,5,0 + +Moai no Hihou +0,3,0 + +Mobile Planet Styllus +0,3,0 + +Mobile-Suit Gundam +0,3,0 + +Moero!! Nettou Yakyuu '88 +1,6,0 + +Mo-Karimakka +0,3,0 + +Mole +0,2,0 + +Mole Mole 2 +0,3,0 + +Monkey Academy +0,2,0 + +Monmon Kaibutsu +1,5,0 + +Monster's Fair +0,3,0 + +Moon Landing +0,2,0 + +Moon Patrol +0,2,0 + +Moonsweeper +0,3,0 + +Mopiranger +0,2,0 + +Morita Kazuo no Othello +0,3,0 + +Mouser +0,2,0 + +Mr. Chin +0,1,0 + +Mr. Do! +0,1,0 + +Mr. Do! vs Unicorns +0,2,0 + +Mr. Do's Wild Ride +0,2,0 + +MSX Baseball +0,2,0 + +MSX Baseball II +0,2,0 + +MSX Derby +0,2,0 + +MSX Rugby +0,2,0 + +MSX Shougi Game +0,3,0 + +MSX Soccer +0,2,0 + +MSX-21 +0,2,0 + +MSX-AID +0,2,0 + +MSX-BASIC-kun +0,2,0 + +MSX-BASIC-kun Plus +0,2,0 + +MSX-Logo +0,3,0 + +Mugen Senshi Valis +1,5,0 + +Music Editor +0,2,0 + +Music Harmonizer 3 +0,2,0 + +Music Studio G7 +0,3,0 + +Nausicaa +0,2,0 + +Nekketsu Juudou +1,6,0 + +Nemesis +8,5,0 + +Nemesis 2 +9,5,0 + +Nemesis 3 +9,6,0 + +Nessen Koushien +0,2,0 + +New Horizon +1,5,0 + +Night Shade +0,3,0 + +Nihon-Shi Nenpyou +0,3,0 + +Ninja Jajamaru-kun +0,3,0 + +Ninja Princess +0,3,0 + +Ninja-kun +0,2,0 + +Ninja-kun - Asura no Shou +1,5,0 + +Ninja-kun - Majou no Bouken +0,3,0 + +Ninjya Kage +0,2,0 + +Nobunaga no Yabou - Bushou +7,8,4 + +Nobunaga no Yabou - Sengoku +7,7,4 + +Nobunaga no Yabou Zenkoku MSX +7,6,2 + +Nobunaga no Yabou Zenkoku MSX2 +7,7,2 + +Nyan Nyan Pro Wrestling +0,3,0 + +Nyorols +0,2,0 + +Ogre +2,6,0 + +Oil's Well +0,3,0 + +O'Mac Farmer +0,2,0 + +Othello +0,3,0 + +Ouke no Tani +9,5,0 + +Out Run +1,6,0 + +Oyoide Tango +0,1,0 + +PAC +11,0,2 + +Pachi Pro Densetsu +1,5,0 + +Pachicom +0,3,0 + +Pachinko-U.F.O. +0,2,0 + +Pac-Man +0,3,0 + +Pac-Mania +1,6,0 + +Pai Panic +0,2,0 + +Pairs +0,2,0 + +Parodius +9,5,0 + +Pass Ball +0,2,0 + +Pastfinder +0,2,0 + +Payload +0,3,0 + +Peetan +0,1,0 + +Pegasus +0,3,0 + +Penguin Adventure +8,5,0 + +Penguin-kun Wars +0,3,0 + +Penguin-kun Wars 2 +2,6,0 + +Picture Puzzle +0,1,0 + +Pillbox +0,2,0 + +Pinball Blaster +2,4,0 + +Pinball Maker +0,2,0 + +Pine Applin +0,2,0 + +Pinky Chase +0,2,0 + +Pipi +0,3,0 + +Pippols +0,2,0 + +Pitfall II +0,2,0 + +Pitfall! +0,2,0 + +Playball +0,3,0 + +Point X Senryou Sakusen +0,3,0 + +Police Story +0,3,0 + +Poppaq the Fish +0,2,0 + +Predator +1,5,0 + +Pretty Sheep +0,1,0 + +Price of Magik +2,4,0 + +Pro Yakyuu Family Stadium +2,6,0 + +Pro Yakyuu Fan +1,6,0 + +Professional Baseball +0,3,0 + +Professional Mahjong +0,3,0 + +Professional Mahjong Gokuu +2,5,1 + +Project A2 +1,5,0 + +Protector +0,2,0 + +PSG Musiwriter +0,2,0 + +Psychic War +1,6,2 + +Puzzle Panic +0,3,0 + +Pyramid Warp +0,1,0 + +Q-bert +0,3,0 + +Quarth +9,5,0 + +Queen's Golf +0,2,0 + +Quinpl +1,6,0 + +Raccoon Dog +0,3,0 + +Raid on Bungeling Bay +0,3,0 + +Rally-X +0,3,0 + +Rambo +0,3,0 + +Rastan Saga +1,6,0 + +Real Tennis +0,1,0 + +Red Zone +0,2,0 + +Relics MSX +1,5,0 + +Relics MSX2 +1,6,0 + +Renju & Ojama Dogs +0,2,0 + +Replicart +1,5,0 + +Return of Ishtar +2,6,0 + +Return of Jelda +1,5,0 + +Rick to Mick no Daibouken +1,5,0 + +Rise Out +0,2,0 + +River Raid +0,3,0 + +Road Fighter +0,2,0 + +Robo Wres 2001 +2,5,0 + +Robofrog +0,2,0 + +Rockn' Bolt +0,2,0 + +Roger Rubbish +0,2,0 + +Roller Ball +0,2,0 + +Romancia +2,5,0 + +Rotors +0,2,0 + +Royal Blood +7,8,4 + +R-Type +12,7,0 + +Salamander +9,5,0 + +Sangokushi MSX +7,6,0 + +Sangokushi MSX2 +7,7,4 + +Sangokushi II +7,8,4 + +Sasa +0,2,0 + +Scarlet 7 +0,3,0 + +Scion +0,2,0 + +Scope On +0,2,0 + +Scramble Eggs +0,1,0 + +Scramble Formation +1,6,0 + +Sea Hunter +0,2,0 + +Secret Treasure of Moai +0,3,0 + +Seiken Acho +0,3,0 + +Seikima II Special +1,5,0 + +Senjo no Ookami +1,5,0 + +Senjyo +0,2,0 + +Sewer Sam +0,3,0 + +Shanghai +2,5,0 + +Shiryou Sensen +1,6,2 + +Shougi (Micro Cabin) +0,2,0 + +Shougi (Pony) +0,3,0 + +Shougi Expert +0,3,0 + +Shougi Meijin +0,3,0 + +Shougun +1,5,2 + +Shout Match +0,3,0 + +Simple ASM 1.0 +0,2,0 + +Sinbad +0,2,0 + +Ski Command +0,2,0 + +Skooter +0,3,0 + +Sky Jaguar +0,2,0 + +Skygaldo +0,3,0 + +Slapshot +0,2,0 + +Small Boy's Quiz +0,3,0 + +Snake It +0,3,0 + +Sofia +1,4,0 + +Soukoban +0,3,0 + +Space Camp +0,3,0 + +Space Invaders +0,2,0 + +Space Manbow +9,6,0 + +Space Maze Attack +0,2,0 + +Space Trouble +0,1,0 + +Sparkie +0,3,0 + +Spelunker +0,3,0 + +Square Dancer +0,2,0 + +Squish'em +0,2,0 + +Star Blazer +0,2,0 + +Star Command +0,2,0 + +Star Trap +0,3,0 + +Star Virgin +1,5,0 + +Starship Simulator +0,2,0 + +Step Up +0,1,0 + +Stepper +0,2,0 + +Stone of Wisdom +0,3,0 + +Strange Loop +0,3,0 + +Strategic Mars +2,5,0 + +Suikoden +7,7,4 + +Super Billiards +0,1,0 + +Super Cobra +0,1,0 + +Super Cross Force +0,2,0 + +Super Daisenryaku +2,6,1 + +Super Drinker +0,2,0 + +Super Golf +0,3,0 + +Super Laydock +1,6,0 + +Super Lode Runner +13,5,0 + +Super Pachinko +0,2,0 + +Super Pierrot +2,5,0 + +Super Rambo Special +2,5,0 + +Super Runner +1,5,0 + +Super Snake +0,2,0 + +Super Soccer +0,3,0 + +Super Synth +0,2,0 + +Super Tennis +0,2,0 + +Super Tritorn +1,5,0 + +Supertripper +0,3,0 + +Sweet Acorn +0,2,0 + +Swimming Tango +0,1,0 + +Synth Saurus +1,4,0 + +Taiyou no Shinden +1,6,2 + +Takahashi Meijin no Boukenjima +0,3,0 + +Takeru Densetsu +0,3,0 + +Tanigawa Koji no Shougi +0,3,0 + +Tanigawa Koji no Shougi 2 +1,5,2 + +Tank Battalion +0,1,0 + +Tatica +0,2,0 + +Tawara-kun +0,2,0 + +Tear of Nile +0,3,0 + +Teitoku no Ketsudan +7,8,4 + +Telebunnie +0,2,0 + +Tengoku Yoitoko +1,5,0 + +Tensai Rabbian Daifunsen +0,3,0 + +Tenshi-tachi no Gogo +0,3,0 + +Tetra Horror +0,2,0 + +Tetris +1,5,0 + +Tetsuman +0,2,0 + +Thexder +0,3,0 + +Thunder Ball +0,3,0 + +Thunderbolt +0,3,0 + +Time Pilot +0,2,0 + +Top Roller +0,2,0 + +Topple Zip MSX +0,3,0 + +Topple Zip MSX2 +1,5,0 + +Tower of Druaga +0,3,0 + +Track & Field 1 +0,2,0 + +Track & Field 2 +0,2,0 + +Traffic +0,3,0 + +Treasure of Usas +8,5,0 + +Trial Ski +0,2,0 + +Tritorn +0,3,0 + +Trump Aid +0,3,0 + +Tsumego 120 +2,5,0 + +Tsurikichi Sanpei - Blue +1,5,0 + +Tsurikichi Sanpei - Tsuri +1,6,0 + +Turboat +0,2,0 + +Turmoil +0,2,0 + +Twinbee +0,3,0 + +TZR Grandprix Rider +0,3,0 + +Ultima Exodus +1,6,2 + +Ultraman +0,2,0 + +Urusei Yatsura +1,7,0 + +Vampire Killer +8,5,0 + +Vaxol +2,5,0 + +Venus Fire +0,3,0 + +Victorious Nine II +2,5,0 + +Video Hustler +0,1,0 + +Vifam +0,2,0 + +Volguard +0,3,0 + +Warp & Warp +0,1,0 + +Warroid +0,3,0 + +Wing Man 2 +1,5,0 + +Wizardry +1,7,2 + +Wonderboy +0,3,0 + +Woody Poco +2,5,0 + +Wrangler +0,2,0 + +Wreck +0,3,0 + +Xanadu +1,6,2 + +Xevious +2,6,0 + +Xyzolog +0,2,0 + +Yaksa +1,6,0 + +Yakyuu-kyou +0,3,0 + +Yamaha Play Card System +0,2,0 + +Yamamura Misa Suspense +1,6,0 + +Yellow Submarine +0,2,0 + +Yie Ar Kung-Fu +0,2,0 + +Yie Ar Kung-Fu II +0,3,0 + +Youkai Yashiki +0,3,0 + +Young Sherlock +1,5,0 + +Yuurei-kun +1,6,0 + +Zaider +0,3,0 + +Zanac A.I. +0,3,0 + +Zanac Ex +2,5,0 + +Zaxxon +0,3,0 + +Zenji +0,3,0 + +Zexas Limited +0,3,0 + +Zoids +2,5,0 + +Zombie Hunter +1,5,0 + +Zoom 909 +0,3,0 + +Zukkoke Yajikita +1,5,0 + diff --git a/sd/ody2cart.txt b/sd/ody2cart.txt index 22654f3..95098e2 100644 --- a/sd/ody2cart.txt +++ b/sd/ody2cart.txt @@ -1,134 +1,399 @@ -4 en 1 Ligne,1,1,0 -4 in 1 Row,1,1,20 -Air Battle (V+),0,3,19 -Alien Invaders - Plus,0,0,24 -Alpine Skiing,0,0,30 -Armored Encounter + Sub Chase,0,0,22 -Atlantis,0,1,38 -Attack of the Timelord,0,1,17 -Baseball,0,0,31 -Billard Americain,0,0,17 -Billard Americain (V+),0,2,26 -Billard Electrique,0,0,31 -Billard Electrique (V+),0,2,27 -Blackjack,0,0,32 -Blobbers,0,2,18 -Blockout + Breakdown,0,0,17 -Bombardeio Submarino + Tiro ao Alvo,0,0,29 -Bowling + Basketball,0,0,44 -Buraco Negro,0,2,29 -Casino Slot Machine,0,0,21 -Catch the Ball + Noughts and Crosses,0,0,28 -Chat et Souris,0,1,45 -Chess,0,0,23 -Chez Maxime (V+),0,1,14 -Chinese Logic,0,0,25 -Clay Pigeon,0,1,22 -Comando Noturno,0,2,20 -Computer Golf,0,0,24 -Computer Intro,0,0,22 -Computer Programmer,0,0,23 -Conflit Cosmique,0,0,28 -Conquest of the World,0,1,25 -Cosmic Conflict,0,0,30 -Cosmic Conflict (V+),0,2,24 -Course de Voitures + Autodrome + Cryptogramme,0,0,29 -Course de Voitures + Autodrome + Cryptogramme (V+),0,2,54 -Demon Attack,0,1,59 -Demon Attack (V+),0,2,21 -Depth Charge + Marksman,0,0,26 -Desafio Chines,0,0,32 -Dynasty,0,0,23 -Electronic Table Soccer,0,0,16 -Exojet (V+),0,2,32 -Football,0,0,20 -Football Electronique + Hockey Electronique,0,0,17 -Freedom Fighters,0,1,52 -Freedom Fighters (V+),0,2,25 -Frogger,0,2,30 -Golf,0,0,16 -Great Wall Street Fortune Hunt,0,1,13 -Guerre de l'Espace (V+),0,2,39 -Guerre Laser,0,0,32 -Gunfighter,0,0,21 -Helicopter Rescue (V+),0,4,19 -Hockey + Soccer,0,0,31 -I've Got Your Number,0,0,24 -Invaders from Hyperspace,0,0,29 -Jeu de Quilles + Basketball,0,0,33 -Jeu de Quilles + Basketball (V+),0,2,36 -Jumping Acrobats,0,0,41 -K.C. Munchkin,0,1,25 -K.C.'s Krazy Chase,0,1,22 -Keyboard Creations,0,0,27 -Killer Bees,0,2,27 -Killer Bees (V+),0,2,20 -Kinder im Verkehr 1,0,0,25 -La Quete des Anneaux,0,1,28 -La Ruche Infernale (V+),0,2,29 -Labyrinth Game + Supermind,0,0,32 -Las Vegas,0,0,35 -Las Vegas Blackjack,0,0,18 -Laser War,0,0,28 -Le Mur Magique,0,0,18 -Le Tresor Englouti (V+),0,2,23 -Loony Balloon (V+),0,2,32 -Matchmaker + Logix + Buzzword,0,0,27 -Math-A-Magic + Echo,0,0,38 -Mathematicien + Echo,0,0,28 -Monkeyshines,0,1,29 -Morse,0,0,21 -Moto-Crash (V+),0,2,14 -Mousing Cat,0,1,24 -Munchkin,0,1,20 -Musician,1,1,17 -Neutron Star (V+),0,3,17 -Newscaster,0,0,26 -Nightmare,0,2,19 -Nightmare (V+),0,2,18 -Nimble Numbers Ned,0,1,23 -Norseman (V+),0,2,27 -O Malabarista + Jogo da Velha,0,0,22 -O Segredo do Farao,0,1,38 -Out of this World + Helicopter Rescue,0,0,27 -P.T. Barnum's Acrobats,0,1,46 -Pachinko,0,0,31 -Pairs + Space Rendezvous + Logic,0,0,17 -Pick Axe Pete,0,1,41 -Pickaxe Pete (V+),0,2,22 -Pocket Billiards,0,0,26 -Popeye,0,2,25 -Power Lords,0,1,15 -Power Lords (Alt),0,2,20 -Prendre l'Argent et Fuir,0,0,26 -Q-Bert,0,2,33 -Quest for the Rings,0,1,15 -Race + Spin-out + Cryptogram (V+),0,2,28 -Samurai,0,0,42 -Satellite Attack,0,0,16 -Satellite Attack (V+),0,2,25 -Secret of the Pharaohs,0,0,30 -Showdown in 2100 A.D.,0,0,31 -Sid the Spellbinder,0,1,30 -Skiing,0,0,28 -Smithereens,0,1,15 -Speedway + Spin-out + Crypto-logic,0,0,20 -Stone Sling,0,0,43 -Stone Sling (V+),0,2,20 -Super Bee,0,1,25 -Super Cobra,0,2,18 -Syracuse (V+),0,1,20 -Take the Money and Run,0,0,22 -Terrahawks (V+),0,2,31 -Thunderball,0,0,24 -Trans American Rally (V+),0,4,20 -Turtles,0,2,34 -Type & Tell,0,1,16 -UFO,0,0,20 -Verkehrsspiele 1,0,0,12 -Verkehrsspiele 2,0,0,25 -Volleyball,0,0,25 -Volleyball Electronique,0,0,19 -Wall Street,0,1,32 -War of Nerves,0,0,20 -EOF,0,0,22 +4 en 1 Ligne +1,1 + +4 in 1 Row +1,1 + +Air Battle (V+) +0,3 + +Alien Invaders - Plus +0,0 + +Alpine Skiing +0,0 + +Armored Encounter + Sub Chase +0,0 + +Atlantis +0,1 + +Attack of the Timelord +0,1 + +Baseball +0,0 + +Billard Americain +0,0 + +Billard Americain (V+) +0,2 + +Billard Electrique +0,0 + +Billard Electrique (V+) +0,2 + +Blackjack +0,0 + +Blobbers +0,2 + +Blockout + Breakdown +0,0 + +Bombardeio Submarino + Tiro ao Alvo +0,0 + +Bowling + Basketball +0,0 + +Buraco Negro +0,2 + +Casino Slot Machine +0,0 + +Catch the Ball + Noughts and Crosses +0,0 + +Chat et Souris +0,1 + +Chess +0,0 + +Chez Maxime (V+) +0,1 + +Chinese Logic +0,0 + +Clay Pigeon +0,1 + +Comando Noturno +0,2 + +Computer Golf +0,0 + +Computer Intro +0,0 + +Computer Programmer +0,0 + +Conflit Cosmique +0,0 + +Conquest of the World +0,1 + +Cosmic Conflict +0,0 + +Cosmic Conflict (V+) +0,2 + +Course de Voitures + Autodrome + Cryptogramme +0,0 + +Course de Voitures + Autodrome + Cryptogramme (V+) +0,2 + +Demon Attack +0,1 + +Demon Attack (V+) +0,2 + +Depth Charge + Marksman +0,0 + +Desafio Chines +0,0 + +Dynasty +0,0 + +Electronic Table Soccer +0,0 + +Exojet (V+) +0,2 + +Football +0,0 + +Football Electronique + Hockey Electronique +0,0 + +Freedom Fighters +0,1 + +Freedom Fighters (V+) +0,2 + +Frogger +0,2 + +Golf +0,0 + +Great Wall Street Fortune Hunt +0,1 + +Guerre de l'Espace (V+) +0,2 + +Guerre Laser +0,0 + +Gunfighter +0,0 + +Helicopter Rescue (V+) +0,4 + +Hockey + Soccer +0,0 + +I've Got Your Number +0,0 + +Invaders from Hyperspace +0,0 + +Jeu de Quilles + Basketball +0,0 + +Jeu de Quilles + Basketball (V+) +0,2 + +Jumping Acrobats +0,0 + +K.C. Munchkin +0,1 + +K.C.'s Krazy Chase +0,1 + +Keyboard Creations +0,0 + +Killer Bees +0,2 + +Killer Bees (V+) +0,2 + +Kinder im Verkehr 1 +0,0 + +La Quete des Anneaux +0,1 + +La Ruche Infernale (V+) +0,2 + +Labyrinth Game + Supermind +0,0 + +Las Vegas +0,0 + +Las Vegas Blackjack +0,0 + +Laser War +0,0 + +Le Mur Magique +0,0 + +Le Tresor Englouti (V+) +0,2 + +Loony Balloon (V+) +0,2 + +Matchmaker + Logix + Buzzword +0,0 + +Math-A-Magic + Echo +0,0 + +Mathematicien + Echo +0,0 + +Monkeyshines +0,1 + +Morse +0,0 + +Moto-Crash (V+) +0,2 + +Mousing Cat +0,1 + +Munchkin +0,1 + +Musician +1,1 + +Neutron Star (V+) +0,3 + +Newscaster +0,0 + +Nightmare +0,2 + +Nightmare (V+) +0,2 + +Nimble Numbers Ned +0,1 + +Norseman (V+) +0,2 + +O Malabarista + Jogo da Velha +0,0 + +O Segredo do Farao +0,1 + +Out of this World + Helicopter Rescue +0,0 + +P.T. Barnum's Acrobats +0,1 + +Pachinko +0,0 + +Pairs + Space Rendezvous + Logic +0,0 + +Pick Axe Pete +0,1 + +Pickaxe Pete (V+) +0,2 + +Pocket Billiards +0,0 + +Popeye +0,2 + +Power Lords +0,1 + +Power Lords (Alt) +0,2 + +Prendre l'Argent et Fuir +0,0 + +Q-Bert +0,2 + +Quest for the Rings +0,1 + +Race + Spin-out + Cryptogram (V+) +0,2 + +Samurai +0,0 + +Satellite Attack +0,0 + +Satellite Attack (V+) +0,2 + +Secret of the Pharaohs +0,0 + +Showdown in 2100 A.D. +0,0 + +Sid the Spellbinder +0,1 + +Skiing +0,0 + +Smithereens +0,1 + +Speedway + Spin-out + Crypto-logic +0,0 + +Stone Sling +0,0 + +Stone Sling (V+) +0,2 + +Super Bee +0,1 + +Super Cobra +0,2 + +Syracuse (V+) +0,1 + +Take the Money and Run +0,0 + +Terrahawks (V+) +0,2 + +Thunderball +0,0 + +Trans American Rally (V+) +0,4 + +Turtles +0,2 + +Type & Tell +0,1 + +UFO +0,0 + +Verkehrsspiele 1 +0,0 + +Verkehrsspiele 2 +0,0 + +Volleyball +0,0 + +Volleyball Electronique +0,0 + +Wall Street +0,1 + +War of Nerves +0,0 + diff --git a/sd/vectrexcart.txt b/sd/vectrexcart.txt index 4f1b949..fc136f2 100644 --- a/sd/vectrexcart.txt +++ b/sd/vectrexcart.txt @@ -1,32 +1,94 @@ -3D Crazy Coaster,1,0 -3D Mine Storm,1,22 -3D Narrow Escape,1,20 -AnimAction,1,23 -Armor..Attack,0,17 -Art Master,0,20 -Bedlam,0,17 -Berzerk,0,13 -Blitz!,1,14 -Clean Sweep,0,13 -Cosmic Chasm,0,18 -Fortress of Narzod,1,19 -Heads-Up,1,25 -HyperChase,0,15 -Melody Master,1,17 -Mine Storm,0,20 -Mine Storm II,0,17 -Polar Rescue,1,20 -Pole Position,1,19 -Rip Off,0,20 -Scramble,0,14 -Solar Quest,0,15 -Space Wars,0,18 -Spike,1,17 -Spin ball,1,12 -Star Castle,0,16 -Star Ship,0,18 -Star Trek,0,16 -StarHawk,0,16 -WebWarp,1,15 -WebWars,1,14 -EOF,0,0 +3D Crazy Coaster +1 + +3D Mine Storm +1 + +3D Narrow Escape +1 + +AnimAction +1 + +Armor..Attack +0 + +Art Master +0 + +Bedlam +0 + +Berzerk +0 + +Blitz! +1 + +Clean Sweep +0 + +Cosmic Chasm +0 + +Fortress of Narzod +1 + +Heads-Up +1 + +HyperChase +0 + +Melody Master +1 + +Mine Storm +0 + +Mine Storm II +0 + +Polar Rescue +1 + +Pole Position +1 + +Rip Off +0 + +Scramble +0 + +Solar Quest +0 + +Space Wars +0 + +Spike +1 + +Spin ball +1 + +Star Castle +0 + +Star Ship +0 + +Star Trek +0 + +StarHawk +0 + +WebWarp +1 + +WebWars +1 + +