mirror of
https://github.com/sanni/cartreader.git
synced 2024-12-27 05:21:53 +01:00
commit
e108d8d63d
@ -460,7 +460,7 @@ uint32_t calculateCRC(char* fileName, char* folder, unsigned long offset) {
|
||||
/******************************************
|
||||
CRC Functions for Atari, Fairchild, Ody2, Arc, etc. modules
|
||||
*****************************************/
|
||||
#if (defined(ENABLE_ODY2) || defined(ENABLE_ARC) || defined(ENABLE_FAIRCHILD) || defined(ENABLE_MSX) || defined(ENABLE_POKE) || defined(ENABLE_2600) || defined(ENABLE_7800) || defined(ENABLE_C64) || defined(ENABLE_VECTREX) || defined(ENABLE_NES) || defined(ENABLE_LYNX) || defined(ENABLE_ATARI8) || defined(ENABLE_BALLY) || defined(ENABLE_LEAP) || defined(ENABLE_LJ) || defined(ENABLE_LJPRO) || defined(ENABLE_PV1000) || defined(ENABLE_PYUUTA) || defined(ENABLE_RCA) || defined(ENABLE_TI99) || defined(ENABLE_TRS80) || defined(ENABLE_VIC20) || defined(ENABLE_VSMILE))
|
||||
#if (defined(ENABLE_ODY2) || defined(ENABLE_ARC) || defined(ENABLE_FAIRCHILD) || defined(ENABLE_MSX) || defined(ENABLE_POKE) || defined(ENABLE_2600) || defined(ENABLE_7800) || defined(ENABLE_C64) || defined(ENABLE_VECTREX) || defined(ENABLE_NES) || defined(ENABLE_LYNX) || defined(ENABLE_ATARI8) || defined(ENABLE_BALLY) || defined(ENABLE_LEAP) || defined(ENABLE_LJ) || defined(ENABLE_LJPRO) || defined(ENABLE_PV1000) || defined(ENABLE_PYUUTA) || defined(ENABLE_RCA) || defined(ENABLE_TI99) || defined(ENABLE_TRS80) || defined(ENABLE_VIC20) || defined(ENABLE_VSMILE) || defined(ENABLE_CPS3))
|
||||
|
||||
void printCRC(char* checkFile, uint32_t* crcCopy, unsigned long offset) {
|
||||
uint32_t crc = calculateCRC(checkFile, folder, offset);
|
||||
@ -1122,8 +1122,9 @@ constexpr char modeItem38[] PROGMEM = "Tomy Pyuuta";
|
||||
constexpr char modeItem39[] PROGMEM = "TRS-80";
|
||||
constexpr char modeItem40[] PROGMEM = "Vtech V.Smile (3V)";
|
||||
constexpr char modeItem41[] PROGMEM = "Flashrom Programmer";
|
||||
constexpr char modeItem42[] PROGMEM = "Self Test (3V)";
|
||||
constexpr char modeItem43[] PROGMEM = "About";
|
||||
constexpr char modeItem42[] PROGMEM = "CP System III";
|
||||
constexpr char modeItem43[] PROGMEM = "Self Test (3V)";
|
||||
constexpr char modeItem44[] PROGMEM = "About";
|
||||
|
||||
static const char* const modeOptions[] PROGMEM = {
|
||||
#ifdef ENABLE_GBX
|
||||
@ -1249,10 +1250,13 @@ static const char* const modeOptions[] PROGMEM = {
|
||||
#ifdef ENABLE_FLASH8
|
||||
modeItem41,
|
||||
#endif
|
||||
#ifdef ENABLE_SELFTEST
|
||||
#ifdef ENABLE_CPS3
|
||||
modeItem42,
|
||||
#endif
|
||||
modeItem43, FSTRING_RESET
|
||||
#ifdef ENABLE_SELFTEST
|
||||
modeItem43,
|
||||
#endif
|
||||
modeItem44, FSTRING_RESET
|
||||
|
||||
};
|
||||
|
||||
@ -1570,6 +1574,11 @@ void mainMenu() {
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CPS3
|
||||
case SYSTEM_MENU_CPS3:
|
||||
return cpsMenu();
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_SELFTEST
|
||||
case SYSTEM_MENU_SELFTEST:
|
||||
return selfTest();
|
||||
@ -3832,6 +3841,11 @@ void loop() {
|
||||
#endif
|
||||
#ifdef ENABLE_VSMILE
|
||||
case CORE_VSMILE: return vsmileMenu();
|
||||
#endif
|
||||
#ifdef ENABLE_CPS3
|
||||
case CORE_CPS3_CART: return flashromCPS_Cartridge();
|
||||
case CORE_CPS3_128SIMM: return flashromCPS_SIMM2x8();
|
||||
case CORE_CPS3_64SIMM: return flashromCPS_SIMM4x8();
|
||||
#endif
|
||||
case CORE_MAX: return resetArduino();
|
||||
}
|
||||
|
@ -390,6 +390,13 @@
|
||||
|
||||
/****/
|
||||
|
||||
/* [ CP System III ------------------------------------------------ ]
|
||||
*/
|
||||
|
||||
#define ENABLE_CPS3
|
||||
|
||||
/****/
|
||||
|
||||
/*==== FIRMWARE OPTIONS ===========================================*/
|
||||
|
||||
/* [ Config File -------------------------------------------------- ]
|
||||
|
@ -16,6 +16,7 @@ unsigned long blank;
|
||||
unsigned long sectorSize;
|
||||
uint16_t bufferSize;
|
||||
byte mapping = 0;
|
||||
boolean byteCtrl = 0;
|
||||
|
||||
/******************************************
|
||||
Menu
|
||||
@ -238,7 +239,7 @@ void flashromMenu8() {
|
||||
writeFlash29LV640();
|
||||
else if (flashid == 0x017E)
|
||||
writeFlash29GL(sectorSize, bufferSize);
|
||||
else if ((flashid == 0x0458) || (flashid == 0x0158) || (flashid == 0x01AB))
|
||||
else if ((flashid == 0x0458) || (flashid == 0x0158) || (flashid == 0x01AB) || (flashid == 0x0422) || (flashid == 0x0423))
|
||||
writeFlash29F800();
|
||||
else if (flashid == 0x0) // Manual flash config, pick most common type
|
||||
writeFlash29LV640();
|
||||
@ -576,7 +577,7 @@ idtheflash:
|
||||
flashSize = 2097152;
|
||||
flashromType = 1;
|
||||
} else if (flashid == 0x04AD) {
|
||||
println_Msg(F("AM29F016D detected"));
|
||||
println_Msg(F("MBM29F016A detected"));
|
||||
flashSize = 2097152;
|
||||
flashromType = 1;
|
||||
} else if (flashid == 0x04D4) {
|
||||
@ -595,6 +596,14 @@ idtheflash:
|
||||
println_Msg(F("AM29F400AB detected"));
|
||||
flashSize = 131072 * 4;
|
||||
flashromType = 2;
|
||||
} else if (flashid == 0x0423) {
|
||||
println_Msg(F("MBM29F400TC detected"));
|
||||
flashSize = 131072 * 4;
|
||||
flashromType = 2;
|
||||
} else if (flashid == 0x0422) {
|
||||
println_Msg(F("MBM29F400BC detected"));
|
||||
flashSize = 131072 * 4;
|
||||
flashromType = 2;
|
||||
} else if (flashid == 0x0158) {
|
||||
println_Msg(F("AM29F800BB detected"));
|
||||
flashSize = 1048576;
|
||||
@ -1207,8 +1216,13 @@ byte readByte_Flash(unsigned long myAddress) {
|
||||
"nop\n\t"
|
||||
"nop\n\t");
|
||||
|
||||
// Setting OE(PH1) OE_SNS(PH3) LOW
|
||||
PORTH &= ~((1 << 1) | (1 << 3));
|
||||
if (byteCtrl) {
|
||||
// Setting OE(PH1) LOW
|
||||
PORTH &= ~(1 << 1);
|
||||
} else {
|
||||
// Setting OE(PH1) OE_SNS(PH3) LOW
|
||||
PORTH &= ~((1 << 1) | (1 << 3));
|
||||
}
|
||||
|
||||
__asm__("nop\n\t"
|
||||
"nop\n\t"
|
||||
@ -1220,8 +1234,13 @@ byte readByte_Flash(unsigned long myAddress) {
|
||||
// Read
|
||||
byte tempByte = PINC;
|
||||
|
||||
// Setting OE(PH1) OE_SNS(PH3) HIGH
|
||||
PORTH |= (1 << 1) | (1 << 3);
|
||||
if (byteCtrl) {
|
||||
// Setting OE(PH1) HIGH
|
||||
PORTH |= (1 << 1);
|
||||
} else {
|
||||
// Setting OE(PH1) OE_SNS(PH3) HIGH
|
||||
PORTH |= (1 << 1) | (1 << 3);
|
||||
}
|
||||
__asm__("nop\n\t"
|
||||
"nop\n\t"
|
||||
"nop\n\t"
|
||||
@ -1507,8 +1526,13 @@ int busyCheck29F032(uint32_t addr, byte c) {
|
||||
// Set data pins to input
|
||||
dataIn8();
|
||||
|
||||
// Setting OE(PH1) OE_SNS(PH3) CE(PH6)LOW
|
||||
PORTH &= ~((1 << 1) | (1 << 3) | (1 << 6));
|
||||
if (byteCtrl) {
|
||||
// Setting OE(PH1) CE(PH6)LOW
|
||||
PORTH &= ~((1 << 1) | (1 << 6));
|
||||
} else {
|
||||
// Setting OE(PH1) OE_SNS(PH3) CE(PH6)LOW
|
||||
PORTH &= ~((1 << 1) | (1 << 3) | (1 << 6));
|
||||
}
|
||||
// Setting WE(PH4) WE_SNES(PH5) HIGH
|
||||
PORTH |= (1 << 4) | (1 << 5);
|
||||
|
||||
@ -1537,8 +1561,13 @@ int busyCheck29F032(uint32_t addr, byte c) {
|
||||
// Set data pins to output
|
||||
dataOut();
|
||||
|
||||
// Setting OE(PH1) OE_SNS(PH3) HIGH
|
||||
PORTH |= (1 << 1) | (1 << 3);
|
||||
if (byteCtrl) {
|
||||
// Setting OE(PH1) HIGH
|
||||
PORTH |= (1 << 1);
|
||||
} else {
|
||||
// Setting OE(PH1) OE_SNS(PH3) HIGH
|
||||
PORTH |= (1 << 1) | (1 << 3);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/******************************************
|
||||
@ -2425,11 +2454,11 @@ void printFlash16(int numBytes) {
|
||||
byte right_byte = (currWord >> 8) & 0xFF;
|
||||
|
||||
|
||||
sprintf(buf, "%.2x", left_byte);
|
||||
sprintf(buf, "%.2X", left_byte);
|
||||
// Now print the significant bits
|
||||
print_Msg(buf);
|
||||
|
||||
sprintf(buf, "%.2x", right_byte);
|
||||
sprintf(buf, "%.2X", right_byte);
|
||||
// Now print the significant bits
|
||||
print_Msg(buf);
|
||||
}
|
||||
|
1630
Cart_Reader/FLASH_CPS3.ino
Normal file
1630
Cart_Reader/FLASH_CPS3.ino
Normal file
File diff suppressed because it is too large
Load Diff
@ -268,6 +268,13 @@ enum CORES: uint8_t {
|
||||
# endif
|
||||
# ifdef ENABLE_VSMILE
|
||||
CORE_VSMILE,
|
||||
# endif
|
||||
# ifdef ENABLE_CPS3
|
||||
CORE_CPS3_CART,
|
||||
CORE_CPS3_64SIMM,
|
||||
CORE_CPS3_128SIMM,
|
||||
CORE_CPS3_512SIMM,
|
||||
CORE_CPS3_01SIMM,
|
||||
# endif
|
||||
CORE_MAX // Always last
|
||||
};
|
||||
@ -396,6 +403,9 @@ enum SYSTEM_MENU: uint8_t {
|
||||
# if defined(ENABLE_FLASH8)
|
||||
SYSTEM_MENU_FLASH,
|
||||
# endif
|
||||
# if defined(ENABLE_CPS3)
|
||||
SYSTEM_MENU_CPS3,
|
||||
# endif
|
||||
# if defined(ENABLE_SELFTEST)
|
||||
SYSTEM_MENU_SELFTEST,
|
||||
# endif
|
||||
@ -471,4 +481,4 @@ extern long configGetLong(const __FlashStringHelper* key, int onFail = 0);
|
||||
|
||||
#include "ClockedSerial.h"
|
||||
|
||||
#endif /* OSCR_H_ */
|
||||
#endif /* OSCR_H_ */
|
||||
|
92
sd/cps3.txt
Normal file
92
sd/cps3.txt
Normal file
@ -0,0 +1,92 @@
|
||||
Warzard (Japan).u2
|
||||
F8E2F0C6,1FEDB,868584838281808F,0000,0000,0,0000
|
||||
|
||||
Red Earth (Europe).u2
|
||||
02E0F336,1FEDB,868584838281808F,0000,0000,0,0000
|
||||
|
||||
Red Earth (Asia, NO CD).u2
|
||||
7A4F0851,00000,868584838281808F,0000,0000,0,0000
|
||||
|
||||
Street Fighter III New Generation (Japan).u2
|
||||
74205250,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III New Generation (Asia).u2
|
||||
CBD28DE7,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III New Generation (Europe).u2
|
||||
27699DDC,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III New Generation (USA).u2
|
||||
FB172A8E,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III New Generation (Hispanic).u2
|
||||
D2B3CD48,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III New Generation (Asia, NO CD, Set 1).u2
|
||||
CA2B715F,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III New Generation (Asia, NO CD, Set 2).u2
|
||||
73E32463,1FECB,B4B7B6B1B0B3B2BD,1FECC,D2D3,0,0000
|
||||
|
||||
Street Fighter III 2nd Impact Giant Attack (Japan).u2
|
||||
FAEA0A3E,1FECB,A9AAABACADAEAFA0,1FECC,BCBD,0,0000
|
||||
|
||||
Street Fighter III 2nd Impact Giant Attack (USA)
|
||||
75DD72E0,1FECB,A9AAABACADAEAFA0,1FECC,BCBD,0,0000
|
||||
|
||||
Street Fighter III 2nd Impact Giant Attack (Hispanic).u2
|
||||
5C799526,1FECB,A9AAABACADAEAFA0,1FECC,BCBD,0,0000
|
||||
|
||||
Street Fighter III 2nd Impact Giant Attack (Asia, NO CD).u2
|
||||
FD297C0D,1FECB,A9AAABACADAEAFA0,1FECC,BCBD,0,0000
|
||||
|
||||
JoJo no Kimyou na Bouken (Japan).u2
|
||||
02778F60,1FECB,0C0F0E09080B0A05,1FECC,B4B5,0,0000
|
||||
|
||||
JoJo's Venture (Asia).u2
|
||||
789AA72A,1FECB,0C0F0E09080B0A05,1FECC,B4B5,0,0000
|
||||
|
||||
JoJo's Venture (Asia, NO CD).u2
|
||||
05B4F953,1FECB,0C0F0E09080B0A05,1FECC,B4B5,0,0000
|
||||
|
||||
JoJo's Venture (Europe).u2
|
||||
513E40EC,1FECB,0C0F0E09080B0A05,1FECC,B4B5,0,0000
|
||||
|
||||
JoJo's Venture (USA).u2
|
||||
8D40F7BE,1FECB,0C0F0E09080B0A05,1FECC,B4B5,0,0000
|
||||
|
||||
Street Fighter III 3rd Strike Fight for the Future (Japan).u2
|
||||
63F23D1F,1FECB,6063626564676669,1FECC,3031,0,0000
|
||||
|
||||
Street Fighter III 3rd Strike Fight for the Future (Japan, NO CD).u2
|
||||
1EDC6366,1FECB,6063626564676669,1FECC,3031,0,0000
|
||||
|
||||
Street Fighter III 3rd Strike Fight for the Future (Europe).u2
|
||||
30BBF293,1FECB,6063626564676669,1FECC,3031,0,0000
|
||||
|
||||
Street Fighter III 3rd Strike Fight for the Future (USA).u2
|
||||
ECC545C1,1FECB,6063626564676669,1FECC,3031,0,0000
|
||||
|
||||
JoJo no Kimyou na Bouken Mirai e no Isan (Japan).u2
|
||||
3085478C,1FECB,2B28292E2F2C2D22,1FECC,6B6A,0,0000
|
||||
|
||||
JoJo no Kimyou na Bouken Mirai e no Isan (Japan, NO CD).u2
|
||||
4DAB19F5,1FECB,2B28292E2F2C2D22,1FECC,6B6A,0,0000
|
||||
|
||||
JoJo's Bizarre Adventure (Europe).u2
|
||||
63CC8800,1FECB,2B28292E2F2C2D22,1FECC,6B6A,0,0000
|
||||
|
||||
JoJo's Bizarre Adventure (Europe, NO CD).u2
|
||||
1EE2D679,1FECB,2B28292E2F2C2D22,1FECC,6B6A,0,0000
|
||||
|
||||
UltraBIOS for custom SH2 AUTOSELECT v1.0 CD.u2
|
||||
4D938388,20733,B1B2B3B4B5B6B7B8,1FECC,BCBD,1,1FC5
|
||||
|
||||
UltraBIOS for custom SH2 AUTOSELECT v1.0 NOCD.u2
|
||||
30BDDDF1,20733,B1B2B3B4B5B6B7B8,1FECC,BCBD,1,1FC5
|
||||
|
||||
UltraBIOS for standard SH2 AUTOSELECT v1.0 CD.u2
|
||||
89DD398B,20733,0102030405060708,1FECC,0001,1,3089
|
||||
|
||||
UltraBIOS for standard SH2 AUTOSELECT v1.0 CD.u2
|
||||
F4F367F2,20733,0102030405060708,1FECC,0001,1,3089
|
Loading…
Reference in New Issue
Block a user