#96074 - Dwedit - Tue Aug 01, 2006 7:44 am
I'm trying to write a function that erases an arbitrary 16k page from the GBAMP's firmware, but it's not working. Here's my code: (two different versions that both failed)
_________________
"We are merely sprites that dance at the beck and call of our button pressing overlord."
Last edited by Dwedit on Tue Aug 01, 2006 9:38 pm; edited 1 time in total
Code: |
int FlashErase16k(unsigned int addr) { //addr is in bytes //sector = 2048 words = 4096 bytes //need to erase 4 sectors int block=addr/16384; int checkByte; int sector; for (sector = 0; sector<4; sector++) { // First Halfword of four CartWrite(0x213C2, 0xAA); //FlashWrite(0x5555, 0xAA); CartWrite(0x10C3D, 0x55); //FlashWrite(0x2AAA, 0x55); CartWrite(0x213C2, 0x80); //FlashWrite(0x5555, 0x80); CartWrite(0x213C2, 0xAA); //FlashWrite(0x5555, 0xAA); CartWrite(0x10C3D, 0x55); //FlashWrite(0x2AAA, 0x55); CartWrite((block*16384*8)+(sector*4) , 0x30); Delay100ms(); } return 0; } int FlashErase16k(unsigned int addr) { //addr is in bytes //sector = 2048 words = 4096 bytes //need to erase 4 sectors int block=addr/16384; int checkByte; int sector; int sectorlimit=block*4+4; for (sector = block*4;sector<sectorlimit;sector++) { // First Halfword of four CartWrite(0x213C2, 0xAA); //FlashWrite(0x5555, 0xAA); CartWrite(0x10C3D, 0x55); //FlashWrite(0x2AAA, 0x55); CartWrite(0x213C2, 0x80); //FlashWrite(0x5555, 0x80); CartWrite(0x213C2, 0xAA); //FlashWrite(0x5555, 0xAA); CartWrite(0x10C3D, 0x55); //FlashWrite(0x2AAA, 0x55); FlashWrite(sector << 11, 0x30); Delay100ms(); } return 0; } |
_________________
"We are merely sprites that dance at the beck and call of our button pressing overlord."
Last edited by Dwedit on Tue Aug 01, 2006 9:38 pm; edited 1 time in total