diff options
Diffstat (limited to 'src/battle')
-rw-r--r-- | src/battle/battle_2.c | 3264 | ||||
-rw-r--r-- | src/battle/battle_4.c | 166 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c | 550 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c | 891 | ||||
-rw-r--r-- | src/battle/battle_controller_safari.c | 6 | ||||
-rw-r--r-- | src/battle/battle_records.c | 80 |
6 files changed, 1367 insertions, 3590 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index e37c33d0f..2bbae20dc 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -18,6 +18,7 @@ #include "event_data.h" #include "evolution_scene.h" #include "item.h" +#include "item_menu.h" #include "link.h" #include "main.h" #include "m4a.h" @@ -26,6 +27,7 @@ #include "palette.h" #include "party_menu.h" #include "pokeball.h" +#include "pokeblock.h" #include "pokedex.h" #include "pokemon.h" #include "random.h" @@ -33,6 +35,7 @@ #include "rom3.h" #include "rom_8077ABC.h" #include "rom_8094928.h" +#include "safari_zone.h" #include "sound.h" #include "sprite.h" #include "string_util.h" @@ -1356,7 +1359,6 @@ void c2_081284E0(void) } } -// A LOT of debug code! #if DEBUG extern u8 gUnknown_Debug_2023B62[]; @@ -1379,6 +1381,7 @@ void debug_nullsub_3(void); void debug_sub_80125A0(void); void debug_sub_80125E4(void); void debug_sub_8012628(void); +void debug_sub_8012658(void); void debug_sub_8012688(void); void debug_sub_8012878(void); void debug_sub_8012D10(u8); @@ -1386,7 +1389,6 @@ u32 debug_sub_8013294(u8, void *, u32); void debug_sub_80132C8(u8, void *, u32); extern s16 gUnknown_Debug_2023A76[][0x23]; -extern s16 gUnknown_Debug_2023A76_[][7][5]; extern s16 gUnknown_Debug_2023B02[][6][4]; extern u8 gUnknown_Debug_03004360; extern struct Window gUnknown_Debug_03004370; @@ -1498,31 +1500,6 @@ void debug_sub_8010A7C(u8 a, u8 b) gBattleTextBuff1[i] = EOS; } -// gUnknown_Debug_2023A76_ seems like a 3D array, but this function refuses to match when I do that. -#ifdef NONMATCHING -void debug_sub_8010AAC(u8 a) -{ - switch (gBaseStats[gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][0]].genderRatio) - { - case 0: - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 2; - break; - case 0xFE: - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 3; - break; - case 0xFF: - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 4; - break; - default: - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] &= 1; - if (a != 0) - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] ^= 1; - else - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 0; - break; - } -} -#else void debug_sub_8010AAC(u8 a) { switch (gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5]].genderRatio) @@ -1545,19 +1522,19 @@ void debug_sub_8010AAC(u8 a) break; } } -#endif +// gUnknown_Debug_2023A76 2D array void debug_sub_8010B80(u8 a) { s8 r12 = 0; - s8 r7 = gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0]; - + s8 r7 = gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]; + while (r7 >= 10) { r7 -= 10; r12++; } - + if (a & 2) { if (a & 1) @@ -1580,18 +1557,326 @@ void debug_sub_8010B80(u8 a) if (r7 > 9) r7 = 1; } - gUnknown_Debug_2023A76_[gUnknown_Debug_03004360 ^ 1][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0] - = gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0] + gUnknown_Debug_2023A76[gUnknown_Debug_03004360 ^ 1][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5] + = gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5] = r12 * 10 + r7; } +// For some unexplainable reason, code in various functions will cause SetActionsAndBanksTurnOrder, +// a completely separate and unrelated function, to use different registers. I have +// absolutely no clue as to why this phenomenon occurs. For example, +// I have to make debug_sub_8010CAC access gUnknown_Debug_2023A76 as a 3D array. +// If I use a 2D array, SetActionsAndBanksTurnOrder will no longer match. +#ifdef NONMATCHING +void debug_sub_8010CAC(void) +{ + s32 r5; + + if (gMain.heldKeysRaw == (L_BUTTON | SELECT_BUTTON)) + DoSoftReset(); + if (gMain.newKeysRaw == SELECT_BUTTON) + { + if (gUnknown_Debug_030043A4 < 6) + { + gUnknown_Debug_030043A8 = 0; + debug_sub_8012628(); + SetMainCallback2(debug_sub_8011498); + } + if (gUnknown_Debug_030043A0 == 0 && gUnknown_Debug_030043A4 == 6) + { + gMain.savedCallback = debug_sub_80108B8; + CreateMon( + &gPlayerParty[0], + gUnknown_Debug_2023A76[0][0 * 5 + 0], + gUnknown_Debug_2023A76[0][0 * 5 + 1], + 32, + 0, 0, 0, 0); + for (r5 = 0; r5 < 4; r5++) + { + SetMonData(&gPlayerParty[0], MON_DATA_MOVE1 + r5, &gUnknown_Debug_2023B02[0][0][r5]); + SetMonData(&gPlayerParty[0], MON_DATA_PP1 + r5, &gBattleMoves[gUnknown_Debug_2023B02[0][0][r5]].pp); + } + switch (gUnknown_Debug_2023A76[0][6 * 5 + 0]) + { + case 1: + gCB2_AfterEvolution = debug_sub_80108B8; + EvolutionScene(&gPlayerParty[0], gUnknown_Debug_2023A76[0][1 * 5 + 0], 1, 0); + break; + case 2: + debug_sub_8012688(); + break; + } + } + if (gUnknown_Debug_030043A0 == 1 && gUnknown_Debug_030043A4 == 6) + { + // This is really weird + r5 = (gSaveBlock2.optionsBattleSceneOff | (gSaveBlock2.optionsSound << 1)); + r5++; + if (r5 == 4) + r5 = 0; + gSaveBlock2.optionsBattleSceneOff = (r5 & 1); + gSaveBlock2.optionsSound = (r5 & 2) >> 1; + SetPokemonCryStereo(gSaveBlock2.optionsSound); + debug_nullsub_3(); + } + } + if (gMain.newKeysRaw == START_BUTTON) + debug_sub_801174C(); + if (gMain.newKeysRaw == DPAD_UP) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A4 != 0) + gUnknown_Debug_030043A4--; + else + gUnknown_Debug_030043A4 = 6; + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + debug_sub_80125A0(); + } + if (gMain.newKeysRaw == DPAD_DOWN) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A4 == 6) + gUnknown_Debug_030043A4 = 0; + else + gUnknown_Debug_030043A4++; + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + debug_sub_80125A0(); + } + if (gMain.newKeysRaw == DPAD_LEFT) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A0 != 0) + { + gUnknown_Debug_030043A0--; + } + else + { + if (gUnknown_Debug_03004360 != 0) + { + gUnknown_Debug_03004360 = 0; + gUnknown_Debug_030043A0 = 4; + gBattle_BG1_X = 0; + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + } + debug_sub_80125A0(); + } + if (gMain.newKeysRaw == DPAD_RIGHT) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A0 != 4) + { + gUnknown_Debug_030043A0++; + } + else + { + if (gUnknown_Debug_03004360 == 0) + { + gUnknown_Debug_03004360 = 1; + gUnknown_Debug_030043A0 = 0; + gBattle_BG1_X = 0x100; + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + } + debug_sub_80125A0(); + } + if (gMain.newAndRepeatedKeys & B_BUTTON) + { + switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5) + { + case 31: + debug_sub_8010818(); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 32: + debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 33: + debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC); + break; + case 34: + if (gUnknown_Debug_2023A76[0][6 * 5 + 4] != 0) + { + gUnknown_Debug_2023A76[0][6 * 5 + 4]--; + gUnknown_Debug_2023A76[1][6 * 5 + 4]--; + } + else + { + gUnknown_Debug_2023A76[0][6 * 5 + 4] = 8; + gUnknown_Debug_2023A76[1][6 * 5 + 4] = 8; + } + debug_sub_8012540(); + break; + case 30: + debug_sub_8010B80(0); + debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); + break; + default: + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]--; + if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; + } + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + } + } + if (gMain.newAndRepeatedKeys & A_BUTTON) + { + switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5) + { + case 31: + debug_sub_8010818(); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 32: + debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 33: + debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC); + break; + case 34: + if (gUnknown_Debug_2023A76[0][6 * 5 + 4] < 8) + { + gUnknown_Debug_2023A76[0][6 * 5 + 4]++; + gUnknown_Debug_2023A76[1][6 * 5 + 4]++; + } + else + { + gUnknown_Debug_2023A76[0][6 * 5 + 4] = 0; + gUnknown_Debug_2023A76[1][6 * 5 + 4] = 0; + } + debug_sub_8012540(); + break; + case 30: + debug_sub_8010B80(1); + debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); + break; + default: + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]++; + if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]; + } + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + } + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + else + { + if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30) + { + debug_sub_8010B80(2); + } + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= 10; + while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; + } + } + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + else + { + if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30) + { + debug_sub_8010B80(3); + } + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += 10; + while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; + } + } + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + AnimateSprites(); + BuildOamBuffer(); +} +#else + +// 3D array +extern s16 gUnknown_Debug_2023A76_[][7][5]; + void debug_sub_8010CAC(void) { s32 r5; - if (gMain.heldKeysRaw == 0x204) + if (gMain.heldKeysRaw == (L_BUTTON | SELECT_BUTTON)) DoSoftReset(); - if (gMain.newKeysRaw == 4) + if (gMain.newKeysRaw == SELECT_BUTTON) { if (gUnknown_Debug_030043A4 < 6) { @@ -1599,7 +1884,6 @@ void debug_sub_8010CAC(void) debug_sub_8012628(); SetMainCallback2(debug_sub_8011498); } - //_546 if (gUnknown_Debug_030043A0 == 0 && gUnknown_Debug_030043A4 == 6) { gMain.savedCallback = debug_sub_80108B8; @@ -1616,16 +1900,15 @@ void debug_sub_8010CAC(void) } switch (gUnknown_Debug_2023A76_[0][6][0]) { - case 1: //_550 + case 1: gCB2_AfterEvolution = debug_sub_80108B8; EvolutionScene(&gPlayerParty[0], gUnknown_Debug_2023A76_[0][1][0], 1, 0); break; - case 2: //_551 + case 2: debug_sub_8012688(); break; } } - //_555 if (gUnknown_Debug_030043A0 == 1 && gUnknown_Debug_030043A4 == 6) { // This is really weird @@ -1639,10 +1922,9 @@ void debug_sub_8010CAC(void) debug_nullsub_3(); } } - //_559 - if (gMain.newKeysRaw == 8) + if (gMain.newKeysRaw == START_BUTTON) debug_sub_801174C(); - if (gMain.newKeysRaw == 0x40) + if (gMain.newKeysRaw == DPAD_UP) { debug_sub_80125E4(); if (gUnknown_Debug_030043A4 != 0) @@ -1653,8 +1935,7 @@ void debug_sub_8010CAC(void) debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); debug_sub_80125A0(); } - //_562 - if (gMain.newKeysRaw == 0x80) + if (gMain.newKeysRaw == DPAD_DOWN) { debug_sub_80125E4(); if (gUnknown_Debug_030043A4 == 6) @@ -1665,8 +1946,7 @@ void debug_sub_8010CAC(void) debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); debug_sub_80125A0(); } - //_567 - if (gMain.newKeysRaw == 0x20) + if (gMain.newKeysRaw == DPAD_LEFT) { debug_sub_80125E4(); if (gUnknown_Debug_030043A0 != 0) @@ -1685,11 +1965,9 @@ void debug_sub_8010CAC(void) debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); } } - //_577 debug_sub_80125A0(); } - //_572 - if (gMain.newKeysRaw == 0x10) + if (gMain.newKeysRaw == DPAD_RIGHT) { debug_sub_80125E4(); if (gUnknown_Debug_030043A0 != 4) @@ -1710,7 +1988,6 @@ void debug_sub_8010CAC(void) } debug_sub_80125A0(); } - //_578 if (gMain.newAndRepeatedKeys & B_BUTTON) { switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5) @@ -1762,7 +2039,6 @@ void debug_sub_8010CAC(void) if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]) gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; } - //_613 if (gUnknown_Debug_030043A0 == 0) { debug_sub_8010AAC(0); @@ -1773,7 +2049,6 @@ void debug_sub_8010CAC(void) break; } } - //_607 if (gMain.newAndRepeatedKeys & A_BUTTON) { switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5) @@ -1825,33 +2100,28 @@ void debug_sub_8010CAC(void) if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]) gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]; } - //_644 if (gUnknown_Debug_030043A0 == 0) { debug_sub_8010AAC(0); debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); } - //_645 debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); break; } } - //_638 - if (gMain.newAndRepeatedKeys & 0x200) + if (gMain.newAndRepeatedKeys & L_BUTTON) { if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) { debug_sub_8010AAC(1); } - //_648 else { if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30) { debug_sub_8010B80(2); } - //_652 else { gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= 10; @@ -1859,31 +2129,26 @@ void debug_sub_8010CAC(void) gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; } } - //_653 if (gUnknown_Debug_030043A0 == 0) { debug_sub_8010AAC(0); debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); } - //_658 debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); } - //_646 - if (gMain.newAndRepeatedKeys & 0x100) + if (gMain.newAndRepeatedKeys & R_BUTTON) { if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) { debug_sub_8010AAC(1); } - //_661 else { if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30) { debug_sub_8010B80(3); } - //_665 else { gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += 10; @@ -1891,1107 +2156,295 @@ void debug_sub_8010CAC(void) gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; } } - //_666 if (gUnknown_Debug_030043A0 == 0) { debug_sub_8010AAC(0); debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); } - //_671 debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); } - //_659 AnimateSprites(); BuildOamBuffer(); } +#endif -__attribute__((naked)) -void debug_sub_8011498() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " ldr r2, ._687 @ gUnknown_Debug_030043A0\n" - " ldr r0, ._687 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r9, r0\n" - " ldr r4, ._687 + 8 @ gMain\n" - " ldrh r1, [r4, #0x28]\n" - " mov r0, #0x81\n" - " lsl r0, r0, #0x2\n" - " cmp r1, r0\n" - " bne ._674 @cond_branch\n" - " bl DoSoftReset\n" - "._674:\n" - " ldrh r0, [r4, #0x2a]\n" - " cmp r0, #0x4\n" - " bne ._675 @cond_branch\n" - " bl debug_sub_8012658\n" - " ldr r0, ._687 + 12 @ debug_sub_8010CAC\n" - " bl SetMainCallback2\n" - "._675:\n" - " ldrh r0, [r4, #0x2a]\n" - " cmp r0, #0x8\n" - " bne ._676 @cond_branch\n" - " bl debug_sub_801174C\n" - "._676:\n" - " ldrh r0, [r4, #0x2a]\n" - " cmp r0, #0x40\n" - " beq ._677 @cond_branch\n" - " cmp r0, #0x80\n" - " bne ._678 @cond_branch\n" - "._677:\n" - " bl debug_sub_8012658\n" - " ldr r0, ._687 + 16 @ gUnknown_Debug_030043A8\n" - " ldrb r1, [r0]\n" - " mov r2, #0x2\n" - " eor r1, r1, r2\n" - " strb r1, [r0]\n" - " bl debug_sub_8012628\n" - "._678:\n" - " ldr r0, ._687 + 8 @ gMain\n" - " ldrh r0, [r0, #0x2a]\n" - " cmp r0, #0x20\n" - " beq ._679 @cond_branch\n" - " cmp r0, #0x10\n" - " bne ._680 @cond_branch\n" - "._679:\n" - " bl debug_sub_8012658\n" - " ldr r0, ._687 + 16 @ gUnknown_Debug_030043A8\n" - " ldrb r1, [r0]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " strb r1, [r0]\n" - " bl debug_sub_8012628\n" - "._680:\n" - " ldr r0, ._687 + 8 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._681 @cond_branch\n" - " ldr r0, ._687 + 20 @ gUnknown_Debug_2023B02\n" - " mov r8, r0\n" - " ldr r6, ._687 + 16 @ gUnknown_Debug_030043A8\n" - " ldrb r4, [r6]\n" - " lsl r4, r4, #0x1\n" - " mov r0, r9\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, r0\n" - " ldr r5, ._687 + 24 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r5]\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x4\n" - " add r4, r4, r1\n" - " add r4, r4, r8\n" - " ldrh r1, [r4]\n" - " sub r1, r1, #0x1\n" - " strh r1, [r4]\n" - " ldrb r3, [r6]\n" - " lsl r1, r3, #0x1\n" - " add r1, r1, r0\n" - " ldrb r2, [r5]\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x4\n" - " add r1, r1, r0\n" - " mov r0, r8\n" - " add r4, r1, r0\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " ldr r5, ._687 + 28 @ gUnknown_Debug_821F564\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r2, r0, #0x1\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " add r0, r2, r0\n" - " ldrh r0, [r0]\n" - " cmp r1, r0\n" - " bge ._682 @cond_branch\n" - " add r0, r5, #6\n" - " add r0, r2, r0\n" - " ldrh r0, [r0]\n" - " strh r0, [r4]\n" - "._682:\n" - " bl debug_sub_8012294\n" - "._681:\n" - " ldr r0, ._687 + 8 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._683 @cond_branch\n" - " ldr r1, ._687 + 20 @ gUnknown_Debug_2023B02\n" - " mov r8, r1\n" - " ldr r6, ._687 + 16 @ gUnknown_Debug_030043A8\n" - " ldrb r4, [r6]\n" - " lsl r4, r4, #0x1\n" - " mov r0, r9\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, r0\n" - " ldr r5, ._687 + 24 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r5]\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x4\n" - " add r4, r4, r1\n" - " add r4, r4, r8\n" - " ldrh r1, [r4]\n" - " add r1, r1, #0x1\n" - " strh r1, [r4]\n" - " ldrb r3, [r6]\n" - " lsl r1, r3, #0x1\n" - " add r1, r1, r0\n" - " ldrb r2, [r5]\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x4\n" - " add r1, r1, r0\n" - " mov r0, r8\n" - " add r4, r1, r0\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " ldr r5, ._687 + 28 @ gUnknown_Debug_821F564\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r2, r0, #0x1\n" - " add r0, r5, #6\n" - " add r0, r2, r0\n" - " ldrh r0, [r0]\n" - " cmp r1, r0\n" - " ble ._684 @cond_branch\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " add r0, r2, r0\n" - " ldrh r0, [r0]\n" - " strh r0, [r4]\n" - "._684:\n" - " bl debug_sub_8012294\n" - "._683:\n" - " ldr r0, ._687 + 8 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._685 @cond_branch\n" - " ldr r6, ._687 + 20 @ gUnknown_Debug_2023B02\n" - " ldr r5, ._687 + 16 @ gUnknown_Debug_030043A8\n" - " ldrb r4, [r5]\n" - " lsl r4, r4, #0x1\n" - " mov r0, r9\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, r0\n" - " ldr r2, ._687 + 24 @ gUnknown_Debug_03004360\n" - " ldrb r1, [r2]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x4\n" - " add r4, r4, r0\n" - " add r4, r4, r6\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0xa\n" - " strh r0, [r4]\n" - " mov sl, r5\n" - " mov r8, r6\n" - " add r7, r2, #0\n" - " ldr r6, ._687 + 28 @ gUnknown_Debug_821F564\n" - " b ._686\n" - "._688:\n" - " .align 2, 0\n" - "._687:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gMain\n" - " .word debug_sub_8010CAC+1\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_2023B02\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_821F564\n" - "._689:\n" - " add r0, r6, #6\n" - " add r0, r2, r0\n" - " ldrh r0, [r0]\n" - " ldrh r1, [r4]\n" - " add r0, r0, r1\n" - " strh r0, [r4]\n" - "._686:\n" - " mov r0, sl\n" - " ldrb r5, [r0]\n" - " lsl r4, r5, #0x1\n" - " mov r0, r9\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, r0\n" - " ldrb r1, [r7]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x4\n" - " add r4, r4, r0\n" - " add r4, r4, r8\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r2, r0, #0x1\n" - " add r0, r6, #0\n" - " add r0, r0, #0x8\n" - " add r0, r2, r0\n" - " ldrh r0, [r0]\n" - " cmp r1, r0\n" - " blt ._689 @cond_branch\n" - " bl debug_sub_8012294\n" - "._685:\n" - " ldr r0, ._692 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._690 @cond_branch\n" - " ldr r6, ._692 + 4 @ gUnknown_Debug_2023B02\n" - " ldr r5, ._692 + 8 @ gUnknown_Debug_030043A8\n" - " ldrb r4, [r5]\n" - " lsl r4, r4, #0x1\n" - " mov r0, r9\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, r0\n" - " ldr r2, ._692 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r1, [r2]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x4\n" - " add r4, r4, r0\n" - " add r4, r4, r6\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xa\n" - " strh r0, [r4]\n" - " mov sl, r5\n" - " mov r8, r6\n" - " add r7, r2, #0\n" - " ldr r6, ._692 + 16 @ gUnknown_Debug_821F564\n" - " b ._691\n" - "._693:\n" - " .align 2, 0\n" - "._692:\n" - " .word gMain\n" - " .word gUnknown_Debug_2023B02\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_821F564\n" - "._694:\n" - " ldrh r0, [r4]\n" - " sub r0, r0, r1\n" - " strh r0, [r4]\n" - "._691:\n" - " mov r1, sl\n" - " ldrb r5, [r1]\n" - " lsl r4, r5, #0x1\n" - " mov r0, r9\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, r0\n" - " ldrb r1, [r7]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x4\n" - " add r4, r4, r0\n" - " add r4, r4, r8\n" - " mov r0, #0x0\n" - " ldsh r2, [r4, r0]\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x1\n" - " add r1, r6, #6\n" - " add r0, r0, r1\n" - " ldrh r1, [r0]\n" - " cmp r2, r1\n" - " bgt ._694 @cond_branch\n" - " bl debug_sub_8012294\n" - "._690:\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); +extern u16 gUnknown_Debug_821F564[][5]; + +void debug_sub_8011498(void) +{ + u8 r9 = gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5; + + if (gMain.heldKeysRaw == (L_BUTTON | SELECT_BUTTON)) + DoSoftReset(); + if (gMain.newKeysRaw == SELECT_BUTTON) + { + debug_sub_8012658(); + SetMainCallback2(debug_sub_8010CAC); + } + if (gMain.newKeysRaw == START_BUTTON) + debug_sub_801174C(); + if (gMain.newKeysRaw == DPAD_UP || gMain.newKeysRaw == DPAD_DOWN) + { + debug_sub_8012658(); + gUnknown_Debug_030043A8 ^= 2; + debug_sub_8012628(); + } + if (gMain.newKeysRaw == DPAD_LEFT || gMain.newKeysRaw == DPAD_RIGHT) + { + debug_sub_8012658(); + gUnknown_Debug_030043A8 ^= 1; + debug_sub_8012628(); + } + if (gMain.newAndRepeatedKeys & B_BUTTON) + { + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8]--; + if (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] < gUnknown_Debug_821F564[gUnknown_Debug_030043A8][4]) + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] = gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3]; + debug_sub_8012294(); + } + if (gMain.newAndRepeatedKeys & A_BUTTON) + { + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8]++; + if (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] > gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3]) + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] = gUnknown_Debug_821F564[gUnknown_Debug_030043A8][4]; + debug_sub_8012294(); + } + if (gMain.newAndRepeatedKeys & L_BUTTON) + { + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] -= 10; + while (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] < gUnknown_Debug_821F564[gUnknown_Debug_030043A8][4]) + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] += gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3]; + debug_sub_8012294(); + } + if (gMain.newAndRepeatedKeys & R_BUTTON) + { + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] += 10; + while (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] > gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3]) + gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] -= gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3]; + debug_sub_8012294(); + } + AnimateSprites(); + BuildOamBuffer(); } -__attribute__((naked)) -void debug_sub_801174C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe8\n" - " mov r0, #0x0\n" - " mov r9, r0\n" - " ldr r1, ._704 @ gUnknown_020297ED\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl Random\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " mov r0, #0x3\n" - " and r4, r4, r0\n" - " lsl r4, r4, #0x18\n" - " lsr r6, r4, #0x18\n" - " ldr r5, ._704 + 4 @ gSaveBlock2\n" - " lsl r1, r6, #0x1\n" - " add r1, r1, r6\n" - " lsl r1, r1, #0x1\n" - " ldr r0, ._704 + 8 @ str_821F631\n" - " add r1, r1, r0\n" - " add r0, r5, #0\n" - " bl StringCopy\n" - " lsr r4, r4, #0x19\n" - " strb r4, [r5, #0x8]\n" - " bl ZeroPlayerPartyMons\n" - " bl ZeroEnemyPartyMons\n" - " ldr r0, ._704 + 12 @ gUnknown_Debug_2023A76\n" - " mov r1, #0x3c\n" - " ldsh r7, [r0, r1]\n" - " mov r2, r9\n" - " str r2, [sp, #0xc]\n" - " cmp r7, #0x9\n" - " ble ._695 @cond_branch\n" - " mov r0, #0x0\n" - "._696:\n" - " sub r7, r7, #0xa\n" - " add r0, r0, #0x1\n" - " cmp r7, #0x9\n" - " bgt ._696 @cond_branch\n" - " str r0, [sp, #0xc]\n" - "._695:\n" - " ldr r2, ._704 + 16 @ gBattleTypeFlags\n" - " ldr r1, ._704 + 20 @ gUnknown_Debug_821F598\n" - " sub r0, r7, #1\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrh r3, [r0]\n" - " strh r3, [r2]\n" - " ldr r1, ._704 + 24 @ gUnknown_02023A14_50\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r1, ._704 + 28 @ gBattleTerrain\n" - " add r0, sp, #0xc\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " mov r0, #0x80\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._697 @cond_branch\n" - " bl EnterSafariMode\n" - "._697:\n" - " ldr r5, ._704 + 12 @ gUnknown_Debug_2023A76\n" - " ldrh r0, [r5, #0x3c]\n" - " sub r0, r0, #0x2\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0x2\n" - " bhi ._698 @cond_branch\n" - " ldr r4, ._704 + 32 @ gTrainerBattleOpponent\n" - " bl Random\n" - " mov r1, #0x7\n" - " and r1, r1, r0\n" - " add r1, r1, #0x1\n" - " strh r1, [r4]\n" - "._698:\n" - " ldr r1, ._704 + 36 @ gPlayerPartyCount\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " mov r7, #0x0\n" - "._745:\n" - " lsl r0, r7, #0x1\n" - " ldr r3, ._704 + 12 @ gUnknown_Debug_2023A76\n" - " add r1, r0, r3\n" - " mov r2, #0x0\n" - " ldsh r1, [r1, r2]\n" - " add r2, r3, #0\n" - " mov r8, r0\n" - " add r3, r7, #5\n" - " mov sl, r3\n" - " cmp r1, #0\n" - " beq ._699 @cond_branch\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, #0\n" - " add r0, r0, r1\n" - " mov r3, #0x0\n" - " ldsh r0, [r0, r3]\n" - " cmp r0, #0x1\n" - " beq ._707 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._701 @cond_branch\n" - " cmp r0, #0\n" - " beq ._706 @cond_branch\n" - " b ._708\n" - "._705:\n" - " .align 2, 0\n" - "._704:\n" - " .word gUnknown_020297ED\n" - " .word gSaveBlock2\n" - " .word str_821F631\n" - " .word gUnknown_Debug_2023A76\n" - " .word gBattleTypeFlags\n" - " .word gUnknown_Debug_821F598\n" - " .word gUnknown_02023A14_50\n" - " .word gBattleTerrain\n" - " .word gTrainerBattleOpponent\n" - " .word gPlayerPartyCount\n" - "._701:\n" - " cmp r0, #0x2\n" - " beq ._706 @cond_branch\n" - " cmp r0, #0x3\n" - " beq ._707 @cond_branch\n" - " b ._708\n" - "._706:\n" - " mov r6, #0x0\n" - " b ._710\n" - "._707:\n" - " mov r6, #0xfe\n" - " b ._710\n" - "._708:\n" - " mov r6, #0xff\n" - "._710:\n" - " mov r1, r8\n" - " add r0, r1, r2\n" - " mov r3, #0x0\n" - " ldsh r0, [r0, r3]\n" - " add r1, r7, #5\n" - " mov sl, r1\n" - " cmp r0, #0xc9\n" - " bne ._712 @cond_branch\n" - " cmp r1, #0x1d\n" - " bgt ._712 @cond_branch\n" - " add r0, r7, #7\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " mov r9, r0\n" - " b ._713\n" - "._712:\n" - " mov r2, #0x0\n" - " mov r9, r2\n" - "._713:\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r3, #0x64\n" - " mul r0, r0, r3\n" - " ldr r1, ._719 @ gEnemyParty\n" - " add r0, r0, r1\n" - " ldr r1, ._719 + 4 @ gUnknown_Debug_2023A76\n" - " add r1, r1, r8\n" - " ldrh r1, [r1]\n" - " add r2, r7, #1\n" - " lsl r2, r2, #0x1\n" - " ldr r3, ._719 + 4 @ gUnknown_Debug_2023A76\n" - " add r2, r2, r3\n" - " ldrb r2, [r2]\n" - " str r6, [sp]\n" - " mov r3, #0x0\n" - " str r3, [sp, #0x4]\n" - " mov r3, r9\n" - " str r3, [sp, #0x8]\n" - " mov r3, #0x0\n" - " bl CreateMonWithGenderNatureLetter\n" - "._699:\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r2, #0x64\n" - " add r1, r0, #0\n" - " mul r1, r1, r2\n" - " ldr r0, ._719 @ gEnemyParty\n" - " add r5, r1, r0\n" - " ldr r4, ._719 + 8 @ gUnknown_Debug_2023A7A\n" - " mov r3, r8\n" - " add r6, r3, r4\n" - " add r0, r5, #0\n" - " mov r1, #0xc\n" - " add r2, r6, #0\n" - " bl SetMonData\n" - " sub r4, r4, #0x4\n" - " add r1, r7, #2\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r4\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r1, [sp, #0x10]\n" - " cmp r0, #0xb\n" - " bhi ._714 @cond_branch\n" - " add r0, r5, #0\n" - " mov r1, #0x26\n" - " add r2, r6, #0\n" - " bl SetMonData\n" - "._714:\n" - " add r1, r7, #3\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r4\n" - " mov r3, #0x0\n" - " ldsh r2, [r0, r3]\n" - " str r1, [sp, #0x14]\n" - " cmp r2, #0\n" - " beq ._716 @cond_branch\n" - " cmp r2, #0x3\n" - " beq ._716 @cond_branch\n" - " cmp r2, #0x2\n" - " bgt ._717 @cond_branch\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " sub r0, r0, #0x1\n" - " b ._718\n" - "._720:\n" - " .align 2, 0\n" - "._719:\n" - " .word gEnemyParty\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_2023A7A\n" - "._717:\n" - " mov r2, #0x0\n" - " ldsh r0, [r0, r2]\n" - " sub r0, r0, #0x4\n" - "._718:\n" - " str r0, [sp, #0xc]\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r3, #0x64\n" - " mul r0, r0, r3\n" - " ldr r1, ._726 @ gEnemyParty\n" - " add r0, r0, r1\n" - " mov r1, #0x2e\n" - " add r2, sp, #0xc\n" - " bl SetMonData\n" - "._716:\n" - " ldr r1, ._726 + 4 @ gUnknown_Debug_2023A76\n" - " add r1, r1, #0x46\n" - " mov r2, r8\n" - " add r0, r2, r1\n" - " mov r3, #0x0\n" - " ldsh r0, [r0, r3]\n" - " ldr r2, ._726 + 4 @ gUnknown_Debug_2023A76\n" - " cmp r0, #0\n" - " beq ._721 @cond_branch\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x1\n" - " beq ._729 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._723 @cond_branch\n" - " cmp r0, #0\n" - " beq ._728 @cond_branch\n" - " b ._730\n" - "._727:\n" - " .align 2, 0\n" - "._726:\n" - " .word gEnemyParty\n" - " .word gUnknown_Debug_2023A76\n" - "._723:\n" - " cmp r0, #0x2\n" - " beq ._728 @cond_branch\n" - " cmp r0, #0x3\n" - " beq ._729 @cond_branch\n" - " b ._730\n" - "._728:\n" - " mov r6, #0x0\n" - " b ._732\n" - "._729:\n" - " mov r6, #0xfe\n" - " b ._732\n" - "._730:\n" - " mov r6, #0xff\n" - "._732:\n" - " add r1, r2, #0\n" - " add r1, r1, #0x46\n" - " mov r2, r8\n" - " add r0, r2, r1\n" - " mov r3, #0x0\n" - " ldsh r0, [r0, r3]\n" - " cmp r0, #0xc9\n" - " bne ._734 @cond_branch\n" - " mov r0, sl\n" - " cmp r0, #0x1d\n" - " bgt ._734 @cond_branch\n" - " add r0, r7, #7\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " mov r9, r0\n" - " b ._735\n" - "._734:\n" - " mov r1, #0x0\n" - " mov r9, r1\n" - "._735:\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r2, #0x64\n" - " mul r0, r0, r2\n" - " ldr r1, ._741 @ gPlayerParty\n" - " add r0, r0, r1\n" - " ldr r1, ._741 + 4 @ gUnknown_Debug_2023ABC\n" - " add r1, r1, r8\n" - " ldrh r1, [r1]\n" - " add r2, r7, #1\n" - " lsl r2, r2, #0x1\n" - " ldr r3, ._741 + 4 @ gUnknown_Debug_2023ABC\n" - " add r2, r2, r3\n" - " ldrb r2, [r2]\n" - " str r6, [sp]\n" - " mov r3, #0x0\n" - " str r3, [sp, #0x4]\n" - " mov r3, r9\n" - " str r3, [sp, #0x8]\n" - " mov r3, #0x0\n" - " bl CreateMonWithGenderNatureLetter\n" - " ldr r1, ._741 + 8 @ gPlayerPartyCount\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._721:\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r2, #0x64\n" - " add r1, r0, #0\n" - " mul r1, r1, r2\n" - " ldr r0, ._741 @ gPlayerParty\n" - " add r4, r1, r0\n" - " ldr r0, ._741 + 12 @ gUnknown_Debug_2023AC0\n" - " mov r3, r8\n" - " add r5, r3, r0\n" - " add r0, r4, #0\n" - " mov r1, #0xc\n" - " add r2, r5, #0\n" - " bl SetMonData\n" - " ldr r1, [sp, #0x10]\n" - " lsl r0, r1, #0x1\n" - " ldr r2, ._741 + 16 @ gUnknown_Debug_2023A76\n" - " add r0, r0, r2\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._736 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0x26\n" - " add r2, r5, #0\n" - " bl SetMonData\n" - "._736:\n" - " ldr r3, [sp, #0x14]\n" - " lsl r0, r3, #0x1\n" - " ldr r1, ._741 + 4 @ gUnknown_Debug_2023ABC\n" - " add r0, r0, r1\n" - " mov r2, #0x0\n" - " ldsh r1, [r0, r2]\n" - " cmp r1, #0\n" - " beq ._738 @cond_branch\n" - " cmp r1, #0x3\n" - " beq ._738 @cond_branch\n" - " cmp r1, #0x2\n" - " bgt ._739 @cond_branch\n" - " add r0, r1, #0\n" - " sub r0, r0, #0x1\n" - " b ._740\n" - "._742:\n" - " .align 2, 0\n" - "._741:\n" - " .word gPlayerParty\n" - " .word gUnknown_Debug_2023ABC\n" - " .word gPlayerPartyCount\n" - " .word gUnknown_Debug_2023AC0\n" - " .word gUnknown_Debug_2023A76\n" - "._739:\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " sub r0, r0, #0x4\n" - "._740:\n" - " str r0, [sp, #0xc]\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r2, #0x64\n" - " mul r0, r0, r2\n" - " ldr r1, ._750 @ gPlayerParty\n" - " add r0, r0, r1\n" - " mov r1, #0x2e\n" - " add r2, sp, #0xc\n" - " bl SetMonData\n" - "._738:\n" - " ldr r3, [sp, #0x14]\n" - " lsl r0, r3, #0x1\n" - " ldr r1, ._750 + 4 @ gUnknown_Debug_2023ABC\n" - " add r0, r0, r1\n" - " mov r2, #0x0\n" - " ldsh r0, [r0, r2]\n" - " cmp r0, #0x2\n" - " ble ._743 @cond_branch\n" - " add r0, r7, #0\n" - " mov r1, #0x5\n" - " bl __divsi3\n" - " mov r3, #0x64\n" - " mul r0, r0, r3\n" - " ldr r1, ._750 @ gPlayerParty\n" - " add r0, r0, r1\n" - " mov r1, #0x7\n" - " ldr r2, ._750 + 8 @ Str_821F649\n" - " bl SetMonData\n" - " ldr r2, ._750 + 12 @ gUnknown_02023A14_50\n" - " ldrb r0, [r2]\n" - " mov r1, #0x40\n" - " orr r0, r0, r1\n" - " strb r0, [r2]\n" - "._743:\n" - " mov r7, sl\n" - " cmp r7, #0x1d\n" - " bgt ._744 @cond_branch\n" - " b ._745\n" - "._744:\n" - " mov r0, #0x0\n" - " str r0, [sp, #0xc]\n" - " mov r0, #0x64\n" - " mov r8, r0\n" - " ldr r1, ._750 + 16 @ gUnknown_Debug_2023B02\n" - " mov r9, r1\n" - " ldr r2, ._750 @ gPlayerParty\n" - " mov sl, r2\n" - "._747:\n" - " mov r7, #0x0\n" - "._746:\n" - " ldr r2, [sp, #0xc]\n" - " mov r0, r8\n" - " mul r0, r0, r2\n" - " ldr r3, ._750 + 20 @ gEnemyParty\n" - " add r0, r0, r3\n" - " add r5, r7, #0\n" - " add r5, r5, #0xd\n" - " lsl r2, r2, #0x3\n" - " lsl r4, r7, #0x1\n" - " mov r3, r9\n" - " add r1, r4, r3\n" - " add r2, r2, r1\n" - " add r1, r5, #0\n" - " bl SetMonData\n" - " ldr r1, [sp, #0xc]\n" - " mov r0, r8\n" - " mul r0, r0, r1\n" - " ldr r2, ._750 + 20 @ gEnemyParty\n" - " add r0, r0, r2\n" - " add r6, r7, #0\n" - " add r6, r6, #0x11\n" - " lsl r1, r1, #0x3\n" - " add r1, r4, r1\n" - " add r1, r1, r9\n" - " mov r3, #0x0\n" - " ldsh r1, [r1, r3]\n" - " lsl r2, r1, #0x1\n" - " add r2, r2, r1\n" - " lsl r2, r2, #0x2\n" - " ldr r1, ._750 + 24 @ gBattleMoves\n" - " add r2, r2, r1\n" - " add r1, r6, #0\n" - " bl SetMonData\n" - " ldr r2, [sp, #0xc]\n" - " mov r0, r8\n" - " mul r0, r0, r2\n" - " add r0, r0, sl\n" - " lsl r2, r2, #0x3\n" - " ldr r3, ._750 + 28 @ gUnknown_Debug_2023B32\n" - " add r1, r4, r3\n" - " add r2, r2, r1\n" - " add r1, r5, #0\n" - " bl SetMonData\n" - " ldr r1, [sp, #0xc]\n" - " mov r0, r8\n" - " mul r0, r0, r1\n" - " add r0, r0, sl\n" - " lsl r1, r1, #0x3\n" - " add r4, r4, r1\n" - " ldr r1, ._750 + 28 @ gUnknown_Debug_2023B32\n" - " add r4, r4, r1\n" - " mov r2, #0x0\n" - " ldsh r1, [r4, r2]\n" - " lsl r2, r1, #0x1\n" - " add r2, r2, r1\n" - " lsl r2, r2, #0x2\n" - " ldr r3, ._750 + 24 @ gBattleMoves\n" - " add r2, r2, r3\n" - " add r1, r6, #0\n" - " bl SetMonData\n" - " add r7, r7, #0x1\n" - " cmp r7, #0x3\n" - " ble ._746 @cond_branch\n" - " ldr r0, [sp, #0xc]\n" - " add r0, r0, #0x1\n" - " str r0, [sp, #0xc]\n" - " cmp r0, #0x5\n" - " ble ._747 @cond_branch\n" - " ldr r3, ._750 + 32 @ gUnknown_Debug_2023A76\n" - " add r4, r3, #0\n" - " add r4, r4, #0x44\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0x8\n" - " bne ._748 @cond_branch\n" - " ldr r0, ._750 + 12 @ gUnknown_02023A14_50\n" - " ldrb r1, [r0]\n" - " mov r2, #0x80\n" - " b ._753\n" - "._751:\n" - " .align 2, 0\n" - "._750:\n" - " .word gPlayerParty\n" - " .word gUnknown_Debug_2023ABC\n" - " .word Str_821F649\n" - " .word gUnknown_02023A14_50\n" - " .word gUnknown_Debug_2023B02\n" - " .word gEnemyParty\n" - " .word gBattleMoves+0x4\n" - " .word gUnknown_Debug_2023B32\n" - " .word gUnknown_Debug_2023A76\n" - "._748:\n" - " cmp r0, #0x7\n" - " bne ._752 @cond_branch\n" - " ldr r0, ._754 @ gUnknown_02023A14_50\n" - " ldrb r1, [r0]\n" - " mov r2, #0x20\n" - " b ._753\n" - "._755:\n" - " .align 2, 0\n" - "._754:\n" - " .word gUnknown_02023A14_50\n" - "._752:\n" - " cmp r0, #0x6\n" - " bne ._756 @cond_branch\n" - " ldr r2, ._759 @ gUnknown_02023A14_50\n" - " ldrb r0, [r2]\n" - " mov r1, #0x10\n" - " orr r0, r0, r1\n" - " strb r0, [r2]\n" - " ldrh r1, [r3, #0x4]\n" - " mov r2, #0x4\n" - " ldsh r0, [r3, r2]\n" - " cmp r0, #0x5\n" - " ble ._757 @cond_branch\n" - " ldr r0, ._759 + 4 @ gSharedMem\n" - " sub r1, r1, #0x2\n" - " ldr r3, ._759 + 8 @ 0x160a3\n" - " add r0, r0, r3\n" - " b ._761\n" - "._760:\n" - " .align 2, 0\n" - "._759:\n" - " .word gUnknown_02023A14_50\n" - " .word gSharedMem\n" - " .word 0x160a3\n" - "._757:\n" - " ldr r0, ._762 @ gSharedMem\n" - " ldr r2, ._762 + 4 @ 0x160a3\n" - " add r0, r0, r2\n" - " b ._761\n" - "._763:\n" - " .align 2, 0\n" - "._762:\n" - " .word gSharedMem\n" - " .word 0x160a3\n" - "._756:\n" - " cmp r0, #0x5\n" - " bne ._764 @cond_branch\n" - " ldr r0, ._766 @ gUnknown_02023A14_50\n" - " ldrb r1, [r0]\n" - " mov r2, #0x21\n" - "._753:\n" - " orr r1, r1, r2\n" - "._761:\n" - " strb r1, [r0]\n" - " bl sub_80408BC\n" - " b ._770\n" - "._767:\n" - " .align 2, 0\n" - "._766:\n" - " .word gUnknown_02023A14_50\n" - "._764:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._768 @cond_branch\n" - " bl sub_80408BC\n" - "._768:\n" - " ldrh r3, [r4]\n" - " mov r0, #0x2\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._769 @cond_branch\n" - " ldr r0, ._772 @ gUnknown_02023A14_50\n" - " ldrb r1, [r0]\n" - " mov r2, #0x4\n" - " orr r1, r1, r2\n" - " strb r1, [r0]\n" - "._769:\n" - " mov r0, #0x4\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._770 @cond_branch\n" - " ldr r0, ._772 @ gUnknown_02023A14_50\n" - " ldrb r1, [r0]\n" - " mov r2, #0x6\n" - " orr r1, r1, r2\n" - " strb r1, [r0]\n" - "._770:\n" - " ldr r0, ._772 + 4 @ gMain\n" - " ldr r1, ._772 + 8 @ debug_sub_80108B8\n" - " str r1, [r0, #0x8]\n" - " ldr r0, ._772 + 12 @ unref_sub_800D684\n" - " bl SetMainCallback2\n" - " bl ClearBag\n" - " mov r0, #0x1\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x2\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x3\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x4\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x5\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x6\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x7\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x8\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x9\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0xa\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0xb\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0xc\n" - " mov r1, #0xa\n" - " bl AddBagItem\n" - " mov r0, #0x13\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x14\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x19\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x22\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x23\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x25\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x49\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x4a\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x4b\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x4c\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x4d\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x4e\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " mov r0, #0x50\n" - " mov r1, #0x63\n" - " bl AddBagItem\n" - " ldr r4, ._772 + 16 @ gUnknown_Debug_821F5AC\n" - " mov r7, #0xe\n" - "._771:\n" - " add r0, r4, #0\n" - " bl sub_810CA34\n" - " add r4, r4, #0x8\n" - " sub r7, r7, #0x1\n" - " cmp r7, #0\n" - " bge ._771 @cond_branch\n" - " add sp, sp, #0x18\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._773:\n" - " .align 2, 0\n" - "._772:\n" - " .word gUnknown_02023A14_50\n" - " .word gMain\n" - " .word debug_sub_80108B8+1\n" - " .word unref_sub_800D684+1\n" - " .word gUnknown_Debug_821F5AC\n" - "\n" - ); +extern const u16 gUnknown_Debug_821F598[]; +extern const u8 str_821F631[][6]; +extern const u8 Str_821F649[]; +extern const struct Pokeblock gUnknown_Debug_821F5AC[]; + +extern u8 gUnknown_020297ED; + +extern void unref_sub_800D684(void); + +void debug_sub_801174C(void) +{ + u8 r9 = 0; + u8 r6; + s32 i; + s32 spC; + u16 sp10; + + gUnknown_020297ED = 1; + r6 = Random() % 4; + StringCopy(gSaveBlock2.playerName, str_821F631[r6]); + gSaveBlock2.playerGender = r6 >> 1; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + i = gUnknown_Debug_2023A76[0][30]; + spC = 0; + if (i >= 10) + { + spC = 0; + while (i >= 10) + { + i -= 10; + spC++; + } + } + gBattleTypeFlags = gUnknown_Debug_821F598[i - 1]; + gUnknown_02023A14_50 = 8; + gBattleTerrain = spC; + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + EnterSafariMode(); + if (gUnknown_Debug_2023A76[0][30] >= 2 && gUnknown_Debug_2023A76[0][30] <= 4) + gTrainerBattleOpponent = (Random() & 7) + 1; + + gPlayerPartyCount = 0; + for (i = 0; i < 30; i += 5) + { + if (gUnknown_Debug_2023A76[0][i] != 0) + { + switch (gUnknown_Debug_2023A76[0][i + 4]) + { + case 0: + case 2: + r6 = 0; + break; + case 1: + case 3: + r6 = 0xFE; + break; + default: + r6 = 0xFF; + break; + } + if (gUnknown_Debug_2023A76[0][i] == 0xC9 && i + 5 < 30) + r9 = gUnknown_Debug_2023A76[0][i + 7]; + else + r9 = 0; + CreateMonWithGenderNatureLetter( + &gEnemyParty[i / 5], + gUnknown_Debug_2023A76[0][i], + gUnknown_Debug_2023A76[0][i + 1], + 0, + r6, + 0, + r9); + } + SetMonData(&gEnemyParty[i / 5], MON_DATA_HELD_ITEM, &gUnknown_Debug_2023A76[0][i + 2]); + sp10 = gUnknown_Debug_2023A76[0][i + 2] - 1; + if (sp10 <= 11) + SetMonData(&gEnemyParty[i / 5], MON_DATA_POKEBALL, &gUnknown_Debug_2023A76[0][i + 2]); + if (gUnknown_Debug_2023A76[0][i + 3] != 0 && gUnknown_Debug_2023A76[0][i + 3] != 3) + { + if (gUnknown_Debug_2023A76[0][i + 3] <= 2) + spC = gUnknown_Debug_2023A76[0][i + 3] - 1; + else + spC = gUnknown_Debug_2023A76[0][i + 3] - 4; + SetMonData(&gEnemyParty[i / 5], MON_DATA_ALT_ABILITY, &spC); + } + + if (gUnknown_Debug_2023A76[1][i] != 0) + { + switch (gUnknown_Debug_2023A76[1][i + 4]) + { + case 0: + case 2: + r6 = 0; + break; + case 1: + case 3: + r6 = 0xFE; + break; + default: + r6 = 0xFF; + break; + } + if (gUnknown_Debug_2023A76[1][i] == 0xC9 && i + 5 < 30) + r9 = gUnknown_Debug_2023A76[1][i + 7]; + else + r9 = 0; + CreateMonWithGenderNatureLetter( + &gPlayerParty[i / 5], + gUnknown_Debug_2023A76[1][i], + gUnknown_Debug_2023A76[1][i + 1], + 0, + r6, + 0, + r9); + gPlayerPartyCount++; + } + SetMonData(&gPlayerParty[i / 5], MON_DATA_HELD_ITEM, &gUnknown_Debug_2023A76[1][i + 2]); + sp10 = gUnknown_Debug_2023A76[0][i + 2] - 1; + if (sp10 <= 11) + SetMonData(&gPlayerParty[i / 5], MON_DATA_POKEBALL, &gUnknown_Debug_2023A76[1][i + 2]); + if (gUnknown_Debug_2023A76[1][i + 3] != 0 && gUnknown_Debug_2023A76[1][i + 3] != 3) + { + if (gUnknown_Debug_2023A76[1][i + 3] <= 2) + spC = gUnknown_Debug_2023A76[1][i + 3] - 1; + else + spC = gUnknown_Debug_2023A76[1][i + 3] - 4; + SetMonData(&gPlayerParty[i / 5], MON_DATA_ALT_ABILITY, &spC); + } + if (gUnknown_Debug_2023A76[1][i + 3] > 2) + { + SetMonData(&gPlayerParty[i / 5], MON_DATA_OT_NAME, Str_821F649); + gUnknown_02023A14_50 |= 0x40; + } + } + + for (spC = 0; spC < 6; spC++) + { + for (i = 0; i < 4; i++) + { + SetMonData(&gEnemyParty[spC], MON_DATA_MOVE1 + i, &gUnknown_Debug_2023B02[0][spC][i]); + SetMonData(&gEnemyParty[spC], MON_DATA_PP1 + i, &gBattleMoves[gUnknown_Debug_2023B02[0][spC][i]].pp); + SetMonData(&gPlayerParty[spC], MON_DATA_MOVE1 + i, &gUnknown_Debug_2023B02[1][spC][i]); + SetMonData(&gPlayerParty[spC], MON_DATA_PP1 + i, &gBattleMoves[gUnknown_Debug_2023B02[1][spC][i]].pp); + } + } + + if (gUnknown_Debug_2023A76[0][0x22] == 8) + { + gUnknown_02023A14_50 |= 0x80; + sub_80408BC(); + } + else if (gUnknown_Debug_2023A76[0][0x22] == 7) + { + gUnknown_02023A14_50 |= 0x20; + sub_80408BC(); + } + else if (gUnknown_Debug_2023A76[0][0x22] == 6) + { + gUnknown_02023A14_50 |= 0x10; + if (gUnknown_Debug_2023A76[0][2] > 5) + gSharedMem[0x160A3] = gUnknown_Debug_2023A76[0][2] - 2; + else + gSharedMem[0x160A3] = gUnknown_Debug_2023A76[0][2]; + sub_80408BC(); + } + else if (gUnknown_Debug_2023A76[0][0x22] == 5) + { + gUnknown_02023A14_50 |= 0x21; + sub_80408BC(); + } + else + { + if (!(gUnknown_Debug_2023A76[0][0x22] & 1)) + sub_80408BC(); + if (gUnknown_Debug_2023A76[0][0x22] & 2) + gUnknown_02023A14_50 |= 4; + if (gUnknown_Debug_2023A76[0][0x22] & 4) + gUnknown_02023A14_50 |= 6; + } + + gMain.savedCallback = debug_sub_80108B8; + SetMainCallback2(unref_sub_800D684); + + ClearBag(); + + AddBagItem(ITEM_MASTER_BALL, 10); + AddBagItem(ITEM_ULTRA_BALL, 10); + AddBagItem(ITEM_GREAT_BALL, 10); + AddBagItem(ITEM_POKE_BALL, 10); + AddBagItem(ITEM_SAFARI_BALL, 10); + AddBagItem(ITEM_NET_BALL, 10); + AddBagItem(ITEM_DIVE_BALL, 10); + AddBagItem(ITEM_NEST_BALL, 10); + AddBagItem(ITEM_REPEAT_BALL, 10); + AddBagItem(ITEM_TIMER_BALL, 10); + AddBagItem(ITEM_LUXURY_BALL, 10); + AddBagItem(ITEM_PREMIER_BALL, 10); + + AddBagItem(ITEM_FULL_RESTORE, 99); + AddBagItem(ITEM_MAX_POTION, 99); + AddBagItem(ITEM_MAX_REVIVE, 99); + AddBagItem(ITEM_ETHER, 99); + AddBagItem(ITEM_MAX_ETHER, 99); + AddBagItem(ITEM_MAX_ELIXIR, 99); + + AddBagItem(ITEM_GUARD_SPEC, 99); + AddBagItem(ITEM_DIRE_HIT, 99); + AddBagItem(ITEM_X_ATTACK, 99); + AddBagItem(ITEM_X_DEFEND, 99); + AddBagItem(ITEM_X_SPEED, 99); + AddBagItem(ITEM_X_ACCURACY, 99); + // hmm... no X Special? Why do we need Poke Doll? + AddBagItem(ITEM_POKE_DOLL, 99); + + for (i = 0; i < 15; i++) + sub_810CA34(&gUnknown_Debug_821F5AC[i]); } void debug_sub_8011D40(void) @@ -3055,918 +2508,289 @@ void debug_sub_8011E74(void) gUnknown_Debug_030043A8 = r5; } -__attribute__((naked)) +extern const u8 Str_821F624[]; + void debug_sub_8011EA0(u8 a) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffff4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0x22\n" - " bls ._782 @cond_branch\n" - " b ._815\n" - "._782:\n" - " lsl r0, r7, #0x2\n" - " ldr r1, ._785 @ \n" - " add r1, r0, r1\n" - " ldr r1, [r1]\n" - " str r0, [sp, #0x8]\n" - " mov pc, r1\n" - "._786:\n" - " .align 2, 0\n" - "._785:\n" - " .word ._784\n" - "._784:\n" - " .word ._812\n" - " .word ._817\n" - " .word ._814\n" - " .word ._815\n" - " .word ._816\n" - " .word ._812\n" - " .word ._817\n" - " .word ._814\n" - " .word ._815\n" - " .word ._816\n" - " .word ._812\n" - " .word ._817\n" - " .word ._814\n" - " .word ._815\n" - " .word ._816\n" - " .word ._812\n" - " .word ._817\n" - " .word ._814\n" - " .word ._815\n" - " .word ._816\n" - " .word ._812\n" - " .word ._817\n" - " .word ._814\n" - " .word ._815\n" - " .word ._816\n" - " .word ._812\n" - " .word ._817\n" - " .word ._814\n" - " .word ._815\n" - " .word ._816\n" - " .word ._817\n" - " .word ._848\n" - " .word ._848\n" - " .word ._848\n" - " .word ._848\n" - "._812:\n" - " mov r0, #0x0\n" - " mov r1, #0x14\n" - " bl debug_sub_8010A7C\n" - " ldr r6, ._823 @ gBattleTextBuff1\n" - " ldr r2, ._823 + 4 @ gUnknown_Debug_821F424\n" - " ldr r0, [sp, #0x8]\n" - " add r1, r0, r7\n" - " lsl r1, r1, #0x1\n" - " add r0, r1, r2\n" - " ldrh r0, [r0]\n" - " str r0, [sp, #0x4]\n" - " add r0, r2, #2\n" - " add r0, r1, r0\n" - " ldrb r0, [r0]\n" - " mov r8, r0\n" - " add r2, r2, #0x4\n" - " add r1, r1, r2\n" - " ldrb r1, [r1]\n" - " mov r9, r1\n" - " str r1, [sp]\n" - " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" - " add r1, r6, #0\n" - " ldr r2, [sp, #0x4]\n" - " mov r3, r8\n" - " bl Text_InitWindow\n" - " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" - " bl Text_PrintWindow8002F44\n" - " ldr r1, ._823 + 12 @ gUnknown_Debug_2023A76\n" - " mov sl, r1\n" - " lsl r4, r7, #0x1\n" - " ldr r5, ._823 + 16 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r5]\n" - " mov r7, #0x46\n" - " mul r0, r0, r7\n" - " add r0, r4, r0\n" - " add r0, r0, sl\n" - " mov r2, #0x0\n" - " ldsh r1, [r0, r2]\n" - " add r0, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r2, #0xd3\n" - " lsl r2, r2, #0x1\n" - " ldrb r3, [r5]\n" - " lsl r3, r3, #0x5\n" - " add r3, r3, #0x19\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" - " add r1, r6, #0\n" - " bl Text_InitWindow\n" - " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" - " bl Text_PrintWindow8002F44\n" - " mov r0, #0xff\n" - " strb r0, [r6]\n" - " ldrb r0, [r5]\n" - " mul r0, r0, r7\n" - " add r4, r4, r0\n" - " add r4, r4, sl\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " mov r0, #0xb\n" - " mul r1, r1, r0\n" - " ldr r0, ._823 + 20 @ gSpeciesNames\n" - " add r1, r1, r0\n" - " add r0, r6, #0\n" - " bl StringAppend\n" - " mov r1, r9\n" - " str r1, [sp]\n" - " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" - " add r1, r6, #0\n" - " ldr r2, [sp, #0x4]\n" - " mov r3, r8\n" - " bl Text_InitWindow\n" - " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" - " bl Text_PrintWindow8002F44\n" - " b ._848\n" - "._824:\n" - " .align 2, 0\n" - "._823:\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_821F424\n" - " .word gUnknown_Debug_03004370\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004360\n" - " .word gSpeciesNames\n" - "._817:\n" - " ldr r6, ._826 @ gBattleTextBuff1\n" - " ldr r3, ._826 + 4 @ gUnknown_Debug_2023A76\n" - " lsl r1, r7, #0x1\n" - " ldr r0, ._826 + 8 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r0]\n" - " mov r0, #0x46\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r3\n" - " mov r2, #0x0\n" - " ldsh r1, [r1, r2]\n" - " add r0, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " b ._825\n" - "._827:\n" - " .align 2, 0\n" - "._826:\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004360\n" - "._814:\n" - " mov r0, #0x0\n" - " mov r1, #0x18\n" - " bl debug_sub_8010A7C\n" - " ldr r6, ._830 @ gUnknown_Debug_03004370\n" - " ldr r1, ._830 + 4 @ gBattleTextBuff1\n" - " mov sl, r1\n" - " ldr r4, ._830 + 8 @ gUnknown_Debug_821F424\n" - " ldr r2, [sp, #0x8]\n" - " add r1, r2, r7\n" - " lsl r1, r1, #0x1\n" - " add r0, r1, r4\n" - " ldrh r2, [r0]\n" - " add r0, r4, #2\n" - " add r0, r1, r0\n" - " ldrb r3, [r0]\n" - " add r4, r4, #0x4\n" - " add r1, r1, r4\n" - " ldrb r0, [r1]\n" - " str r0, [sp]\n" - " add r0, r6, #0\n" - " mov r1, sl\n" - " bl Text_InitWindow\n" - " add r0, r6, #0\n" - " bl Text_PrintWindow8002F44\n" - " lsl r4, r7, #0x1\n" - " ldr r5, ._830 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r5]\n" - " mov r1, #0x46\n" - " mul r0, r0, r1\n" - " add r0, r4, r0\n" - " ldr r2, ._830 + 16 @ gUnknown_Debug_2023A76\n" - " add r0, r0, r2\n" - " mov r2, #0x0\n" - " ldsh r1, [r0, r2]\n" - " mov r0, sl\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r2, #0xd3\n" - " lsl r2, r2, #0x1\n" - " ldrb r3, [r5]\n" - " lsl r3, r3, #0x5\n" - " add r3, r3, #0x19\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " add r0, r6, #0\n" - " mov r1, sl\n" - " bl Text_InitWindow\n" - " add r0, r6, #0\n" - " bl Text_PrintWindow8002F44\n" - " mov r0, #0xff\n" - " mov r1, sl\n" - " strb r0, [r1]\n" - " ldrb r0, [r5]\n" - " mov r2, #0x46\n" - " mul r0, r0, r2\n" - " add r4, r4, r0\n" - " ldr r0, ._830 + 16 @ gUnknown_Debug_2023A76\n" - " add r4, r4, r0\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._828 @cond_branch\n" - " ldrh r0, [r4]\n" - " bl ItemId_GetItem\n" - " add r1, r0, #0\n" - " mov r0, sl\n" - " bl StringAppend\n" - " b ._829\n" - "._831:\n" - " .align 2, 0\n" - "._830:\n" - " .word gUnknown_Debug_03004370\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_821F424\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_2023A76\n" - "._828:\n" - " ldr r1, ._833 @ Str_821F624\n" - " mov r0, sl\n" - " bl StringAppend\n" - "._829:\n" - " ldr r6, ._833 + 4 @ gUnknown_Debug_03004370\n" - " ldr r1, ._833 + 8 @ gBattleTextBuff1\n" - " ldr r5, ._833 + 12 @ gUnknown_Debug_821F424\n" - " ldr r2, [sp, #0x8]\n" - " add r4, r2, r7\n" - " lsl r4, r4, #0x1\n" - " add r0, r4, r5\n" - " ldrh r2, [r0]\n" - " add r0, r5, #2\n" - " add r0, r4, r0\n" - " ldrb r3, [r0]\n" - " add r5, r5, #0x4\n" - " add r4, r4, r5\n" - " ldrb r0, [r4]\n" - " str r0, [sp]\n" - " add r0, r6, #0\n" - " bl Text_InitWindow\n" - " add r0, r6, #0\n" - " bl Text_PrintWindow8002F44\n" - " b ._848\n" - "._834:\n" - " .align 2, 0\n" - "._833:\n" - " .word Str_821F624\n" - " .word gUnknown_Debug_03004370\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_821F424\n" - "._816:\n" - " mov r0, #0x0\n" - " mov r1, #0x4\n" - " bl debug_sub_8010A7C\n" - " ldr r5, ._839 @ gUnknown_Debug_03004370\n" - " ldr r6, ._839 + 4 @ gBattleTextBuff1\n" - " ldr r4, ._839 + 8 @ gUnknown_Debug_821F424\n" - " ldr r0, [sp, #0x8]\n" - " add r1, r0, r7\n" - " lsl r1, r1, #0x1\n" - " add r0, r1, r4\n" - " ldrh r2, [r0]\n" - " add r0, r4, #2\n" - " add r0, r1, r0\n" - " ldrb r3, [r0]\n" - " add r4, r4, #0x4\n" - " add r1, r1, r4\n" - " ldrb r0, [r1]\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - " mov r4, #0x0\n" - " ldr r3, ._839 + 12 @ gUnknown_Debug_2023A76\n" - " lsl r1, r7, #0x1\n" - " ldr r0, ._839 + 16 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r0]\n" - " mov r0, #0x46\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r3\n" - " mov r2, #0x0\n" - " ldsh r0, [r1, r2]\n" - " cmp r0, #0x1\n" - " beq ._835 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._836 @cond_branch\n" - " cmp r0, #0\n" - " beq ._837 @cond_branch\n" - " b ._843\n" - "._840:\n" - " .align 2, 0\n" - "._839:\n" - " .word gUnknown_Debug_03004370\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_821F424\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004360\n" - "._836:\n" - " cmp r0, #0x2\n" - " beq ._841 @cond_branch\n" - " cmp r0, #0x3\n" - " beq ._842 @cond_branch\n" - " b ._843\n" - "._837:\n" - " mov r0, #0xb5\n" - " b ._844\n" - "._835:\n" - " mov r0, #0xb6\n" - "._844:\n" - " strb r0, [r6]\n" - " mov r4, #0x1\n" - " b ._847\n" - "._841:\n" - " mov r0, #0xb5\n" - " b ._846\n" - "._842:\n" - " mov r0, #0xb6\n" - "._846:\n" - " strb r0, [r6]\n" - " strb r0, [r6, #0x1]\n" - " mov r4, #0x2\n" - " b ._847\n" - "._843:\n" - " ldr r2, ._849 @ gBattleTextBuff1\n" - " add r1, r4, r2\n" - " mov r0, #0xac\n" - " strb r0, [r1]\n" - " add r4, r4, #0x1\n" - " add r6, r2, #0\n" - "._847:\n" - " add r1, r4, r6\n" - " mov r0, #0xff\n" - " strb r0, [r1]\n" - "._825:\n" - " ldr r5, ._849 + 4 @ gUnknown_Debug_03004370\n" - " ldr r4, ._849 + 8 @ gUnknown_Debug_821F424\n" - " ldr r0, [sp, #0x8]\n" - " add r1, r0, r7\n" - " lsl r1, r1, #0x1\n" - " add r0, r1, r4\n" - " ldrh r2, [r0]\n" - " add r0, r4, #2\n" - " add r0, r1, r0\n" - " ldrb r3, [r0]\n" - " add r4, r4, #0x4\n" - " add r1, r1, r4\n" - " ldrb r0, [r1]\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - " b ._848\n" - "._850:\n" - " .align 2, 0\n" - "._849:\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_03004370\n" - " .word gUnknown_Debug_821F424\n" - "._815:\n" - " ldr r6, ._851 @ gBattleTextBuff1\n" - " ldr r3, ._851 + 4 @ gUnknown_Debug_2023A76\n" - " lsl r1, r7, #0x1\n" - " ldr r0, ._851 + 8 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r0]\n" - " mov r0, #0x46\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r3\n" - " mov r2, #0x0\n" - " ldsh r1, [r1, r2]\n" - " add r0, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r5, ._851 + 12 @ gUnknown_Debug_03004370\n" - " ldr r4, ._851 + 16 @ gUnknown_Debug_821F424\n" - " lsl r1, r7, #0x2\n" - " add r1, r1, r7\n" - " lsl r1, r1, #0x1\n" - " add r0, r1, r4\n" - " ldrh r2, [r0]\n" - " add r0, r4, #2\n" - " add r0, r1, r0\n" - " ldrb r3, [r0]\n" - " add r4, r4, #0x4\n" - " add r1, r1, r4\n" - " ldrb r0, [r1]\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - "._848:\n" - " add sp, sp, #0xc\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._852:\n" - " .align 2, 0\n" - "._851:\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_03004370\n" - " .word gUnknown_Debug_821F424\n" - "\n" - ); + u32 length; + + switch (a) + { + case 0: + case 5: + case 10: + case 15: + case 20: + case 25: + debug_sub_8010A7C(0, 20); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 3); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + 422, + gUnknown_Debug_03004360 * 32 + 25, + 0); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + gBattleTextBuff1[0] = EOS; + StringAppend(gBattleTextBuff1, gSpeciesNames[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]]); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + break; + case 1: + case 6: + case 11: + case 16: + case 21: + case 26: + case 30: + ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 3); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + break; + case 2: + case 7: + case 12: + case 17: + case 22: + case 27: + debug_sub_8010A7C(0, 24); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 3); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + 422, + gUnknown_Debug_03004360 * 32 + 25, + 0); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + gBattleTextBuff1[0] = EOS; + if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a] != 0) + StringAppend(gBattleTextBuff1, ItemId_GetName(gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a])); + else + StringAppend(gBattleTextBuff1, Str_821F624); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + break; + case 4: + case 9: + case 14: + case 19: + case 24: + case 29: + debug_sub_8010A7C(0, 4); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + length = 0; + switch (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]) + { + case 0: + gBattleTextBuff1[0] = CHAR_MALE; + length = 1; + break; + case 1: + gBattleTextBuff1[0] = CHAR_FEMALE; + length = 1; + break; + case 2: + gBattleTextBuff1[0] = CHAR_MALE; + gBattleTextBuff1[1] = CHAR_MALE; + length = 2; + break; + case 3: + gBattleTextBuff1[0] = CHAR_FEMALE; + gBattleTextBuff1[1] = CHAR_FEMALE; + length = 2; + break; + default: + gBattleTextBuff1[length] = CHAR_QUESTION_MARK; + length++; + break; + } + gBattleTextBuff1[length] = EOS; + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + break; + case 3: + case 8: + case 13: + case 18: + case 23: + case 28: + default: + ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 1); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[a][0], + gUnknown_Debug_821F424[a][1], + gUnknown_Debug_821F424[a][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + break; + case 31: + case 32: + case 33: + case 34: + break; + } } -__attribute__((naked)) -void debug_sub_8012294() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " ldr r2, ._854 @ gUnknown_Debug_030043A0\n" - " ldr r0, ._854 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x1d\n" - " bhi ._853 @cond_branch\n" - " mov r0, #0x0\n" - " mov r1, #0x18\n" - " bl debug_sub_8010A7C\n" - " ldr r0, ._854 + 8 @ gUnknown_Debug_03004370\n" - " mov sl, r0\n" - " ldr r1, ._854 + 12 @ gBattleTextBuff1\n" - " mov r9, r1\n" - " ldr r2, ._854 + 16 @ gUnknown_Debug_821F564\n" - " mov r8, r2\n" - " ldr r7, ._854 + 20 @ gUnknown_Debug_030043A8\n" - " ldrb r1, [r7]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x1\n" - " add r1, r0, r2\n" - " ldrh r2, [r1]\n" - " ldr r3, ._854 + 24 @ gUnknown_Debug_821F566\n" - " add r1, r0, r3\n" - " ldrb r3, [r1]\n" - " ldr r1, ._854 + 28 @ gUnknown_Debug_821F568\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r9\n" - " bl Text_InitWindow\n" - " mov r0, sl\n" - " bl Text_PrintWindow8002F44\n" - " ldrb r4, [r7]\n" - " lsl r4, r4, #0x1\n" - " add r0, r5, #0\n" - " mov r1, #0x5\n" - " bl __udivsi3\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x15\n" - " add r4, r4, r5\n" - " ldr r6, ._854 + 32 @ gUnknown_Debug_03004360\n" - " ldrb r1, [r6]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x4\n" - " add r4, r4, r0\n" - " ldr r2, ._854 + 36 @ gUnknown_Debug_2023B02\n" - " add r4, r4, r2\n" - " mov r3, #0x0\n" - " ldsh r1, [r4, r3]\n" - " mov r0, r9\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r2, #0xd3\n" - " lsl r2, r2, #0x1\n" - " ldrb r3, [r6]\n" - " lsl r3, r3, #0x5\n" - " add r3, r3, #0x19\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r9\n" - " bl Text_InitWindow\n" - " mov r0, sl\n" - " bl Text_PrintWindow8002F44\n" - " mov r0, #0xff\n" - " mov r1, r9\n" - " strb r0, [r1]\n" - " ldrb r1, [r7]\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r5\n" - " ldrb r2, [r6]\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r2, ._854 + 36 @ gUnknown_Debug_2023B02\n" - " add r1, r1, r2\n" - " mov r3, #0x0\n" - " ldsh r1, [r1, r3]\n" - " mov r0, #0xd\n" - " mul r1, r1, r0\n" - " ldr r0, ._854 + 40 @ gMoveNames\n" - " add r1, r1, r0\n" - " mov r0, r9\n" - " bl StringAppend\n" - " ldrb r1, [r7]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x1\n" - " add r8, r8, r0\n" - " mov r1, r8\n" - " ldrh r2, [r1]\n" - " ldr r3, ._854 + 24 @ gUnknown_Debug_821F566\n" - " add r1, r0, r3\n" - " ldrb r3, [r1]\n" - " ldr r1, ._854 + 28 @ gUnknown_Debug_821F568\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r9\n" - " bl Text_InitWindow\n" - " mov r0, sl\n" - " bl Text_PrintWindow8002F44\n" - "._853:\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._855:\n" - " .align 2, 0\n" - "._854:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004370\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_821F564\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_821F566\n" - " .word gUnknown_Debug_821F568\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_2023B02\n" - " .word gMoveNames\n" - "\n" - ); +void debug_sub_8012294(void) +{ + u8 r5 = gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5; + + if (r5 < 30) + { + debug_sub_8010A7C(0, 24); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F564[gUnknown_Debug_030043A8][0], + gUnknown_Debug_821F564[gUnknown_Debug_030043A8][1], + gUnknown_Debug_821F564[gUnknown_Debug_030043A8][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r5 / 5][gUnknown_Debug_030043A8], 2, 3); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + 422, + gUnknown_Debug_03004360 * 32 + 25, + 0); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + gBattleTextBuff1[0] = EOS; + StringAppend(gBattleTextBuff1, gMoveNames[gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r5 / 5][gUnknown_Debug_030043A8]]); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F564[gUnknown_Debug_030043A8][0], + gUnknown_Debug_821F564[gUnknown_Debug_030043A8][1], + gUnknown_Debug_821F564[gUnknown_Debug_030043A8][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + } } -__attribute__((naked)) +extern const u16 gUnknown_Debug_821F58C[]; + void debug_sub_80123D8(u8 a) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x1d\n" - " bhi ._856 @cond_branch\n" - " mov r0, #0x0\n" - " mov r1, #0x12\n" - " bl debug_sub_8010A7C\n" - " ldr r4, ._858 @ gUnknown_Debug_03004370\n" - " ldr r0, ._858 + 4 @ gBattleTextBuff1\n" - " mov r8, r0\n" - " ldr r6, ._858 + 8 @ gUnknown_Debug_821F58C\n" - " ldrh r1, [r6]\n" - " mov sl, r1\n" - " ldrb r7, [r6, #0x2]\n" - " ldrb r2, [r6, #0x4]\n" - " mov r9, r2\n" - " str r2, [sp]\n" - " add r0, r4, #0\n" - " mov r1, r8\n" - " mov r2, sl\n" - " add r3, r7, #0\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " lsl r5, r5, #0x1\n" - " ldr r1, ._858 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r1]\n" - " mov r2, #0x46\n" - " mul r0, r0, r2\n" - " add r0, r5, r0\n" - " ldr r1, ._858 + 16 @ gUnknown_Debug_2023A76\n" - " add r0, r0, r1\n" - " mov r2, #0x0\n" - " ldsh r1, [r0, r2]\n" - " lsl r0, r1, #0x3\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._858 + 20 @ gBaseStats\n" - " add r0, r0, r1\n" - " ldrb r0, [r0, #0x16]\n" - " mov r2, #0xd\n" - " add r1, r0, #0\n" - " mul r1, r1, r2\n" - " ldr r0, ._858 + 24 @ gAbilityNames\n" - " add r1, r1, r0\n" - " mov r0, r8\n" - " bl StringCopy\n" - " mov r1, r9\n" - " str r1, [sp]\n" - " add r0, r4, #0\n" - " mov r1, r8\n" - " mov r2, sl\n" - " add r3, r7, #0\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " mov r0, #0x0\n" - " mov r1, #0x12\n" - " bl debug_sub_8010A7C\n" - " ldrh r2, [r6, #0x6]\n" - " mov r9, r2\n" - " ldrb r0, [r6, #0x8]\n" - " mov sl, r0\n" - " ldrb r6, [r6, #0xa]\n" - " str r6, [sp]\n" - " add r0, r4, #0\n" - " mov r1, r8\n" - " mov r3, sl\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r1, ._858 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r1]\n" - " mov r2, #0x46\n" - " mul r0, r0, r2\n" - " add r5, r5, r0\n" - " ldr r0, ._858 + 16 @ gUnknown_Debug_2023A76\n" - " add r5, r5, r0\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " lsl r0, r1, #0x3\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._858 + 20 @ gBaseStats\n" - " add r0, r0, r1\n" - " ldrb r0, [r0, #0x17]\n" - " mov r2, #0xd\n" - " add r1, r0, #0\n" - " mul r1, r1, r2\n" - " ldr r0, ._858 + 24 @ gAbilityNames\n" - " add r1, r1, r0\n" - " mov r0, r8\n" - " bl StringCopy\n" - " str r6, [sp]\n" - " add r0, r4, #0\n" - " mov r1, r8\n" - " mov r2, r9\n" - " mov r3, sl\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " b ._857\n" - "._859:\n" - " .align 2, 0\n" - "._858:\n" - " .word gUnknown_Debug_03004370\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_821F58C\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_2023A76\n" - " .word gBaseStats\n" - " .word gAbilityNames\n" - "._856:\n" - " ldr r6, ._860 @ gBattleTextBuff1\n" - " ldr r1, ._860 + 4 @ gAbilityNames\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " ldr r5, ._860 + 8 @ gUnknown_Debug_03004370\n" - " ldr r4, ._860 + 12 @ gUnknown_Debug_821F58C\n" - " ldrh r2, [r4]\n" - " ldrb r3, [r4, #0x2]\n" - " ldrb r0, [r4, #0x4]\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldrh r2, [r4, #0x6]\n" - " ldrb r3, [r4, #0x8]\n" - " ldrb r0, [r4, #0xa]\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - "._857:\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._861:\n" - " .align 2, 0\n" - "._860:\n" - " .word gBattleTextBuff1\n" - " .word gAbilityNames\n" - " .word gUnknown_Debug_03004370\n" - " .word gUnknown_Debug_821F58C\n" - "\n" - ); + if (a < 30) + { + debug_sub_8010A7C(0, 18); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F58C[0], + gUnknown_Debug_821F58C[1], + gUnknown_Debug_821F58C[2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + StringCopy(gBattleTextBuff1, gAbilityNames[gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]].ability1]); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F58C[0], + gUnknown_Debug_821F58C[1], + gUnknown_Debug_821F58C[2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + debug_sub_8010A7C(0, 18); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F58C[3], + gUnknown_Debug_821F58C[4], + gUnknown_Debug_821F58C[5]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + StringCopy(gBattleTextBuff1, gAbilityNames[gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]].ability2]); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F58C[3], + gUnknown_Debug_821F58C[4], + gUnknown_Debug_821F58C[5]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + } + else + { + StringCopy(gBattleTextBuff1, gAbilityNames[0]); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F58C[0], + gUnknown_Debug_821F58C[1], + gUnknown_Debug_821F58C[2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F58C[3], + gUnknown_Debug_821F58C[4], + gUnknown_Debug_821F58C[5]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); + } } -__attribute__((naked)) -void debug_sub_8012540() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " ldr r5, ._862 @ gBattleTextBuff1\n" - " ldr r0, ._862 + 4 @ gUnknown_Debug_2023A76\n" - " add r0, r0, #0x44\n" - " mov r2, #0x0\n" - " ldsh r1, [r0, r2]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r4, ._862 + 8 @ gUnknown_Debug_03004370\n" - " ldr r1, ._862 + 12 @ gUnknown_Debug_821F424\n" - " mov r3, #0x9b\n" - " lsl r3, r3, #0x1\n" - " add r0, r1, r3\n" - " ldrh r2, [r0]\n" - " mov r6, #0x9c\n" - " lsl r6, r6, #0x1\n" - " add r0, r1, r6\n" - " ldrb r3, [r0]\n" - " add r6, r6, #0x2\n" - " add r0, r1, r6\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._863:\n" - " .align 2, 0\n" - "._862:\n" - " .word gBattleTextBuff1\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004370\n" - " .word gUnknown_Debug_821F424\n" - "\n" - ); +void debug_sub_8012540(void) +{ + ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[0][0x22], 0, 1); + Text_InitWindow( + &gUnknown_Debug_03004370, + gBattleTextBuff1, + gUnknown_Debug_821F424[31][0], + gUnknown_Debug_821F424[31][1], + gUnknown_Debug_821F424[31][2]); + Text_PrintWindow8002F44(&gUnknown_Debug_03004370); } -__attribute__((naked)) -void debug_nullsub_3() +void debug_nullsub_3(void) { - asm( - " bx lr\n" - "\n" - ); } -__attribute__((naked)) -void debug_sub_80125A0() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._864 @ gSharedMem\n" - " ldr r3, ._864 + 4 @ gUnknown_Debug_821F680\n" - " ldr r2, ._864 + 8 @ gUnknown_Debug_030043A0\n" - " ldr r0, ._864 + 12 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._864 + 16 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r1]\n" - " mov r1, #0x8c\n" - " mul r1, r1, r2\n" - " add r0, r0, r1\n" - " add r0, r0, r3\n" - " ldr r0, [r0]\n" - " add r0, r0, r4\n" - " mov r1, #0x6d\n" - " strb r1, [r0]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._865:\n" - " .align 2, 0\n" - "._864:\n" - " .word gSharedMem\n" - " .word gUnknown_Debug_821F680\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004360\n" - "\n" - ); +extern const u32 gUnknown_Debug_821F680[][0x23]; + +void debug_sub_80125A0(void) +{ + gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x6D; } -__attribute__((naked)) -void debug_sub_80125E4() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._866 @ gSharedMem\n" - " ldr r3, ._866 + 4 @ gUnknown_Debug_821F680\n" - " ldr r2, ._866 + 8 @ gUnknown_Debug_030043A0\n" - " ldr r0, ._866 + 12 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._866 + 16 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r1]\n" - " mov r1, #0x8c\n" - " mul r1, r1, r2\n" - " add r0, r0, r1\n" - " add r0, r0, r3\n" - " ldr r0, [r0]\n" - " add r0, r0, r4\n" - " mov r1, #0x81\n" - " strb r1, [r0]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._867:\n" - " .align 2, 0\n" - "._866:\n" - " .word gSharedMem\n" - " .word gUnknown_Debug_821F680\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004360\n" - "\n" - ); +void debug_sub_80125E4(void) +{ + gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x81; } void debug_sub_8012628(void) @@ -3984,7 +2808,7 @@ void debug_sub_8012688(void) s32 i; u8 spriteId; u8 taskId; - + for (i = 0; i < 411; i++) gUnknown_Debug_2023B62[i] = 0; SetHBlankCallback(NULL); @@ -7288,351 +6112,6 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) return strikesFirst; } -// The debug version should be identical, but has a strange register swap, and -// seems to be affected by other functions, which is bizarre. -#if DEBUG -__attribute__((naked)) -void SetActionsAndBanksTurnOrder(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - mov r3, #0x0\n\ - ldr r0, ._L1550\n\ - ldrh r1, [r0]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._L1499 @cond_branch\n\ - ldr r0, ._L1550+0x4\n\ - strb r3, [r0]\n\ - ldr r4, ._L1550+0x8\n\ - mov r8, r0\n\ - ldrb r0, [r4]\n\ - cmp r3, r0\n\ - bcc ._LCB12758\n\ - b ._L1505 @long jump\n\ -._LCB12758:\n\ - ldr r7, ._L1550+0xc\n\ - ldr r6, ._L1550+0x10\n\ - mov r2, r8\n\ - ldr r5, ._L1550+0x14\n\ -._L1503:\n\ - add r1, r3, r7\n\ - ldrb r0, [r2]\n\ - add r0, r0, r6\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - add r1, r3, r5\n\ - ldrb r0, [r2]\n\ - strb r0, [r1]\n\ - add r3, r3, #0x1\n\ - ldrb r0, [r2]\n\ - add r0, r0, #0x1\n\ - strb r0, [r2]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldrb r1, [r4]\n\ - cmp r0, r1\n\ - bcc ._L1503 @cond_branch\n\ - b ._L1505\n\ -._L1551:\n\ - .align 2, 0\n\ -._L1550:\n\ - .word gBattleTypeFlags\n\ - .word gActiveBank\n\ - .word gNoOfAllBanks\n\ - .word gActionsByTurnOrder\n\ - .word gActionForBanks\n\ - .word gBanksByTurnOrder\n\ -._L1499:\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._L1506 @cond_branch\n\ - ldr r0, ._L1552\n\ - strb r3, [r0]\n\ - ldr r1, ._L1552+0x4\n\ - mov r8, r0\n\ - add r2, r1, #0\n\ - ldrb r2, [r2]\n\ - cmp r3, r2\n\ - bcs ._L1513 @cond_branch\n\ - ldr r0, ._L1552+0x8\n\ - ldrb r1, [r0]\n\ - add r4, r0, #0\n\ - cmp r1, #0x3\n\ - beq ._L1548 @cond_branch\n\ -._L1509:\n\ - mov r7, r8\n\ - ldrb r0, [r7]\n\ - add r0, r0, #0x1\n\ - strb r0, [r7]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r1, ._L1552+0x4\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcs ._L1513 @cond_branch\n\ - ldrb r0, [r7]\n\ - add r0, r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x3\n\ - bne ._L1509 @cond_branch\n\ - b ._L1548\n\ -._L1553:\n\ - .align 2, 0\n\ -._L1552:\n\ - .word gActiveBank\n\ - .word gNoOfAllBanks\n\ - .word gActionForBanks\n\ -._L1506:\n\ - ldr r0, ._L1554\n\ - ldrb r0, [r0]\n\ - ldr r2, ._L1554+0x4\n\ - mov r8, r2\n\ - cmp r0, #0x3\n\ - bne ._L1513 @cond_branch\n\ - strb r3, [r2]\n\ -._L1548:\n\ - mov r3, #0x5\n\ -._L1513:\n\ - cmp r3, #0x5\n\ - bne ._L1515 @cond_branch\n\ - ldr r6, ._L1554+0x8\n\ - ldr r1, ._L1554\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - strb r0, [r6]\n\ - ldr r2, ._L1554+0xc\n\ - ldrb r0, [r3]\n\ - strb r0, [r2]\n\ - mov r3, #0x1\n\ - mov r5, #0x0\n\ - add r4, r1, #0\n\ - ldr r7, ._L1554+0x10\n\ - mov r9, r7\n\ - ldr r0, ._L1554+0x14\n\ - mov ip, r0\n\ - ldr r1, ._L1554+0x18\n\ - mov sl, r1\n\ - ldr r7, ._L1554+0x1c\n\ - ldrb r7, [r7]\n\ - cmp r5, r7\n\ - bge ._L1517 @cond_branch\n\ - add r7, r6, #0\n\ - add r6, r4, #0\n\ - add r4, r2, #0\n\ - ldr r2, ._L1554+0x1c\n\ -._L1519:\n\ - mov r0, r8\n\ - ldrb r0, [r0]\n\ - cmp r5, r0\n\ - beq ._L1518 @cond_branch\n\ - add r1, r3, r7\n\ - add r0, r5, r6\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - add r0, r3, r4\n\ - strb r5, [r0]\n\ - add r3, r3, #0x1\n\ -._L1518:\n\ - add r5, r5, #0x1\n\ - ldrb r1, [r2]\n\ - cmp r5, r1\n\ - blt ._L1519 @cond_branch\n\ -._L1517:\n\ - mov r2, ip\n\ - mov r3, r9\n\ - str r2, [r3]\n\ - ldr r1, ._L1554+0x20\n\ - add r1, r1, sl\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - b ._L1498\n\ -._L1555:\n\ - .align 2, 0\n\ -._L1554:\n\ - .word gActionForBanks\n\ - .word gActiveBank\n\ - .word gActionsByTurnOrder\n\ - .word gBanksByTurnOrder\n\ - .word gBattleMainFunc\n\ - .word CheckFocusPunch_ClearVarsBeforeTurnStarts\n\ - .word gSharedMem\n\ - .word gNoOfAllBanks\n\ - .word 0x1601d\n\ -._L1515:\n\ - mov r0, #0x0\n\ - mov r7, r8\n\ - strb r0, [r7]\n\ - ldr r1, ._L1556\n\ - ldrb r0, [r1]\n\ - cmp r0, #0\n\ - beq ._L1524 @cond_branch\n\ - ldr r6, ._L1556+0x4\n\ - mov r2, r8\n\ - ldr r5, ._L1556+0x8\n\ - ldr r4, ._L1556+0xc\n\ -._L1526:\n\ - ldrb r0, [r2]\n\ - add r0, r0, r6\n\ - ldrb r1, [r0]\n\ - sub r0, r1, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bhi ._L1525 @cond_branch\n\ - add r0, r3, r5\n\ - strb r1, [r0]\n\ - add r1, r3, r4\n\ - mov r7, r8\n\ - ldrb r0, [r7]\n\ - strb r0, [r1]\n\ - add r3, r3, #0x1\n\ -._L1525:\n\ - ldrb r0, [r2]\n\ - add r0, r0, #0x1\n\ - strb r0, [r2]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r1, ._L1556\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._L1526 @cond_branch\n\ -._L1524:\n\ - mov r0, #0x0\n\ - mov r2, r8\n\ - strb r0, [r2]\n\ - ldr r7, ._L1556\n\ - ldrb r0, [r7]\n\ - cmp r0, #0\n\ - beq ._L1530 @cond_branch\n\ - ldr r6, ._L1556+0x4\n\ - ldr r5, ._L1556+0x8\n\ - ldr r4, ._L1556+0xc\n\ -._L1532:\n\ - ldrb r0, [r2]\n\ - add r0, r0, r6\n\ - ldrb r1, [r0]\n\ - sub r0, r1, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bls ._L1531 @cond_branch\n\ - add r0, r3, r5\n\ - strb r1, [r0]\n\ - add r1, r3, r4\n\ - mov r7, r8\n\ - ldrb r0, [r7]\n\ - strb r0, [r1]\n\ - add r3, r3, #0x1\n\ -._L1531:\n\ - ldrb r0, [r2]\n\ - add r0, r0, #0x1\n\ - strb r0, [r2]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r1, ._L1556\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._L1532 @cond_branch\n\ -._L1530:\n\ - mov r5, #0x0\n\ - b ._L1549\n\ -._L1557:\n\ - .align 2, 0\n\ -._L1556:\n\ - .word gNoOfAllBanks\n\ - .word gActionForBanks\n\ - .word gActionsByTurnOrder\n\ - .word gBanksByTurnOrder\n\ -._L1538:\n\ - add r4, r5, #0x1\n\ - add r7, r4, #0\n\ - ldrb r1, [r1]\n\ - cmp r7, r1\n\ - bge ._L1537 @cond_branch\n\ - ldr r6, ._L1558\n\ - lsl r2, r5, #0x18\n\ - mov r8, r2\n\ -._L1542:\n\ - ldr r0, ._L1558+0x4\n\ - add r1, r5, r0\n\ - ldrb r3, [r1]\n\ - add r0, r4, r0\n\ - ldrb r1, [r0]\n\ - add r0, r5, r6\n\ - ldrb r2, [r0]\n\ - cmp r2, #0x1\n\ - beq ._L1541 @cond_branch\n\ - add r0, r4, r6\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._L1541 @cond_branch\n\ - cmp r2, #0x2\n\ - beq ._L1541 @cond_branch\n\ - cmp r0, #0x2\n\ - beq ._L1541 @cond_branch\n\ - add r0, r3, #0\n\ - mov r2, #0x0\n\ - bl GetWhoStrikesFirst\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._L1541 @cond_branch\n\ - lsl r1, r4, #0x18\n\ - lsr r1, r1, #0x18\n\ - mov r3, r8\n\ - lsr r0, r3, #0x18\n\ - bl SwapTurnOrder\n\ -._L1541:\n\ - add r4, r4, #0x1\n\ - ldr r0, ._L1558+0x8\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._L1542 @cond_branch\n\ -._L1537:\n\ - add r5, r7, #0\n\ -._L1549:\n\ - ldr r1, ._L1558+0x8\n\ - ldrb r0, [r1]\n\ - sub r0, r0, #0x1\n\ - cmp r5, r0\n\ - blt ._L1538 @cond_branch\n\ -._L1505:\n\ - ldr r1, ._L1558+0xc\n\ - ldr r0, ._L1558+0x10\n\ - str r0, [r1]\n\ - ldr r0, ._L1558+0x14\n\ - ldr r7, ._L1558+0x18\n\ - add r0, r0, r7\n\ - mov r1, #0x0\n\ - strb r1, [r0]\n\ -._L1498:\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._L1559:\n\ - .align 2, 0\n\ -._L1558:\n\ - .word gActionsByTurnOrder\n\ - .word gBanksByTurnOrder\n\ - .word gNoOfAllBanks\n\ - .word gBattleMainFunc\n\ - .word CheckFocusPunch_ClearVarsBeforeTurnStarts\n\ - .word gSharedMem\n\ - .word 0x1601d"); -} -#else void SetActionsAndBanksTurnOrder(void) { s32 var = 0; @@ -7729,7 +6208,6 @@ void SetActionsAndBanksTurnOrder(void) gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; eFocusPunchBank = 0; } -#endif static void TurnValuesCleanUp(bool8 var0) { diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 8b81139fb..f10cd2506 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -95,6 +95,7 @@ enum }; //extern needed variables +extern u8 gUnknown_02023A14_50; extern u8 gCritMultiplier; extern s32 gBattleMoveDamage; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; @@ -5018,169 +5019,26 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\ } #endif // NONMATCHING -#if DEBUG -__attribute__((naked)) -static void atk15_seteffectwithchance(void) -{ - asm("\ - push {r4, lr}\n\ - ldr r2, ._1037 @ gBattleMons\n\ - ldr r0, ._1037 + 4 @ gBankAttacker\n\ - ldrb r1, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r1\n\ - add r0, r0, r2\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x20\n\ - bne ._1035 @cond_branch\n\ - ldr r2, ._1037 + 8 @ gBattleMoves\n\ - ldr r0, ._1037 + 12 @ gCurrentMove\n\ - ldrh r1, [r0]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r2\n\ - ldrb r0, [r0, #0x5]\n\ - lsl r4, r0, #0x1\n\ - b ._1036\n\ -._1038:\n\ - .align 2, 0\n\ -._1037:\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gBattleMoves\n\ - .word gCurrentMove\n\ -._1035:\n\ - ldr r2, ._1045 @ gBattleMoves\n\ - ldr r0, ._1045 + 4 @ gCurrentMove\n\ - ldrh r1, [r0]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r2\n\ - ldrb r4, [r0, #0x5]\n\ -._1036:\n\ - ldr r0, ._1045 + 8 @ gUnknown_02023A14_50\n\ - ldrb r1, [r0]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - ldr r2, ._1045 + 12 @ gBattleCommunication\n\ - cmp r0, #0\n\ - beq ._1039 @cond_branch\n\ - ldrb r1, [r2, #0x3]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1040 @cond_branch\n\ - ldr r0, ._1045 + 16 @ gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1050 @cond_branch\n\ -._1039:\n\ - ldrb r1, [r2, #0x3]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1043 @cond_branch\n\ -._1040:\n\ - ldr r0, ._1045 + 16 @ gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1043 @cond_branch\n\ - ldr r2, ._1045 + 12 @ gBattleCommunication\n\ - ldrb r1, [r2, #0x3]\n\ - mov r0, #0x7f\n\ - and r0, r0, r1\n\ - strb r0, [r2, #0x3]\n\ - b ._1044\n\ -._1046:\n\ - .align 2, 0\n\ -._1045:\n\ - .word gBattleMoves\n\ - .word gCurrentMove\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleCommunication\n\ - .word gBattleMoveFlags\n\ -._1043:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0x64\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - cmp r0, r4\n\ - bhi ._1049 @cond_branch\n\ - ldr r0, ._1052 @ gBattleCommunication\n\ - ldrb r0, [r0, #0x3]\n\ - cmp r0, #0\n\ - beq ._1049 @cond_branch\n\ - ldr r0, ._1052 + 4 @ gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1049 @cond_branch\n\ - cmp r4, #0x63\n\ - bls ._1050 @cond_branch\n\ -._1044:\n\ - mov r0, #0x0\n\ - mov r1, #0x80\n\ - bl SetMoveEffect\n\ - b ._1054\n\ -._1053:\n\ - .align 2, 0\n\ -._1052:\n\ - .word gBattleCommunication\n\ - .word gBattleMoveFlags\n\ -._1050:\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - bl SetMoveEffect\n\ - b ._1054\n\ -._1049:\n\ - ldr r1, ._1055 @ gBattlescriptCurrInstr\n\ - ldr r0, [r1]\n\ - add r0, r0, #0x1\n\ - str r0, [r1]\n\ -._1054:\n\ - ldr r0, ._1055 + 4 @ gBattleCommunication\n\ - mov r1, #0x0\n\ - strb r1, [r0, #0x3]\n\ - ldr r0, ._1055 + 8 @ \n\ - ldr r2, ._1055 + 12 @ \n\ - add r0, r0, r2\n\ - strb r1, [r0]\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._1056:\n\ - .align 2, 0\n\ -._1055:\n\ - .word gBattlescriptCurrInstr\n\ - .word gBattleCommunication\n\ - .word +0x2000000\n\ - .word 0x16112"); -} -#else static void atk15_seteffectwithchance(void) { u32 PercentChance; + if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE) PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; else PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; - if (gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + + if (DEBUG && (gUnknown_02023A14_50 & 4) + && !(gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + { + SetMoveEffect(0, 0); + } + else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F; SetMoveEffect(0, 0x80); } - else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) + else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] != 0 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { if (PercentChance >= 100) SetMoveEffect(0, 0x80); @@ -5188,11 +5046,13 @@ static void atk15_seteffectwithchance(void) SetMoveEffect(0, 0); } else + { gBattlescriptCurrInstr++; + } + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; gBattleStruct->unk16112 = 0; } -#endif static void atk16_seteffectprimary(void) { diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 8e8743dbc..e986eb38d 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1217,19 +1217,19 @@ void OpponentHandleTrainerThrow(void) #if DEBUG if (gUnknown_02023A14_50 & 0x10) { - trainerPicIndex = gSharedMem[0x160A3]; + trainerPicIndex = gSharedMem[0x160A3]; } else #endif { - if (gTrainerBattleOpponent == 0x400) - trainerPicIndex = GetSecretBaseTrainerPicIndex(); - else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) - trainerPicIndex = get_trainer_class_pic_index(); - else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) - trainerPicIndex = GetEReaderTrainerPicIndex(); - else - trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; + if (gTrainerBattleOpponent == 0x400) + trainerPicIndex = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicIndex = get_trainer_class_pic_index(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicIndex = GetEReaderTrainerPicIndex(); + else + trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; } sub_8031A6C(trainerPicIndex, gActiveBank); @@ -1442,308 +1442,308 @@ __attribute__((naked)) void OpponentHandlecmd20(void) { asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - ldr r6, ._549 @ gActiveBank\n\ - ldrb r0, [r6]\n\ - lsl r0, r0, #0x9\n\ - ldr r1, ._549 + 4 @ gBattleBufferA\n\ - add r5, r0, r1\n\ - ldr r2, ._549 + 8 @ gUnknown_02023A14_50\n\ - ldrb r1, [r2]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - mov sl, r6\n\ - cmp r0, #0\n\ - beq ._546 @cond_branch\n\ - ldr r0, ._549 + 12 @ gBattleMoves\n\ - mov r9, r0\n\ - ldr r1, ._549 + 16 @ \n\ - mov ip, r1\n\ - add r7, r6, #0\n\ - mov r0, #0x2\n\ - mov r8, r0\n\ - ldr r6, ._549 + 20 @ \n\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + ldr r6, ._549 @ gActiveBank\n\ + ldrb r0, [r6]\n\ + lsl r0, r0, #0x9\n\ + ldr r1, ._549 + 4 @ gBattleBufferA\n\ + add r5, r0, r1\n\ + ldr r2, ._549 + 8 @ gUnknown_02023A14_50\n\ + ldrb r1, [r2]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + mov sl, r6\n\ + cmp r0, #0\n\ + beq ._546 @cond_branch\n\ + ldr r0, ._549 + 12 @ gBattleMoves\n\ + mov r9, r0\n\ + ldr r1, ._549 + 16 @ \n\ + mov ip, r1\n\ + add r7, r6, #0\n\ + mov r0, #0x2\n\ + mov r8, r0\n\ + ldr r6, ._549 + 20 @ \n\ ._552:\n\ - ldrb r1, [r7]\n\ - mov r0, r8\n\ - and r0, r0, r1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x19\n\ - add r0, r0, r6\n\ - mov r1, ip\n\ - add r3, r0, r1\n\ - ldrb r1, [r3]\n\ - lsl r0, r1, #0x1\n\ - add r0, r5, r0\n\ - ldrh r2, [r0]\n\ - add r4, r1, #0\n\ - cmp r2, #0\n\ - beq ._547 @cond_branch\n\ - add r0, r4, #1\n\ - strb r0, [r3]\n\ - b ._548\n\ + ldrb r1, [r7]\n\ + mov r0, r8\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x19\n\ + add r0, r0, r6\n\ + mov r1, ip\n\ + add r3, r0, r1\n\ + ldrb r1, [r3]\n\ + lsl r0, r1, #0x1\n\ + add r0, r5, r0\n\ + ldrh r2, [r0]\n\ + add r4, r1, #0\n\ + cmp r2, #0\n\ + beq ._547 @cond_branch\n\ + add r0, r4, #1\n\ + strb r0, [r3]\n\ + b ._548\n\ ._550:\n\ - .align 2, 0\n\ + .align 2, 0\n\ ._549:\n\ - .word gActiveBank\n\ - .word gBattleBufferA+4\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleMoves\n\ - .word +0x2000000\n\ - .word 0x1609e\n\ + .word gActiveBank\n\ + .word gBattleBufferA+4\n\ + .word gUnknown_02023A14_50\n\ + .word gBattleMoves\n\ + .word +0x2000000\n\ + .word 0x1609e\n\ ._547:\n\ - strb r2, [r3]\n\ + strb r2, [r3]\n\ ._548:\n\ - ldrb r0, [r7]\n\ - mov r1, r8\n\ - and r1, r1, r0\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x19\n\ - add r1, r1, r6\n\ - add r1, r1, ip\n\ - ldrb r0, [r1]\n\ - cmp r0, #0x3\n\ - bls ._551 @cond_branch\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + mov r1, r8\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x19\n\ + add r1, r1, r6\n\ + add r1, r1, ip\n\ + ldrb r0, [r1]\n\ + cmp r0, #0x3\n\ + bls ._551 @cond_branch\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ ._551:\n\ - cmp r2, #0\n\ - beq ._552 @cond_branch\n\ - lsl r0, r2, #0x1\n\ - add r0, r0, r2\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r9\n\ - ldrb r3, [r0, #0x6]\n\ - mov r0, #0x12\n\ - and r0, r0, r3\n\ - cmp r0, #0\n\ - beq ._553 @cond_branch\n\ - mov r1, sl\n\ - ldrb r0, [r1]\n\ - b ._561\n\ + cmp r2, #0\n\ + beq ._552 @cond_branch\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r9\n\ + ldrb r3, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r3\n\ + cmp r0, #0\n\ + beq ._553 @cond_branch\n\ + mov r1, sl\n\ + ldrb r0, [r1]\n\ + b ._561\n\ ._553:\n\ - ldr r0, ._559 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._557 @cond_branch\n\ - ldr r0, ._559 + 4 @ gUnknown_02023A14_50\n\ - ldrb r1, [r0]\n\ - mov r5, #0x2\n\ - add r0, r5, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._556 @cond_branch\n\ - cmp r3, #0\n\ - bne ._557 @cond_branch\n\ - mov r1, sl\n\ - ldrb r0, [r1]\n\ - bl GetBankIdentity\n\ - mov r1, #0x2\n\ - eor r0, r0, r1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - b ._558\n\ + ldr r0, ._559 @ gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._557 @cond_branch\n\ + ldr r0, ._559 + 4 @ gUnknown_02023A14_50\n\ + ldrb r1, [r0]\n\ + mov r5, #0x2\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._556 @cond_branch\n\ + cmp r3, #0\n\ + bne ._557 @cond_branch\n\ + mov r1, sl\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + mov r1, #0x2\n\ + eor r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + b ._558\n\ ._560:\n\ - .align 2, 0\n\ + .align 2, 0\n\ ._559:\n\ - .word gBattleTypeFlags\n\ - .word gUnknown_02023A14_50\n\ + .word gBattleTypeFlags\n\ + .word gUnknown_02023A14_50\n\ ._556:\n\ - bl Random\n\ - add r1, r5, #0\n\ - and r1, r1, r0\n\ - lsl r1, r1, #0x10\n\ - lsr r0, r1, #0x10\n\ - b ._561\n\ + bl Random\n\ + add r1, r5, #0\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x10\n\ + lsr r0, r1, #0x10\n\ + b ._561\n\ ._557:\n\ - mov r0, #0x0\n\ + mov r0, #0x0\n\ ._558:\n\ - bl GetBankByIdentity\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ + bl GetBankByIdentity\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ ._561:\n\ - lsl r2, r0, #0x8\n\ - orr r2, r2, r4\n\ - mov r0, #0x1\n\ - mov r1, #0xa\n\ + lsl r2, r0, #0x8\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ ._569:\n\ - bl Emitcmd33\n\ + bl Emitcmd33\n\ ._573:\n\ - bl OpponentBufferExecCompleted\n\ - b ._562\n\ + bl OpponentBufferExecCompleted\n\ + b ._562\n\ ._546:\n\ - ldr r0, ._567 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x93\n\ - lsl r0, r0, #0x3\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._563 @cond_branch\n\ - bl BattleAI_SetupAIData\n\ - bl BattleAI_GetAIActionToUse\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0x4\n\ - beq ._564 @cond_branch\n\ - cmp r4, #0x5\n\ - bne ._565 @cond_branch\n\ - mov r0, #0x1\n\ - mov r1, #0x4\n\ - b ._566\n\ + ldr r0, ._567 @ gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + mov r0, #0x93\n\ + lsl r0, r0, #0x3\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._563 @cond_branch\n\ + bl BattleAI_SetupAIData\n\ + bl BattleAI_GetAIActionToUse\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0x4\n\ + beq ._564 @cond_branch\n\ + cmp r4, #0x5\n\ + bne ._565 @cond_branch\n\ + mov r0, #0x1\n\ + mov r1, #0x4\n\ + b ._566\n\ ._568:\n\ - .align 2, 0\n\ + .align 2, 0\n\ ._567:\n\ - .word gBattleTypeFlags\n\ + .word gBattleTypeFlags\n\ ._564:\n\ - mov r0, #0x1\n\ - mov r1, #0x3\n\ + mov r0, #0x1\n\ + mov r1, #0x3\n\ ._566:\n\ - mov r2, #0x0\n\ - b ._569\n\ + mov r2, #0x0\n\ + b ._569\n\ ._565:\n\ - ldr r3, ._574 @ gBattleMoves\n\ - lsl r0, r4, #0x1\n\ - add r2, r5, r0\n\ - ldrh r1, [r2]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r3\n\ - ldrb r1, [r0, #0x6]\n\ - mov r0, #0x12\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._570 @cond_branch\n\ - ldr r1, ._574 + 4 @ gBankTarget\n\ - ldrb r0, [r6]\n\ - strb r0, [r1]\n\ + ldr r3, ._574 @ gBattleMoves\n\ + lsl r0, r4, #0x1\n\ + add r2, r5, r0\n\ + ldrh r1, [r2]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._570 @cond_branch\n\ + ldr r1, ._574 + 4 @ gBankTarget\n\ + ldrb r0, [r6]\n\ + strb r0, [r1]\n\ ._570:\n\ - ldrh r1, [r2]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r3\n\ - ldrb r1, [r0, #0x6]\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._572 @cond_branch\n\ - mov r0, #0x0\n\ - bl GetBankByIdentity\n\ - ldr r5, ._574 + 4 @ gBankTarget\n\ - strb r0, [r5]\n\ - ldr r0, ._574 + 8 @ gAbsentBankFlags\n\ - ldrb r1, [r0]\n\ - ldr r2, ._574 + 12 @ gBitTable\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r2\n\ - ldr r0, [r0]\n\ - and r1, r1, r0\n\ - cmp r1, #0\n\ - beq ._572 @cond_branch\n\ - mov r0, #0x2\n\ - bl GetBankByIdentity\n\ - strb r0, [r5]\n\ + ldrh r1, [r2]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._572 @cond_branch\n\ + mov r0, #0x0\n\ + bl GetBankByIdentity\n\ + ldr r5, ._574 + 4 @ gBankTarget\n\ + strb r0, [r5]\n\ + ldr r0, ._574 + 8 @ gAbsentBankFlags\n\ + ldrb r1, [r0]\n\ + ldr r2, ._574 + 12 @ gBitTable\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + and r1, r1, r0\n\ + cmp r1, #0\n\ + beq ._572 @cond_branch\n\ + mov r0, #0x2\n\ + bl GetBankByIdentity\n\ + strb r0, [r5]\n\ ._572:\n\ - ldr r0, ._574 + 4 @ gBankTarget\n\ - ldrb r2, [r0]\n\ - lsl r2, r2, #0x8\n\ - orr r2, r2, r4\n\ - mov r0, #0x1\n\ - mov r1, #0xa\n\ - bl Emitcmd33\n\ - b ._573\n\ + ldr r0, ._574 + 4 @ gBankTarget\n\ + ldrb r2, [r0]\n\ + lsl r2, r2, #0x8\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + b ._573\n\ ._575:\n\ - .align 2, 0\n\ + .align 2, 0\n\ ._574:\n\ - .word gBattleMoves\n\ - .word gBankTarget\n\ - .word gAbsentBankFlags\n\ - .word gBitTable\n\ + .word gBattleMoves\n\ + .word gBankTarget\n\ + .word gAbsentBankFlags\n\ + .word gBitTable\n\ ._563:\n\ - mov r6, #0x3\n\ + mov r6, #0x3\n\ ._576:\n\ - bl Random\n\ - add r4, r0, #0\n\ - and r4, r4, r6\n\ - lsl r0, r4, #0x1\n\ - add r0, r5, r0\n\ - ldrh r2, [r0]\n\ - cmp r2, #0\n\ - beq ._576 @cond_branch\n\ - ldr r1, ._579 @ gBattleMoves\n\ - lsl r0, r2, #0x1\n\ - add r0, r0, r2\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x6]\n\ - mov r0, #0x12\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._577 @cond_branch\n\ - ldr r0, ._579 + 4 @ gActiveBank\n\ - ldrb r2, [r0]\n\ - lsl r2, r2, #0x8\n\ - b ._578\n\ + bl Random\n\ + add r4, r0, #0\n\ + and r4, r4, r6\n\ + lsl r0, r4, #0x1\n\ + add r0, r5, r0\n\ + ldrh r2, [r0]\n\ + cmp r2, #0\n\ + beq ._576 @cond_branch\n\ + ldr r1, ._579 @ gBattleMoves\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._577 @cond_branch\n\ + ldr r0, ._579 + 4 @ gActiveBank\n\ + ldrb r2, [r0]\n\ + lsl r2, r2, #0x8\n\ + b ._578\n\ ._580:\n\ - .align 2, 0\n\ + .align 2, 0\n\ ._579:\n\ - .word gBattleMoves\n\ - .word gActiveBank\n\ + .word gBattleMoves\n\ + .word gActiveBank\n\ ._577:\n\ - ldr r0, ._583 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._581 @cond_branch\n\ - bl Random\n\ - mov r1, #0x2\n\ - and r1, r1, r0\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - add r0, r1, #0\n\ - bl GetBankByIdentity\n\ - add r2, r0, #0\n\ - lsl r2, r2, #0x18\n\ - lsr r2, r2, #0x10\n\ + ldr r0, ._583 @ gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._581 @cond_branch\n\ + bl Random\n\ + mov r1, #0x2\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + add r0, r1, #0\n\ + bl GetBankByIdentity\n\ + add r2, r0, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r2, r2, #0x10\n\ ._578:\n\ - orr r2, r2, r4\n\ - mov r0, #0x1\n\ - mov r1, #0xa\n\ - bl Emitcmd33\n\ - b ._582\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + b ._582\n\ ._584:\n\ - .align 2, 0\n\ + .align 2, 0\n\ ._583:\n\ - .word gBattleTypeFlags\n\ + .word gBattleTypeFlags\n\ ._581:\n\ - mov r0, #0x0\n\ - bl GetBankByIdentity\n\ - add r2, r0, #0\n\ - lsl r2, r2, #0x18\n\ - lsr r2, r2, #0x10\n\ - orr r2, r2, r4\n\ - mov r0, #0x1\n\ - mov r1, #0xa\n\ - bl Emitcmd33\n\ + mov r0, #0x0\n\ + bl GetBankByIdentity\n\ + add r2, r0, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r2, r2, #0x10\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ ._582:\n\ - bl OpponentBufferExecCompleted\n\ + bl OpponentBufferExecCompleted\n\ ._562:\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0"); + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0"); } #else #ifdef NONMATCHING diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index e28c058a3..3e259a21b 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -42,6 +42,8 @@ extern struct Window gUnknown_03004210; extern void (*gBattleBankFunc[])(void); +extern u8 gBankAttacker; +extern u8 gBankTarget; extern u32 gOamMatrixAllocBitmap; extern u8 gUnknown_020297ED; extern u8 gActiveBank; @@ -115,7 +117,6 @@ extern void sub_802D18C(void); extern void sub_802DF18(void); extern void BufferStringBattle(); extern void sub_80326EC(); -extern void DoMoveAnim(); extern void sub_8031F24(void); extern void sub_80324BC(); extern u8 sub_8031720(); @@ -760,38 +761,38 @@ void sub_802C68C(void) #if DEBUG else if (gUnknown_020297ED == 1 && (gMain.newKeys & START_BUTTON)) { - const u8 *moveName; - s32 i; - - Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A); - moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)]; - Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37); - ConvertIntToDecimalStringN( - gDisplayedStringBattle, - GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1), - 2, 3); - Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37); - Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39); - ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3); - Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39); - for (i = 0; i < 64; i++) - { - if (gSprites[i].inUse) - count++; - } - ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); - Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39); - count = GetTaskCount(); - ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); - Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39); - for (i = 0, count = 0; i < 32; i++) - { - if (gOamMatrixAllocBitmap & (1 << i)) - count++; - } - ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); - Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39); - gBattleBankFunc[gActiveBank] = debug_sub_8030C24; + const u8 *moveName; + s32 i; + + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A); + moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)]; + Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37); + ConvertIntToDecimalStringN( + gDisplayedStringBattle, + GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1), + 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37); + Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39); + ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39); + for (i = 0; i < 64; i++) + { + if (gSprites[i].inUse) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39); + count = GetTaskCount(); + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39); + for (i = 0, count = 0; i < 32; i++) + { + if (gOamMatrixAllocBitmap & (1 << i)) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39); + gBattleBankFunc[gActiveBank] = debug_sub_8030C24; } #endif } @@ -1001,685 +1002,163 @@ void sub_802D18C(void) } #if DEBUG -__attribute__((naked)) + +void debug_sub_803107C(void); + void debug_sub_8030C24(void) { - asm("\ - push {r4, r5, r6, lr}\n\ - add sp, sp, #0xfffffff4\n\ - ldr r1, ._293 @ gBattlePartyID\n\ - ldr r4, ._293 + 4 @ gActiveBank\n\ - ldrb r0, [r4]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r0, r0, r1\n\ - ldr r1, ._293 + 8 @ gPlayerParty\n\ - add r0, r0, r1\n\ - mov r1, #0xd\n\ - bl GetMonData\n\ - add r1, sp, #0x8\n\ - strh r0, [r1]\n\ - ldr r5, ._293 + 12 @ gMain\n\ - ldrh r1, [r5, #0x30]\n\ - cmp r1, #0x20\n\ - bne ._286 @cond_branch\n\ - b ._287\n\ -._286:\n\ - cmp r1, #0x20\n\ - bgt ._288 @cond_branch\n\ - cmp r1, #0x8\n\ - beq ._289 @cond_branch\n\ - cmp r1, #0x8\n\ - bgt ._290 @cond_branch\n\ - cmp r1, #0x4\n\ - beq ._291 @cond_branch\n\ - b ._348\n\ -._294:\n\ - .align 2, 0\n\ -._293:\n\ - .word gBattlePartyID\n\ - .word gActiveBank\n\ - .word gPlayerParty\n\ - .word gMain\n\ -._290:\n\ - cmp r1, #0x10\n\ - bne ._295 @cond_branch\n\ - b ._296\n\ -._295:\n\ - b ._348\n\ -._288:\n\ - cmp r1, #0x80\n\ - bne ._298 @cond_branch\n\ - b ._302\n\ -._298:\n\ - cmp r1, #0x80\n\ - bgt ._300 @cond_branch\n\ - cmp r1, #0x40\n\ - bne ._301 @cond_branch\n\ - b ._302\n\ -._301:\n\ - b ._348\n\ -._300:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - cmp r1, r0\n\ - bne ._304 @cond_branch\n\ - b ._305\n\ -._304:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x2\n\ - cmp r1, r0\n\ - bne ._306 @cond_branch\n\ - b ._307\n\ -._306:\n\ - b ._348\n\ -._289:\n\ - ldrb r0, [r4]\n\ - mov r1, #0x1\n\ - bl dp11b_obj_free\n\ - ldrb r0, [r4]\n\ - mov r1, #0x0\n\ - bl dp11b_obj_free\n\ - ldr r0, ._312 @ gBankAttacker\n\ - ldrb r2, [r4]\n\ - strb r2, [r0]\n\ - ldrh r1, [r5, #0x28]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._310 @cond_branch\n\ - ldr r0, ._312 + 4 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._310 @cond_branch\n\ - ldr r0, ._312 + 8 @ gBankTarget\n\ - mov r1, #0x2\n\ - eor r1, r1, r2\n\ - strb r1, [r0]\n\ - b ._311\n\ -._313:\n\ - .align 2, 0\n\ -._312:\n\ - .word gBankAttacker\n\ - .word gBattleTypeFlags\n\ - .word gBankTarget\n\ -._310:\n\ - ldr r0, ._317 @ gMain\n\ - ldrh r1, [r0, #0x28]\n\ - mov r2, #0x1\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._315 @cond_branch\n\ - ldr r0, ._317 + 4 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._315 @cond_branch\n\ - mov r0, #0x3\n\ - b ._316\n\ -._318:\n\ - .align 2, 0\n\ -._317:\n\ - .word gMain\n\ - .word gBattleTypeFlags\n\ -._315:\n\ - mov r0, #0x1\n\ -._316:\n\ - bl GetBankByIdentity\n\ - ldr r1, ._320 @ gBankTarget\n\ - strb r0, [r1]\n\ -._311:\n\ - mov r0, #0x0\n\ - bl sub_80326EC\n\ - add r0, sp, #0x8\n\ - ldrh r0, [r0]\n\ - bl DoMoveAnim\n\ - ldr r1, ._320 + 4 @ gBattleBankFunc\n\ - ldr r0, ._320 + 8 @ gActiveBank\n\ - ldrb r0, [r0]\n\ - b ._332\n\ -._321:\n\ - .align 2, 0\n\ -._320:\n\ - .word gBankTarget\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ -._291:\n\ - ldrb r0, [r4]\n\ - mov r1, #0x1\n\ - bl dp11b_obj_free\n\ - ldrb r0, [r4]\n\ - mov r1, #0x0\n\ - bl dp11b_obj_free\n\ - ldr r0, ._325 @ gBankTarget\n\ - ldrb r2, [r4]\n\ - strb r2, [r0]\n\ - ldrh r1, [r5, #0x28]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._323 @cond_branch\n\ - ldr r0, ._325 + 4 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._323 @cond_branch\n\ - ldr r0, ._325 + 8 @ gBankAttacker\n\ - mov r1, #0x2\n\ - eor r1, r1, r2\n\ - strb r1, [r0]\n\ - b ._324\n\ -._326:\n\ - .align 2, 0\n\ -._325:\n\ - .word gBankTarget\n\ - .word gBattleTypeFlags\n\ - .word gBankAttacker\n\ -._323:\n\ - ldr r0, ._330 @ gMain\n\ - ldrh r1, [r0, #0x28]\n\ - mov r2, #0x1\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._328 @cond_branch\n\ - ldr r0, ._330 + 4 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._328 @cond_branch\n\ - mov r0, #0x3\n\ - b ._329\n\ -._331:\n\ - .align 2, 0\n\ -._330:\n\ - .word gMain\n\ - .word gBattleTypeFlags\n\ -._328:\n\ - mov r0, #0x1\n\ -._329:\n\ - bl GetBankByIdentity\n\ - ldr r1, ._333 @ gBankAttacker\n\ - strb r0, [r1]\n\ -._324:\n\ - mov r0, #0x0\n\ - bl sub_80326EC\n\ - add r0, sp, #0x8\n\ - ldrh r0, [r0]\n\ - bl DoMoveAnim\n\ - ldr r1, ._333 + 4 @ gBattleBankFunc\n\ - ldr r0, ._333 + 8 @ gActiveBank\n\ - ldrb r0, [r0]\n\ - b ._332\n\ -._334:\n\ - .align 2, 0\n\ -._333:\n\ - .word gBankAttacker\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ -._305:\n\ - ldrh r1, [r5, #0x28]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._336 @cond_branch\n\ - ldr r0, ._338 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._336 @cond_branch\n\ - ldrb r0, [r4]\n\ - mov r1, #0x1\n\ - bl dp11b_obj_free\n\ - ldrb r0, [r4]\n\ - mov r1, #0x0\n\ - bl dp11b_obj_free\n\ - mov r0, #0x3\n\ - bl GetBankByIdentity\n\ - ldr r1, ._338 + 4 @ gBankAttacker\n\ - strb r0, [r1]\n\ - mov r0, #0x1\n\ - b ._337\n\ -._339:\n\ - .align 2, 0\n\ -._338:\n\ - .word gBattleTypeFlags\n\ - .word gBankAttacker\n\ -._336:\n\ - add r0, sp, #0x8\n\ - mov r1, #0x0\n\ - ldsh r0, [r0, r1]\n\ - add r0, r0, #0x9\n\ - add r1, sp, #0x8\n\ - strh r0, [r1]\n\ -._296:\n\ - add r0, sp, #0x8\n\ - mov r2, #0x0\n\ - ldsh r0, [r0, r2]\n\ - add r0, r0, #0x1\n\ - lsl r2, r0, #0x10\n\ - add r1, sp, #0x8\n\ - strh r0, [r1]\n\ - mov r0, #0xb1\n\ - lsl r0, r0, #0x11\n\ - cmp r2, r0\n\ - ble ._347 @cond_branch\n\ - mov r1, #0x1\n\ - add r0, sp, #0x8\n\ - strh r1, [r0]\n\ - b ._347\n\ -._307:\n\ - ldrh r1, [r5, #0x28]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._343 @cond_branch\n\ - ldr r0, ._345 @ gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._343 @cond_branch\n\ - ldrb r0, [r4]\n\ - mov r1, #0x1\n\ - bl dp11b_obj_free\n\ - ldrb r0, [r4]\n\ - mov r1, #0x0\n\ - bl dp11b_obj_free\n\ - mov r0, #0x1\n\ - bl GetBankByIdentity\n\ - ldr r1, ._345 + 4 @ gBankAttacker\n\ - strb r0, [r1]\n\ - mov r0, #0x3\n\ -._337:\n\ - bl GetBankByIdentity\n\ - ldr r1, ._345 + 8 @ gBankTarget\n\ - strb r0, [r1]\n\ - mov r0, #0x0\n\ - bl sub_80326EC\n\ - add r0, sp, #0x8\n\ - ldrh r0, [r0]\n\ - bl DoMoveAnim\n\ - ldr r1, ._345 + 12 @ gBattleBankFunc\n\ - ldrb r0, [r4]\n\ -._332:\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._345 + 16 @ debug_sub_803107C\n\ - str r1, [r0]\n\ - b ._348\n\ -._346:\n\ - .align 2, 0\n\ -._345:\n\ - .word gBattleTypeFlags\n\ - .word gBankAttacker\n\ - .word gBankTarget\n\ - .word gBattleBankFunc\n\ - .word debug_sub_803107C+1\n\ -._343:\n\ - add r1, sp, #0x8\n\ - add r0, r1, #0\n\ - ldrh r0, [r0]\n\ - sub r0, r0, #0x9\n\ - strh r0, [r1]\n\ -._287:\n\ - add r1, sp, #0x8\n\ - add r0, r1, #0\n\ - ldrh r0, [r0]\n\ - sub r0, r0, #0x1\n\ - strh r0, [r1]\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - bgt ._347 @cond_branch\n\ - mov r2, #0xb1\n\ - lsl r2, r2, #0x1\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ -._347:\n\ - ldr r1, ._349 @ gBattlePartyID\n\ - ldr r4, ._349 + 4 @ gActiveBank\n\ - ldrb r0, [r4]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r0, r0, r1\n\ - ldr r1, ._349 + 8 @ gPlayerParty\n\ - add r0, r0, r1\n\ - mov r1, #0xd\n\ - add r2, sp, #0x8\n\ - bl SetMonData\n\ - ldr r2, ._349 + 12 @ gBattleMons\n\ - ldrb r1, [r4]\n\ - mov r0, #0x58\n\ - mul r0, r0, r1\n\ - add r0, r0, r2\n\ - add r1, sp, #0x8\n\ - ldrh r1, [r1]\n\ - strh r1, [r0, #0xc]\n\ - ldr r5, ._349 + 16 @ gUnknown_03004210\n\ - ldr r1, ._349 + 20 @ 0x1016\n\ - mov r0, #0x10\n\ - str r0, [sp]\n\ - mov r0, #0x38\n\ - str r0, [sp, #0x4]\n\ - add r0, r5, #0\n\ - mov r2, #0x1\n\ - mov r3, #0x37\n\ - bl Text_FillWindowRect\n\ - add r0, sp, #0x8\n\ - mov r2, #0x0\n\ - ldsh r1, [r0, r2]\n\ - mov r0, #0xd\n\ - mul r1, r1, r0\n\ - ldr r0, ._349 + 24 @ gMoveNames\n\ - add r1, r1, r0\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x1\n\ - mov r6, #0x37\n\ - str r6, [sp]\n\ - add r0, r5, #0\n\ - mov r3, #0x2\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r4, ._349 + 28 @ gDisplayedStringBattle\n\ - add r0, sp, #0x8\n\ - mov r2, #0x0\n\ - ldsh r1, [r0, r2]\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x88\n\ - lsl r2, r2, #0x1\n\ - str r6, [sp]\n\ - add r0, r5, #0\n\ - add r1, r4, #0\n\ - mov r3, #0xa\n\ - bl Text_InitWindowAndPrintText\n\ - b ._348\n\ -._350:\n\ - .align 2, 0\n\ -._349:\n\ - .word gBattlePartyID\n\ - .word gActiveBank\n\ - .word gPlayerParty\n\ - .word gBattleMons\n\ - .word gUnknown_03004210\n\ - .word 0x1016\n\ - .word gMoveNames\n\ - .word gDisplayedStringBattle\n\ -._302:\n\ - ldr r0, ._353 @ gMain\n\ - ldrh r0, [r0, #0x30]\n\ - cmp r0, #0x40\n\ - bne ._351 @cond_branch\n\ - ldr r1, ._353 + 4 @ gAnimMoveTurn\n\ - ldrb r0, [r1]\n\ - sub r0, r0, #0x1\n\ - b ._352\n\ -._354:\n\ - .align 2, 0\n\ -._353:\n\ - .word gMain\n\ - .word gAnimMoveTurn\n\ -._351:\n\ - ldr r1, ._359 @ gAnimMoveTurn\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ -._352:\n\ - strb r0, [r1]\n\ - ldr r4, ._359 + 4 @ gDisplayedStringBattle\n\ - ldrb r1, [r1]\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r0, ._359 + 8 @ gUnknown_03004210\n\ - mov r2, #0x8e\n\ - lsl r2, r2, #0x1\n\ - mov r1, #0x39\n\ - str r1, [sp]\n\ - add r1, r4, #0\n\ - mov r3, #0x4\n\ - bl Text_InitWindowAndPrintText\n\ -._348:\n\ - ldr r0, ._359 + 12 @ gMain\n\ - ldrh r2, [r0, #0x28]\n\ - mov r1, #0xc0\n\ - lsl r1, r1, #0x2\n\ - add r0, r1, #0\n\ - and r0, r0, r2\n\ - cmp r0, r1\n\ - bne ._355 @cond_branch\n\ - mov r4, #0x0\n\ - ldr r5, ._359 + 4 @ gDisplayedStringBattle\n\ - ldr r6, ._359 + 8 @ gUnknown_03004210\n\ -._361:\n\ - add r0, r5, #0\n\ - ldr r1, ._359 + 16 @ BattleText_Format\n\ - bl StringCopy\n\ - ldr r1, ._359 + 20 @ gBattlePartyID\n\ - ldr r0, ._359 + 24 @ gActiveBank\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r0, r0, r1\n\ - ldr r1, ._359 + 28 @ gPlayerParty\n\ - add r0, r0, r1\n\ - add r1, r4, #0\n\ - add r1, r1, #0xd\n\ - bl GetMonData\n\ - mov r1, #0xd\n\ - mul r1, r1, r0\n\ - ldr r0, ._359 + 32 @ gMoveNames\n\ - add r1, r1, r0\n\ - add r0, r5, #0\n\ - bl StringAppend\n\ - lsl r0, r4, #0x14\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x11\n\ - add r0, r0, r1\n\ - lsr r2, r0, #0x10\n\ - mov r0, #0x1\n\ - and r0, r0, r4\n\ - mov r3, #0x2\n\ - cmp r0, #0\n\ - beq ._356 @cond_branch\n\ - mov r3, #0xa\n\ -._356:\n\ - cmp r4, #0x1\n\ - bhi ._357 @cond_branch\n\ - mov r0, #0x37\n\ - b ._358\n\ -._360:\n\ - .align 2, 0\n\ -._359:\n\ - .word gAnimMoveTurn\n\ - .word gDisplayedStringBattle\n\ - .word gUnknown_03004210\n\ - .word gMain\n\ - .word BattleText_Format\n\ - .word gBattlePartyID\n\ - .word gActiveBank\n\ - .word gPlayerParty\n\ - .word gMoveNames\n\ -._357:\n\ - mov r0, #0x39\n\ -._358:\n\ - str r0, [sp]\n\ - add r0, r6, #0\n\ - add r1, r5, #0\n\ - bl Text_InitWindow\n\ - ldr r0, ._362 @ gUnknown_03004210\n\ - bl Text_PrintWindow8002F44\n\ - add r0, r4, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0x3\n\ - bls ._361 @cond_branch\n\ - ldr r1, ._362 + 4 @ gBattleBankFunc\n\ - ldr r0, ._362 + 8 @ gActiveBank\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._362 + 12 @ sub_802C68C\n\ - str r1, [r0]\n\ -._355:\n\ - add sp, sp, #0xc\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._363:\n\ - .align 2, 0\n\ -._362:\n\ - .word gUnknown_03004210\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ - .word sub_802C68C+1"); + s16 move = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1); + + switch (gMain.newAndRepeatedKeys) + { + case START_BUTTON: + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBankAttacker = gActiveBank; + if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + gBankTarget = gBankAttacker ^ 2; + else if ((gMain.heldKeysRaw & A_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + gBankTarget = GetBankByIdentity(3); + else + gBankTarget = GetBankByIdentity(1); + sub_80326EC(0); + DoMoveAnim(move); + gBattleBankFunc[gActiveBank] = debug_sub_803107C; + break; + case SELECT_BUTTON: + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBankTarget = gActiveBank; + if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + gBankAttacker = gBankTarget ^ 2; + else if ((gMain.heldKeysRaw & A_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + gBankAttacker = GetBankByIdentity(3); + else + gBankAttacker = GetBankByIdentity(1); + sub_80326EC(0); + DoMoveAnim(move); + gBattleBankFunc[gActiveBank] = debug_sub_803107C; + break; + case R_BUTTON: + if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBankAttacker = GetBankByIdentity(3); + gBankTarget = GetBankByIdentity(1); + sub_80326EC(0); + DoMoveAnim(move); + gBattleBankFunc[gActiveBank] = debug_sub_803107C; + } + else + { + move += 9; + case DPAD_RIGHT: + if (++move > 354) + move = 1; + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1, &move); + gBattleMons[gActiveBank].moves[0] = move; + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38); + Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37); + ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 272, 10, 0x37); + } + break; + case L_BUTTON: + if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + gBankAttacker = GetBankByIdentity(1); + gBankTarget = GetBankByIdentity(3); + sub_80326EC(0); + DoMoveAnim(move); + gBattleBankFunc[gActiveBank] = debug_sub_803107C; + } + else + { + move -= 9; + case DPAD_LEFT: + if (--move <= 0) + move = 354; + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1, &move); + gBattleMons[gActiveBank].moves[0] = move; + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38); + Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37); + ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 272, 10, 0x37); + } + break; + case DPAD_UP: + case DPAD_DOWN: + if (gMain.newAndRepeatedKeys == DPAD_UP) + gAnimMoveTurn--; + else + gAnimMoveTurn++; + ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 284, 4, 0x39); + break; + } + + if ((gMain.heldKeysRaw & (L_BUTTON | R_BUTTON)) == (L_BUTTON | R_BUTTON)) + { + u8 i; + u32 move; + + for (i = 0; i < 4; i++) + { + StringCopy(gDisplayedStringBattle, BattleText_Format); + move = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i); + StringAppend(gDisplayedStringBattle, gMoveNames[move]); + Text_InitWindow( + &gUnknown_03004210, + gDisplayedStringBattle, + 0x100 + i * 16, + (i & 1) ? 10 : 2, + (i < 2) ? 0x37 : 0x39); + Text_PrintWindow8002F44(&gUnknown_03004210); + } + gBattleBankFunc[gActiveBank] = sub_802C68C; + } } -__attribute__((naked)) void debug_sub_803107C(void) { - asm("\ - push {r4, r5, r6, r7, lr}\n\ - add sp, sp, #0xfffffffc\n\ - mov r7, #0x0\n\ - ldr r0, ._369 @ gAnimScriptCallback\n\ - ldr r0, [r0]\n\ - bl _call_via_r0\n\ - ldr r0, ._369 + 4 @ gAnimScriptActive\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._364 @cond_branch\n\ - mov r0, #0x1\n\ - bl sub_80326EC\n\ - ldr r4, ._369 + 8 @ gActiveBank\n\ - ldrb r0, [r4]\n\ - mov r1, #0x1\n\ - mov r2, #0x7\n\ - mov r3, #0x1\n\ - bl dp11b_obj_instanciate\n\ - ldrb r0, [r4]\n\ - mov r1, #0x0\n\ - mov r2, #0x7\n\ - mov r3, #0x1\n\ - bl dp11b_obj_instanciate\n\ - ldr r0, ._369 + 12 @ gSprites\n\ - add r2, r0, #0\n\ - add r2, r2, #0x3e\n\ - mov r1, #0x3f\n\ -._366:\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._365 @cond_branch\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ -._365:\n\ - add r2, r2, #0x44\n\ - sub r1, r1, #0x1\n\ - cmp r1, #0\n\ - bge ._366 @cond_branch\n\ - ldr r4, ._369 + 16 @ gDisplayedStringBattle\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r6, ._369 + 20 @ gUnknown_03004210\n\ - mov r2, #0x91\n\ - lsl r2, r2, #0x1\n\ - mov r5, #0x39\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0x8\n\ - bl Text_InitWindowAndPrintText\n\ - bl GetTaskCount\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x93\n\ - lsl r2, r2, #0x1\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0xb\n\ - bl Text_InitWindowAndPrintText\n\ - mov r1, #0x0\n\ - mov r7, #0x0\n\ - ldr r0, ._369 + 24 @ gOamMatrixAllocBitmap\n\ - mov r3, #0x1\n\ - ldr r2, [r0]\n\ -._368:\n\ - add r0, r3, #0\n\ - LSL r0, r1\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._367 @cond_branch\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ -._367:\n\ - add r1, r1, #0x1\n\ - cmp r1, #0x1f\n\ - ble ._368 @cond_branch\n\ - ldr r4, ._369 + 16 @ gDisplayedStringBattle\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r0, ._369 + 20 @ gUnknown_03004210\n\ - mov r2, #0x95\n\ - lsl r2, r2, #0x1\n\ - mov r1, #0x39\n\ - str r1, [sp]\n\ - add r1, r4, #0\n\ - mov r3, #0xe\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r1, ._369 + 28 @ gBattleBankFunc\n\ - ldr r0, ._369 + 8 @ gActiveBank\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._369 + 32 @ debug_sub_8030C24\n\ - str r1, [r0]\n\ -._364:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._370:\n\ - .align 2, 0\n\ -._369:\n\ - .word gAnimScriptCallback\n\ - .word gAnimScriptActive\n\ - .word gActiveBank\n\ - .word gSprites\n\ - .word gDisplayedStringBattle\n\ - .word gUnknown_03004210\n\ - .word gOamMatrixAllocBitmap\n\ - .word gBattleBankFunc\n\ - .word debug_sub_8030C24+1"); + u8 count = 0; + + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + s32 i; + + sub_80326EC(1); + dp11b_obj_instanciate(gActiveBank, 1, 7, 1); + dp11b_obj_instanciate(gActiveBank, 0, 7, 1); + + for (i = 0, count = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].inUse) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 290, 8, 0x39); + + count = GetTaskCount(); + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 294, 11, 0x39); + + for (i = 0, count = 0; i < 32; i++) + { + if (gOamMatrixAllocBitmap & (1 << i)) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 298, 14, 0x39); + + gBattleBankFunc[gActiveBank] = debug_sub_8030C24; + } } + #endif void sub_802D204(void) @@ -3012,7 +2491,7 @@ void PlayerHandlecmd3(void) u8 i; u8 *dst; - MEMSET_ALT(&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][3 + i], + MEMSET_ALT(&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][3 + i], gBattleBufferA[gActiveBank][2], i, dst); PlayerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index e9425e7e7..03cf8759d 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -276,12 +276,12 @@ void bx_battle_menu_t6_2(void) #if DEBUG else if (gMain.newKeys & R_BUTTON) { - if (!ewram17810[gActiveBank].unk0_5) - move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0); + if (!ewram17810[gActiveBank].unk0_5) + move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0); } else if (gMain.newKeys & START_BUTTON) { - sub_804454C(); + sub_804454C(); } #endif } diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 1532a0b2f..8b9cf9ea0 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -29,11 +29,11 @@ const struct DebugStruct1 gUnknown_Debug_4245CC[] = { 7, _("ナンバー7") }, }; -const u8 gUnknown_Debug_8424620[][4] = +const struct {u8 unk0; u8 unk1;} gUnknown_Debug_8424620[] = { - { 1, 1, 0, 0 }, - { 2, 1, 0, 0 }, - { 3, 1, 0, 0 }, + { 1, 1 }, + { 2, 1 }, + { 3, 1 }, }; #endif @@ -64,7 +64,7 @@ static int GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record) return record->wins + record->losses + record->draws; } -static int FindLinkBattleRecord(struct LinkBattleRecord *records, u8 *name, u16 trainerId) +static int FindLinkBattleRecord(struct LinkBattleRecord *records, const u8 *name, u16 trainerId) { int i; @@ -145,7 +145,7 @@ static void UpdateLinkBattleGameStats(int battleOutcome) IncrementGameStat(stat); } -static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, u8 *name, u16 trainerId, int battleOutcome, u8 language) +static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, const u8 *name, u16 trainerId, int battleOutcome, u8 language) { int index; UpdateLinkBattleGameStats(battleOutcome); @@ -224,62 +224,22 @@ void UpdateLinkBattleRecords(int id) } #if DEBUG -__attribute__((naked)) void debug_sub_81257E0(void) { - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - add sp, sp, #0xfffffffc\n\ - bl InitLinkBattleRecords\n\ - mov r5, #0x0\n\ - ldr r6, ._62 @ gUnknown_Debug_4245CC\n\ - sub r0, r6, #2\n\ - mov r8, r0\n\ - ldr r7, ._62 + 4 @ gLinkPlayers\n\ -._61:\n\ - ldr r0, ._62 + 8 @ gUnknown_Debug_8424620\n\ - lsl r3, r5, #0x2\n\ - add r3, r3, r0\n\ - ldrb r4, [r3]\n\ - sub r4, r4, #0x1\n\ - lsl r0, r4, #0x1\n\ - add r0, r0, r4\n\ - lsl r0, r0, #0x2\n\ - add r1, r0, r6\n\ - add r0, r0, r8\n\ - ldrh r2, [r0]\n\ - ldrb r3, [r3, #0x1]\n\ - ldr r0, ._62 + 12 @ gLinkPlayerMapObjects\n\ - lsl r4, r4, #0x2\n\ - add r4, r4, r0\n\ - ldrb r4, [r4, #0x1]\n\ - lsl r0, r4, #0x3\n\ - sub r0, r0, r4\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r7\n\ - ldrb r0, [r0, #0x1a]\n\ - str r0, [sp]\n\ - ldr r0, ._62 + 16 @ gSaveBlock1\n\ - bl UpdateLinkBattleRecords_\n\ - add r5, r5, #0x1\n\ - cmp r5, #0x2\n\ - bls ._61 @cond_branch\n\ - add sp, sp, #0x4\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._63:\n\ - .align 2, 0\n\ -._62:\n\ - .word gUnknown_Debug_4245CC+2\n\ - .word gLinkPlayers\n\ - .word gUnknown_Debug_8424620\n\ - .word gLinkPlayerMapObjects\n\ - .word gSaveBlock1+0x30b8"); + u32 i; + + InitLinkBattleRecords(); + for (i = 0; i < 3; i++) + { + u32 id = gUnknown_Debug_8424620[i].unk0 - 1; + + UpdateLinkBattleRecords_( + gSaveBlock1.linkBattleRecords, + gUnknown_Debug_4245CC[id].var1, + gUnknown_Debug_4245CC[id].var0, + gUnknown_Debug_8424620[i].unk1, + gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language); + } } #endif |