diff --git a/Cart_Reader/Cart_Reader.ino b/Cart_Reader/Cart_Reader.ino index 723494e..b47bfce 100644 --- a/Cart_Reader/Cart_Reader.ino +++ b/Cart_Reader/Cart_Reader.ino @@ -3,7 +3,7 @@ Author: sanni Date: 2016-08-25 - Version: V18 + Version: V18A SD lib: https://github.com/greiman/SdFat LCD lib: https://github.com/adafruit/Adafruit_SSD1306 @@ -31,7 +31,7 @@ Pickle - SDD1 fix **********************************************************************************/ -char ver[5] = "V18"; +char ver[5] = "V18A"; /****************************************** Define Output diff --git a/Cart_Reader/NP.ino b/Cart_Reader/NP.ino index e57498d..6defb73 100644 --- a/Cart_Reader/NP.ino +++ b/Cart_Reader/NP.ino @@ -117,7 +117,7 @@ void NPGameMenu() { print_Msg(F("Game ")); print_Msg(gameSubMenu + 0x81, HEX); println_Msg(F(" Timeout")); - println_Msg(readBank_SNES(0, 0x2400)); + println_Msg(readBank_SNES(0, 0x2400), HEX); println_Msg(F("")); print_Error(F("Please powercycle NP cart"), true); } @@ -1321,46 +1321,36 @@ byte send_NP(byte command) { // Switch to write dataOut(); controlOut_SNES(); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); // Write command writeBank_SNES(0, 0x2400, 0x09); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); // Switch to read dataIn(); controlIn_SNES(); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); - + // Read status NPReady = readBank_SNES(0, 0x2400); // Switch to write dataOut(); controlOut_SNES(); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); writeBank_SNES(0, 0x2401, 0x28); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); writeBank_SNES(0, 0x2401, 0x84); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); // NP_CMD_06h, send this only if above read has returned 7Dh, not if it's already returning 2Ah if (NPReady == 0x7D) { writeBank_SNES(0, 0x2400, 0x06); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); writeBank_SNES(0, 0x2400, 0x39); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); } // Write the command writeBank_SNES(0, 0x2400, command); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); // Switch to read dataIn(); controlIn_SNES(); - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); // Read status NPReady = readBank_SNES(0, 0x2400); diff --git a/Cart_Reader/SNS.ino b/Cart_Reader/SNS.ino index d4c4e78..86359b1 100644 --- a/Cart_Reader/SNS.ino +++ b/Cart_Reader/SNS.ino @@ -295,13 +295,13 @@ void writeBank_SNES(byte myBank, word myAddress, byte myData) { PORTH &= ~(1 << 5); // Leave WR low for at least 60ns - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); + __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); // Switch WR(PH5) to HIGH PORTH |= (1 << 5); // Leave WR high for at least 50ns - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); + __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); } // Read one byte of data from a location specified by bank and address, 00:0000 @@ -964,8 +964,6 @@ void writeSRAM (boolean browseFile) { myFile.read(sdBuffer, 512); for (unsigned long c = 0; c < 512; c++) { writeBank_SNES(0, currByte + c, sdBuffer[c]); - // Wait a little to prevent 1 byte write error - __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); } } }