Fix flashing N64 repro and add progress bar

This commit is contained in:
sanni 2024-08-16 14:59:56 +02:00
parent 34e2ef2bae
commit edc2b2fa15

View File

@ -545,7 +545,9 @@ void setAddress_N64(unsigned long myAddress) {
// Switch WR(PH5) RD(PH6) ale_L(PC0) ale_H(PC1) to high (since the pins are active low) // Switch WR(PH5) RD(PH6) ale_L(PC0) ale_H(PC1) to high (since the pins are active low)
PORTH |= (1 << 5) | (1 << 6); PORTH |= (1 << 5) | (1 << 6);
PORTC |= (1 << 0) | (1 << 1); PORTC |= (1 << 1);
__asm__("nop\n\t"); // needed for repro
PORTC |= (1 << 0);
// Output high part to address pins // Output high part to address pins
PORTF = myAdrHighOut & 0xFF; PORTF = myAdrHighOut & 0xFF;
@ -3302,13 +3304,11 @@ void flashRepro_N64() {
myFile.close(); myFile.close();
// Verify // Verify
print_STR(verifying_STR, 0); print_STR(verifying_STR, 1);
display_Update(); display_Update();
writeErrors = verifyFlashrom_N64(); writeErrors = verifyFlashrom_N64();
if (writeErrors == 0) { if (writeErrors != 0) {
println_Msg(FS(FSTRING_OK)); display_Clear();
display_Update();
} else {
print_Msg(writeErrors); print_Msg(writeErrors);
print_Msg(F(" bytes ")); print_Msg(F(" bytes "));
print_Error(did_not_verify_STR); print_Error(did_not_verify_STR);
@ -3753,6 +3753,11 @@ boolean blankcheckFlashrom_N64() {
// Write Intel flashrom // Write Intel flashrom
void writeIntel4400_N64() { void writeIntel4400_N64() {
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)(fileSize);
draw_progressbar(0, totalProgressBar);
for (unsigned long currSector = 0; currSector < fileSize; currSector += 131072) { for (unsigned long currSector = 0; currSector < fileSize; currSector += 131072) {
// Blink led // Blink led
blinkLED(); blinkLED();
@ -3800,6 +3805,8 @@ void writeIntel4400_N64() {
statusReg = readWord_N64(); statusReg = readWord_N64();
} }
} }
processedProgressBar += 512;
draw_progressbar(processedProgressBar, totalProgressBar);
} }
} }
} }
@ -3807,6 +3814,11 @@ void writeIntel4400_N64() {
void writeMSP55LV100_N64(unsigned long sectorSize) { void writeMSP55LV100_N64(unsigned long sectorSize) {
unsigned long flashBase = romBase; unsigned long flashBase = romBase;
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)(fileSize);
draw_progressbar(0, totalProgressBar);
for (unsigned long currSector = 0; currSector < fileSize; currSector += sectorSize) { for (unsigned long currSector = 0; currSector < fileSize; currSector += sectorSize) {
// Blink led // Blink led
blinkLED(); blinkLED();
@ -3856,6 +3868,8 @@ void writeMSP55LV100_N64(unsigned long sectorSize) {
statusReg = readWord_N64(); statusReg = readWord_N64();
} }
} }
processedProgressBar += 512;
draw_progressbar(processedProgressBar, totalProgressBar);
} }
} }
} }
@ -3864,6 +3878,11 @@ void writeMSP55LV100_N64(unsigned long sectorSize) {
void writeFlashBuffer_N64(unsigned long sectorSize, byte bufferSize) { void writeFlashBuffer_N64(unsigned long sectorSize, byte bufferSize) {
unsigned long flashBase = romBase; unsigned long flashBase = romBase;
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)(fileSize);
draw_progressbar(0, totalProgressBar);
for (unsigned long currSector = 0; currSector < fileSize; currSector += sectorSize) { for (unsigned long currSector = 0; currSector < fileSize; currSector += sectorSize) {
// Blink led // Blink led
blinkLED(); blinkLED();
@ -3918,6 +3937,8 @@ void writeFlashBuffer_N64(unsigned long sectorSize, byte bufferSize) {
statusReg = readWord_N64(); statusReg = readWord_N64();
} }
} }
processedProgressBar += 512;
draw_progressbar(processedProgressBar, totalProgressBar);
} }
} }
} }
@ -3926,6 +3947,11 @@ void writeFlashBuffer_N64(unsigned long sectorSize, byte bufferSize) {
void writeFlashrom_N64(unsigned long sectorSize) { void writeFlashrom_N64(unsigned long sectorSize) {
unsigned long flashBase = romBase; unsigned long flashBase = romBase;
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)(fileSize);
draw_progressbar(0, totalProgressBar);
for (unsigned long currSector = 0; currSector < fileSize; currSector += sectorSize) { for (unsigned long currSector = 0; currSector < fileSize; currSector += sectorSize) {
// Blink led // Blink led
blinkLED(); blinkLED();
@ -3956,6 +3982,8 @@ void writeFlashrom_N64(unsigned long sectorSize) {
statusReg = readWord_N64(); statusReg = readWord_N64();
} }
} }
processedProgressBar += 512;
draw_progressbar(processedProgressBar, totalProgressBar);
} }
} }
} }
@ -3965,6 +3993,11 @@ unsigned long verifyFlashrom_N64() {
if (myFile.open(filePath, O_READ)) { if (myFile.open(filePath, O_READ)) {
writeErrors = 0; writeErrors = 0;
//Initialize progress bar
uint32_t processedProgressBar = 0;
uint32_t totalProgressBar = (uint32_t)(fileSize);
draw_progressbar(0, totalProgressBar);
for (unsigned long currSector = 0; currSector < fileSize; currSector += 131072) { for (unsigned long currSector = 0; currSector < fileSize; currSector += 131072) {
// Blink led // Blink led
blinkLED(); blinkLED();
@ -3988,6 +4021,8 @@ unsigned long verifyFlashrom_N64() {
} }
} }
} }
processedProgressBar += 512;
draw_progressbar(processedProgressBar, totalProgressBar);
} }
} }
// Close the file: // Close the file: