mirror of
https://github.com/sanni/cartreader.git
synced 2024-12-28 14:01:52 +01:00
Change busycheck in GB.ino
This commit is contained in:
parent
63b3c7ee24
commit
b390a52adb
@ -1857,6 +1857,28 @@ void sendFlashCommand_GB(byte cmd, boolean commandSet) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read the status register
|
||||||
|
void busyCheck_GB(unsigned long address, byte data) {
|
||||||
|
byte statusReg = readByte_GB(address);
|
||||||
|
//byte count = 0;
|
||||||
|
while ((statusReg & 0x80) != (data & 0x80)) {
|
||||||
|
// Update Status
|
||||||
|
statusReg = readByte_GB(address);
|
||||||
|
/* Debug
|
||||||
|
count++;
|
||||||
|
if (count > 250) {
|
||||||
|
println_Msg("");
|
||||||
|
print_Msg(F("Bank: "));
|
||||||
|
print_Msg(currBank);
|
||||||
|
print_Msg(F(" Addr: "));
|
||||||
|
println_Msg(currAddr + currByte);
|
||||||
|
display_Update();
|
||||||
|
wait();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Write AMD type flashrom
|
// Write AMD type flashrom
|
||||||
// A0-A13 directly connected to cart edge -> 16384(0x0-0x3FFF) bytes per bank -> 256(0x0-0xFF) banks
|
// A0-A13 directly connected to cart edge -> 16384(0x0-0x3FFF) bytes per bank -> 256(0x0-0xFF) banks
|
||||||
// A14-A21 connected to MBC5
|
// A14-A21 connected to MBC5
|
||||||
@ -1938,6 +1960,18 @@ void writeFlash_GB(byte MBC, boolean commandSet, boolean flashErase) {
|
|||||||
print_Msg(romBanks);
|
print_Msg(romBanks);
|
||||||
println_Msg(F("/32"));
|
println_Msg(F("/32"));
|
||||||
display_Update();
|
display_Update();
|
||||||
|
} else if (flashid == 0xBFB6) {
|
||||||
|
println_Msg(F("SST 39SF020"));
|
||||||
|
print_Msg(F("Banks: "));
|
||||||
|
print_Msg(romBanks);
|
||||||
|
println_Msg(F("/16"));
|
||||||
|
display_Update();
|
||||||
|
} else if (flashid == 0xBFB5) {
|
||||||
|
println_Msg(F("SST 39SF010"));
|
||||||
|
print_Msg(F("Banks: "));
|
||||||
|
print_Msg(romBanks);
|
||||||
|
println_Msg(F("/8"));
|
||||||
|
display_Update();
|
||||||
} else {
|
} else {
|
||||||
print_Msg(F("Flash ID: "));
|
print_Msg(F("Flash ID: "));
|
||||||
sprintf(flashid_str, "%04X", flashid);
|
sprintf(flashid_str, "%04X", flashid);
|
||||||
@ -1959,13 +1993,8 @@ void writeFlash_GB(byte MBC, boolean commandSet, boolean flashErase) {
|
|||||||
sendFlashCommand_GB(0x80, commandSet);
|
sendFlashCommand_GB(0x80, commandSet);
|
||||||
sendFlashCommand_GB(0x10, commandSet);
|
sendFlashCommand_GB(0x10, commandSet);
|
||||||
|
|
||||||
// Read the status register
|
// Wait until erase is complete
|
||||||
byte statusReg = readByte_GB(0);
|
busyCheck_GB(0, 0x80);
|
||||||
// After a completed erase D7 will output 1
|
|
||||||
while ((statusReg & 0x80) != 0x80) {
|
|
||||||
// Update Status
|
|
||||||
statusReg = readByte_GB(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Blankcheck
|
// Blankcheck
|
||||||
println_Msg(F("Blankcheck"));
|
println_Msg(F("Blankcheck"));
|
||||||
@ -2037,26 +2066,7 @@ void writeFlash_GB(byte MBC, boolean commandSet, boolean flashErase) {
|
|||||||
PORTH &= ~(1 << 6);
|
PORTH &= ~(1 << 6);
|
||||||
|
|
||||||
// Busy check
|
// Busy check
|
||||||
//byte count = 0;
|
busyCheck_GB(currAddr + currByte, sdBuffer[currByte]);
|
||||||
while ((PINC & 0x80) != (sdBuffer[currByte] & 0x80)) {
|
|
||||||
/*
|
|
||||||
// Debug
|
|
||||||
count++;
|
|
||||||
__asm__("nop\n\t"
|
|
||||||
"nop\n\t"
|
|
||||||
"nop\n\t"
|
|
||||||
"nop\n\t");
|
|
||||||
if (count > 250) {
|
|
||||||
println_Msg("");
|
|
||||||
print_Msg(F("Bank: "));
|
|
||||||
print_Msg(currBank);
|
|
||||||
print_Msg(F(" Addr: "));
|
|
||||||
println_Msg(currAddr + currByte);
|
|
||||||
display_Update();
|
|
||||||
wait();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
// Switch OE/RD(PH6) to HIGH
|
// Switch OE/RD(PH6) to HIGH
|
||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
@ -2103,8 +2113,7 @@ void writeFlash_GB(byte MBC, boolean commandSet, boolean flashErase) {
|
|||||||
PORTH &= ~(1 << 6);
|
PORTH &= ~(1 << 6);
|
||||||
|
|
||||||
// Busy check
|
// Busy check
|
||||||
while ((PINC & 0x80) != (sdBuffer[currByte] & 0x80)) {
|
busyCheck_GB(currAddr + currByte, sdBuffer[currByte]);
|
||||||
}
|
|
||||||
|
|
||||||
// Switch OE/RD(PH6) to HIGH
|
// Switch OE/RD(PH6) to HIGH
|
||||||
PORTH |= (1 << 6);
|
PORTH |= (1 << 6);
|
||||||
|
Loading…
Reference in New Issue
Block a user