mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-10 23:15:08 +01:00
V9.0
This commit is contained in:
parent
acddafb0af
commit
e87de58328
@ -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: 08.07.2022
|
Date: 17.07.2022
|
||||||
Version: 9.0 BETA
|
Version: 9.0
|
||||||
|
|
||||||
SD lib: https://github.com/greiman/SdFat
|
SD lib: https://github.com/greiman/SdFat
|
||||||
OLED lib: https://github.com/adafruit/Adafruit_SSD1306
|
OLED lib: https://github.com/adafruit/Adafruit_SSD1306
|
||||||
@ -36,6 +36,7 @@
|
|||||||
insidegadgets - GBCartRead
|
insidegadgets - GBCartRead
|
||||||
RobinTheHood - GameboyAdvanceRomDumper
|
RobinTheHood - GameboyAdvanceRomDumper
|
||||||
Gens-gs - Megadrive checksum
|
Gens-gs - Megadrive checksum
|
||||||
|
fceux - iNes header
|
||||||
|
|
||||||
And a special Thank You to all coders and contributors on Github and the Arduino forum:
|
And a special Thank You to all coders and contributors on Github and the Arduino forum:
|
||||||
jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi,
|
jiyunomegami, splash5, Kreeblah, ramapcsx2, PsyK0p4T, Dakkaron, majorpbx, Pickle, sdhizumi,
|
||||||
@ -58,7 +59,7 @@
|
|||||||
|
|
||||||
**********************************************************************************/
|
**********************************************************************************/
|
||||||
|
|
||||||
char ver[5] = "9.0B";
|
char ver[5] = "9.0";
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
// !!! CHOOSE HARDWARE VERSION !!!
|
// !!! CHOOSE HARDWARE VERSION !!!
|
||||||
@ -75,6 +76,24 @@ char ver[5] = "9.0B";
|
|||||||
# error !!! PLEASE CHOOSE HARDWARE VERSION !!!
|
# error !!! PLEASE CHOOSE HARDWARE VERSION !!!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//******************************************
|
||||||
|
// ENABLE MODULES
|
||||||
|
//******************************************
|
||||||
|
// remove // before #define to enable a module
|
||||||
|
#define enable_SNES
|
||||||
|
#define enable_NP
|
||||||
|
#define enable_SV
|
||||||
|
#define enable_MD
|
||||||
|
#define enable_SMS
|
||||||
|
#define enable_N64
|
||||||
|
#define enable_GBX
|
||||||
|
#define enable_NES
|
||||||
|
#define enable_FLASH
|
||||||
|
#define enable_FLASH16
|
||||||
|
//#define enable_PCE
|
||||||
|
//#define enable_WS
|
||||||
|
//#define enable_NGP
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
// HW CONFIGS
|
// HW CONFIGS
|
||||||
//******************************************
|
//******************************************
|
||||||
@ -140,25 +159,6 @@ char ver[5] = "9.0B";
|
|||||||
// saves a n64log.txt file with rom info in /N64/ROM
|
// saves a n64log.txt file with rom info in /N64/ROM
|
||||||
// #define savesummarytotxt
|
// #define savesummarytotxt
|
||||||
|
|
||||||
//******************************************
|
|
||||||
// DISABLE MODULES
|
|
||||||
//******************************************
|
|
||||||
// add // before #define to disable a module
|
|
||||||
#define enable_SNES
|
|
||||||
#define enable_NP
|
|
||||||
#define enable_SV
|
|
||||||
|
|
||||||
#define enable_MD
|
|
||||||
#define enable_SMS
|
|
||||||
|
|
||||||
#define enable_N64
|
|
||||||
#define enable_GBX
|
|
||||||
#define enable_NES
|
|
||||||
#define enable_FLASH
|
|
||||||
#define enable_PCE
|
|
||||||
#define enable_WS
|
|
||||||
#define enable_NGP
|
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Libraries
|
Libraries
|
||||||
*****************************************/
|
*****************************************/
|
||||||
@ -795,13 +795,23 @@ void mainMenu() {
|
|||||||
|
|
||||||
#ifdef enable_FLASH
|
#ifdef enable_FLASH
|
||||||
case 9:
|
case 9:
|
||||||
|
#ifdef enable_FLASH16
|
||||||
flashMenu();
|
flashMenu();
|
||||||
|
#else
|
||||||
|
flashromMenu8();
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
aboutScreen();
|
aboutScreen();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
display_Clear();
|
||||||
|
println_Msg(F("Please enable module"));
|
||||||
|
print_Error(F("in Cart_Reader.ino."), true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -943,6 +953,12 @@ void addonsMenu() {
|
|||||||
case 6:
|
case 6:
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
display_Clear();
|
||||||
|
println_Msg(F("Please enable module"));
|
||||||
|
print_Error(F("in Cart_Reader.ino."), true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2904,6 +2920,7 @@ void loop() {
|
|||||||
else if (mode == mode_FLASH8) {
|
else if (mode == mode_FLASH8) {
|
||||||
flashromMenu8();
|
flashromMenu8();
|
||||||
}
|
}
|
||||||
|
#ifdef enable_FLASH16
|
||||||
else if (mode == mode_FLASH16) {
|
else if (mode == mode_FLASH16) {
|
||||||
flashromMenu16();
|
flashromMenu16();
|
||||||
}
|
}
|
||||||
@ -2911,6 +2928,7 @@ void loop() {
|
|||||||
epromMenu();
|
epromMenu();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#ifdef enable_NP
|
#ifdef enable_NP
|
||||||
else if (mode == mode_SFM) {
|
else if (mode == mode_SFM) {
|
||||||
sfmMenu();
|
sfmMenu();
|
||||||
|
@ -20,13 +20,6 @@ byte mapping = 1;
|
|||||||
/******************************************
|
/******************************************
|
||||||
Menu
|
Menu
|
||||||
*****************************************/
|
*****************************************/
|
||||||
// Flash start menu
|
|
||||||
static const char flashMenuItem1[] PROGMEM = "8bit Flash adapter";
|
|
||||||
static const char flashMenuItem2[] PROGMEM = "Eprom adapter";
|
|
||||||
static const char flashMenuItem3[] PROGMEM = "MX26L6420 adapter";
|
|
||||||
static const char flashMenuItem4[] PROGMEM = "Reset";
|
|
||||||
static const char* const menuOptionsFlash[] PROGMEM = {flashMenuItem1, flashMenuItem2, flashMenuItem3, flashMenuItem4};
|
|
||||||
|
|
||||||
// 8bit Flash menu items
|
// 8bit Flash menu items
|
||||||
static const char flash8MenuItem1[] PROGMEM = "Blankcheck";
|
static const char flash8MenuItem1[] PROGMEM = "Blankcheck";
|
||||||
static const char flash8MenuItem2[] PROGMEM = "Erase";
|
static const char flash8MenuItem2[] PROGMEM = "Erase";
|
||||||
@ -37,6 +30,14 @@ static const char flash8MenuItem6[] PROGMEM = "Print";
|
|||||||
static const char flash8MenuItem7[] PROGMEM = "Reset";
|
static const char flash8MenuItem7[] PROGMEM = "Reset";
|
||||||
static const char* const menuOptionsFLASH8[] PROGMEM = {flash8MenuItem1, flash8MenuItem2, flash8MenuItem3, flash8MenuItem4, flash8MenuItem5, flash8MenuItem6, flash8MenuItem7};
|
static const char* const menuOptionsFLASH8[] PROGMEM = {flash8MenuItem1, flash8MenuItem2, flash8MenuItem3, flash8MenuItem4, flash8MenuItem5, flash8MenuItem6, flash8MenuItem7};
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
|
// Flash start menu
|
||||||
|
static const char flashMenuItem1[] PROGMEM = "8bit Flash adapter";
|
||||||
|
static const char flashMenuItem2[] PROGMEM = "Eprom adapter";
|
||||||
|
static const char flashMenuItem3[] PROGMEM = "MX26L6420 adapter";
|
||||||
|
static const char flashMenuItem4[] PROGMEM = "Reset";
|
||||||
|
static const char* const menuOptionsFlash[] PROGMEM = {flashMenuItem1, flashMenuItem2, flashMenuItem3, flashMenuItem4};
|
||||||
|
|
||||||
// 16bit Flash menu items
|
// 16bit Flash menu items
|
||||||
static const char flash16MenuItem1[] PROGMEM = "Blankcheck";
|
static const char flash16MenuItem1[] PROGMEM = "Blankcheck";
|
||||||
static const char flash16MenuItem2[] PROGMEM = "Erase";
|
static const char flash16MenuItem2[] PROGMEM = "Erase";
|
||||||
@ -97,6 +98,7 @@ void flashMenu() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void flashromMenu8() {
|
void flashromMenu8() {
|
||||||
// create menu with title and 7 options to choose from
|
// create menu with title and 7 options to choose from
|
||||||
@ -231,6 +233,7 @@ void flashromMenu8() {
|
|||||||
wait();
|
wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
void flashromMenu16() {
|
void flashromMenu16() {
|
||||||
// create menu with title "Flashrom Writer 16" and 7 options to choose from
|
// create menu with title "Flashrom Writer 16" and 7 options to choose from
|
||||||
unsigned char mainMenu;
|
unsigned char mainMenu;
|
||||||
@ -393,6 +396,7 @@ void epromMenu() {
|
|||||||
}
|
}
|
||||||
wait();
|
wait();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Flash IDs
|
Flash IDs
|
||||||
@ -605,6 +609,7 @@ idtheflash:
|
|||||||
resetFlash8();
|
resetFlash8();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
void id_Flash16() {
|
void id_Flash16() {
|
||||||
// ID flash
|
// ID flash
|
||||||
idFlash16();
|
idFlash16();
|
||||||
@ -663,6 +668,7 @@ void id_Flash16() {
|
|||||||
println_Msg(F("Press Button..."));
|
println_Msg(F("Press Button..."));
|
||||||
display_Update();
|
display_Update();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Setup
|
Setup
|
||||||
@ -689,6 +695,7 @@ void setup_Flash8() {
|
|||||||
PORTC = 0x00;
|
PORTC = 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
void setup_Flash16() {
|
void setup_Flash16() {
|
||||||
// Set Address Pins to Output
|
// Set Address Pins to Output
|
||||||
//A0-A7
|
//A0-A7
|
||||||
@ -743,6 +750,7 @@ void setup_Eprom() {
|
|||||||
// 27C322 is a 4MB eprom
|
// 27C322 is a 4MB eprom
|
||||||
flashSize = 4194304;
|
flashSize = 4194304;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
I/O Functions
|
I/O Functions
|
||||||
@ -753,6 +761,7 @@ void dataIn8() {
|
|||||||
DDRC = 0x00;
|
DDRC = 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
// Switch data pins to write
|
// Switch data pins to write
|
||||||
void dataOut16() {
|
void dataOut16() {
|
||||||
DDRC = 0xFF;
|
DDRC = 0xFF;
|
||||||
@ -764,6 +773,7 @@ void dataIn16() {
|
|||||||
DDRC = 0x00;
|
DDRC = 0x00;
|
||||||
DDRA = 0x00;
|
DDRA = 0x00;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Low level functions
|
Low level functions
|
||||||
@ -906,6 +916,7 @@ byte readByte_Flash(unsigned long myAddress) {
|
|||||||
return tempByte;
|
return tempByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
void writeWord_Flash(unsigned long myAddress, word myData) {
|
void writeWord_Flash(unsigned long myAddress, word myData) {
|
||||||
PORTF = myAddress & 0xFF;
|
PORTF = myAddress & 0xFF;
|
||||||
PORTK = (myAddress >> 8) & 0xFF;
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
@ -954,6 +965,7 @@ word readWord_Flash(unsigned long myAddress) {
|
|||||||
|
|
||||||
return tempWord;
|
return tempWord;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
29F032 flashrom functions
|
29F032 flashrom functions
|
||||||
@ -1801,6 +1813,7 @@ void resetFlash8() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef enable_FLASH16
|
||||||
/******************************************
|
/******************************************
|
||||||
29L3211 16bit flashrom functions
|
29L3211 16bit flashrom functions
|
||||||
*****************************************/
|
*****************************************/
|
||||||
@ -2535,7 +2548,7 @@ void print_Eprom(int numBytes) {
|
|||||||
}
|
}
|
||||||
display_Update();
|
display_Update();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
//********************************************************
|
//********************************************************
|
||||||
// SEGA MASTER SYSTEM/Mark III/SG-1000/GAME GEAR MODULE
|
// SEGA MASTER SYSTEM/Mark III/SG-1000/GAME GEAR MODULE
|
||||||
//********************************************************
|
//********************************************************
|
||||||
#ifdef enable_MD
|
#ifdef enable_SMS
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Variables
|
Variables
|
||||||
|
Loading…
Reference in New Issue
Block a user