mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-15 01:15:06 +01:00
Add new options to SNES CFI repro menu
This commit is contained in:
parent
c9f216e531
commit
c4f84d9253
@ -72,7 +72,7 @@ void flashMenu() {
|
|||||||
case 0:
|
case 0:
|
||||||
setupCFI();
|
setupCFI();
|
||||||
flashSize = 8388608;
|
flashSize = 8388608;
|
||||||
writeCFI_Flash(0);
|
writeCFI_Flash(1, 1, 0);
|
||||||
verifyFlash();
|
verifyFlash();
|
||||||
print_STR(press_button_STR, 0);
|
print_STR(press_button_STR, 0);
|
||||||
display_Update();
|
display_Update();
|
||||||
@ -124,7 +124,7 @@ void flashMenu() {
|
|||||||
case 0:
|
case 0:
|
||||||
setupCFI();
|
setupCFI();
|
||||||
flashSize = 8388608;
|
flashSize = 8388608;
|
||||||
writeCFI_Flash(0);
|
writeCFI_Flash(1, 1, 0);
|
||||||
verifyFlash();
|
verifyFlash();
|
||||||
print_STR(press_button_STR, 0);
|
print_STR(press_button_STR, 0);
|
||||||
display_Update();
|
display_Update();
|
||||||
@ -940,7 +940,7 @@ void writeByte_Flash(unsigned long myAddress, byte myData) {
|
|||||||
PORTL |= (1 << 6);
|
PORTL |= (1 << 6);
|
||||||
}
|
}
|
||||||
// for SNES LoRom repro with 2x 2MB
|
// for SNES LoRom repro with 2x 2MB
|
||||||
else if (mapping == 11) {
|
else if (mapping == 122) {
|
||||||
// A8-A14
|
// A8-A14
|
||||||
PORTK = (myAddress >> 8) & 0x7F;
|
PORTK = (myAddress >> 8) & 0x7F;
|
||||||
// Set SNES A15(PK7) HIGH to disable SRAM
|
// Set SNES A15(PK7) HIGH to disable SRAM
|
||||||
@ -951,7 +951,7 @@ void writeByte_Flash(unsigned long myAddress, byte myData) {
|
|||||||
PORTL ^= (1 << 6);
|
PORTL ^= (1 << 6);
|
||||||
}
|
}
|
||||||
// for SNES HiRom repro with 2x 2MB
|
// for SNES HiRom repro with 2x 2MB
|
||||||
else if (mapping == 22) {
|
else if (mapping == 222) {
|
||||||
// A8-A15
|
// A8-A15
|
||||||
PORTK = (myAddress >> 8) & 0xFF;
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
// A16-A23
|
// A16-A23
|
||||||
@ -962,7 +962,7 @@ void writeByte_Flash(unsigned long myAddress, byte myData) {
|
|||||||
PORTL |= (1 << 6);
|
PORTL |= (1 << 6);
|
||||||
}
|
}
|
||||||
// for SNES ExLoRom repro with 2x 4MB
|
// for SNES ExLoRom repro with 2x 4MB
|
||||||
else if (mapping == 111) {
|
else if (mapping == 124) {
|
||||||
// A8-A14
|
// A8-A14
|
||||||
PORTK = (myAddress >> 8) & 0x7F;
|
PORTK = (myAddress >> 8) & 0x7F;
|
||||||
// Set SNES A15(PK7) HIGH to disable SRAM
|
// Set SNES A15(PK7) HIGH to disable SRAM
|
||||||
@ -972,8 +972,8 @@ void writeByte_Flash(unsigned long myAddress, byte myData) {
|
|||||||
// Flip A22(PL7) to reverse P0 and P1 roms
|
// Flip A22(PL7) to reverse P0 and P1 roms
|
||||||
PORTL ^= (1 << 7);
|
PORTL ^= (1 << 7);
|
||||||
}
|
}
|
||||||
// for SNES ExHiRom repro
|
// for SNES ExHiRom repro with 2x 4MB
|
||||||
else if (mapping == 222) {
|
else if (mapping == 224) {
|
||||||
// A8-A15
|
// A8-A15
|
||||||
PORTK = (myAddress >> 8) & 0xFF;
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
// A16-A22
|
// A16-A22
|
||||||
@ -989,6 +989,38 @@ void writeByte_Flash(unsigned long myAddress, byte myData) {
|
|||||||
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
||||||
PORTL |= (1 << 6);
|
PORTL |= (1 << 6);
|
||||||
}
|
}
|
||||||
|
// for SNES ExLoRom repro with 4x 2MB
|
||||||
|
else if (mapping == 142) {
|
||||||
|
// A8-A14
|
||||||
|
PORTK = (myAddress >> 8) & 0x7F;
|
||||||
|
// Set SNES A15(PK7) HIGH to disable SRAM
|
||||||
|
PORTK |= (1 << 7);
|
||||||
|
// A15-A22
|
||||||
|
PORTL = (myAddress >> 15) & 0xFF;
|
||||||
|
// Flip BA6(PL6) to address second rom chip
|
||||||
|
PORTL ^= (1 << 6);
|
||||||
|
// Flip A22(PL7) to reverse P0 and P1 roms
|
||||||
|
PORTL ^= (1 << 7);
|
||||||
|
}
|
||||||
|
// for SNES ExHiRom repro with 4x 2MB
|
||||||
|
else if (mapping == 242) {
|
||||||
|
// A8-A15
|
||||||
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
|
// A16-A22
|
||||||
|
PORTL = (myAddress >> 16) & 0xFF;
|
||||||
|
// Flip BA5(PL5) to address second rom chip
|
||||||
|
PORTL ^= (1 << 5);
|
||||||
|
// Set PL7 to inverse of PL6 to reverse P0 and P1 roms
|
||||||
|
if (!(((myAddress >> 16) & 0xFF) & 0x40)) {
|
||||||
|
// if PL6 is 0 set PL7 to 1
|
||||||
|
PORTL |= (1 << 7);
|
||||||
|
} else if (((myAddress >> 16) & 0xFF) & 0x40) {
|
||||||
|
// if PL6 is 1 set PL7 to 0
|
||||||
|
PORTL &= ~(1 << 7);
|
||||||
|
}
|
||||||
|
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
||||||
|
PORTL |= (1 << 6);
|
||||||
|
}
|
||||||
|
|
||||||
// Data
|
// Data
|
||||||
PORTC = myData;
|
PORTC = myData;
|
||||||
@ -1055,7 +1087,7 @@ byte readByte_Flash(unsigned long myAddress) {
|
|||||||
PORTL |= (1 << 6);
|
PORTL |= (1 << 6);
|
||||||
}
|
}
|
||||||
// for SNES LoRom repro with 2x 2MB
|
// for SNES LoRom repro with 2x 2MB
|
||||||
else if (mapping == 11) {
|
else if (mapping == 122) {
|
||||||
// A8-A14
|
// A8-A14
|
||||||
PORTK = (myAddress >> 8) & 0x7F;
|
PORTK = (myAddress >> 8) & 0x7F;
|
||||||
// Set SNES A15(PK7) HIGH to disable SRAM
|
// Set SNES A15(PK7) HIGH to disable SRAM
|
||||||
@ -1066,7 +1098,7 @@ byte readByte_Flash(unsigned long myAddress) {
|
|||||||
PORTL ^= (1 << 6);
|
PORTL ^= (1 << 6);
|
||||||
}
|
}
|
||||||
// for SNES HiRom repro with 2x 2MB
|
// for SNES HiRom repro with 2x 2MB
|
||||||
else if (mapping == 22) {
|
else if (mapping == 222) {
|
||||||
// A8-A15
|
// A8-A15
|
||||||
PORTK = (myAddress >> 8) & 0xFF;
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
// A16-A23
|
// A16-A23
|
||||||
@ -1076,8 +1108,8 @@ byte readByte_Flash(unsigned long myAddress) {
|
|||||||
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
||||||
PORTL |= (1 << 6);
|
PORTL |= (1 << 6);
|
||||||
}
|
}
|
||||||
// for SNES ExLoRom repro
|
// for SNES ExLoRom repro with 2x 4MB
|
||||||
else if (mapping == 111) {
|
else if (mapping == 124) {
|
||||||
// A8-A14
|
// A8-A14
|
||||||
PORTK = (myAddress >> 8) & 0x7F;
|
PORTK = (myAddress >> 8) & 0x7F;
|
||||||
// Set SNES A15(PK7) HIGH to disable SRAM
|
// Set SNES A15(PK7) HIGH to disable SRAM
|
||||||
@ -1087,8 +1119,8 @@ byte readByte_Flash(unsigned long myAddress) {
|
|||||||
// Flip A22(PL7) to reverse P0 and P1 roms
|
// Flip A22(PL7) to reverse P0 and P1 roms
|
||||||
PORTL ^= (1 << 7);
|
PORTL ^= (1 << 7);
|
||||||
}
|
}
|
||||||
// for SNES ExHiRom repro
|
// for SNES ExHiRom repro with 2x 4MB
|
||||||
else if (mapping == 222) {
|
else if (mapping == 224) {
|
||||||
// A8-A15
|
// A8-A15
|
||||||
PORTK = (myAddress >> 8) & 0xFF;
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
// A16-A22
|
// A16-A22
|
||||||
@ -1104,6 +1136,38 @@ byte readByte_Flash(unsigned long myAddress) {
|
|||||||
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
||||||
PORTL |= (1 << 6);
|
PORTL |= (1 << 6);
|
||||||
}
|
}
|
||||||
|
// for SNES ExLoRom repro with 4x 2MB
|
||||||
|
else if (mapping == 142) {
|
||||||
|
// A8-A14
|
||||||
|
PORTK = (myAddress >> 8) & 0x7F;
|
||||||
|
// Set SNES A15(PK7) HIGH to disable SRAM
|
||||||
|
PORTK |= (1 << 7);
|
||||||
|
// A15-A22
|
||||||
|
PORTL = (myAddress >> 15) & 0xFF;
|
||||||
|
// Flip BA6(PL6) to address second rom chip
|
||||||
|
PORTL ^= (1 << 6);
|
||||||
|
// Flip A22(PL7) to reverse P0 and P1 roms
|
||||||
|
PORTL ^= (1 << 7);
|
||||||
|
}
|
||||||
|
// for SNES ExHiRom repro with 4x 2MB
|
||||||
|
else if (mapping == 242) {
|
||||||
|
// A8-A15
|
||||||
|
PORTK = (myAddress >> 8) & 0xFF;
|
||||||
|
// A16-A22
|
||||||
|
PORTL = (myAddress >> 16) & 0xFF;
|
||||||
|
// Flip BA5(PL5) to address second rom chip
|
||||||
|
PORTL ^= (1 << 5);
|
||||||
|
// Set PL7 to inverse of PL6 to reverse P0 and P1 roms
|
||||||
|
if (!(((myAddress >> 16) & 0xFF) & 0x40)) {
|
||||||
|
// if PL6 is 0 set PL7 to 1
|
||||||
|
PORTL |= (1 << 7);
|
||||||
|
} else if (((myAddress >> 16) & 0xFF) & 0x40) {
|
||||||
|
// if PL6 is 1 set PL7 to 0
|
||||||
|
PORTL &= ~(1 << 7);
|
||||||
|
}
|
||||||
|
// Switch SNES BA6(PL6) to HIGH to disable SRAM
|
||||||
|
PORTL |= (1 << 6);
|
||||||
|
}
|
||||||
|
|
||||||
// Arduino running at 16Mhz -> one nop = 62.5ns
|
// Arduino running at 16Mhz -> one nop = 62.5ns
|
||||||
__asm__("nop\n\t"
|
__asm__("nop\n\t"
|
||||||
@ -1964,26 +2028,42 @@ void blankcheck_Flash() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void verifyFlash() {
|
void verifyFlash() {
|
||||||
verifyFlash(0);
|
verifyFlash(1, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void verifyFlash(byte romChips) {
|
void verifyFlash(byte currChip, byte totalChips, boolean reversed) {
|
||||||
if (openVerifyFlashFile()) {
|
if (openVerifyFlashFile()) {
|
||||||
blank = 0;
|
blank = 0;
|
||||||
|
|
||||||
if (romChips == 1) {
|
if ((currChip == 1) && (totalChips == 4)) {
|
||||||
myFile.seekCur(0);
|
if (reversed)
|
||||||
// Truncate file to size of 1st flash chip
|
myFile.seekSet(4194304);
|
||||||
if (fileSize > flashSize / 2) {
|
fileSize = 2097152;
|
||||||
fileSize = flashSize / 2;
|
} else if ((currChip == 2) && (totalChips == 4) && (fileSize > 6291456)) {
|
||||||
}
|
if (reversed)
|
||||||
} else if (romChips == 2) {
|
myFile.seekSet(6291456);
|
||||||
if (fileSize > flashSize / 2) {
|
fileSize = 2097152;
|
||||||
myFile.seekCur(flashSize / 2);
|
} else if ((currChip == 3) && (totalChips == 4)) {
|
||||||
fileSize = fileSize - (flashSize / 2);
|
if (reversed)
|
||||||
} else
|
myFile.seekSet(0);
|
||||||
fileSize = 0;
|
fileSize = 2097152;
|
||||||
}
|
} else if ((currChip == 4) && (totalChips == 4)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(2097152);
|
||||||
|
fileSize = 2097152;
|
||||||
|
} else if ((currChip == 1) && (totalChips == 2)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(4194304);
|
||||||
|
fileSize = 4194304;
|
||||||
|
} else if ((currChip == 2) && (totalChips == 2)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(0);
|
||||||
|
fileSize = 4194304;
|
||||||
|
} else if ((currChip == 1) && (totalChips == 1)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(4194304);
|
||||||
|
} else
|
||||||
|
fileSize = 0; // skip write
|
||||||
|
|
||||||
//Initialize progress bar
|
//Initialize progress bar
|
||||||
uint32_t processedProgressBar = 0;
|
uint32_t processedProgressBar = 0;
|
||||||
@ -1991,6 +2071,15 @@ void verifyFlash(byte romChips) {
|
|||||||
draw_progressbar(0, totalProgressBar);
|
draw_progressbar(0, totalProgressBar);
|
||||||
|
|
||||||
for (unsigned long currByte = 0; currByte < fileSize; currByte += 512) {
|
for (unsigned long currByte = 0; currByte < fileSize; currByte += 512) {
|
||||||
|
if ((reversed) && (currChip == 1) && (totalChips == 1) && (fileSize == 8388608) && (currByte == 4194304)) {
|
||||||
|
myFile.seekSet(0);
|
||||||
|
}
|
||||||
|
if ((reversed) && (currChip == 1) && (totalChips == 1) && (fileSize == 6291456) && (currByte == 2097152)) {
|
||||||
|
myFile.seekSet(0);
|
||||||
|
currByte = 4194304;
|
||||||
|
fileSize = 8388608;
|
||||||
|
}
|
||||||
|
|
||||||
//fill sdBuffer
|
//fill sdBuffer
|
||||||
myFile.read(sdBuffer, 512);
|
myFile.read(sdBuffer, 512);
|
||||||
for (int c = 0; c < 512; c++) {
|
for (int c = 0; c < 512; c++) {
|
||||||
@ -2765,7 +2854,7 @@ void identifyCFI_Flash() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write flashrom
|
// Write flashrom
|
||||||
void writeCFI_Flash(byte romChips) {
|
void writeCFI_Flash(byte currChip, byte totalChips, boolean reversed) {
|
||||||
if (openFileOnSD()) {
|
if (openFileOnSD()) {
|
||||||
// Print filepath
|
// Print filepath
|
||||||
print_STR(flashing_file_STR, 0);
|
print_STR(flashing_file_STR, 0);
|
||||||
@ -2807,29 +2896,41 @@ void writeCFI_Flash(byte romChips) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
print_Msg(F("Writing flash"));
|
print_Msg(F("Writing flash"));
|
||||||
// If we have two ROM chips only write half the ROM file here and skip to second half of file on second write
|
print_Msg(FS(FSTRING_SPACE));
|
||||||
if (romChips == 0) {
|
print_Msg(currChip);
|
||||||
println_Msg(F(""));
|
print_Msg(F("/"));
|
||||||
}
|
println_Msg(totalChips);
|
||||||
|
|
||||||
else if (romChips == 1) {
|
if ((currChip == 1) && (totalChips == 4)) {
|
||||||
println_Msg(F(" 1/2"));
|
if (reversed)
|
||||||
myFile.seekCur(0);
|
myFile.seekSet(4194304);
|
||||||
// Truncate file to size of 1st flash chip
|
fileSize = 2097152;
|
||||||
if (fileSize > flashSize / 2) {
|
} else if ((currChip == 2) && (totalChips == 4) && (fileSize > 6291456)) {
|
||||||
fileSize = flashSize / 2;
|
if (reversed)
|
||||||
}
|
myFile.seekSet(6291456);
|
||||||
}
|
fileSize = 2097152;
|
||||||
|
} else if ((currChip == 3) && (totalChips == 4)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(0);
|
||||||
|
fileSize = 2097152;
|
||||||
|
} else if ((currChip == 4) && (totalChips == 4)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(2097152);
|
||||||
|
fileSize = 2097152;
|
||||||
|
} else if ((currChip == 1) && (totalChips == 2)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(4194304);
|
||||||
|
fileSize = 4194304;
|
||||||
|
} else if ((currChip == 2) && (totalChips == 2)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(0);
|
||||||
|
fileSize = 4194304;
|
||||||
|
} else if ((currChip == 1) && (totalChips == 1)) {
|
||||||
|
if (reversed)
|
||||||
|
myFile.seekSet(4194304);
|
||||||
|
} else
|
||||||
|
fileSize = 0; // skip write
|
||||||
|
|
||||||
else if (romChips == 2) {
|
|
||||||
println_Msg(F(" 2/2"));
|
|
||||||
if (fileSize > flashSize / 2) {
|
|
||||||
myFile.seekCur(flashSize / 2);
|
|
||||||
fileSize = fileSize - (flashSize / 2);
|
|
||||||
} else {
|
|
||||||
fileSize = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
display_Update();
|
display_Update();
|
||||||
|
|
||||||
//Initialize progress bar
|
//Initialize progress bar
|
||||||
@ -2838,6 +2939,15 @@ void writeCFI_Flash(byte romChips) {
|
|||||||
draw_progressbar(0, totalProgressBar);
|
draw_progressbar(0, totalProgressBar);
|
||||||
|
|
||||||
for (unsigned long currAddr = 0; currAddr < fileSize; currAddr += 512) {
|
for (unsigned long currAddr = 0; currAddr < fileSize; currAddr += 512) {
|
||||||
|
if ((reversed) && (currChip == 1) && (totalChips == 1) && (fileSize == 8388608) && (currAddr == 4194304)) {
|
||||||
|
myFile.seekSet(0);
|
||||||
|
}
|
||||||
|
if ((reversed) && (currChip == 1) && (totalChips == 1) && (fileSize == 6291456) && (currAddr == 2097152)) {
|
||||||
|
myFile.seekSet(0);
|
||||||
|
currAddr = 4194304;
|
||||||
|
fileSize = 8388608;
|
||||||
|
}
|
||||||
|
|
||||||
myFile.read(sdBuffer, 512);
|
myFile.read(sdBuffer, 512);
|
||||||
|
|
||||||
// Blink led
|
// Blink led
|
||||||
|
@ -66,7 +66,15 @@ static const char* const menuOptionsRepro[] PROGMEM = { reproMenuItem1, reproMen
|
|||||||
static const char reproCFIItem1[] PROGMEM = "1x 2MB";
|
static const char reproCFIItem1[] PROGMEM = "1x 2MB";
|
||||||
static const char reproCFIItem2[] PROGMEM = "2x 2MB";
|
static const char reproCFIItem2[] PROGMEM = "2x 2MB";
|
||||||
static const char reproCFIItem3[] PROGMEM = "1x 4MB";
|
static const char reproCFIItem3[] PROGMEM = "1x 4MB";
|
||||||
static const char* const menuOptionsReproCFI[] PROGMEM = { reproCFIItem1, reproCFIItem2, reproCFIItem3, FSTRING_RESET };
|
static const char reproCFIItem4[] PROGMEM = "2x 4MB";
|
||||||
|
static const char reproCFIItem5[] PROGMEM = "4x 2MB";
|
||||||
|
static const char reproCFIItem6[] PROGMEM = "1x 8MB";
|
||||||
|
static const char* const menuOptionsReproCFI[] PROGMEM = { reproCFIItem1, reproCFIItem2, reproCFIItem3, reproCFIItem4, reproCFIItem5, reproCFIItem6, FSTRING_RESET };
|
||||||
|
|
||||||
|
// EX ROM config
|
||||||
|
static const char reproEXItem1[] PROGMEM = "standard (ABCD)";
|
||||||
|
static const char reproEXItem2[] PROGMEM = "reversed (CDAB)";
|
||||||
|
static const char* const menuOptionsReproEX[] PROGMEM = { reproEXItem1, reproEXItem2, FSTRING_RESET };
|
||||||
|
|
||||||
void setupCFI() {
|
void setupCFI() {
|
||||||
#ifdef ENABLE_FLASH
|
#ifdef ENABLE_FLASH
|
||||||
@ -83,13 +91,39 @@ void setupCFI() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean reproEXMenu() {
|
||||||
|
boolean fileOrder = 0;
|
||||||
|
#ifdef ENABLE_FLASH
|
||||||
|
// create menu with title and 3 options to choose from
|
||||||
|
unsigned char snsReproEX;
|
||||||
|
// Copy menuOptions out of progmem
|
||||||
|
convertPgm(menuOptionsReproEX, 3);
|
||||||
|
snsReproEX = question_box(F("ExROM file order"), menuOptions, 3, 0);
|
||||||
|
|
||||||
|
// wait for user choice to come back from the question box menu
|
||||||
|
switch (snsReproEX) {
|
||||||
|
case 0:
|
||||||
|
fileOrder = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
fileOrder = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
resetArduino();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return fileOrder;
|
||||||
|
}
|
||||||
|
|
||||||
// Setup number of flashroms
|
// Setup number of flashroms
|
||||||
void reproCFIMenu() {
|
void reproCFIMenu() {
|
||||||
// create menu with title and 4 options to choose from
|
boolean reversed = 0;
|
||||||
|
// create menu with title and 7 options to choose from
|
||||||
unsigned char snsReproCFI;
|
unsigned char snsReproCFI;
|
||||||
// Copy menuOptions out of progmem
|
// Copy menuOptions out of progmem
|
||||||
convertPgm(menuOptionsReproCFI, 4);
|
convertPgm(menuOptionsReproCFI, 7);
|
||||||
snsReproCFI = question_box(F("Select Flash Config"), menuOptions, 4, 0);
|
snsReproCFI = question_box(F("Select Flash Config"), menuOptions, 7, 0);
|
||||||
|
|
||||||
// wait for user choice to come back from the question box menu
|
// wait for user choice to come back from the question box menu
|
||||||
switch (snsReproCFI) {
|
switch (snsReproCFI) {
|
||||||
@ -97,41 +131,121 @@ void reproCFIMenu() {
|
|||||||
case 0:
|
case 0:
|
||||||
setupCFI();
|
setupCFI();
|
||||||
flashSize = 2097152;
|
flashSize = 2097152;
|
||||||
writeCFI_Flash(0);
|
writeCFI_Flash(1, 1, 0);
|
||||||
verifyFlash();
|
verifyFlash(1, 1, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
setupCFI();
|
setupCFI();
|
||||||
flashSize = 4194304;
|
flashSize = 4194304;
|
||||||
// Write first rom chip
|
// Write first rom chip
|
||||||
writeCFI_Flash(1);
|
writeCFI_Flash(1, 2, 0);
|
||||||
verifyFlash(1);
|
verifyFlash(1, 2, 0);
|
||||||
delay(300);
|
delay(300);
|
||||||
|
|
||||||
// Switch to second ROM chip, see flash.ino low level functions line 811
|
// Switch to second ROM chip, see flash.ino low level functions line 811
|
||||||
// LoROM
|
// LoROM
|
||||||
if (mapping == 1)
|
if (mapping == 1)
|
||||||
mapping = 11;
|
mapping = 122;
|
||||||
// HiROM
|
// HiROM
|
||||||
else if (mapping == 2)
|
else if (mapping == 2)
|
||||||
mapping = 22;
|
mapping = 222;
|
||||||
|
|
||||||
// Write second rom chip
|
// Write second rom chip
|
||||||
display_Clear();
|
display_Clear();
|
||||||
writeCFI_Flash(2);
|
writeCFI_Flash(2, 2, 0);
|
||||||
verifyFlash(2);
|
verifyFlash(2, 2, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
setupCFI();
|
setupCFI();
|
||||||
flashSize = 4194304;
|
flashSize = 4194304;
|
||||||
writeCFI_Flash(0);
|
writeCFI_Flash(1, 1, 0);
|
||||||
verifyFlash();
|
verifyFlash(1, 1, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
reversed = reproEXMenu();
|
||||||
|
setupCFI();
|
||||||
|
flashSize = 8388608;
|
||||||
|
// Write first rom chip
|
||||||
|
writeCFI_Flash(1, 2, reversed);
|
||||||
|
verifyFlash(1, 2, reversed);
|
||||||
|
delay(300);
|
||||||
|
|
||||||
|
// Switch to second ROM chip, see flash.ino low level functions line 811
|
||||||
|
// LoROM
|
||||||
|
if (mapping == 1)
|
||||||
|
mapping = 124;
|
||||||
|
// HiROM
|
||||||
|
else if (mapping == 2)
|
||||||
|
mapping = 224;
|
||||||
|
|
||||||
|
// Write second rom chip
|
||||||
|
display_Clear();
|
||||||
|
writeCFI_Flash(2, 2, reversed);
|
||||||
|
verifyFlash(2, 2, reversed);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
reversed = reproEXMenu();
|
||||||
|
setupCFI();
|
||||||
|
flashSize = 8388608;
|
||||||
|
// Write first rom chip
|
||||||
|
writeCFI_Flash(1, 4, reversed);
|
||||||
|
verifyFlash(1, 4, reversed);
|
||||||
|
delay(300);
|
||||||
|
|
||||||
|
// Switch to second ROM chip, see flash.ino low level functions line 811
|
||||||
|
// LoROM
|
||||||
|
if (mapping == 1)
|
||||||
|
mapping = 122;
|
||||||
|
// HiROM
|
||||||
|
else if (mapping == 2)
|
||||||
|
mapping = 222;
|
||||||
|
|
||||||
|
// Write second rom chip
|
||||||
|
display_Clear();
|
||||||
|
writeCFI_Flash(2, 4, reversed);
|
||||||
|
verifyFlash(2, 4, reversed);
|
||||||
|
|
||||||
|
// Switch to third ROM chip
|
||||||
|
// LoROM
|
||||||
|
if (mapping == 122)
|
||||||
|
mapping = 124;
|
||||||
|
// HiROM
|
||||||
|
else if (mapping == 222)
|
||||||
|
mapping = 224;
|
||||||
|
|
||||||
|
// Write second rom chip
|
||||||
|
display_Clear();
|
||||||
|
writeCFI_Flash(3, 4, reversed);
|
||||||
|
verifyFlash(3, 4, reversed);
|
||||||
|
|
||||||
|
// Switch to fourth ROM chip
|
||||||
|
// LoROM
|
||||||
|
if (mapping == 124)
|
||||||
|
mapping = 142;
|
||||||
|
// HiROM
|
||||||
|
else if (mapping == 224)
|
||||||
|
mapping = 242;
|
||||||
|
|
||||||
|
// Write second rom chip
|
||||||
|
display_Clear();
|
||||||
|
writeCFI_Flash(4, 4, reversed);
|
||||||
|
verifyFlash(4, 4, reversed);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
reversed = reproEXMenu();
|
||||||
|
setupCFI();
|
||||||
|
flashSize = 8388608;
|
||||||
|
writeCFI_Flash(1, 1, reversed);
|
||||||
|
verifyFlash(1, 1, reversed);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 3:
|
case 6:
|
||||||
resetArduino();
|
resetArduino();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -194,7 +308,7 @@ void reproMenu() {
|
|||||||
// ExLoRom
|
// ExLoRom
|
||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
mapping = 111;
|
mapping = 124;
|
||||||
setup_Flash8();
|
setup_Flash8();
|
||||||
id_Flash8();
|
id_Flash8();
|
||||||
wait();
|
wait();
|
||||||
@ -205,7 +319,7 @@ void reproMenu() {
|
|||||||
// ExHiRom
|
// ExHiRom
|
||||||
display_Clear();
|
display_Clear();
|
||||||
display_Update();
|
display_Update();
|
||||||
mapping = 222;
|
mapping = 224;
|
||||||
setup_Flash8();
|
setup_Flash8();
|
||||||
id_Flash8();
|
id_Flash8();
|
||||||
wait();
|
wait();
|
||||||
|
Loading…
Reference in New Issue
Block a user