mirror of
https://github.com/sanni/cartreader.git
synced 2024-12-27 21:41:52 +01:00
commit
996d8f77c8
@ -4056,8 +4056,8 @@ void flashGameshark_N64() {
|
|||||||
idGameshark_N64();
|
idGameshark_N64();
|
||||||
|
|
||||||
// Check for SST 29LE010 (0808)/SST 28LF040 (0404)/AMTEL AT29LV010A (3535)/SST 29EE010 (0707)
|
// Check for SST 29LE010 (0808)/SST 28LF040 (0404)/AMTEL AT29LV010A (3535)/SST 29EE010 (0707)
|
||||||
// !!!! This has been confirmed to allow reading of v1.07, v1.09, v2.0-2.21, v3.2-3.3 !!!!
|
// !!!! This has been confirmed to allow reading of v1.02, v1.04-v1.09, v2.0-2.21, v3.0-3.3 !!!!
|
||||||
// !!!! 29LE010/29EE010/AT29LV010A are very similar and can possibly be written to with this process. !!!!
|
// !!!! All referenced eeproms/flashroms are confirmed as being writable with this process. !!!!
|
||||||
// !!!! !!!!
|
// !!!! !!!!
|
||||||
// !!!! PROCEED AT YOUR OWN RISK !!!!
|
// !!!! PROCEED AT YOUR OWN RISK !!!!
|
||||||
// !!!! !!!!
|
// !!!! !!!!
|
||||||
@ -4179,12 +4179,10 @@ void idGameshark_N64() {
|
|||||||
|
|
||||||
if (flashid == 0x0808 || flashid == 0x3535 || flashid == 0x0707) {
|
if (flashid == 0x0808 || flashid == 0x3535 || flashid == 0x0707) {
|
||||||
flashSize = 262144;
|
flashSize = 262144;
|
||||||
}
|
} else if (flashid == 0x0404) {
|
||||||
|
|
||||||
if (flashid == 0x0404) {
|
|
||||||
//Set SST 28LF040 flashrom size
|
//Set SST 28LF040 flashrom size
|
||||||
flashSize = 1048574;
|
flashSize = 1048574;
|
||||||
if (flashid != 0x0404) {
|
} else {
|
||||||
println_Msg(F("Check cart connection"));
|
println_Msg(F("Check cart connection"));
|
||||||
println_Msg(F("Unknown Flash ID"));
|
println_Msg(F("Unknown Flash ID"));
|
||||||
sprintf(flashid_str, "%04X", flashid);
|
sprintf(flashid_str, "%04X", flashid);
|
||||||
@ -4193,7 +4191,6 @@ void idGameshark_N64() {
|
|||||||
wait();
|
wait();
|
||||||
mainMenu();
|
mainMenu();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
sprintf(flashid_str, "%04X", flashid);
|
sprintf(flashid_str, "%04X", flashid);
|
||||||
// Reset flashrom
|
// Reset flashrom
|
||||||
resetGameshark_N64();
|
resetGameshark_N64();
|
||||||
@ -4348,12 +4345,14 @@ void writeGameshark_N64() {
|
|||||||
// Write Gameshark with 2x SST 29LE010 / AMTEL AT29LV010A / SST 29EE010 Eeproms
|
// Write Gameshark with 2x SST 29LE010 / AMTEL AT29LV010A / SST 29EE010 Eeproms
|
||||||
if (flashid == 0x0808 || flashid == 0x3535 || flashid == 0x0707) {
|
if (flashid == 0x0808 || flashid == 0x3535 || flashid == 0x0707) {
|
||||||
// Each 29LE010 has 1024 pages, each 128 bytes in size
|
// Each 29LE010 has 1024 pages, each 128 bytes in size
|
||||||
|
//Initialize progress bar
|
||||||
|
uint32_t processedProgressBar = 0;
|
||||||
|
uint32_t totalProgressBar = (uint32_t)(fileSize);
|
||||||
|
draw_progressbar(0, totalProgressBar);
|
||||||
myFile.seek(0);
|
myFile.seek(0);
|
||||||
for (unsigned long currPage = 0; currPage < fileSize / 2; currPage += 128) {
|
for (unsigned long currPage = 0; currPage < fileSize / 2; currPage += 128) {
|
||||||
// Fill SD buffer with twice the amount since we flash 2 chips
|
// Fill SD buffer with twice the amount since we flash 2 chips
|
||||||
myFile.read(sdBuffer, 256);
|
myFile.read(sdBuffer, 256);
|
||||||
// Blink led
|
|
||||||
blinkLED();
|
|
||||||
|
|
||||||
//Send page write command to both flashroms
|
//Send page write command to both flashroms
|
||||||
setAddress_N64(0x1EF0AAA8);
|
setAddress_N64(0x1EF0AAA8);
|
||||||
@ -4372,6 +4371,9 @@ void writeGameshark_N64() {
|
|||||||
// Send byte data
|
// Send byte data
|
||||||
writeWord_N64(currWord);
|
writeWord_N64(currWord);
|
||||||
}
|
}
|
||||||
|
processedProgressBar += 256;
|
||||||
|
draw_progressbar(processedProgressBar, totalProgressBar);
|
||||||
|
blinkLED();
|
||||||
delay(30);
|
delay(30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4385,8 +4387,6 @@ void writeGameshark_N64() {
|
|||||||
bool toggle = true;
|
bool toggle = true;
|
||||||
myFile.seek(0);
|
myFile.seek(0);
|
||||||
for (unsigned long currSector = 0; currSector < fileSize; currSector += 16384) {
|
for (unsigned long currSector = 0; currSector < fileSize; currSector += 16384) {
|
||||||
// Blink led
|
|
||||||
blinkLED();
|
|
||||||
for (unsigned long currSdBuffer = 0; currSdBuffer < 16384; currSdBuffer += 256) {
|
for (unsigned long currSdBuffer = 0; currSdBuffer < 16384; currSdBuffer += 256) {
|
||||||
// Fill SD buffer
|
// Fill SD buffer
|
||||||
myFile.read(sdBuffer, 256);
|
myFile.read(sdBuffer, 256);
|
||||||
@ -4436,13 +4436,15 @@ void writeGameshark_N64() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned long verifyGameshark_N64() {
|
unsigned long verifyGameshark_N64() {
|
||||||
|
uint32_t processedProgressBar = 0;
|
||||||
|
uint32_t totalProgressBar = (uint32_t)(fileSize);
|
||||||
|
println_Msg(F(""));
|
||||||
|
draw_progressbar(0, totalProgressBar);
|
||||||
// Open file on sd card
|
// Open file on sd card
|
||||||
if (myFile.open(filePath, O_READ)) {
|
if (myFile.open(filePath, O_READ)) {
|
||||||
writeErrors = 0;
|
writeErrors = 0;
|
||||||
|
|
||||||
for (unsigned long currSector = 0; currSector < fileSize; currSector += 131072) {
|
for (unsigned long currSector = 0; currSector < fileSize; currSector += 131072) {
|
||||||
// Blink led
|
|
||||||
blinkLED();
|
|
||||||
for (unsigned long currSdBuffer = 0; currSdBuffer < 131072; currSdBuffer += 512) {
|
for (unsigned long currSdBuffer = 0; currSdBuffer < 131072; currSdBuffer += 512) {
|
||||||
// Fill SD buffer
|
// Fill SD buffer
|
||||||
myFile.read(sdBuffer, 512);
|
myFile.read(sdBuffer, 512);
|
||||||
@ -4456,6 +4458,9 @@ unsigned long verifyGameshark_N64() {
|
|||||||
writeErrors++;
|
writeErrors++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
processedProgressBar += 512;
|
||||||
|
draw_progressbar(processedProgressBar, totalProgressBar);
|
||||||
|
blinkLED();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Close the file:
|
// Close the file:
|
||||||
|
Loading…
Reference in New Issue
Block a user