diff options
Diffstat (limited to 'gba/source/main.c')
-rw-r--r-- | gba/source/main.c | 64 |
1 files changed, 41 insertions, 23 deletions
diff --git a/gba/source/main.c b/gba/source/main.c index 104866a..94d4c2b 100644 --- a/gba/source/main.c +++ b/gba/source/main.c | |||
@@ -96,31 +96,53 @@ int main(void) | |||
96 | m3_fill(RGB15(31,31,31)); | 96 | m3_fill(RGB15(31,31,31)); |
97 | plot_sqr( 4, 4, RGB15(31, 0, 0) ); // or CLR_RED | 97 | plot_sqr( 4, 4, RGB15(31, 0, 0) ); // or CLR_RED |
98 | 98 | ||
99 | 99 | /* | |
100 | 100 | ||
101 | //*(vu16 *)(REG_BASE + 0x84) = 0x8f; | 101 | //*(vu16 *)(REG_BASE + 0x84) = 0x8f; |
102 | //REG_IME = 1; | 102 | //REG_IME = 1; |
103 | // the vblank interrupt must be enabled for VBlankIntrWait() to work | 103 | // the vblank interrupt must be enabled for VBlankIntrWait() to work |
104 | // since the default dispatcher handles the bios flags no vblank handler | 104 | // since the default dispatcher handles the bios flags no vblank handler |
105 | // is required | 105 | // is required |
106 | //irqInit(); | 106 | irqInit(); |
107 | //irqEnable(IRQ_VBLANK); | 107 | irqEnable(IRQ_VBLANK); |
108 | 108 | ||
109 | //consoleDemoInit(); | 109 | consoleDemoInit(); |
110 | //REG_JOYTR = 0; | 110 | //REG_JOYTR = 0; |
111 | 111 | ||
112 | // ansi escape sequence to set print co-ordinates | 112 | // ansi escape sequence to set print co-ordinates |
113 | // /x1b[line;columnH | 113 | // /x1b[line;columnH |
114 | //u32 i; | 114 | //u32 i; |
115 | //iprintf("\x1b[9;2HPokemon Gen III Data Extractor\n"); | 115 | iprintf("\x1b[9;2HPokemon Gen III Data Extractor\n"); |
116 | //iprintf("\x1b[10;4HPlease look at the TV\n"); | 116 | iprintf("\x1b[10;4HPlease look at the TV\n"); |
117 | 117 | ||
118 | // disable this, needs power | 118 | // disable this, needs power |
119 | //SNDSTAT = 0; | 119 | SNDSTAT = 0; |
120 | //SNDBIAS = 0; | 120 | SNDBIAS = 0; |
121 | 121 | ||
122 | // Set up waitstates for EEPROM access etc. | 122 | // Set up waitstates for EEPROM access etc. |
123 | //REG_WAITCNT = 0x0317; | 123 | REG_WAITCNT = 0x0317; |
124 | |||
125 | s32 gamesize = getGameSize(); | ||
126 | u32 savesize = SaveSize(save_data,gamesize); | ||
127 | switch (savesize){ | ||
128 | case 0x200: | ||
129 | GetSave_EEPROM_512B(save_data); | ||
130 | break; | ||
131 | case 0x2000: | ||
132 | GetSave_EEPROM_8KB(save_data); | ||
133 | break; | ||
134 | case 0x8000: | ||
135 | GetSave_SRAM_32KB(save_data); | ||
136 | break; | ||
137 | case 0x10000: | ||
138 | GetSave_FLASH_64KB(save_data); | ||
139 | break; | ||
140 | case 0x20000: | ||
141 | GetSave_FLASH_128KB(save_data); | ||
142 | break; | ||
143 | default: | ||
144 | break; | ||
145 | }*/ | ||
124 | 146 | ||
125 | //clear out previous messages | 147 | //clear out previous messages |
126 | REG_HS_CTRL |= JOY_RW; | 148 | REG_HS_CTRL |= JOY_RW; |
@@ -172,10 +194,12 @@ int main(void) | |||
172 | plot_sqr( 5, 4, RGB15( 31, 0,31) ); | 194 | plot_sqr( 5, 4, RGB15( 31, 0,31) ); |
173 | waitForAck(); | 195 | waitForAck(); |
174 | plot_sqr( 5, 5, RGB15( 16, 16,16) ); | 196 | plot_sqr( 5, 5, RGB15( 16, 16,16) ); |
197 | |||
175 | // Get access to save data. | 198 | // Get access to save data. |
176 | pSaveBlock1 SaveBlock1; | 199 | pSaveBlock1 SaveBlock1; |
177 | pSaveBlock2 SaveBlock2; | 200 | pSaveBlock2 SaveBlock2; |
178 | pSaveBlock3 SaveBlock3; | 201 | pSaveBlock3 SaveBlock3; |
202 | //iprintf("gonna check thing\n"); | ||
179 | if (!initSaveData(&SaveBlock1, &SaveBlock2, &SaveBlock3)) | 203 | if (!initSaveData(&SaveBlock1, &SaveBlock2, &SaveBlock3)) |
180 | { | 204 | { |
181 | // Unsupported game version. | 205 | // Unsupported game version. |
@@ -187,12 +211,13 @@ int main(void) | |||
187 | 211 | ||
188 | continue; | 212 | continue; |
189 | } | 213 | } |
214 | //iprintf("success\n"); | ||
190 | plot_sqr( 5, 6, RGB15( 0, 31,16) ); | 215 | plot_sqr( 5, 6, RGB15( 0, 31,16) ); |
191 | sendS32(1); | 216 | sendS32(1); |
192 | waitForAck(); | 217 | waitForAck(); |
193 | /* | 218 | |
194 | // Send trainer name. | 219 | // Send trainer name. |
195 | u8* trainerName; | 220 | u8* trainerName = 0; |
196 | 221 | ||
197 | if (GAME_RS) | 222 | if (GAME_RS) |
198 | { | 223 | { |
@@ -204,14 +229,6 @@ int main(void) | |||
204 | { | 229 | { |
205 | trainerName = SaveBlock2->e.playerName; | 230 | trainerName = SaveBlock2->e.playerName; |
206 | } | 231 | } |
207 | iprintf("%d\n", trainerName[0]); | ||
208 | iprintf("%d\n", trainerName[1]); | ||
209 | iprintf("%d\n", trainerName[2]); | ||
210 | iprintf("%d\n", trainerName[3]); | ||
211 | iprintf("%d\n", trainerName[4]); | ||
212 | iprintf("%d\n", trainerName[5]); | ||
213 | iprintf("%d\n", trainerName[6]); | ||
214 | iprintf("%d\n", trainerName[7]); | ||
215 | 232 | ||
216 | u32 tn1 = | 233 | u32 tn1 = |
217 | (trainerName[0] << 24) | 234 | (trainerName[0] << 24) |
@@ -230,10 +247,10 @@ int main(void) | |||
230 | 247 | ||
231 | sendU32(tn2); | 248 | sendU32(tn2); |
232 | waitForAck(); | 249 | waitForAck(); |
233 | */ | 250 | |
234 | // Send trainer ID. | 251 | // Send trainer ID. |
252 | |||
235 | u8* trainerId = 0; | 253 | u8* trainerId = 0; |
236 | |||
237 | if (GAME_RS) | 254 | if (GAME_RS) |
238 | { | 255 | { |
239 | trainerId = SaveBlock2->rs.playerTrainerId; | 256 | trainerId = SaveBlock2->rs.playerTrainerId; |
@@ -246,9 +263,10 @@ int main(void) | |||
246 | } | 263 | } |
247 | 264 | ||
248 | u32 tti = | 265 | u32 tti = |
249 | (trainerId[2] << 8) | 266 | (trainerId[1] << 8) |
250 | | (trainerId[3]); | 267 | | (trainerId[0]); |
251 | 268 | ||
269 | //iprintf("sending trainer id %ld\n", tti); | ||
252 | sendU32(tti); | 270 | sendU32(tti); |
253 | waitForAck(); | 271 | waitForAck(); |
254 | 272 | ||