Update FLASH.ino

This commit is contained in:
sanni 2024-08-09 11:12:17 +02:00
parent dae03f8810
commit e19633536c
2 changed files with 74 additions and 64 deletions

View File

@ -2066,35 +2066,8 @@ void verifyFlash(byte currChip, byte totalChips, boolean reversed) {
if (openVerifyFlashFile()) { if (openVerifyFlashFile()) {
blank = 0; blank = 0;
if ((currChip == 1) && (totalChips == 4)) { // Adjust filesize to fit flashchip
if (reversed) adjustFileSize(currChip, totalChips, reversed);
myFile.seekSet(4194304);
fileSize = 2097152;
} else if ((currChip == 2) && (totalChips == 4) && (fileSize > 6291456)) {
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
//Initialize progress bar //Initialize progress bar
uint32_t processedProgressBar = 0; uint32_t processedProgressBar = 0;
@ -2884,6 +2857,72 @@ void identifyCFI_Flash() {
display_Update(); display_Update();
} }
// Adjust file size to fit flash chip
void adjustFileSize(byte currChip, byte totalChips, boolean reversed) {
// 1 flash chip
if ((currChip == 1) && (totalChips == 1) && reversed) {
myFile.seekSet(4194304);
}
// 2 flash chips
else if ((currChip == 1) && (totalChips == 2)) {
if (fileSize > flashSize / 2)
fileSize = flashSize / 2;
} else if ((currChip == 2) && (totalChips == 2) && (fileSize > flashSize / 2)) {
fileSize = fileSize - flashSize / 2;
myFile.seekSet(flashSize / 2);
}
// 4*2MB
else if ((currChip == 1) && (totalChips == 4)) {
if (reversed)
myFile.seekSet(4194304);
if (fileSize > 2097152)
fileSize = 2097152;
} else if ((currChip == 2) && (totalChips == 4)) {
if (reversed) {
if (fileSize > 6291456) {
myFile.seekSet(6291456);
fileSize = 2097152;
} else
fileSize = 0;
} else {
if (fileSize > 2097152) {
myFile.seekSet(2097152);
fileSize = 2097152;
} else
fileSize = 0;
}
} else if ((currChip == 3) && (totalChips == 4)) {
if (reversed) {
myFile.seekSet(0);
fileSize = 2097152;
} else {
if (fileSize > 4194304) {
myFile.seekSet(4194304);
fileSize = 2097152;
} else
fileSize = 0;
}
} else if ((currChip == 4) && (totalChips == 4)) {
if (reversed) {
myFile.seekSet(2097152);
fileSize = 2097152;
} else {
if (fileSize > 6291456) {
myFile.seekSet(6291456);
fileSize = 2097152;
} else
fileSize = 0;
}
}
// skip write
else
fileSize = 0;
}
// Write flashrom // Write flashrom
void writeCFI_Flash(byte currChip, byte totalChips, boolean reversed) { void writeCFI_Flash(byte currChip, byte totalChips, boolean reversed) {
if (openFileOnSD()) { if (openFileOnSD()) {
@ -2931,37 +2970,8 @@ void writeCFI_Flash(byte currChip, byte totalChips, boolean reversed) {
print_Msg(currChip); print_Msg(currChip);
print_Msg(F("/")); print_Msg(F("/"));
println_Msg(totalChips); println_Msg(totalChips);
// Adjust filesize to fit flashchip
if ((currChip == 1) && (totalChips == 4)) { adjustFileSize(currChip, totalChips, reversed);
if (reversed)
myFile.seekSet(4194304);
fileSize = 2097152;
} else if ((currChip == 2) && (totalChips == 4) && (fileSize > 6291456)) {
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
display_Update(); display_Update();
//Initialize progress bar //Initialize progress bar

View File

@ -71,9 +71,9 @@ static const char reproCFIItem5[] PROGMEM = "4x 2MB";
static const char reproCFIItem6[] PROGMEM = "1x 8MB"; static const char reproCFIItem6[] PROGMEM = "1x 8MB";
static const char* const menuOptionsReproCFI[] PROGMEM = { reproCFIItem1, reproCFIItem2, reproCFIItem3, reproCFIItem4, reproCFIItem5, reproCFIItem6, FSTRING_RESET }; static const char* const menuOptionsReproCFI[] PROGMEM = { reproCFIItem1, reproCFIItem2, reproCFIItem3, reproCFIItem4, reproCFIItem5, reproCFIItem6, FSTRING_RESET };
// EX ROM config // ROM file order
static const char reproEXItem1[] PROGMEM = "standard (CDAB)"; static const char reproEXItem1[] PROGMEM = "ExROM (CDAB)";
static const char reproEXItem2[] PROGMEM = "in-order (ABCD)"; static const char reproEXItem2[] PROGMEM = "standard (ABCD)";
static const char* const menuOptionsReproEX[] PROGMEM = { reproEXItem1, reproEXItem2, FSTRING_RESET }; static const char* const menuOptionsReproEX[] PROGMEM = { reproEXItem1, reproEXItem2, FSTRING_RESET };
void setupCFI() { void setupCFI() {
@ -98,7 +98,7 @@ boolean reproEXMenu() {
unsigned char snsReproEX; unsigned char snsReproEX;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem
convertPgm(menuOptionsReproEX, 3); convertPgm(menuOptionsReproEX, 3);
snsReproEX = question_box(F("ExROM file order"), menuOptions, 3, 0); snsReproEX = question_box(F("ROM file order"), menuOptions, 3, 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 (snsReproEX) { switch (snsReproEX) {