diff options
Diffstat (limited to 'src')
43 files changed, 8042 insertions, 19708 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 diff --git a/src/data/battle_tower/trainers.h b/src/data/battle_tower/trainers.h index ae204f8ea..4d555fbb0 100644 --- a/src/data/battle_tower/trainers.h +++ b/src/data/battle_tower/trainers.h @@ -1,1503 +1,1303 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = { - { - .trainerClass = FACILITY_CLASS_YOUNGSTER, - .name = _("ALVIN"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_READY, - EC_WORD_QUES, - EC_WORD_HERE_I_COME, - EC_WORD_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BIRD_KEEPER, - .name = _("DIRK"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_OKAY, - EC_WORD_I_AM, - EC_WORD_GOING, - EC_WORD_FOR, - EC_WORD_IT, - EC_WORD_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LADY, - .name = _("CYBIL"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_A, - EC_WORD_PUSHOVER, - EC_WORD_LET_S, - EC_WORD_GET, - EC_WORD_GOING, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BLACK_BELT, - .name = _("CHEN"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_SPIRIT, - EC_WORD_IS, - EC_WORD_ENOUGH, - EC_WORD_SNORT, - EC_WORD_ARRGH, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_NINJA_BOY, - .name = _("YOSHI"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_GO, - EC_WORD_MY, - EC_WORD_POKEMON, - EC_WORD_FIGHT, - EC_WORD_THE, - EC_WORD_BATTLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, - .name = _("TINA"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_STUDY, - EC_WORD_IS, - EC_WORD_BORING, - EC_WORD_LET_S, - EC_WORD_BATTLE, - EC_WORD_NOW, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_MANIAC, - .name = _("COREY"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_HEY, - EC_WORD_I, - EC_WORD_WILL, - EC_MOVE2(TRANSFORM), - EC_WORD_FOR, - EC_MOVE(STRENGTH), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_FISHERMAN, - .name = _("GORDON"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_NEED, - EC_WORD_A, - EC_WORD_VACATION, - EC_WORD_RIGHT, - EC_WORD_NOW, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_TUBER_F, - .name = _("ANN"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_WE, - EC_WORD_ALL, - EC_WORD_ADORE, - EC_WORD_POKEMON, - EC_WORD_ABSOLUTELY, - EC_WORD_TRULY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_F, - .name = _("JULIA"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_A, - EC_WORD_CUTE, - EC_WORD_LADY, - EC_WORD_YES, - EC_WORD_I_AM, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GENTLEMAN, - .name = _("GREGORY"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_THINK, - EC_WORD_WE, - EC_WORD_SHOULD, - EC_WORD_START, - EC_WORD_TODAY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CAMPER, - .name = _("KEITH"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_MY, - EC_WORD_FRIEND, - EC_WORD_FROM, - EC_WORD_NOW, - EC_WORD_ON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, - .name = _("KENDRA"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_MOVE(SWIFT), - EC_WORD_HOW, - EC_WORD_ABOUT, - EC_WORD_YOU, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HIKER, - .name = _("DEV"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_WAHAHAHA, - EC_WORD_I_AM, - EC_WORD_FEELING, - EC_WORD_LIKE, - EC_WORD_IT_S, - EC_MOVE2(PAY_DAY), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BATTLE_GIRL, - .name = _("CASSIE"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_STRONG, - EC_WORD_AREN_T, - 0xFFFF, - EC_WORD_YOU, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_M, - .name = _("JULIAN"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_FUFUFU, - 0xFFFF, - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_WIN, - EC_WORD_KID, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LASS, - .name = _("JOYCE"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_BE, - EC_WORD_KIND, - EC_WORD_TO, - EC_WORD_THE, - EC_WORD_DIGITAL, - EC_WORD_IDOL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GUITARIST, - .name = _("LES"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_GREAT, - EC_WORD_YOU_RE, - EC_WORD_JUST, - EC_WORD_RATHER, - EC_WORD_OKAY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RICH_BOY, - .name = _("CLINTON"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_HAVE, - EC_WORD_ROUGH_SKIN, - EC_WORD_I, - EC_WORD_NEED, - EC_WORD_NATURAL_CURE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_CATCHER, - .name = _("LEWIS"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_THIS, - EC_WORD_IS, - EC_WORD_EXCITING, - EC_WORD_CAN, - EC_WORD_I, - EC_WORD_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PICNICKER, - .name = _("RACHAEL"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_LIKE, - EC_WORD_WALKING, - EC_WORD_WITH, - EC_WORD_MY, - EC_WORD_POKEMON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COLLECTOR, - .name = _("HAROLD"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_HERE, - EC_WORD_THEY, - EC_WORD_COME, - EC_WORD_MY, - EC_MOVE2(SUPERPOWER), - EC_WORD_POKEMON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_TUBER_M, - .name = _("KIPP"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_A, - EC_WORD_GENIUS, - EC_WORD_I, - EC_WORD_SHOULD, - EC_WORD_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_KINDLER, - .name = _("IRWIN"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_YOU, - EC_WORD_WILL, - EC_WORD_BE, - EC_WORD_FEELING, - EC_WORD_MY, - EC_WORD_FIRE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_F, - .name = _("EILEEN"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_WILL, - EC_MOVE(ASTONISH), - EC_WORD_YOU, - EC_WORD_IN, - EC_WORD_BATTLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_F, - .name = _("ANNE"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_SORRY, - EC_WORD_BUT, - EC_WORD_YOU, - EC_WORD_WILL, - EC_WORD_NOT, - EC_WORD_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, - .name = _("RUTH"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_A, - EC_WORD_STRONG, - EC_WORD_GIRL, - EC_WORD_WANTS, - EC_WORD_TOUGH, - EC_WORD_POKEMON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMANIAC, - .name = _("JEREMY"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_POKEMON, - EC_WORD_ARE, - EC_WORD_COOL, - EC_WORD_YOURS, - EC_WORD_CAN_T_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SAILOR, - .name = _("TREVOR"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_OPPONENT, - EC_WORD_IS, - EC_WORD_FINALLY, - EC_WORD_HERE, - EC_WORD_EXCELLENT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, - .name = _("COLETTE"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_AM, - EC_WORD_HUNGRY, - EC_MOVE2(POUND), - EC_WORD_MY, - EC_MOVE2(BELLY_DRUM), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HEX_MANIAC, - .name = _("PAULA"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_IT_S, - EC_WORD_HARD, - EC_WORD_TO, - EC_WORD_TAKE, - EC_WORD_UGLY, - EC_MOVE(SPITE), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUIN_MANIAC, - .name = _("STANLY"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_ADVENTURE, - EC_WORD_AND, - EC_WORD_BATTLE, - EC_WORD_ARE, - EC_WORD_MY, - EC_WORD_LIKES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, - .name = _("TROY"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_LOSE, - EC_WORD_TO, - EC_WORD_A, - EC_WORD_KID, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SCHOOL_KID_M, - .name = _("ED"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_POKEMON, - EC_WORD_DAILY, - EC_WORD_AT, - EC_WORD_SCHOOL, - EC_WORD_IT_S, - EC_WORD_AWESOME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, - .name = _("ELLEN"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_KIND, - EC_WORD_TO, - EC_WORD_YOUR, - EC_WORD_POKEMON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_M, - .name = _("ARNIE"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_BATTLE, - EC_WORD_SERIOUSLY, - EC_WORD_BEAUTIFUL, - EC_WORD_YOU, - EC_MOVE(DIG), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, - .name = _("HAL"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_BOY, - EC_WORD_I_AM, - EC_WORD_TIRED, - EC_WORD_READY, - EC_WORD_FOR, - EC_WORD_SLEEP, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BEAUTY, - .name = _("LAUREN"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_A, - EC_WORD_TRAINER, - EC_WORD_LIKE, - EC_WORD_YOU, - EC_WORD_IS, - EC_WORD_EXCITING, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_AROMA_LADY, - .name = _("STACY"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_HAVE, - EC_WORD_YOU, - EC_WORD_A, - EC_WORD_STENCH, - EC_WORD_OR, - EC_MOVE(SWEET_SCENT), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COLLECTOR, - .name = _("DARYL"), - .teamFlags = 0x81, - .greeting = { - .easyChat = { - EC_WORD_YOUR, - EC_WORD_POKEMON, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_I, - EC_WORD_WANT, - EC_WORD_IT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, - .name = _("KATHY"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_WILL, - EC_WORD_TRY, - EC_WORD_MY, - EC_WORD_BEST, - EC_WORD_TODAY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, - .name = _("HARRIS"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_WAAAH, - EC_WORD_WAAAH, - EC_WORD_WAAAH, - EC_WORD_WAAAH, - EC_WORD_EHEHE, - EC_MOVE(FAKE_TEARS), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_M, - .name = _("GLENN"), - .teamFlags = 0x80, - .greeting = { - .easyChat = { - EC_WORD_LISTEN, - EC_WORD_TO, - EC_WORD_MY, - EC_WORD_LOUSY, - EC_WORD_ANIME, - EC_WORD_SONG, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, - .name = _("NICO"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_DON_T, - EC_WORD_JUST, - EC_WORD_BATTLE, - EC_WORD_DO, - EC_WORD_SOMETHING, - EC_WORD_ELSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, - .name = _("BAILEY"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_BUSY, - EC_WORD_GET, - EC_WORD_WITH, - EC_WORD_IT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PARASOL_LADY, - .name = _("ABBIE"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_THE, - EC_MOVE(MORNING_SUN), - EC_WORD_HAS, - EC_WORD_SO, - EC_WORD_MUCH, - EC_MOVE(COSMIC_POWER), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CAMPER, - .name = _("AL"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_LET_S, - EC_WORD_HAVE, - EC_WORD_AN, - EC_WORD_EXCITING, - EC_WORD_BATTLE, - EC_WORD_YEEHAW_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, - .name = _("PEGGY"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_WANT, - EC_WORD_TO, - EC_WORD_SEE, - EC_WORD_SOME, - EC_MOVE(GROWTH), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BEAUTY, - .name = _("NAOMI"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_IT, - EC_WORD_WAS, - EC_WORD_GREAT, - EC_WORD_TO, - EC_WORD_BE, - EC_WORD_YOUNG, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_NINJA_BOY, - .name = _("KENJI"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_PLEASE, - 0xFFFF, - EC_WORD_DON_T, - EC_WORD_BE, - EC_WORD_MEAN, - EC_WORD_TO_ME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, - .name = _("ROSS"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_WAKE_UP, - EC_WORD_MY, - EC_MOVE2(HIDDEN_POWER), - EC_WORD_AND, - EC_MOVE(ASTONISH), - EC_WORD_ME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, - .name = _("EDNA"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_BATTLE_TOWER, - EC_WORD_IS, - EC_WORD_SO, - EC_WORD_ENTERTAINING, - EC_WORD_IT_S, - EC_WORD_AWESOME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUIN_MANIAC, - .name = _("ANTON"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_BLEND, - EC_WORD_THICK_FAT, - EC_WORD_AND, - EC_WORD_CHLOROPHYLL, - EC_WORD_IT_S, - EC_WORD_TASTY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_M, - .name = _("MITCH"), - .teamFlags = 0x81, - .greeting = { - .easyChat = { - EC_WORD_NEXT, - EC_WORD_A, - EC_WORD_GIRL, - EC_WORD_WITH, - EC_WORD_A, - EC_MOVE(SCARY_FACE), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HEX_MANIAC, - .name = _("ROD"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_GIMME, - EC_WORD_A, - EC_WORD_TOUGH, - EC_WORD_BATTLE, - EC_WORD_NOT, - EC_WORD_WIMPY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, - .name = _("RICH"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_TASTY, - EC_WORD_WATER, - EC_WORD_IS, - EC_WORD_HIP_AND, - EC_WORD_HAPPENING, - EC_WORD_YES_SIR_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_M, - .name = _("DANIEL"), - .teamFlags = 0x80, - .greeting = { - .easyChat = { - EC_WORD_GO, - EC_WORD_FOR, - EC_WORD_IT, - EC_WORD_MY, - EC_WORD_LOVEY_DOVEY, - EC_WORD_POKEMON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_F, - .name = _("GLORIA"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_LET_S, - EC_WORD_GET, - EC_WORD_THIS, - EC_WORD_FIERY, - EC_WORD_BATTLE, - EC_WORD_HAPPENING, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GUITARIST, - .name = _("NELSON"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_MUSIC, - EC_WORD_IS, - EC_WORD_MY, - EC_WORD_ALL, - EC_WORD_MY, - EC_WORD_DESTINY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_KINDLER, - .name = _("FERRIS"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_GOOD, - EC_WORD_IT, - EC_WORD_IS, - EC_WORD_SO, - EC_WORD_VERY, - EC_WORD_GOOD, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_AROMA_LADY, - .name = _("AMANDA"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_WHAT, - EC_WORD_KIND, - EC_WORD_OF, - EC_WORD_TRAINER, - EC_WORD_ARE, - EC_WORD_YOU, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, - .name = _("MASON"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_DON_T, - EC_WORD_KNOW, - EC_WORD_HOW, - EC_WORD_TO, - EC_WORD_LOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_DRAGON_TAMER, - .name = _("NATE"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_DRAGON, - EC_WORD_POKEMON, - EC_WORD_ARE, - EC_WORD_ALL, - EC_WORD_THE, - EC_MOVE(RAGE), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LASS, - .name = _("MIRIAM"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_TOO_STRONG, - EC_WORD_SERIOUSLY, - EC_WORD_IT_S, - EC_WORD_BAD, - EC_WORD_NEWS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMANIAC, - .name = _("THEO"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_ADORE, - EC_WORD_MY, - EC_WORD_MEGA, - EC_WORD_CUTE, - EC_WORD_PLUSH_DOLL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, - .name = _("PAMELA"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_HERE_I_COME, - EC_WORD_I_AM, - EC_WORD_THE, - EC_WORD_CUTE, - EC_MOVE2(WATER_SPORT), - EC_WORD_IDOL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_F, - .name = _("ALISSA"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_IT_S, - EC_WORD_A, - EC_WORD_PREPOSTEROUS, - EC_WORD_MATCH, - EC_WORD_I_AM, - EC_WORD_SHOCKED, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GENTLEMAN, - .name = _("ARTHUR"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_PLEASE, - EC_WORD_GIVE, - EC_WORD_ME, - EC_WORD_A, - EC_WORD_GOOD, - EC_WORD_BATTLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_F, - .name = _("MARCY"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_BEAUTIFUL, - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_BEAT, - EC_WORD_ME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, - .name = _("MILLER"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_BATTLE, - EC_WORD_DAILY, - EC_WORD_I, - EC_WORD_WON_T, - EC_WORD_LOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BIRD_KEEPER, - .name = _("OLIVER"), - .teamFlags = 0x11, - .greeting = { - .easyChat = { - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_GIGGLE, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - 0xFFFF, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, - .name = _("MOLLY"), - .teamFlags = 0x12, - .greeting = { - .easyChat = { - EC_WORD_HOW, - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_ON, - EC_WORD_MONDAY, - EC_WORD_MORNING, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_MANIAC, - .name = _("JASON"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_WATER, - EC_WORD_AND, - EC_WORD_BUG, - EC_WORD_POKEMON, - EC_WORD_ARE, - EC_WORD_GREAT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BATTLE_GIRL, - .name = _("AVA"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_WHAT, - EC_WORD_IS, - EC_WORD_THIS, - EC_WORD_PRESSURE, - EC_WORD_ELLIPSIS, - EC_WORD_STATIC, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_FISHERMAN, - .name = _("HANK"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_A, - EC_WORD_KID, - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SAILOR, - .name = _("PETER"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_IT_S, - EC_WORD_SERIOUSLY, - EC_WORD_TERRIBLE, - EC_WORD_I, - EC_WORD_REALLY, - EC_WORD_THINK, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_F, - .name = _("MINDY"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_YOU, - EC_WORD_APPEAR, - EC_WORD_TO, - EC_WORD_TRAIN, - EC_WORD_VERY, - EC_WORD_WELL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_MANIAC, - .name = _("DWIGHT"), - .teamFlags = 0x11, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_STRONG, - EC_WORD_YOU, - EC_WORD_ARE, - EC_WORD_SCARY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, - .name = _("REENA"), - .teamFlags = 0x12, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_ALWAYS, - EC_WORD_LOSE, - EC_WORD_MAYBE, - EC_WORD_TODAY, - EC_WORD_ELLIPSIS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PARASOL_LADY, - .name = _("MEGAN"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_DON_T, - EC_WORD_MAKE, - EC_WORD_THAT, - EC_MOVE(SCARY_FACE), - EC_WORD_AT, - EC_WORD_ME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, - .name = _("SIERRA"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_I_VE, - EC_WORD_RUN, - EC_WORD_A_LOT, - EC_WORD_SO, - EC_WORD_I_AM, - EC_WORD_HEALTHY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, - .name = _("ARNOLD"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_FEELING, - EC_WORD_AWESOME, - EC_WORD_MY, - EC_WORD_POKEMON, - EC_WORD_ROCK, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BLACK_BELT, - .name = _("XIN"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_HOO_HAH, - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_READY, - EC_WORD_TO, - EC_WORD_ROCK, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, - .name = _("KELLY"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_YOU, - EC_WORD_COULDN_T, - EC_WORD_BEAT, - EC_WORD_ME, - EC_WORD_EVER, - EC_WORD_KID, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COLLECTOR, - .name = _("VANCE"), - .teamFlags = 0x80, - .greeting = { - .easyChat = { - EC_WORD_POKEMON, - EC_WORD_ALL, - EC_WORD_OVER, - EC_WORD_THE, - EC_WORD_PLACE, - EC_WORD_WOWEE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, - .name = _("TOBY"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_THIS, - EC_WORD_ISN_T, - EC_WORD_SPORTS, - EC_WORD_IT_S, - EC_WORD_A, - EC_WORD_BATTLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GENTLEMAN, - .name = _("NORTON"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_HAVE, - EC_WORD_TO, - EC_WORD_WIN, - EC_WORD_PLEASE, - EC_WORD_LOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BATTLE_GIRL, - .name = _("ZOE"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_THIS, - EC_WORD_IS, - EC_WORD_SCARY, - EC_WORD_PLEASE, - EC_WORD_BE, - EC_WORD_NICE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BEAUTY, - .name = _("EMMA"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_DON_T, - EC_WORD_YOU, - EC_MOVE(FLAIL), - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_MOVE(WITHDRAW), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HIKER, - .name = _("VINCE"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_YAHOO, - EC_WORD_YAHOO, - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_LISTENING, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_M, - .name = _("MARV"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_LEARN, - EC_WORD_TO, - EC_WORD_BATTLE, - EC_WORD_THE, - EC_WORD_CORRECT, - EC_WORD_WAY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, - .name = _("TODD"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_THE, - EC_WORD_WAY, - EC_WORD_YOU, - EC_WORD_BATTLE, - EC_WORD_IT_S, - EC_WORD_CHILD_S_PLAY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GUITARIST, - .name = _("GAVIN"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_BABY, - EC_WORD_BABY, - EC_WORD_BABY, - EC_WORD_ROCK, - EC_WORD_ME, - EC_WORD_HARD, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_M, - .name = _("QUINN"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_HAVE, - EC_WORD_A, - EC_WORD_STICKY_HOLD, - EC_WORD_ON, - EC_WORD_YOU, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, - .name = _("JENN"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_ON, - EC_WORD_A, - EC_WORD_TOUGH, - EC_WORD_TRAINER, - EC_WORD_SEARCH, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_M, - .name = _("JOEL"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_BELIEVE, - EC_WORD_IN, - EC_WORD_YOUR, - EC_WORD_POKEMON, - EC_WORD_AND, - EC_WORD_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_DRAGON_TAMER, - .name = _("KYLE"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_LIKE, - EC_WORD_A, - EC_WORD_GIRL, - EC_WORD_WITH, - EC_MOVE2(FORESIGHT), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, - .name = _("BRET"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_TAKE, - EC_WORD_MY, - EC_WORD_OVERWHELMING, - EC_WORD_POWER, - EC_WORD_AND, - EC_WORD_DISAPPEAR, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_F, - .name = _("CARRIE"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_TRAINER, - EC_WORD_I, - EC_WORD_SEE, - EC_WORD_YOU, - EC_WORD_ARE, - EC_WORD_CAPABLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LADY, - .name = _("GILLIAN"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_COME_ON, - EC_WORD_SHOW, - EC_WORD_ME, - EC_WORD_AN, - EC_WORD_EXCELLENT, - EC_WORD_TIME, - }, - }, - }, + { + .trainerClass = FACILITY_CLASS_YOUNGSTER, + .name = _("ALVIN"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_QUES, + EC_WORD_HERE_I_COME, + EC_WORD_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, + .name = _("DIRK"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_OKAY, + EC_WORD_I_AM, + EC_WORD_GOING, + EC_WORD_FOR, + EC_WORD_IT, + EC_WORD_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_LADY, + .name = _("CYBIL"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_A, + EC_WORD_PUSHOVER, + EC_WORD_LET_S, + EC_WORD_GET, + EC_WORD_GOING, + }, + }, + { + .trainerClass = FACILITY_CLASS_BLACK_BELT, + .name = _("CHEN"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_MY, + EC_WORD_SPIRIT, + EC_WORD_IS, + EC_WORD_ENOUGH, + EC_WORD_SNORT, + EC_WORD_ARRGH, + }, + }, + { + .trainerClass = FACILITY_CLASS_NINJA_BOY, + .name = _("YOSHI"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_GO, + EC_WORD_MY, + EC_WORD_POKEMON, + EC_WORD_FIGHT, + EC_WORD_THE, + EC_WORD_BATTLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, + .name = _("TINA"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_STUDY, + EC_WORD_IS, + EC_WORD_BORING, + EC_WORD_LET_S, + EC_WORD_BATTLE, + EC_WORD_NOW, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_MANIAC, + .name = _("COREY"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_HEY, + EC_WORD_I, + EC_WORD_WILL, + EC_MOVE2(TRANSFORM), + EC_WORD_FOR, + EC_MOVE(STRENGTH), + }, + }, + { + .trainerClass = FACILITY_CLASS_FISHERMAN, + .name = _("GORDON"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I, + EC_WORD_NEED, + EC_WORD_A, + EC_WORD_VACATION, + EC_WORD_RIGHT, + EC_WORD_NOW, + }, + }, + { + .trainerClass = FACILITY_CLASS_TUBER_F, + .name = _("ANN"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_WE, + EC_WORD_ALL, + EC_WORD_ADORE, + EC_WORD_POKEMON, + EC_WORD_ABSOLUTELY, + EC_WORD_TRULY, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_F, + .name = _("JULIA"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_I_AM, + EC_WORD_A, + EC_WORD_CUTE, + EC_WORD_LADY, + EC_WORD_YES, + EC_WORD_I_AM, + }, + }, + { + .trainerClass = FACILITY_CLASS_GENTLEMAN, + .name = _("GREGORY"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I, + EC_WORD_THINK, + EC_WORD_WE, + EC_WORD_SHOULD, + EC_WORD_START, + EC_WORD_TODAY, + }, + }, + { + .trainerClass = FACILITY_CLASS_CAMPER, + .name = _("KEITH"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_MY, + EC_WORD_FRIEND, + EC_WORD_FROM, + EC_WORD_NOW, + EC_WORD_ON, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, + .name = _("KENDRA"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_I_AM, + EC_MOVE(SWIFT), + EC_WORD_HOW, + EC_WORD_ABOUT, + EC_WORD_YOU, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_HIKER, + .name = _("DEV"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_WAHAHAHA, + EC_WORD_I_AM, + EC_WORD_FEELING, + EC_WORD_LIKE, + EC_WORD_IT_S, + EC_MOVE2(PAY_DAY), + }, + }, + { + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, + .name = _("CASSIE"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_STRONG, + EC_WORD_AREN_T, + 0xFFFF, + EC_WORD_YOU, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_M, + .name = _("JULIAN"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_FUFUFU, + 0xFFFF, + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_WIN, + EC_WORD_KID, + }, + }, + { + .trainerClass = FACILITY_CLASS_LASS, + .name = _("JOYCE"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_BE, + EC_WORD_KIND, + EC_WORD_TO, + EC_WORD_THE, + EC_WORD_DIGITAL, + EC_WORD_IDOL, + }, + }, + { + .trainerClass = FACILITY_CLASS_GUITARIST, + .name = _("LES"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I_AM, + EC_WORD_GREAT, + EC_WORD_YOU_RE, + EC_WORD_JUST, + EC_WORD_RATHER, + EC_WORD_OKAY, + }, + }, + { + .trainerClass = FACILITY_CLASS_RICH_BOY, + .name = _("CLINTON"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I, + EC_WORD_HAVE, + EC_WORD_ROUGH_SKIN, + EC_WORD_I, + EC_WORD_NEED, + EC_WORD_NATURAL_CURE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_CATCHER, + .name = _("LEWIS"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_THIS, + EC_WORD_IS, + EC_WORD_EXCITING, + EC_WORD_CAN, + EC_WORD_I, + EC_WORD_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_PICNICKER, + .name = _("RACHAEL"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_I, + EC_WORD_LIKE, + EC_WORD_WALKING, + EC_WORD_WITH, + EC_WORD_MY, + EC_WORD_POKEMON, + }, + }, + { + .trainerClass = FACILITY_CLASS_COLLECTOR, + .name = _("HAROLD"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_HERE, + EC_WORD_THEY, + EC_WORD_COME, + EC_WORD_MY, + EC_MOVE2(SUPERPOWER), + EC_WORD_POKEMON, + }, + }, + { + .trainerClass = FACILITY_CLASS_TUBER_M, + .name = _("KIPP"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I_AM, + EC_WORD_A, + EC_WORD_GENIUS, + EC_WORD_I, + EC_WORD_SHOULD, + EC_WORD_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_KINDLER, + .name = _("IRWIN"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_YOU, + EC_WORD_WILL, + EC_WORD_BE, + EC_WORD_FEELING, + EC_WORD_MY, + EC_WORD_FIRE, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_F, + .name = _("EILEEN"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_I, + EC_WORD_WILL, + EC_MOVE(ASTONISH), + EC_WORD_YOU, + EC_WORD_IN, + EC_WORD_BATTLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_F, + .name = _("ANNE"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_SORRY, + EC_WORD_BUT, + EC_WORD_YOU, + EC_WORD_WILL, + EC_WORD_NOT, + EC_WORD_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, + .name = _("RUTH"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_A, + EC_WORD_STRONG, + EC_WORD_GIRL, + EC_WORD_WANTS, + EC_WORD_TOUGH, + EC_WORD_POKEMON, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMANIAC, + .name = _("JEREMY"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_MY, + EC_WORD_POKEMON, + EC_WORD_ARE, + EC_WORD_COOL, + EC_WORD_YOURS, + EC_WORD_CAN_T_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_SAILOR, + .name = _("TREVOR"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_MY, + EC_WORD_OPPONENT, + EC_WORD_IS, + EC_WORD_FINALLY, + EC_WORD_HERE, + EC_WORD_EXCELLENT, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, + .name = _("COLETTE"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_I, + EC_WORD_AM, + EC_WORD_HUNGRY, + EC_MOVE2(POUND), + EC_WORD_MY, + EC_MOVE2(BELLY_DRUM), + }, + }, + { + .trainerClass = FACILITY_CLASS_HEX_MANIAC, + .name = _("PAULA"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_IT_S, + EC_WORD_HARD, + EC_WORD_TO, + EC_WORD_TAKE, + EC_WORD_UGLY, + EC_MOVE(SPITE), + }, + }, + { + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, + .name = _("STANLY"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_ADVENTURE, + EC_WORD_AND, + EC_WORD_BATTLE, + EC_WORD_ARE, + EC_WORD_MY, + EC_WORD_LIKES, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + .name = _("TROY"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_LOSE, + EC_WORD_TO, + EC_WORD_A, + EC_WORD_KID, + }, + }, + { + .trainerClass = FACILITY_CLASS_SCHOOL_KID_M, + .name = _("ED"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_POKEMON, + EC_WORD_DAILY, + EC_WORD_AT, + EC_WORD_SCHOOL, + EC_WORD_IT_S, + EC_WORD_AWESOME, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, + .name = _("ELLEN"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_KIND, + EC_WORD_TO, + EC_WORD_YOUR, + EC_WORD_POKEMON, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_M, + .name = _("ARNIE"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_I, + EC_WORD_BATTLE, + EC_WORD_SERIOUSLY, + EC_WORD_BEAUTIFUL, + EC_WORD_YOU, + EC_MOVE(DIG), + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, + .name = _("HAL"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_BOY, + EC_WORD_I_AM, + EC_WORD_TIRED, + EC_WORD_READY, + EC_WORD_FOR, + EC_WORD_SLEEP, + }, + }, + { + .trainerClass = FACILITY_CLASS_BEAUTY, + .name = _("LAUREN"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_A, + EC_WORD_TRAINER, + EC_WORD_LIKE, + EC_WORD_YOU, + EC_WORD_IS, + EC_WORD_EXCITING, + }, + }, + { + .trainerClass = FACILITY_CLASS_AROMA_LADY, + .name = _("STACY"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_HAVE, + EC_WORD_YOU, + EC_WORD_A, + EC_WORD_STENCH, + EC_WORD_OR, + EC_MOVE(SWEET_SCENT), + }, + }, + { + .trainerClass = FACILITY_CLASS_COLLECTOR, + .name = _("DARYL"), + .teamFlags = 0x81, + .greeting = { + EC_WORD_YOUR, + EC_WORD_POKEMON, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_I, + EC_WORD_WANT, + EC_WORD_IT, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + .name = _("KATHY"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_I, + EC_WORD_WILL, + EC_WORD_TRY, + EC_WORD_MY, + EC_WORD_BEST, + EC_WORD_TODAY, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, + .name = _("HARRIS"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_WAAAH, + EC_WORD_WAAAH, + EC_WORD_WAAAH, + EC_WORD_WAAAH, + EC_WORD_EHEHE, + EC_MOVE(FAKE_TEARS), + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_M, + .name = _("GLENN"), + .teamFlags = 0x80, + .greeting = { + EC_WORD_LISTEN, + EC_WORD_TO, + EC_WORD_MY, + EC_WORD_LOUSY, + EC_WORD_ANIME, + EC_WORD_SONG, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, + .name = _("NICO"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_DON_T, + EC_WORD_JUST, + EC_WORD_BATTLE, + EC_WORD_DO, + EC_WORD_SOMETHING, + EC_WORD_ELSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, + .name = _("BAILEY"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_BUSY, + EC_WORD_GET, + EC_WORD_WITH, + EC_WORD_IT, + }, + }, + { + .trainerClass = FACILITY_CLASS_PARASOL_LADY, + .name = _("ABBIE"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_THE, + EC_MOVE(MORNING_SUN), + EC_WORD_HAS, + EC_WORD_SO, + EC_WORD_MUCH, + EC_MOVE(COSMIC_POWER), + }, + }, + { + .trainerClass = FACILITY_CLASS_CAMPER, + .name = _("AL"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_LET_S, + EC_WORD_HAVE, + EC_WORD_AN, + EC_WORD_EXCITING, + EC_WORD_BATTLE, + EC_WORD_YEEHAW_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, + .name = _("PEGGY"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_I, + EC_WORD_WANT, + EC_WORD_TO, + EC_WORD_SEE, + EC_WORD_SOME, + EC_MOVE(GROWTH), + }, + }, + { + .trainerClass = FACILITY_CLASS_BEAUTY, + .name = _("NAOMI"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_IT, + EC_WORD_WAS, + EC_WORD_GREAT, + EC_WORD_TO, + EC_WORD_BE, + EC_WORD_YOUNG, + }, + }, + { + .trainerClass = FACILITY_CLASS_NINJA_BOY, + .name = _("KENJI"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_PLEASE, + 0xFFFF, + EC_WORD_DON_T, + EC_WORD_BE, + EC_WORD_MEAN, + EC_WORD_TO_ME, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, + .name = _("ROSS"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_WAKE_UP, + EC_WORD_MY, + EC_MOVE2(HIDDEN_POWER), + EC_WORD_AND, + EC_MOVE(ASTONISH), + EC_WORD_ME, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, + .name = _("EDNA"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_BATTLE_TOWER, + EC_WORD_IS, + EC_WORD_SO, + EC_WORD_ENTERTAINING, + EC_WORD_IT_S, + EC_WORD_AWESOME, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, + .name = _("ANTON"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_BLEND, + EC_WORD_THICK_FAT, + EC_WORD_AND, + EC_WORD_CHLOROPHYLL, + EC_WORD_IT_S, + EC_WORD_TASTY, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_M, + .name = _("MITCH"), + .teamFlags = 0x81, + .greeting = { + EC_WORD_NEXT, + EC_WORD_A, + EC_WORD_GIRL, + EC_WORD_WITH, + EC_WORD_A, + EC_MOVE(SCARY_FACE), + }, + }, + { + .trainerClass = FACILITY_CLASS_HEX_MANIAC, + .name = _("ROD"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_GIMME, + EC_WORD_A, + EC_WORD_TOUGH, + EC_WORD_BATTLE, + EC_WORD_NOT, + EC_WORD_WIMPY, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, + .name = _("RICH"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_TASTY, + EC_WORD_WATER, + EC_WORD_IS, + EC_WORD_HIP_AND, + EC_WORD_HAPPENING, + EC_WORD_YES_SIR_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_M, + .name = _("DANIEL"), + .teamFlags = 0x80, + .greeting = { + EC_WORD_GO, + EC_WORD_FOR, + EC_WORD_IT, + EC_WORD_MY, + EC_WORD_LOVEY_DOVEY, + EC_WORD_POKEMON, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_F, + .name = _("GLORIA"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_LET_S, + EC_WORD_GET, + EC_WORD_THIS, + EC_WORD_FIERY, + EC_WORD_BATTLE, + EC_WORD_HAPPENING, + }, + }, + { + .trainerClass = FACILITY_CLASS_GUITARIST, + .name = _("NELSON"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_MUSIC, + EC_WORD_IS, + EC_WORD_MY, + EC_WORD_ALL, + EC_WORD_MY, + EC_WORD_DESTINY, + }, + }, + { + .trainerClass = FACILITY_CLASS_KINDLER, + .name = _("FERRIS"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_GOOD, + EC_WORD_IT, + EC_WORD_IS, + EC_WORD_SO, + EC_WORD_VERY, + EC_WORD_GOOD, + }, + }, + { + .trainerClass = FACILITY_CLASS_AROMA_LADY, + .name = _("AMANDA"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_WHAT, + EC_WORD_KIND, + EC_WORD_OF, + EC_WORD_TRAINER, + EC_WORD_ARE, + EC_WORD_YOU, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + .name = _("MASON"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_I, + EC_WORD_DON_T, + EC_WORD_KNOW, + EC_WORD_HOW, + EC_WORD_TO, + EC_WORD_LOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, + .name = _("NATE"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_DRAGON, + EC_WORD_POKEMON, + EC_WORD_ARE, + EC_WORD_ALL, + EC_WORD_THE, + EC_MOVE(RAGE), + }, + }, + { + .trainerClass = FACILITY_CLASS_LASS, + .name = _("MIRIAM"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_TOO_STRONG, + EC_WORD_SERIOUSLY, + EC_WORD_IT_S, + EC_WORD_BAD, + EC_WORD_NEWS, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMANIAC, + .name = _("THEO"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_I, + EC_WORD_ADORE, + EC_WORD_MY, + EC_WORD_MEGA, + EC_WORD_CUTE, + EC_WORD_PLUSH_DOLL, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + .name = _("PAMELA"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_HERE_I_COME, + EC_WORD_I_AM, + EC_WORD_THE, + EC_WORD_CUTE, + EC_MOVE2(WATER_SPORT), + EC_WORD_IDOL, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_F, + .name = _("ALISSA"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_IT_S, + EC_WORD_A, + EC_WORD_PREPOSTEROUS, + EC_WORD_MATCH, + EC_WORD_I_AM, + EC_WORD_SHOCKED, + }, + }, + { + .trainerClass = FACILITY_CLASS_GENTLEMAN, + .name = _("ARTHUR"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_PLEASE, + EC_WORD_GIVE, + EC_WORD_ME, + EC_WORD_A, + EC_WORD_GOOD, + EC_WORD_BATTLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_F, + .name = _("MARCY"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_I_AM, + EC_WORD_BEAUTIFUL, + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_BEAT, + EC_WORD_ME, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, + .name = _("MILLER"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_I, + EC_WORD_BATTLE, + EC_WORD_DAILY, + EC_WORD_I, + EC_WORD_WON_T, + EC_WORD_LOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, + .name = _("OLIVER"), + .teamFlags = 0x11, + .greeting = { + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_GIGGLE, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + 0xFFFF, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, + .name = _("MOLLY"), + .teamFlags = 0x12, + .greeting = { + EC_WORD_HOW, + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_ON, + EC_WORD_MONDAY, + EC_WORD_MORNING, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_MANIAC, + .name = _("JASON"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_WATER, + EC_WORD_AND, + EC_WORD_BUG, + EC_WORD_POKEMON, + EC_WORD_ARE, + EC_WORD_GREAT, + }, + }, + { + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, + .name = _("AVA"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_WHAT, + EC_WORD_IS, + EC_WORD_THIS, + EC_WORD_PRESSURE, + EC_WORD_ELLIPSIS, + EC_WORD_STATIC, + }, + }, + { + .trainerClass = FACILITY_CLASS_FISHERMAN, + .name = _("HANK"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_A, + EC_WORD_KID, + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_SAILOR, + .name = _("PETER"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_IT_S, + EC_WORD_SERIOUSLY, + EC_WORD_TERRIBLE, + EC_WORD_I, + EC_WORD_REALLY, + EC_WORD_THINK, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_F, + .name = _("MINDY"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_YOU, + EC_WORD_APPEAR, + EC_WORD_TO, + EC_WORD_TRAIN, + EC_WORD_VERY, + EC_WORD_WELL, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_MANIAC, + .name = _("DWIGHT"), + .teamFlags = 0x11, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_STRONG, + EC_WORD_YOU, + EC_WORD_ARE, + EC_WORD_SCARY, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, + .name = _("REENA"), + .teamFlags = 0x12, + .greeting = { + EC_WORD_I, + EC_WORD_ALWAYS, + EC_WORD_LOSE, + EC_WORD_MAYBE, + EC_WORD_TODAY, + EC_WORD_ELLIPSIS, + }, + }, + { + .trainerClass = FACILITY_CLASS_PARASOL_LADY, + .name = _("MEGAN"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_DON_T, + EC_WORD_MAKE, + EC_WORD_THAT, + EC_MOVE(SCARY_FACE), + EC_WORD_AT, + EC_WORD_ME, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, + .name = _("SIERRA"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_I_VE, + EC_WORD_RUN, + EC_WORD_A_LOT, + EC_WORD_SO, + EC_WORD_I_AM, + EC_WORD_HEALTHY, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, + .name = _("ARNOLD"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_I_AM, + EC_WORD_FEELING, + EC_WORD_AWESOME, + EC_WORD_MY, + EC_WORD_POKEMON, + EC_WORD_ROCK, + }, + }, + { + .trainerClass = FACILITY_CLASS_BLACK_BELT, + .name = _("XIN"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_HOO_HAH, + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_TO, + EC_WORD_ROCK, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, + .name = _("KELLY"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_YOU, + EC_WORD_COULDN_T, + EC_WORD_BEAT, + EC_WORD_ME, + EC_WORD_EVER, + EC_WORD_KID, + }, + }, + { + .trainerClass = FACILITY_CLASS_COLLECTOR, + .name = _("VANCE"), + .teamFlags = 0x80, + .greeting = { + EC_WORD_POKEMON, + EC_WORD_ALL, + EC_WORD_OVER, + EC_WORD_THE, + EC_WORD_PLACE, + EC_WORD_WOWEE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + .name = _("TOBY"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_THIS, + EC_WORD_ISN_T, + EC_WORD_SPORTS, + EC_WORD_IT_S, + EC_WORD_A, + EC_WORD_BATTLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_GENTLEMAN, + .name = _("NORTON"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_I, + EC_WORD_HAVE, + EC_WORD_TO, + EC_WORD_WIN, + EC_WORD_PLEASE, + EC_WORD_LOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, + .name = _("ZOE"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_THIS, + EC_WORD_IS, + EC_WORD_SCARY, + EC_WORD_PLEASE, + EC_WORD_BE, + EC_WORD_NICE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BEAUTY, + .name = _("EMMA"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_DON_T, + EC_WORD_YOU, + EC_MOVE(FLAIL), + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_MOVE(WITHDRAW), + }, + }, + { + .trainerClass = FACILITY_CLASS_HIKER, + .name = _("VINCE"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_YAHOO, + EC_WORD_YAHOO, + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_LISTENING, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_M, + .name = _("MARV"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_LEARN, + EC_WORD_TO, + EC_WORD_BATTLE, + EC_WORD_THE, + EC_WORD_CORRECT, + EC_WORD_WAY, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, + .name = _("TODD"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_THE, + EC_WORD_WAY, + EC_WORD_YOU, + EC_WORD_BATTLE, + EC_WORD_IT_S, + EC_WORD_CHILD_S_PLAY, + }, + }, + { + .trainerClass = FACILITY_CLASS_GUITARIST, + .name = _("GAVIN"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_BABY, + EC_WORD_BABY, + EC_WORD_BABY, + EC_WORD_ROCK, + EC_WORD_ME, + EC_WORD_HARD, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_M, + .name = _("QUINN"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_I, + EC_WORD_HAVE, + EC_WORD_A, + EC_WORD_STICKY_HOLD, + EC_WORD_ON, + EC_WORD_YOU, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, + .name = _("JENN"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_I_AM, + EC_WORD_ON, + EC_WORD_A, + EC_WORD_TOUGH, + EC_WORD_TRAINER, + EC_WORD_SEARCH, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_M, + .name = _("JOEL"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_BELIEVE, + EC_WORD_IN, + EC_WORD_YOUR, + EC_WORD_POKEMON, + EC_WORD_AND, + EC_WORD_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, + .name = _("KYLE"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_I, + EC_WORD_LIKE, + EC_WORD_A, + EC_WORD_GIRL, + EC_WORD_WITH, + EC_MOVE2(FORESIGHT), + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, + .name = _("BRET"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_TAKE, + EC_WORD_MY, + EC_WORD_OVERWHELMING, + EC_WORD_POWER, + EC_WORD_AND, + EC_WORD_DISAPPEAR, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_F, + .name = _("CARRIE"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_TRAINER, + EC_WORD_I, + EC_WORD_SEE, + EC_WORD_YOU, + EC_WORD_ARE, + EC_WORD_CAPABLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_LADY, + .name = _("GILLIAN"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_COME_ON, + EC_WORD_SHOW, + EC_WORD_ME, + EC_WORD_AN, + EC_WORD_EXCELLENT, + EC_WORD_TIME, + }, + }, }; diff --git a/src/data/battle_tower/trainers_de.h b/src/data/battle_tower/trainers_de.h index db226c6a6..71f301975 100644 --- a/src/data/battle_tower/trainers_de.h +++ b/src/data/battle_tower/trainers_de.h @@ -1,1503 +1,1303 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = { - { - .trainerClass = FACILITY_CLASS_YOUNGSTER, - .name = _("ALWIN"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_READY, - EC_WORD_QUES, - EC_WORD_HERE_I_COME, - EC_WORD_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BIRD_KEEPER, - .name = _("DIRK"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_OH_KAY, - EC_WORD_I_AM, - EC_WORD_READY, - EC_WORD_EXCL, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LADY, - .name = _("SIBILLE"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_THAT, - EC_WORD_BECOMES, - EC_WORD_A, - EC_WORD_CHILD_S_PLAY, - EC_WORD_GO, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BLACK_BELT, - .name = _("OLAF"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_GHOST, - EC_WORD_IS, - EC_WORD_FULL, - EC_WORD_TOUGHNESS, - EC_WORD_SNORT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_NINJA_BOY, - .name = _("JOST"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_GO, - EC_WORD_WHO_WAS, - EC_WORD_POKEMON, - EC_WORD_FIGHT, - EC_WORD_FIGHT, - EC_WORD_FIGHT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, - .name = _("TINA"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_STUDY, - EC_WORD_IS, - EC_WORD_BORING, - EC_WORD_LET_S, - EC_WORD_BETTER, - EC_WORD_FIGHT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_MANIAC, - .name = _("HAJO"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_TOUGHNESS, - EC_WORD_AND, - EC_MOVE2(TRANSFORM), - EC_WORD_WILL, - EC_WORD_BABE, - EC_WORD_FAINT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_FISHERMAN, - .name = _("GEORG"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_IT, - EC_WORD_GOES, - EC_WORD_NOTHING, - EC_WORD_OVER, - EC_WORD_FISHING, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_TUBER_F, - .name = _("ANNE"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_POKEMON, - EC_WORD_MUST_BE, - EC_WORD_MAN, - EC_WORD_SIMPLE, - EC_WORD_ADORE, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_F, - .name = _("JULIA"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_CUTE, - EC_WORD_I_AM, - EC_WORD_QUITE, - EC_WORD_AN, - EC_WORD_LADY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GENTLEMAN, - .name = _("JOHANN"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_THE, - EC_WORD_DAY, - EC_WORD_IS, - EC_WORD_PERFECT, - EC_WORD_FOR, - EC_WORD_BATTLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CAMPER, - .name = _("KARL"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_NOW, - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_MY, - EC_WORD_FRIEND, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, - .name = _("KENDRA"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_SMART, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_AND, - EC_WORD_YOU, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HIKER, - .name = _("DAVID"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_WAHAHAHA, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_TODAY, - EC_WORD_IS, - EC_MOVE2(PAY_DAY), - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BATTLE_GIRL, - .name = _("KEA"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_TOUGH, - EC_WORD_OR, - EC_WORD_QUES, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_M, - .name = _("JULIAN"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_FUFUFU, - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_DON_T, - EC_WORD_WINS, - EC_WORD_KID, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LASS, - .name = _("JOSI"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_BE, - EC_WORD_KIND, - EC_WORD_TO, - EC_WORD_GIRL, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GUITARIST, - .name = _("LEIF"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_GREAT, - EC_WORD_YOU_RE, - EC_WORD_RATHER, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_OKAY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RICH_BOY, - .name = _("INGO"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_HAVE, - EC_WORD_ROUGH_SKIN, - EC_WORD_NATURAL_CURE, - EC_WORD_IS, - EC_WORD_ALL_RIGHT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_CATCHER, - .name = _("LUDWIG"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_IF_I_WIN, - EC_WORD_IS, - EC_WORD_THAT, - EC_WORD_EXCITING, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PICNICKER, - .name = _("RAJA"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_WITH, - EC_WORD_POKEMON, - EC_WORD_TO, - EC_WORD_WALKING, - EC_WORD_IS, - EC_WORD_GREAT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COLLECTOR, - .name = _("HARALD"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_HERE_GOES, - EC_WORD_MY, - EC_WORD_HUGE_POWER, - 0xFFFF, - EC_WORD_POKEMON, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_TUBER_M, - .name = _("KIM"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_A, - EC_WORD_GENIUS, - EC_WORD_WE, - EC_WORD_WILL, - EC_WORD_WINS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_KINDLER, - .name = _("ERWIN"), - .teamFlags = 0x05, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_FIRE, - EC_WORD_IS, - EC_WORD_VERY, - EC_WORD_HOT, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_F, - .name = _("EIKA"), - .teamFlags = 0x0A, - .greeting = { - .easyChat = { - EC_WORD_FIGHTING, - EC_MOVE(ASTONISH), - EC_WORD_AND, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_F, - .name = _("ANNINA"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_SORRY, - EC_WORD_YOURS, - EC_WORD_POKEMON, - EC_WORD_WILL, - EC_WORD_DON_T, - EC_WORD_WINS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, - .name = _("RUTH"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_TOUGH, - EC_WORD_WHO_WAS, - EC_WORD_POKEMON, - EC_WORD_TOO, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMANIAC, - .name = _("JENS"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_WHO_WAS, - EC_WORD_POKEMON, - EC_WORD_THOSE, - EC_WORD_COOL, - EC_WORD_YOURS, - EC_WORD_LOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SAILOR, - .name = _("TITUS"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_FOE, - EC_WORD_IS, - EC_WORD_FINALLY, - EC_WORD_HERE, - EC_WORD_EXCELLENT, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, - .name = _("NICOLA"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_VORACIOUS, - EC_MOVE2(POUND), - EC_WORD_AND, - EC_MOVE2(BELLY_DRUM), - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HEX_MANIAC, - .name = _("PAULA"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_IS_IT_QUES, - EC_WORD_THOSE_ARE, - EC_WORD_UGLY, - EC_MOVE(SPITE), - EC_WORD_TO, - EC_WORD_TAKE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUIN_MANIAC, - .name = _("SÖREN"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_ADVENTURE, - EC_WORD_AND, - EC_WORD_BATTLE, - EC_WORD_THOSE, - EC_WORD_WHO_WAS, - EC_WORD_LIKES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, - .name = _("RAINER"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_WE, - EC_WORD_CAN, - EC_WORD_VERSUS, - EC_WORD_CHILDREN, - EC_WORD_DON_T, - EC_WORD_LOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SCHOOL_KID_M, - .name = _("FABIAN"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_DAILY, - EC_WORD_POKEMON, - EC_WORD_IN, - EC_WORD_THE, - EC_WORD_SCHOOL, - EC_WORD_AWESOME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, - .name = _("ELLEN"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_ALL_RIGHT, - EC_WORD_TO, - EC_WORD_POKEMON, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_M, - .name = _("ARNIE"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_FIGHTING, - EC_WORD_IS, - EC_WORD_PERFECTION, - EC_WORD_YOUR, - EC_WORD_USELESS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, - .name = _("HARDI"), - .teamFlags = 0x09, - .greeting = { - .easyChat = { - EC_WORD_BOY, - EC_WORD_I_AM, - EC_WORD_MAYBE, - EC_WORD_TIRED, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BEAUTY, - .name = _("LINA"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_A, - EC_WORD_TRAINER, - EC_WORD_HOW_DO, - EC_WORD_YOU, - EC_WORD_IS, - EC_WORD_EXCITING, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_AROMA_LADY, - .name = _("SELINA"), - .teamFlags = 0x06, - .greeting = { - .easyChat = { - EC_WORD_YOU_VE, - EC_WORD_STENCH, - EC_WORD_OR, - EC_MOVE(SWEET_SCENT), - EC_WORD_QUES, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COLLECTOR, - .name = _("DANTE"), - .teamFlags = 0x81, - .greeting = { - .easyChat = { - EC_WORD_YOURS, - EC_WORD_POKEMON, - EC_WORD_I, - EC_WORD_WANTS, - EC_WORD_SHE, - EC_WORD_EXCL_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, - .name = _("KATJA"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_TODAY, - EC_WORD_WANTS, - EC_WORD_I, - EC_WORD_MY, - EC_WORD_BEST, - EC_WORD_GIVE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, - .name = _("HORST"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_WAAAH, - EC_WORD_WAAAH, - EC_WORD_WAAAH, - EC_WORD_WAAAH, - EC_WORD_EHEHE, - EC_MOVE(FAKE_TEARS), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_M, - .name = _("GERRIT"), - .teamFlags = 0x80, - .greeting = { - .easyChat = { - EC_WORD_MY, - EC_WORD_ANIME, - EC_WORD_SONG, - EC_WORD_IS, - EC_WORD_DON_T, - EC_WORD_LOUSY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, - .name = _("NIKO"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_BATTLE, - EC_WORD_DON_T, - EC_WORD_JUST, - EC_WORD_DO, - EC_WORD_SOMETHING, - EC_WORD_ELSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, - .name = _("BALDO"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_BUSY, - EC_WORD_HAS, - EC_WORD_THAT, - EC_WORD_TIME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PARASOL_LADY, - .name = _("ALMA"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_THAT, - EC_MOVE(MORNING_SUN), - EC_WORD_HAS, - EC_WORD_SO, - EC_WORD_A_LOT, - EC_MOVE(COSMIC_POWER), - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CAMPER, - .name = _("ADAM"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_EXCITING, - EC_WORD_BATTLE, - EC_WORD_THOSE, - EC_WORD_GREAT, - EC_WORD_YEEHAW_EXCL, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, - .name = _("GRETE"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_WANTS, - EC_WORD_SOMETHING, - EC_MOVE(GROWTH), - EC_WORD_WORKS, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BEAUTY, - .name = _("NAOMI"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_IT, - EC_WORD_WAS, - EC_WORD_GREAT, - EC_WORD_YOUNG, - EC_WORD_TO, - EC_WORD_HIS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_NINJA_BOY, - .name = _("KENO"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_PLEASE, - EC_WORD_BE, - EC_WORD_DON_T, - EC_WORD_SO, - EC_WORD_MEAN, - EC_WORD_TO_ME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, - .name = _("REMUS"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_WAKES_UP, - EC_MOVE2(HIDDEN_POWER), - EC_WORD_AND, - EC_MOVE(ASTONISH), - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, - .name = _("EDITH"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_THE, - EC_WORD_BATTLE_TOWER, - EC_WORD_IS, - EC_WORD_SO, - EC_WORD_ENTERTAINING, - EC_WORD_AWESOME, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUIN_MANIAC, - .name = _("ANTON"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_THICK_FAT, - EC_WORD_AND, - EC_WORD_CHLOROPHYLL, - EC_WORD_BLEND, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_TASTY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_M, - .name = _("MALTE"), - .teamFlags = 0x81, - .greeting = { - .easyChat = { - EC_WORD_AN, - EC_MOVE(SCARY_FACE), - EC_WORD_IS, - EC_WORD_DON_T, - EC_WORD_QUITE, - EC_WORD_TERRIBLE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HEX_MANIAC, - .name = _("RAOUL"), - .teamFlags = 0x42, - .greeting = { - .easyChat = { - EC_WORD_RUN_AWAY, - EC_WORD_GIVE_ME, - EC_WORD_SON, - EC_WORD_BEST, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, - .name = _("RICK"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_WATER, - EC_WORD_IS, - EC_WORD_TASTY, - EC_WORD_HIP_AND, - EC_WORD_REFRESHING, - EC_WORD_YES_SIR_EXCL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_M, - .name = _("DENNIS"), - .teamFlags = 0x80, - .greeting = { - .easyChat = { - EC_WORD_GO, - EC_WORD_WHO_WAS, - EC_WORD_POKEMON, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_F, - .name = _("GLORIA"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_THE, - EC_WORD_FIGHTING, - EC_WORD_MUST_BE, - EC_WORD_HOT, - EC_WORD_HIS, - EC_WORD_FIERY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GUITARIST, - .name = _("NINO"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_MUSIC, - EC_WORD_IS, - EC_WORD_MY, - EC_WORD_EVERY, - EC_WORD_MY, - EC_WORD_DESTINY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_KINDLER, - .name = _("FIETE"), - .teamFlags = 0x41, - .greeting = { - .easyChat = { - EC_WORD_IT_S, - EC_WORD_ALL_RIGHT, - EC_WORD_VERY, - EC_WORD_ALL_RIGHT, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_AROMA_LADY, - .name = _("AMANDA"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_WHAT, - EC_WORD_FOR, - EC_WORD_A, - EC_WORD_TRAINER, - EC_WORD_ARE, - EC_WORD_YOU, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, - .name = _("MAREK"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_WE_VE, - EC_WORD_UNTIL, - EC_WORD_NOW, - EC_WORD_TOTALLY, - EC_WORD_NEVER, - EC_WORD_LOST, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_DRAGON_TAMER, - .name = _("NATHAN"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_DRAGON, - 0xFFFF, - EC_WORD_POKEMON, - EC_WORD_THOSE, - EC_WORD_FANTASTIC, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LASS, - .name = _("MIRIAM"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_QUITE, - EC_WORD_TOO_STRONG, - EC_WORD_AM, - EC_WORD_BAD, - EC_WORD_NEWS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMANIAC, - .name = _("THEO"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_PLUSH_DOLL, - EC_WORD_MUST_BE, - EC_WORD_MAN, - EC_WORD_SIMPLE, - EC_WORD_ADORE, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, - .name = _("PIA"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_HERE_I_COME, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_CUTE, - EC_WORD_A, - EC_WORD_CHANNEL, - EC_WORD_IDOL, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEFAN_F, - .name = _("ALISSA"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_YOURS, - EC_WORD_POKEMON, - EC_WORD_THOSE, - EC_WORD_PREPOSTEROUS, - EC_WORD_I_AM, - EC_WORD_SHOCKED, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GENTLEMAN, - .name = _("ARTUR"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_PLEASE, - EC_WORD_ALL, - EC_WORD_BATTLE, - EC_WORD_WEREN_T, - EC_WORD_GREAT, - EC_WORD_HIS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMER_F, - .name = _("MAJA"), - .teamFlags = 0x82, - .greeting = { - .easyChat = { - EC_WORD_I_AM, - EC_WORD_PRETTY, - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_DON_T, - EC_WORD_WINS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, - .name = _("MARIUS"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_BATTLE, - EC_WORD_DAILY, - EC_WORD_I, - EC_WORD_WON_T, - EC_WORD_LOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BIRD_KEEPER, - .name = _("OLIVER"), - .teamFlags = 0x11, - .greeting = { - .easyChat = { - EC_WORD_GIGGLE, - EC_WORD_GIGGLE, - EC_WORD_SNORT, - EC_WORD_HAPPILY, - EC_WORD_GIGGLE, - EC_WORD_MUFUFU, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, - .name = _("MOLLY"), - .teamFlags = 0x12, - .greeting = { - .easyChat = { - EC_WORD_IS, - EC_WORD_TODAY, - EC_WORD_MONDAY, - EC_WORD_QUES, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_MANIAC, - .name = _("JÖRG"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_WATER, - 0xFFFF, - EC_WORD_AND, - EC_WORD_BUG, - 0xFFFF, - EC_WORD_POKEMON, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BATTLE_GIRL, - .name = _("ANKE"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_WHAT, - EC_WORD_IS, - EC_WORD_PRESSURE, - EC_WORD_STATIC, - EC_WORD_IS, - EC_WORD_SUPER, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_FISHERMAN, - .name = _("HANS"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_KID, - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_DON_T, - EC_WORD_WINS, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SAILOR, - .name = _("PETER"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_IT_S, - EC_WORD_QUITE, - EC_WORD_TERRIBLE, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_MODE, - EC_WORD_I, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_F, - .name = _("MARA"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_YOU_RE, - EC_WORD_VERY, - EC_WORD_ALL_RIGHT, - EC_WORD_TRAINS, - EC_WORD_OR, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BUG_MANIAC, - .name = _("DARIUS"), - .teamFlags = 0x11, - .greeting = { - .easyChat = { - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_TOUGH, - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_SCARY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, - .name = _("REGINA"), - .teamFlags = 0x12, - .greeting = { - .easyChat = { - EC_WORD_TODAY, - EC_WORD_WIN, - EC_WORD_I, - EC_WORD_MAYBE, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PARASOL_LADY, - .name = _("MAIKE"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_SO, - EC_WORD_AN, - EC_MOVE(SCARY_FACE), - EC_WORD_IS, - EC_WORD_NOT_VERY, - EC_WORD_KIND, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, - .name = _("SANDRA"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_SPORTS, - EC_WORD_IS, - EC_WORD_HEALTHY, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_SPIRALING, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, - .name = _("ARNOLD"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_AWESOME, - EC_WORD_WHO_WAS, - EC_WORD_POKEMON, - EC_WORD_THOSE, - EC_WORD_ROCK_SOLID, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BLACK_BELT, - .name = _("XENO"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_HOO_HAH, - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_READY, - EC_WORD_FOR, - EC_WORD_SHADY, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, - .name = _("KARLA"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_YOU, - EC_WORD_CAN_T, - EC_WORD_ME, - EC_WORD_NEVER, - EC_WORD_SMITE, - EC_WORD_KID, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COLLECTOR, - .name = _("VOLKER"), - .teamFlags = 0x80, - .greeting = { - .easyChat = { - EC_WORD_FROM, - EC_WORD_PLACE, - EC_WORD_TO, - EC_WORD_PLACE, - EC_WORD_POKEMON, - EC_WORD_WOWEE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, - .name = _("TOBIAS"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_THAT, - EC_WORD_ISN_T, - EC_WORD_SPORTS, - EC_WORD_IT_S, - EC_WORD_A, - EC_WORD_FIGHTING, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GENTLEMAN, - .name = _("NORBERT"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_MUST_BE, - EC_WORD_WINS, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_PLEASE, - EC_WORD_PLEASE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BATTLE_GIRL, - .name = _("ZITA"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_THAT, - EC_WORD_IS, - EC_WORD_SCARY, - EC_WORD_PLEASE, - EC_WORD_BE, - EC_WORD_NICE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_BEAUTY, - .name = _("ELKE"), - .teamFlags = 0x20, - .greeting = { - .easyChat = { - EC_WORD_WITHOUT, - EC_MOVE(FLAIL), - EC_WORD_NONE, - EC_MOVE(WITHDRAW), - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_HIKER, - .name = _("VITUS"), - .teamFlags = 0x04, - .greeting = { - .easyChat = { - EC_WORD_YAHOO, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - EC_WORD_LISTENS, - EC_WORD_HER, - EC_WORD_TO, - EC_WORD_QUES, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_M, - .name = _("MALTE"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_LEARN, - EC_WORD_CORRECT, - EC_WORD_TO, - EC_WORD_FIGHT, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, - .name = _("TIM"), - .teamFlags = 0x40, - .greeting = { - .easyChat = { - EC_WORD_IT_S, - EC_WORD_A, - EC_WORD_FIGHTING, - EC_WORD_NONE, - EC_WORD_CHILD_S_PLAY, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_GUITARIST, - .name = _("GAVIN"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_SHADY, - EC_WORD_BABY, - EC_WORD_BABY, - EC_WORD_BABY, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_PSYCHIC_M, - .name = _("RALF"), - .teamFlags = 0x08, - .greeting = { - .easyChat = { - EC_WORD_STICKY_HOLD, - EC_WORD_THOSE, - EC_WORD_IMPORTANT, - EC_WORD_ISN_T_IT_QUES, - 0xFFFF, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, - .name = _("JENNY"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_I, - EC_WORD_SEARCH, - EC_WORD_TRAINER, - EC_WORD_ABSOLUTELY, - EC_WORD_TOUGH, - EC_WORD_THOSE, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_M, - .name = _("JOEL"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_BELIEVE, - EC_WORD_ON, - EC_WORD_YOURS, - EC_WORD_POKEMON, - EC_WORD_AND, - EC_WORD_WIN, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_DRAGON_TAMER, - .name = _("KOLJA"), - .teamFlags = 0x0C, - .greeting = { - .easyChat = { - EC_WORD_GIRL, - EC_WORD_WITH, - EC_MOVE2(FORESIGHT), - EC_WORD_THOSE, - EC_WORD_NICE, - 0xFFFF, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, - .name = _("BILL"), - .teamFlags = 0x01, - .greeting = { - .easyChat = { - EC_WORD_WHO_WAS, - EC_WORD_POWER, - EC_WORD_IS, - EC_WORD_OVERWHELMING, - EC_WORD_DISAPPEAR, - EC_WORD_BETTER, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_EXPERT_F, - .name = _("CALLA"), - .teamFlags = 0x10, - .greeting = { - .easyChat = { - EC_WORD_TRAINER, - EC_WORD_YOU, - EC_WORD_ARE, - EC_WORD_SEEMS, - EC_WORD_CAPABLE, - EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, - }, - }, - }, - { - .trainerClass = FACILITY_CLASS_LADY, - .name = _("GESA"), - .teamFlags = 0x02, - .greeting = { - .easyChat = { - EC_WORD_COME_ON, - EC_WORD_ABSOLUTELY, - EC_WORD_TIME, - EC_WORD_BECOMES, - EC_WORD_EXCELLENT, - 0xFFFF, - }, - }, - }, + { + .trainerClass = FACILITY_CLASS_YOUNGSTER, + .name = _("ALWIN"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_QUES, + EC_WORD_HERE_I_COME, + EC_WORD_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, + .name = _("DIRK"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_OH_KAY, + EC_WORD_I_AM, + EC_WORD_READY, + EC_WORD_EXCL, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_LADY, + .name = _("SIBILLE"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_THAT, + EC_WORD_BECOMES, + EC_WORD_A, + EC_WORD_CHILD_S_PLAY, + EC_WORD_GO, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_BLACK_BELT, + .name = _("OLAF"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_MY, + EC_WORD_GHOST, + EC_WORD_IS, + EC_WORD_FULL, + EC_WORD_TOUGHNESS, + EC_WORD_SNORT, + }, + }, + { + .trainerClass = FACILITY_CLASS_NINJA_BOY, + .name = _("JOST"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_GO, + EC_WORD_WHO_WAS, + EC_WORD_POKEMON, + EC_WORD_FIGHT, + EC_WORD_FIGHT, + EC_WORD_FIGHT, + }, + }, + { + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, + .name = _("TINA"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_STUDY, + EC_WORD_IS, + EC_WORD_BORING, + EC_WORD_LET_S, + EC_WORD_BETTER, + EC_WORD_FIGHT, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_MANIAC, + .name = _("HAJO"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_TOUGHNESS, + EC_WORD_AND, + EC_MOVE2(TRANSFORM), + EC_WORD_WILL, + EC_WORD_BABE, + EC_WORD_FAINT, + }, + }, + { + .trainerClass = FACILITY_CLASS_FISHERMAN, + .name = _("GEORG"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_IT, + EC_WORD_GOES, + EC_WORD_NOTHING, + EC_WORD_OVER, + EC_WORD_FISHING, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_TUBER_F, + .name = _("ANNE"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_POKEMON, + EC_WORD_MUST_BE, + EC_WORD_MAN, + EC_WORD_SIMPLE, + EC_WORD_ADORE, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_F, + .name = _("JULIA"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_I_AM, + EC_WORD_CUTE, + EC_WORD_I_AM, + EC_WORD_QUITE, + EC_WORD_AN, + EC_WORD_LADY, + }, + }, + { + .trainerClass = FACILITY_CLASS_GENTLEMAN, + .name = _("JOHANN"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_THE, + EC_WORD_DAY, + EC_WORD_IS, + EC_WORD_PERFECT, + EC_WORD_FOR, + EC_WORD_BATTLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_CAMPER, + .name = _("KARL"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_NOW, + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_MY, + EC_WORD_FRIEND, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, + .name = _("KENDRA"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_I_AM, + EC_WORD_SMART, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_AND, + EC_WORD_YOU, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_HIKER, + .name = _("DAVID"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_WAHAHAHA, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_TODAY, + EC_WORD_IS, + EC_MOVE2(PAY_DAY), + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, + .name = _("KEA"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_TOUGH, + EC_WORD_OR, + EC_WORD_QUES, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_M, + .name = _("JULIAN"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_FUFUFU, + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_DON_T, + EC_WORD_WINS, + EC_WORD_KID, + }, + }, + { + .trainerClass = FACILITY_CLASS_LASS, + .name = _("JOSI"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_BE, + EC_WORD_KIND, + EC_WORD_TO, + EC_WORD_GIRL, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_GUITARIST, + .name = _("LEIF"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I_AM, + EC_WORD_GREAT, + EC_WORD_YOU_RE, + EC_WORD_RATHER, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_OKAY, + }, + }, + { + .trainerClass = FACILITY_CLASS_RICH_BOY, + .name = _("INGO"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I, + EC_WORD_HAVE, + EC_WORD_ROUGH_SKIN, + EC_WORD_NATURAL_CURE, + EC_WORD_IS, + EC_WORD_ALL_RIGHT, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_CATCHER, + .name = _("LUDWIG"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_IF_I_WIN, + EC_WORD_IS, + EC_WORD_THAT, + EC_WORD_EXCITING, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_PICNICKER, + .name = _("RAJA"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_WITH, + EC_WORD_POKEMON, + EC_WORD_TO, + EC_WORD_WALKING, + EC_WORD_IS, + EC_WORD_GREAT, + }, + }, + { + .trainerClass = FACILITY_CLASS_COLLECTOR, + .name = _("HARALD"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_HERE_GOES, + EC_WORD_MY, + EC_WORD_HUGE_POWER, + 0xFFFF, + EC_WORD_POKEMON, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_TUBER_M, + .name = _("KIM"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_I_AM, + EC_WORD_A, + EC_WORD_GENIUS, + EC_WORD_WE, + EC_WORD_WILL, + EC_WORD_WINS, + }, + }, + { + .trainerClass = FACILITY_CLASS_KINDLER, + .name = _("ERWIN"), + .teamFlags = 0x05, + .greeting = { + EC_WORD_MY, + EC_WORD_FIRE, + EC_WORD_IS, + EC_WORD_VERY, + EC_WORD_HOT, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_F, + .name = _("EIKA"), + .teamFlags = 0x0A, + .greeting = { + EC_WORD_FIGHTING, + EC_MOVE(ASTONISH), + EC_WORD_AND, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_F, + .name = _("ANNINA"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_SORRY, + EC_WORD_YOURS, + EC_WORD_POKEMON, + EC_WORD_WILL, + EC_WORD_DON_T, + EC_WORD_WINS, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, + .name = _("RUTH"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_I_AM, + EC_WORD_TOUGH, + EC_WORD_WHO_WAS, + EC_WORD_POKEMON, + EC_WORD_TOO, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMANIAC, + .name = _("JENS"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_WHO_WAS, + EC_WORD_POKEMON, + EC_WORD_THOSE, + EC_WORD_COOL, + EC_WORD_YOURS, + EC_WORD_LOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SAILOR, + .name = _("TITUS"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_MY, + EC_WORD_FOE, + EC_WORD_IS, + EC_WORD_FINALLY, + EC_WORD_HERE, + EC_WORD_EXCELLENT, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, + .name = _("NICOLA"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_I_AM, + EC_WORD_VORACIOUS, + EC_MOVE2(POUND), + EC_WORD_AND, + EC_MOVE2(BELLY_DRUM), + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_HEX_MANIAC, + .name = _("PAULA"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_IS_IT_QUES, + EC_WORD_THOSE_ARE, + EC_WORD_UGLY, + EC_MOVE(SPITE), + EC_WORD_TO, + EC_WORD_TAKE, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, + .name = _("SÖREN"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_ADVENTURE, + EC_WORD_AND, + EC_WORD_BATTLE, + EC_WORD_THOSE, + EC_WORD_WHO_WAS, + EC_WORD_LIKES, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + .name = _("RAINER"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_WE, + EC_WORD_CAN, + EC_WORD_VERSUS, + EC_WORD_CHILDREN, + EC_WORD_DON_T, + EC_WORD_LOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SCHOOL_KID_M, + .name = _("FABIAN"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_DAILY, + EC_WORD_POKEMON, + EC_WORD_IN, + EC_WORD_THE, + EC_WORD_SCHOOL, + EC_WORD_AWESOME, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, + .name = _("ELLEN"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_ALL_RIGHT, + EC_WORD_TO, + EC_WORD_POKEMON, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_M, + .name = _("ARNIE"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_MY, + EC_WORD_FIGHTING, + EC_WORD_IS, + EC_WORD_PERFECTION, + EC_WORD_YOUR, + EC_WORD_USELESS, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, + .name = _("HARDI"), + .teamFlags = 0x09, + .greeting = { + EC_WORD_BOY, + EC_WORD_I_AM, + EC_WORD_MAYBE, + EC_WORD_TIRED, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_BEAUTY, + .name = _("LINA"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_A, + EC_WORD_TRAINER, + EC_WORD_HOW_DO, + EC_WORD_YOU, + EC_WORD_IS, + EC_WORD_EXCITING, + }, + }, + { + .trainerClass = FACILITY_CLASS_AROMA_LADY, + .name = _("SELINA"), + .teamFlags = 0x06, + .greeting = { + EC_WORD_YOU_VE, + EC_WORD_STENCH, + EC_WORD_OR, + EC_MOVE(SWEET_SCENT), + EC_WORD_QUES, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_COLLECTOR, + .name = _("DANTE"), + .teamFlags = 0x81, + .greeting = { + EC_WORD_YOURS, + EC_WORD_POKEMON, + EC_WORD_I, + EC_WORD_WANTS, + EC_WORD_SHE, + EC_WORD_EXCL_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + .name = _("KATJA"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_TODAY, + EC_WORD_WANTS, + EC_WORD_I, + EC_WORD_MY, + EC_WORD_BEST, + EC_WORD_GIVE, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, + .name = _("HORST"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_WAAAH, + EC_WORD_WAAAH, + EC_WORD_WAAAH, + EC_WORD_WAAAH, + EC_WORD_EHEHE, + EC_MOVE(FAKE_TEARS), + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_M, + .name = _("GERRIT"), + .teamFlags = 0x80, + .greeting = { + EC_WORD_MY, + EC_WORD_ANIME, + EC_WORD_SONG, + EC_WORD_IS, + EC_WORD_DON_T, + EC_WORD_LOUSY, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, + .name = _("NIKO"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_BATTLE, + EC_WORD_DON_T, + EC_WORD_JUST, + EC_WORD_DO, + EC_WORD_SOMETHING, + EC_WORD_ELSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, + .name = _("BALDO"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_BUSY, + EC_WORD_HAS, + EC_WORD_THAT, + EC_WORD_TIME, + }, + }, + { + .trainerClass = FACILITY_CLASS_PARASOL_LADY, + .name = _("ALMA"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_THAT, + EC_MOVE(MORNING_SUN), + EC_WORD_HAS, + EC_WORD_SO, + EC_WORD_A_LOT, + EC_MOVE(COSMIC_POWER), + }, + }, + { + .trainerClass = FACILITY_CLASS_CAMPER, + .name = _("ADAM"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_EXCITING, + EC_WORD_BATTLE, + EC_WORD_THOSE, + EC_WORD_GREAT, + EC_WORD_YEEHAW_EXCL, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, + .name = _("GRETE"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_I, + EC_WORD_WANTS, + EC_WORD_SOMETHING, + EC_MOVE(GROWTH), + EC_WORD_WORKS, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_BEAUTY, + .name = _("NAOMI"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_IT, + EC_WORD_WAS, + EC_WORD_GREAT, + EC_WORD_YOUNG, + EC_WORD_TO, + EC_WORD_HIS, + }, + }, + { + .trainerClass = FACILITY_CLASS_NINJA_BOY, + .name = _("KENO"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_PLEASE, + EC_WORD_BE, + EC_WORD_DON_T, + EC_WORD_SO, + EC_WORD_MEAN, + EC_WORD_TO_ME, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, + .name = _("REMUS"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_WAKES_UP, + EC_MOVE2(HIDDEN_POWER), + EC_WORD_AND, + EC_MOVE(ASTONISH), + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, + .name = _("EDITH"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_THE, + EC_WORD_BATTLE_TOWER, + EC_WORD_IS, + EC_WORD_SO, + EC_WORD_ENTERTAINING, + EC_WORD_AWESOME, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, + .name = _("ANTON"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_THICK_FAT, + EC_WORD_AND, + EC_WORD_CHLOROPHYLL, + EC_WORD_BLEND, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_TASTY, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_M, + .name = _("MALTE"), + .teamFlags = 0x81, + .greeting = { + EC_WORD_AN, + EC_MOVE(SCARY_FACE), + EC_WORD_IS, + EC_WORD_DON_T, + EC_WORD_QUITE, + EC_WORD_TERRIBLE, + }, + }, + { + .trainerClass = FACILITY_CLASS_HEX_MANIAC, + .name = _("RAOUL"), + .teamFlags = 0x42, + .greeting = { + EC_WORD_RUN_AWAY, + EC_WORD_GIVE_ME, + EC_WORD_SON, + EC_WORD_BEST, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, + .name = _("RICK"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_WATER, + EC_WORD_IS, + EC_WORD_TASTY, + EC_WORD_HIP_AND, + EC_WORD_REFRESHING, + EC_WORD_YES_SIR_EXCL, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_M, + .name = _("DENNIS"), + .teamFlags = 0x80, + .greeting = { + EC_WORD_GO, + EC_WORD_WHO_WAS, + EC_WORD_POKEMON, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_F, + .name = _("GLORIA"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_THE, + EC_WORD_FIGHTING, + EC_WORD_MUST_BE, + EC_WORD_HOT, + EC_WORD_HIS, + EC_WORD_FIERY, + }, + }, + { + .trainerClass = FACILITY_CLASS_GUITARIST, + .name = _("NINO"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_MUSIC, + EC_WORD_IS, + EC_WORD_MY, + EC_WORD_EVERY, + EC_WORD_MY, + EC_WORD_DESTINY, + }, + }, + { + .trainerClass = FACILITY_CLASS_KINDLER, + .name = _("FIETE"), + .teamFlags = 0x41, + .greeting = { + EC_WORD_IT_S, + EC_WORD_ALL_RIGHT, + EC_WORD_VERY, + EC_WORD_ALL_RIGHT, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_AROMA_LADY, + .name = _("AMANDA"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_WHAT, + EC_WORD_FOR, + EC_WORD_A, + EC_WORD_TRAINER, + EC_WORD_ARE, + EC_WORD_YOU, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + .name = _("MAREK"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_WE_VE, + EC_WORD_UNTIL, + EC_WORD_NOW, + EC_WORD_TOTALLY, + EC_WORD_NEVER, + EC_WORD_LOST, + }, + }, + { + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, + .name = _("NATHAN"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_DRAGON, + 0xFFFF, + EC_WORD_POKEMON, + EC_WORD_THOSE, + EC_WORD_FANTASTIC, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_LASS, + .name = _("MIRIAM"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_QUITE, + EC_WORD_TOO_STRONG, + EC_WORD_AM, + EC_WORD_BAD, + EC_WORD_NEWS, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMANIAC, + .name = _("THEO"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_PLUSH_DOLL, + EC_WORD_MUST_BE, + EC_WORD_MAN, + EC_WORD_SIMPLE, + EC_WORD_ADORE, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + .name = _("PIA"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_HERE_I_COME, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_CUTE, + EC_WORD_A, + EC_WORD_CHANNEL, + EC_WORD_IDOL, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEFAN_F, + .name = _("ALISSA"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_YOURS, + EC_WORD_POKEMON, + EC_WORD_THOSE, + EC_WORD_PREPOSTEROUS, + EC_WORD_I_AM, + EC_WORD_SHOCKED, + }, + }, + { + .trainerClass = FACILITY_CLASS_GENTLEMAN, + .name = _("ARTUR"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_PLEASE, + EC_WORD_ALL, + EC_WORD_BATTLE, + EC_WORD_WEREN_T, + EC_WORD_GREAT, + EC_WORD_HIS, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMER_F, + .name = _("MAJA"), + .teamFlags = 0x82, + .greeting = { + EC_WORD_I_AM, + EC_WORD_PRETTY, + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_DON_T, + EC_WORD_WINS, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, + .name = _("MARIUS"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_I, + EC_WORD_BATTLE, + EC_WORD_DAILY, + EC_WORD_I, + EC_WORD_WON_T, + EC_WORD_LOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, + .name = _("OLIVER"), + .teamFlags = 0x11, + .greeting = { + EC_WORD_GIGGLE, + EC_WORD_GIGGLE, + EC_WORD_SNORT, + EC_WORD_HAPPILY, + EC_WORD_GIGGLE, + EC_WORD_MUFUFU, + }, + }, + { + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, + .name = _("MOLLY"), + .teamFlags = 0x12, + .greeting = { + EC_WORD_IS, + EC_WORD_TODAY, + EC_WORD_MONDAY, + EC_WORD_QUES, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_MANIAC, + .name = _("JÖRG"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_WATER, + 0xFFFF, + EC_WORD_AND, + EC_WORD_BUG, + 0xFFFF, + EC_WORD_POKEMON, + }, + }, + { + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, + .name = _("ANKE"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_WHAT, + EC_WORD_IS, + EC_WORD_PRESSURE, + EC_WORD_STATIC, + EC_WORD_IS, + EC_WORD_SUPER, + }, + }, + { + .trainerClass = FACILITY_CLASS_FISHERMAN, + .name = _("HANS"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_KID, + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_DON_T, + EC_WORD_WINS, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_SAILOR, + .name = _("PETER"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_IT_S, + EC_WORD_QUITE, + EC_WORD_TERRIBLE, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_MODE, + EC_WORD_I, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_F, + .name = _("MARA"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_YOU_RE, + EC_WORD_VERY, + EC_WORD_ALL_RIGHT, + EC_WORD_TRAINS, + EC_WORD_OR, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_BUG_MANIAC, + .name = _("DARIUS"), + .teamFlags = 0x11, + .greeting = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_TOUGH, + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_SCARY, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, + .name = _("REGINA"), + .teamFlags = 0x12, + .greeting = { + EC_WORD_TODAY, + EC_WORD_WIN, + EC_WORD_I, + EC_WORD_MAYBE, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_PARASOL_LADY, + .name = _("MAIKE"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_SO, + EC_WORD_AN, + EC_MOVE(SCARY_FACE), + EC_WORD_IS, + EC_WORD_NOT_VERY, + EC_WORD_KIND, + }, + }, + { + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, + .name = _("SANDRA"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_SPORTS, + EC_WORD_IS, + EC_WORD_HEALTHY, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_SPIRALING, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, + .name = _("ARNOLD"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_AWESOME, + EC_WORD_WHO_WAS, + EC_WORD_POKEMON, + EC_WORD_THOSE, + EC_WORD_ROCK_SOLID, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_BLACK_BELT, + .name = _("XENO"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_HOO_HAH, + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_FOR, + EC_WORD_SHADY, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, + .name = _("KARLA"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_YOU, + EC_WORD_CAN_T, + EC_WORD_ME, + EC_WORD_NEVER, + EC_WORD_SMITE, + EC_WORD_KID, + }, + }, + { + .trainerClass = FACILITY_CLASS_COLLECTOR, + .name = _("VOLKER"), + .teamFlags = 0x80, + .greeting = { + EC_WORD_FROM, + EC_WORD_PLACE, + EC_WORD_TO, + EC_WORD_PLACE, + EC_WORD_POKEMON, + EC_WORD_WOWEE, + }, + }, + { + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + .name = _("TOBIAS"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_THAT, + EC_WORD_ISN_T, + EC_WORD_SPORTS, + EC_WORD_IT_S, + EC_WORD_A, + EC_WORD_FIGHTING, + }, + }, + { + .trainerClass = FACILITY_CLASS_GENTLEMAN, + .name = _("NORBERT"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_I, + EC_WORD_MUST_BE, + EC_WORD_WINS, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_PLEASE, + EC_WORD_PLEASE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, + .name = _("ZITA"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_THAT, + EC_WORD_IS, + EC_WORD_SCARY, + EC_WORD_PLEASE, + EC_WORD_BE, + EC_WORD_NICE, + }, + }, + { + .trainerClass = FACILITY_CLASS_BEAUTY, + .name = _("ELKE"), + .teamFlags = 0x20, + .greeting = { + EC_WORD_WITHOUT, + EC_MOVE(FLAIL), + EC_WORD_NONE, + EC_MOVE(WITHDRAW), + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_HIKER, + .name = _("VITUS"), + .teamFlags = 0x04, + .greeting = { + EC_WORD_YAHOO, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_LISTENS, + EC_WORD_HER, + EC_WORD_TO, + EC_WORD_QUES, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_M, + .name = _("MALTE"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_LEARN, + EC_WORD_CORRECT, + EC_WORD_TO, + EC_WORD_FIGHT, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, + .name = _("TIM"), + .teamFlags = 0x40, + .greeting = { + EC_WORD_IT_S, + EC_WORD_A, + EC_WORD_FIGHTING, + EC_WORD_NONE, + EC_WORD_CHILD_S_PLAY, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + }, + }, + { + .trainerClass = FACILITY_CLASS_GUITARIST, + .name = _("GAVIN"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_SHADY, + EC_WORD_BABY, + EC_WORD_BABY, + EC_WORD_BABY, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_PSYCHIC_M, + .name = _("RALF"), + .teamFlags = 0x08, + .greeting = { + EC_WORD_STICKY_HOLD, + EC_WORD_THOSE, + EC_WORD_IMPORTANT, + EC_WORD_ISN_T_IT_QUES, + 0xFFFF, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, + .name = _("JENNY"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_I, + EC_WORD_SEARCH, + EC_WORD_TRAINER, + EC_WORD_ABSOLUTELY, + EC_WORD_TOUGH, + EC_WORD_THOSE, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_M, + .name = _("JOEL"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_BELIEVE, + EC_WORD_ON, + EC_WORD_YOURS, + EC_WORD_POKEMON, + EC_WORD_AND, + EC_WORD_WIN, + }, + }, + { + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, + .name = _("KOLJA"), + .teamFlags = 0x0C, + .greeting = { + EC_WORD_GIRL, + EC_WORD_WITH, + EC_MOVE2(FORESIGHT), + EC_WORD_THOSE, + EC_WORD_NICE, + 0xFFFF, + }, + }, + { + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, + .name = _("BILL"), + .teamFlags = 0x01, + .greeting = { + EC_WORD_WHO_WAS, + EC_WORD_POWER, + EC_WORD_IS, + EC_WORD_OVERWHELMING, + EC_WORD_DISAPPEAR, + EC_WORD_BETTER, + }, + }, + { + .trainerClass = FACILITY_CLASS_EXPERT_F, + .name = _("CALLA"), + .teamFlags = 0x10, + .greeting = { + EC_WORD_TRAINER, + EC_WORD_YOU, + EC_WORD_ARE, + EC_WORD_SEEMS, + EC_WORD_CAPABLE, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + }, + }, + { + .trainerClass = FACILITY_CLASS_LADY, + .name = _("GESA"), + .teamFlags = 0x02, + .greeting = { + EC_WORD_COME_ON, + EC_WORD_ABSOLUTELY, + EC_WORD_TIME, + EC_WORD_BECOMES, + EC_WORD_EXCELLENT, + 0xFFFF, + }, + }, }; diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 4690368d8..9b12c1cc1 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -1433,7 +1433,7 @@ u8 DebugMenu_8077434() " ldr r0, ._157 @ Str_839BE0F\n" " mov r1, #0x1\n" " mov r2, #0x4\n" - " bl GetEnigmaBerryChecksum\n" + " bl debug_sub_80C2C18\n" " mov r0, #0xff\n" " str r0, [sp]\n" " str r0, [sp, #0x4]\n" @@ -1450,7 +1450,7 @@ u8 DebugMenu_8077434() " ldr r0, ._160 @ Str_839BE12\n" " mov r1, #0x2\n" " mov r2, #0x0\n" - " bl GetEnigmaBerryChecksum\n" + " bl debug_sub_80C2C18\n" " mov r0, #0xff\n" " str r0, [sp]\n" " str r0, [sp, #0x4]\n" @@ -1465,7 +1465,7 @@ u8 DebugMenu_8077434() " ldr r0, ._163 @ Str_839BE16\n" " mov r1, #0x3\n" " mov r2, #0x0\n" - " bl GetEnigmaBerryChecksum\n" + " bl debug_sub_80C2C18\n" " mov r0, #0xff\n" " str r0, [sp]\n" " str r0, [sp, #0x4]\n" @@ -1479,7 +1479,7 @@ u8 DebugMenu_8077434() " ldr r0, ._166 @ Str_839BE1A\n" " mov r1, #0x4\n" " mov r2, #0x0\n" - " bl GetEnigmaBerryChecksum\n" + " bl debug_sub_80C2C18\n" " mov r0, #0xff\n" " str r0, [sp]\n" " str r0, [sp, #0x4]\n" @@ -1499,7 +1499,7 @@ u8 DebugMenu_8077434() " ldr r0, ._168 @ Str_839BE1E\n" " mov r1, #0x4\n" " mov r2, #0x0\n" - " bl GetEnigmaBerryChecksum\n" + " bl debug_sub_80C2C18\n" " mov r0, #0xff\n" " str r0, [sp]\n" " str r0, [sp, #0x4]\n" @@ -3184,7 +3184,7 @@ void DebugMenu_8077EE0() " mov r2, #0x11\n" " bl Menu_PrintText\n" " add r0, r4, #0\n" - " bl ItemId_GetItem\n" + " bl ItemId_GetName\n" " mov r1, #0x8\n" " mov r2, #0x11\n" " bl Menu_PrintText\n" diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index ff73e638e..0da23c5f3 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -2,7 +2,9 @@ #include "battle.h" #include "battle_records.h" #include "cable_club.h" +#include "event_data.h" #include "field_message_box.h" +#include "field_specials.h" #include "field_weather.h" #include "link.h" #include "load_save.h" @@ -21,16 +23,9 @@ #include "strings2.h" #include "task.h" #include "text.h" +#include "trade.h" #include "trainer_card.h" -extern u8 unk_2030220; -extern u16 gSpecialVar_Result; -extern struct TrainerCard gTrainerCards[4]; -extern u8 gUnknown_03004860; -extern u8 gFieldLinkPlayerCount; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u16 gSpecialVar_0x8006; extern u16 gBattleTypeFlags; extern const u8 gUnknown_081A4932[]; extern const u8 gUnknown_081A4975[]; @@ -42,12 +37,13 @@ extern struct u8 field1; } gUnknown_020297D8; -/*static*/ void sub_8082F20(u8 taskId); +static void sub_8082F20(u8 taskId); static void sub_8082F68(u8 taskId); static void sub_8082FEC(u8 taskId); static void sub_808303C(u8 taskId); static void sub_80830E4(u8 taskId); static void sub_8083188(u8 taskId); +static void sub_80831F8(u8 taskId); static void sub_8083288(u8 taskId); static void sub_8083314(u8 taskId); static void sub_80833C4(u8 taskId); @@ -66,15 +62,9 @@ static void sub_8083AAC(u8 taskId); static void sub_8083B44(u8 taskId); static void sub_8083B6C(void); static void sub_8083CA4(u8 taskId); - -extern void sub_80831F8(u8 taskId); -extern void Overworld_ResetMapMusic(void); -extern void sub_810FEFC(void); -extern void sub_8047CD8(void); -extern void sub_805559C(void); -extern void sub_8055574(void); -extern s32 sub_80554F8(void); -extern void sub_805465C(void); +#if DEBUG +static u8 debug_sub_808B850(void); +#endif #ifdef GERMAN const u8 TrainerCardColorName_Bronze[] = _("BRONZE"); @@ -97,392 +87,86 @@ const u8 *const gTrainerCardColorNames[] = }; #if DEBUG - -__attribute__((naked)) -int debug_sub_808A4D0() -{ - asm("\ - push {lr}\n\ - add r1, r0, #0\n\ - ldr r0, ._3 @ sub_8082F68\n\ - cmp r1, r0\n\ - bne ._1 @cond_branch\n\ - mov r0, #0x1\n\ - b ._30\n\ -._4:\n\ - .align 2, 0\n\ -._3:\n\ - .word sub_8082F68+1\n\ -._1:\n\ - ldr r0, ._7 @ sub_8082FEC\n\ - cmp r1, r0\n\ - bne ._5 @cond_branch\n\ - mov r0, #0x11\n\ - b ._30\n\ -._8:\n\ - .align 2, 0\n\ -._7:\n\ - .word sub_8082FEC+1\n\ -._5:\n\ - ldr r0, ._11 @ sub_808303C\n\ - cmp r1, r0\n\ - bne ._9 @cond_branch\n\ - mov r0, #0x12\n\ - b ._30\n\ -._12:\n\ - .align 2, 0\n\ -._11:\n\ - .word sub_808303C+1\n\ -._9:\n\ - ldr r0, ._15 @ sub_8083188\n\ - cmp r1, r0\n\ - bne ._13 @cond_branch\n\ - mov r0, #0x13\n\ - b ._30\n\ -._16:\n\ - .align 2, 0\n\ -._15:\n\ - .word sub_8083188+1\n\ -._13:\n\ - ldr r0, ._19 @ sub_80830E4\n\ - cmp r1, r0\n\ - bne ._17 @cond_branch\n\ - mov r0, #0x14\n\ - b ._30\n\ -._20:\n\ - .align 2, 0\n\ -._19:\n\ - .word sub_80830E4+1\n\ -._17:\n\ - ldr r0, ._23 @ sub_80831F8\n\ - cmp r1, r0\n\ - bne ._21 @cond_branch\n\ - mov r0, #0x21\n\ - b ._30\n\ -._24:\n\ - .align 2, 0\n\ -._23:\n\ - .word sub_80831F8+1\n\ -._21:\n\ - ldr r0, ._27 @ sub_8083314\n\ - cmp r1, r0\n\ - bne ._25 @cond_branch\n\ - mov r0, #0x2\n\ - b ._30\n\ -._28:\n\ - .align 2, 0\n\ -._27:\n\ - .word sub_8083314+1\n\ -._25:\n\ - ldr r0, ._31 @ sub_80833C4\n\ - cmp r1, r0\n\ - beq ._29 @cond_branch\n\ - mov r0, #0x0\n\ - b ._30\n\ -._32:\n\ - .align 2, 0\n\ -._31:\n\ - .word sub_80833C4+1\n\ -._29:\n\ - mov r0, #0x3\n\ -._30:\n\ - pop {r1}\n\ - bx r1"); +u8 debug_sub_808A4D0(TaskFunc func) +{ + if (func == sub_8082F68) + return 1; + if (func == sub_8082FEC) + return 17; + if (func == sub_808303C) + return 18; + if (func == sub_8083188) + return 19; + if (func == sub_80830E4) + return 20; + if (func == sub_80831F8) + return 33; + if (func == sub_8083314) + return 2; + if (func == sub_80833C4) + return 3; + return 0; } -__attribute__((naked)) -void debug_sub_808A55C() +void debug_sub_808A55C(u8 taskId) { - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - ldr r2, ._37 @ gTasks\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r4, r0, r2\n\ - mov r0, #0x8\n\ - ldsh r1, [r4, r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldrb r0, [r0, #0x4]\n\ - cmp r0, #0\n\ - bne ._33 @cond_branch\n\ - mov r1, #0xa\n\ - ldsh r0, [r4, r1]\n\ - cmp r0, #0x5\n\ - bne ._34 @cond_branch\n\ - add r0, r7, #0\n\ - bl DestroyTask\n\ -._34:\n\ - ldrh r0, [r4, #0xa]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4, #0xa]\n\ -._33:\n\ - ldr r0, ._37 + 4 @ gShouldAdvanceLinkState\n\ - ldrb r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0x0\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, ._37 + 8 @ gBlockSendBuffer\n\ - ldrb r0, [r0]\n\ - mov r1, #0x16\n\ - mov r2, #0x5\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - mov r4, #0x0\n\ - lsl r3, r7, #0x2\n\ - mov r8, r3\n\ - mov r6, #0xc0\n\ - lsl r6, r6, #0x13\n\ - mov r5, #0xa0\n\ - lsl r5, r5, #0x13\n\ -._35:\n\ - ldr r0, ._37 + 12 @ gLinkPlayerPending\n\ - add r0, r4, r0\n\ - ldrb r0, [r0]\n\ - lsr r1, r5, #0x18\n\ - mov r2, #0x0\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r1, ._37 + 16 @ gBlockRecvBuffer\n\ - lsl r0, r4, #0x8\n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - lsr r2, r6, #0x18\n\ - mov r1, #0x16\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x11\n\ - add r6, r6, r0\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x12\n\ - add r5, r5, r1\n\ - add r4, r4, #0x1\n\ - cmp r4, #0x3\n\ - ble ._35 @cond_branch\n\ - ldr r4, ._37 + 20 @ gLinkStatus\n\ - ldr r0, [r4]\n\ - mov r1, #0xf\n\ - mov r2, #0x0\n\ - mov r3, #0x8\n\ - bl PrintHex\n\ - ldr r0, ._37 + 24 @ gLink\n\ - ldrb r0, [r0, #0x1]\n\ - mov r1, #0x2\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - bl GetMultiplayerId\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x7\n\ - mov r2, #0xc\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - bl GetBlockReceivedStatus\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x7\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, ._37 + 28 @ gReceivedRemoteLinkPlayers\n\ - ldrb r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0xc\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r0, ._37 + 32 @ gSpecialVar_Result\n\ - ldrh r0, [r0]\n\ - mov r1, #0xb\n\ - mov r2, #0x8\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, [r4]\n\ - mov r1, #0x1c\n\ - and r0, r0, r1\n\ - lsr r0, r0, #0x2\n\ - mov r1, #0xb\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - bl IsLinkConnectionEstablished\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0xb\n\ - mov r2, #0xc\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - bl IsLinkTaskFinished\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0xf\n\ - mov r2, #0xa\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r2, ._37 @ gTasks\n\ - mov r3, r8\n\ - add r0, r3, r7\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - mov r3, #0x8\n\ - ldsh r1, [r0, r3]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldr r0, [r0]\n\ - bl debug_sub_808A4D0\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0xf\n\ - mov r2, #0xc\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, ._37 + 36 @ gLinkCallback\n\ - ldr r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0xd\n\ - mov r3, #0x8\n\ - bl PrintHex\n\ - bl HasLinkErrorOccurred\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x2\n\ - mov r2, #0x2\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r0, ._37 + 40 @ gLinkPlayers\n\ - mov r6, #0x80\n\ - lsl r6, r6, #0x12\n\ - add r5, r0, #0\n\ - add r5, r5, #0x14\n\ - mov r4, #0x3\n\ -._36:\n\ - ldr r0, [r5]\n\ - lsr r1, r6, #0x18\n\ - mov r2, #0x3\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - mov r0, #0xc0\n\ - lsl r0, r0, #0x13\n\ - add r6, r6, r0\n\ - add r5, r5, #0x1c\n\ - sub r4, r4, #0x1\n\ - cmp r4, #0\n\ - bge ._36 @cond_branch\n\ - ldr r0, ._37 + 44 @ 0x4000128\n\ - ldrh r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0x6\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - bl debug_sub_808B850\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x19\n\ - mov r2, #0x3\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._38:\n\ - .align 2, 0\n\ -._37:\n\ - .word gTasks\n\ - .word gShouldAdvanceLinkState\n\ - .word gBlockSendBuffer\n\ - .word gLinkPlayerPending\n\ - .word gBlockRecvBuffer\n\ - .word gLinkStatus\n\ - .word gLink\n\ - .word gReceivedRemoteLinkPlayers\n\ - .word gSpecialVar_Result\n\ - .word gLinkCallback\n\ - .word gLinkPlayers\n\ - .word 0x4000128"); + s32 i; + + if (!gTasks[gTasks[taskId].data[0]].isActive) + { + if (gTasks[taskId].data[1] == 5) + DestroyTask(taskId); + gTasks[taskId].data[1]++; + } + + PrintHex(gShouldAdvanceLinkState, 2, 0, 2); + PrintHex((u8)gBlockSendBuffer[0], 22, 5, 4); + for (i = 0; i < 4; i++) + { + PrintHex(gLinkPlayerPending[i], 5 + i * 2, 0, 1); + PrintHex(gBlockRecvBuffer[i][0], 22, 6 + i, 4); + } + PrintHex(gLinkStatus, 15, 0, 8); + PrintHex(gLink.state, 2, 10, 2); + PrintHex(GetMultiplayerId(), 7, 12, 2); + PrintHex(GetBlockReceivedStatus(), 7, 10, 2); + PrintHex(gReceivedRemoteLinkPlayers, 2, 12, 1); + PrintHex(gSpecialVar_Result, 11, 8, 2); + PrintHex((gLinkStatus & 0x1C) >> 2, 11, 10, 2); + PrintHex(IsLinkConnectionEstablished(), 11, 12, 1); + PrintHex(IsLinkTaskFinished(), 15, 10, 1); + PrintHex(debug_sub_808A4D0(gTasks[gTasks[taskId].data[0]].func), 15, 12, 2); + PrintHex((uintptr_t)gLinkCallback, 2, 13, 8); + PrintHex(HasLinkErrorOccurred(), 2, 2, 1); + for (i = 0; i < 4; i++) + PrintHex(gLinkPlayers[i].linkType, 2 + i * 6, 3, 4); + PrintHex(REG_SIOCNT, 2, 6, 4); + PrintHex(debug_sub_808B850(), 25, 3, 1); } #endif -#if DEBUG -__attribute__((naked)) -static void sub_8082CD4(u8 arg0, u8 arg1) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - lsl r1, r1, #0x18\n\ - lsr r6, r1, #0x18\n\ - mov r0, #0xc\n\ - mov r1, #0x0\n\ - mov r2, #0x1f\n\ - mov r3, #0x2\n\ - bl InitLinkTestBG_Unused\n\ - ldr r4, ._40 @ sub_8082F20\n\ - add r0, r4, #0\n\ - bl FindTaskIdByFunc\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._39 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - add r4, r0, #0\n\ - lsl r4, r4, #0x18\n\ - lsr r4, r4, #0x18\n\ - ldr r5, ._40 + 4 @ gTasks\n\ - lsl r0, r4, #0x2\n\ - add r0, r0, r4\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r5\n\ - strh r7, [r0, #0xa]\n\ - strh r6, [r0, #0xc]\n\ - ldr r0, ._40 + 8 @ debug_sub_808A55C\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r5\n\ - strh r4, [r1, #0x8]\n\ -._39:\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._41:\n\ - .align 2, 0\n\ -._40:\n\ - .word sub_8082F20+1\n\ - .word gTasks\n\ - .word debug_sub_808A55C+1"); -} -#else static void sub_8082CD4(u8 arg0, u8 arg1) { +#if DEBUG + InitLinkTestBG_Unused(12, 0, 31, 2); +#endif if (FindTaskIdByFunc(sub_8082F20) == 0xFF) { - u8 taskId = CreateTask(sub_8082F20, 80); + u8 taskId1; +#if DEBUG + u8 taskId2; +#endif + + taskId1 = CreateTask(sub_8082F20, 80); + gTasks[taskId1].data[1] = arg0; + gTasks[taskId1].data[2] = arg1; - gTasks[taskId].data[1] = arg0; - gTasks[taskId].data[2] = arg1; +#if DEBUG + taskId2 = CreateTask(debug_sub_808A55C, 80); + gTasks[taskId2].data[0] = taskId1; +#endif } } -#endif static void sub_8082D18(u32 value) { @@ -585,7 +269,7 @@ void unref_sub_8082EEC(u8 taskId) } } -/*static*/ void sub_8082F20(u8 taskId) +static void sub_8082F20(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -727,7 +411,7 @@ static void sub_8083188(u8 taskId) } } -void sub_80831F8(u8 taskId) +static void sub_80831F8(u8 taskId) { u8 local1, local2; @@ -1291,70 +975,26 @@ void sub_8083C50(u8 taskId) } #if DEBUG +extern u16 unk_3004E94; +extern u32 unk_3004E98; + +static void debug_sub_808B7A8(u8); -__attribute__((naked)) -void debug_sub_808B778() +void debug_sub_808B778(void) { - asm("\ - push {r4, lr}\n\ - ldr r4, ._390 @ debug_sub_808B7A8\n\ - add r0, r4, #0\n\ - bl FuncIsActiveTask\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._389 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ -._389:\n\ - ldr r1, ._390 + 4 @ unk_3004E98\n\ - ldr r0, [r1]\n\ - add r0, r0, #0x1\n\ - str r0, [r1]\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._391:\n\ - .align 2, 0\n\ -._390:\n\ - .word debug_sub_808B7A8+1\n\ - .word unk_3004E98"); + if (!FuncIsActiveTask(debug_sub_808B7A8)) + CreateTask(debug_sub_808B7A8, 80); + unk_3004E98++; } -__attribute__((naked)) -void debug_sub_808B7A8() +static void debug_sub_808B7A8(u8 taskId) { - asm("\ - push {lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._393 @ gTasks\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r2\n\ - ldrh r0, [r1, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1, #0x8]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x1e\n\ - bne ._392 @cond_branch\n\ - mov r0, #0x0\n\ - strh r0, [r1, #0x8]\n\ - ldr r2, ._393 + 4 @ unk_3004E94\n\ - ldrh r0, [r2]\n\ - mov r1, #0x1\n\ - orr r0, r0, r1\n\ - strh r0, [r2]\n\ -._392:\n\ - pop {r0}\n\ - bx r0\n\ -._394:\n\ - .align 2, 0\n\ -._393:\n\ - .word gTasks\n\ - .word unk_3004E94"); + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 30) + { + gTasks[taskId].data[0] = 0; + unk_3004E94 |= 1; + } } #endif @@ -1374,6 +1014,7 @@ void unref_sub_8083CC8(u8 taskId) } #if DEBUG +EWRAM_DATA static u8 unk_2030220 = 0; void debug_sub_808B82C(void) { @@ -1385,9 +1026,8 @@ void debug_sub_808B838(u8 a) unk_2030220 |= 1 << a; } -int debug_sub_808B850(void) +static u8 debug_sub_808B850(void) { return unk_2030220; } - -#endif
\ No newline at end of file +#endif diff --git a/src/engine/link.c b/src/engine/link.c index 00c084069..45807830a 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -45,7 +45,6 @@ extern u16 word_3004858; extern void Blender_SetBankBerryData(u8 bank, u16 itemID); static void InitLinkTestBG(u8, u8, u8, u8); -void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); static void InitLocalLinkPlayer(void); static void VBlankCB_LinkTest(void); @@ -68,7 +67,6 @@ u32 sub_8007E40(void); static void SetBlockReceivedFlag(u8); static u16 LinkTestCalcBlockChecksum(void *, u16); static void PrintHexDigit(u8, u8, u8); -void PrintHex(u32, u8, u8, u8); static void LinkCB_RequestPlayerDataExchange(void); static void Task_PrintTestData(u8); bool8 sub_8008224(void); @@ -194,19 +192,9 @@ const struct BlockRequest sBlockRequestLookupTable[5] = static const u8 sTestString[] = _("テストな"); -// TODO: fix the alignment here +const u8 sMagic[] = "GameFreak inc."; -ALIGNED(4) const u8 sMagic[] = "GameFreak inc."; - -#if DEBUG const u8 sEmptyString[] = _(" "); -#else -ALIGNED(4) const u8 sEmptyString[] = _(""); -#endif - -#if DEBUG -const u8 linkDebugFillerPleaseRemove[2] = {0}; -#endif void Task_DestroySelf(u8 taskId) { @@ -990,138 +978,49 @@ void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits) #if DEBUG -EWRAM_DATA u16 *debugCharacterBase = NULL; -EWRAM_DATA void *unk_20238C8 = NULL; -EWRAM_DATA u16 (*debugTileMap)[] = NULL; +EWRAM_DATA uintptr_t debugCharacterBase = 0; +EWRAM_DATA uintptr_t unk_20238C8 = 0; +EWRAM_DATA u16 *debugTileMap = NULL; EWRAM_DATA u32 unk_20238D0 = 0; -void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3) +void debug_sub_8008218(u16 *buffer, u32 arg1, u16 *arg2, u32 arg3) { CpuSet(sLinkTestDigitTiles, buffer, 272); - debugCharacterBase = buffer; - unk_20238C8 = arg1; + debugCharacterBase = (uintptr_t)buffer; + unk_20238C8 = (uintptr_t)arg1; debugTileMap = arg2; unk_20238D0 = arg3; } -#ifdef NONMATCHING -void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) +void debug_sub_8008264(u32 value, int left, int top, int d, int e) { + s32 i; u32 buffer[8]; - u32 *ptr; - - u16 *dest; - - int i; - - if (unk_20238D0 != sp0) - return; - - r3 = max(r3, 8); - ptr = &buffer[0]; - dest = &(*debugTileMap)[left + top * 32]; - - for (i = r3; i != 0; i--) + if (unk_20238D0 == e) { - *(ptr++) = value & 0xF; - value = value >> 4; - } + u32 *ptr; + u16 *tilemapDest; - ptr = &buffer[8 - r3]; - for (i = r3; i != 0; i--) - { - int charOffset = (((uintptr_t) debugCharacterBase) - ((uintptr_t) unk_20238C8)) / 32; - *dest = *ptr + charOffset + 1; - ptr--; - dest++; + if (d > 8) + d = 8; + ptr = buffer; + for (i = 0; i < d; i++) + { + *ptr++ = value & 0xF; + value >>= 4; + } + + tilemapDest = (u16 *)debugTileMap + top * 0x20 + left; + ptr = buffer + d - 1; + for (i = 0; i < d; i++) + { + *tilemapDest = (debugCharacterBase - unk_20238C8) / 32 + *ptr + 1; + ptr--; + tilemapDest++; + } } } -#else -__attribute__((naked)) -void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xffffffe0\n" - " add r5, r0, #0\n" - " add r6, r1, #0\n" - " add r4, r3, #0\n" - " ldr r0, [sp, #0x38]\n" - " ldr r1, ._347 @ unk_20238D0\n" - " ldr r1, [r1]\n" - " cmp r1, r0\n" - " bne ._345 @cond_branch\n" - " cmp r4, #0x8\n" - " ble ._342 @cond_branch\n" - " mov r4, #0x8\n" - "._342:\n" - " mov r3, sp\n" - " ldr r0, ._347 + 4 @ debugTileMap\n" - " mov r8, r0\n" - " lsl r2, r2, #0x6\n" - " mov ip, r2\n" - " lsl r6, r6, #0x1\n" - " lsl r7, r4, #0x2\n" - " cmp r4, #0\n" - " ble ._343 @cond_branch\n" - " mov r1, #0xf\n" - " add r2, r4, #0\n" - "._344:\n" - " add r0, r5, #0\n" - " and r0, r0, r1\n" - " stmia r3!, {r0}\n" - " lsr r5, r5, #0x4\n" - " sub r2, r2, #0x1\n" - " cmp r2, #0\n" - " bne ._344 @cond_branch\n" - "._343:\n" - " mov r1, r8\n" - " ldr r0, [r1]\n" - " add r0, r0, ip\n" - " add r5, r0, r6\n" - " mov r1, sp\n" - " add r0, r1, r7\n" - " sub r3, r0, #4\n" - " cmp r4, #0\n" - " ble ._345 @cond_branch\n" - " ldr r7, ._347 + 8 @ debugCharacterBase\n" - " ldr r6, ._347 + 12 @ unk_20238C8\n" - " add r2, r4, #0\n" - "._346:\n" - " ldr r1, [r7]\n" - " ldr r0, [r6]\n" - " sub r1, r1, r0\n" - " lsr r1, r1, #0x5\n" - " ldr r0, [r3]\n" - " add r0, r0, r1\n" - " add r0, r0, #0x1\n" - " strh r0, [r5]\n" - " sub r3, r3, #0x4\n" - " add r5, r5, #0x2\n" - " sub r2, r2, #0x1\n" - " cmp r2, #0\n" - " bne ._346 @cond_branch\n" - "._345:\n" - " add sp, sp, #0x20\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._348:\n" - " .align 2, 0\n" - "._347:\n" - " .word unk_20238D0\n" - " .word debugTileMap\n" - " .word debugCharacterBase\n" - " .word unk_20238C8\n" - "\n" - ); -} -#endif #endif diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index bc14c760d..56801ff53 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -13,6 +13,7 @@ #include "strings2.h" #include "task.h" #include "text.h" +#include "title_screen.h" #include "ewram.h" static EWRAM_DATA u8 gUnknown_02039338 = 0; @@ -341,151 +342,51 @@ static void CB2_MysteryEventMenu(void) #if DEBUG +static const u8 Str_843DA70[] = _("CARDーE emulation。。。"); +static const u8 Str_843DA84[] = _("LR: select A: send。"); +static const u8 Str_843DA98[] = _("sending。。。"); +static const u8 Str_843DAA3[] = _("completed。"); + +extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[]; +extern const u8 gUnknown_Debug_842E350; + void debug_sub_815D1D8(); -__attribute__((naked)) -void debug_sub_815D04C() +void debug_sub_815D04C(u8 taskId) { - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._125 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " bne ._121 @cond_branch\n" - " mov r0, #0x4\n" - " mov r1, #0x4\n" - " mov r2, #0xd\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._125 + 4 @ gUnknown_Debug_842E2D0\n" - " mov r2, #0xa\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x5\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - "._121:\n" - " ldr r2, ._125 + 8 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " add r6, r2, #0\n" - " cmp r0, #0\n" - " beq ._122 @cond_branch\n" - " ldrh r1, [r4, #0xa]\n" - " mov r2, #0xa\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " bne ._123 @cond_branch\n" - " ldr r0, ._125 + 12 @ gUnknown_Debug_842E350\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x1\n" - " b ._124\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word gTasks\n" - " .word gUnknown_Debug_842E2D0\n" - " .word gMain\n" - " .word gUnknown_Debug_842E350\n" - "._123:\n" - " sub r0, r1, #1\n" - "._124:\n" - " strh r0, [r4, #0xa]\n" - " ldr r0, ._130 @ gTasks\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " mov r0, #0x0\n" - " strh r0, [r1, #0x8]\n" - "._122:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._127 @cond_branch\n" - " ldr r1, ._130 @ gTasks\n" - " lsl r2, r5, #0x2\n" - " add r0, r2, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r0, #0xa\n" - " ldsh r3, [r4, r0]\n" - " ldr r0, ._130 + 4 @ gUnknown_Debug_842E350\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x1\n" - " cmp r3, r0\n" - " bne ._128 @cond_branch\n" - " mov r0, #0x0\n" - " b ._129\n" - "._131:\n" - " .align 2, 0\n" - "._130:\n" - " .word gTasks\n" - " .word gUnknown_Debug_842E350\n" - "._128:\n" - " ldrh r0, [r4, #0xa]\n" - " add r0, r0, #0x1\n" - "._129:\n" - " strh r0, [r4, #0xa]\n" - " add r0, r2, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0, #0x8]\n" - "._127:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._132 @cond_branch\n" - " ldr r1, ._133 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r2, #0xa\n" - " ldsh r1, [r0, r2]\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._133 + 4 @ gUnknown_Debug_842E2D0\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, ._133 + 8 @ \n" - " ldr r1, [r1]\n" - " bl _call_via_r1\n" - " ldr r0, ._133 + 12 @ \n" - " add r1, r6, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._132:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gTasks\n" - " .word gUnknown_Debug_842E2D0\n" - " .word +0x2004000\n" - " .word 0x43c\n" - "\n" - ); + if (gTasks[taskId].data[0] == 0) + { + Menu_DrawStdWindowFrame(4, 4, 13, 7); + Menu_PrintText(gUnknown_Debug_842E2D0[gTasks[taskId].data[1]].text, 5, 5); + gTasks[taskId].data[0]++; + } + + if (gMain.newKeys & 0x20) + { + if (gTasks[taskId].data[1] == 0) + gTasks[taskId].data[1] = gUnknown_Debug_842E350 - 1; + else + gTasks[taskId].data[1]--; + gTasks[taskId].data[0] = 0; + } + if (gMain.newKeys & 0x10) + { + if (gTasks[taskId].data[1] == gUnknown_Debug_842E350 - 1) + gTasks[taskId].data[1] = 0; + else + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 0; + } + if (gMain.newKeys & A_BUTTON) + { + // TODO: fix this + s32 var = gTasks[taskId].data[1]; + asm(""::"r"(var * 8)); + gUnknown_Debug_842E2D0[var].func(gSharedMem + 0x4000); + + gMain.state++; + DestroyTask(taskId); + } } void debug_sub_815D15C(void) @@ -510,291 +411,84 @@ void debug_sub_815D15C(void) SetMainCallback2(debug_sub_815D1D8); } -__attribute__((naked)) -void debug_sub_815D1D8() +void debug_sub_815D1D8(void) { - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " ldr r1, ._139 @ gMain\n" - " ldr r2, ._139 + 4 @ 0x43c\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " add r4, r1, #0\n" - " cmp r0, #0xb\n" - " bls ._137 @cond_branch\n" - " b ._196\n" - "._137:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._139 + 8 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word gMain\n" - " .word 0x43c\n" - " .word ._141\n" - "._141:\n" - " .word ._142\n" - " .word ._143\n" - " .word ._144\n" - " .word ._145\n" - " .word ._146\n" - " .word ._196\n" - " .word ._148\n" - " .word ._149\n" - " .word ._150\n" - " .word ._151\n" - " .word ._152\n" - " .word ._153\n" - "._142:\n" - " mov r0, #0x3\n" - " mov r1, #0xe\n" - " mov r2, #0x1b\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x10\n" - " mov r3, #0x0\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._155 @ gMain\n" - " ldr r0, ._155 + 4 @ 0x43c\n" - " add r1, r1, r0\n" - " b ._189\n" - "._156:\n" - " .align 2, 0\n" - "._155:\n" - " .word gMain\n" - " .word 0x43c\n" - "._143:\n" - " ldr r0, ._161 @ gPaletteFade\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._157 @cond_branch\n" - " b ._196\n" - "._157:\n" - " ldrh r1, [r4, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._159 @cond_branch\n" - " ldr r1, ._161 + 4 @ gUnknown_Debug_30030E0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._159:\n" - " ldr r0, ._161 + 8 @ Str_843DA70\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - " ldr r2, ._161 + 12 @ 0x43c\n" - " add r1, r4, r2\n" - " b ._189\n" - "._162:\n" - " .align 2, 0\n" - "._161:\n" - " .word gPaletteFade\n" - " .word gUnknown_Debug_30030E0\n" - " .word Str_843DA70\n" - " .word 0x43c\n" - "._144:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._163 @cond_branch\n" - " b ._196\n" - "._163:\n" - " ldr r1, ._166 @ gMain\n" - " ldr r0, ._166 + 4 @ 0x43c\n" - " add r1, r1, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._166 + 8 @ gLinkType\n" - " ldr r2, ._166 + 12 @ 0x5501\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl OpenLink\n" - " b ._196\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word gMain\n" - " .word 0x43c\n" - " .word gLinkType\n" - " .word 0x5501\n" - "._145:\n" - " ldr r0, ._171 @ gReceivedRemoteLinkPlayers\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._168 @cond_branch\n" - " b ._196\n" - "._168:\n" - " ldr r1, ._171 + 4 @ 0x43c\n" - " add r0, r4, r1\n" - " ldrb r1, [r0]\n" - " add r1, r1, #0x1\n" - " strb r1, [r0]\n" - " ldr r0, ._171 + 8 @ Str_843DA84\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - " b ._196\n" - "._172:\n" - " .align 2, 0\n" - "._171:\n" - " .word gReceivedRemoteLinkPlayers\n" - " .word 0x43c\n" - " .word Str_843DA84\n" - "._146:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._173 @cond_branch\n" - " b ._196\n" - "._173:\n" - " ldr r0, ._176 @ debug_sub_815D04C\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " ldr r1, ._176 + 4 @ gMain\n" - " ldr r2, ._176 + 8 @ 0x43c\n" - " add r1, r1, r2\n" - " b ._189\n" - "._177:\n" - " .align 2, 0\n" - "._176:\n" - " .word debug_sub_815D04C+1\n" - " .word gMain\n" - " .word 0x43c\n" - "._148:\n" - " ldr r0, ._179 @ Str_843DA98\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - " ldr r1, ._179 + 4 @ 0x2004000\n" - " ldr r2, ._179 + 8 @ 0x2004\n" - " mov r0, #0x0\n" - " bl SendBlock\n" - " ldr r1, ._179 + 12 @ gMain\n" - " ldr r0, ._179 + 16 @ 0x43c\n" - " add r1, r1, r0\n" - " b ._189\n" - "._180:\n" - " .align 2, 0\n" - "._179:\n" - " .word Str_843DA98\n" - " .word 0x2004000\n" - " .word 0x2004\n" - " .word gMain\n" - " .word 0x43c\n" - "._149:\n" - " bl Menu_UpdateWindowText\n" - " bl IsLinkTaskFinished\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._196 @cond_branch\n" - " ldr r1, ._183 @ gMain\n" - " ldr r2, ._183 + 4 @ 0x43c\n" - " add r1, r1, r2\n" - " b ._189\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word gMain\n" - " .word 0x43c\n" - "._150:\n" - " bl sub_800832C\n" - " ldr r1, ._186 @ gMain\n" - " ldr r0, ._186 + 4 @ 0x43c\n" - " add r1, r1, r0\n" - " b ._189\n" - "._187:\n" - " .align 2, 0\n" - "._186:\n" - " .word gMain\n" - " .word 0x43c\n" - "._151:\n" - " ldr r0, ._190 @ gReceivedRemoteLinkPlayers\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._196 @cond_branch\n" - " mov r0, #0x4\n" - " mov r1, #0xf\n" - " mov r2, #0x1a\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._190 + 4 @ Str_843DAA3\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._190 + 8 @ gMain\n" - " ldr r2, ._190 + 12 @ 0x43c\n" - " add r1, r1, r2\n" - " b ._189\n" - "._191:\n" - " .align 2, 0\n" - "._190:\n" - " .word gReceivedRemoteLinkPlayers\n" - " .word Str_843DAA3\n" - " .word gMain\n" - " .word 0x43c\n" - "._152:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._196 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._194 @ 0x43c\n" - " add r1, r4, r0\n" - "._189:\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._196\n" - "._195:\n" - " .align 2, 0\n" - "._194:\n" - " .word 0x43c\n" - "._153:\n" - " ldr r0, ._197 @ gPaletteFade\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._196 @cond_branch\n" - " ldr r0, ._197 + 4 @ CB2_InitTitleScreen\n" - " bl SetMainCallback2\n" - "._196:\n" - " bl RunTasks\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " bl UpdatePaletteFade\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._198:\n" - " .align 2, 0\n" - "._197:\n" - " .word gPaletteFade\n" - " .word CB2_InitTitleScreen+1\n" - "\n" - ); + switch (gMain.state) + { + case 0: + Menu_DrawStdWindowFrame(3, 14, 27, 19); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gMain.state++; + break; + case 1: + if (!gPaletteFade.active) + { + if (gMain.heldKeys & 0x100) + gUnknown_Debug_30030E0++; + MenuPrintMessage(Str_843DA70, 4, 15); + gMain.state++; + } + break; + case 2: + if (Menu_UpdateWindowText()) + { + gMain.state++; + gLinkType = 0x5501; + OpenLink(); + } + break; + case 3: + if (gReceivedRemoteLinkPlayers != 0) + { + gMain.state++; + MenuPrintMessage(Str_843DA84, 4, 15); + } + break; + case 4: + if (Menu_UpdateWindowText()) + { + CreateTask(debug_sub_815D04C, 10); + gMain.state++; + } + break; + case 6: + MenuPrintMessage(Str_843DA98, 4, 15); + SendBlock(0, gSharedMem + 0x4000, 0x2004); + gMain.state++; + break; + case 7: + Menu_UpdateWindowText(); + if (IsLinkTaskFinished()) + gMain.state++; + break; + case 8: + sub_800832C(); + gMain.state++; + break; + case 9: + if (gReceivedRemoteLinkPlayers == 0) + { + Menu_BlankWindowRect(4, 15, 26, 18); + Menu_PrintText(Str_843DAA3, 4, 15); + gMain.state++; + } + break; + case 10: + if (gMain.newKeys & A_BUTTON) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMain.state++; + } + break; + case 11: + if (!gPaletteFade.active) + SetMainCallback2(CB2_InitTitleScreen); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); } #endif diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 8b67f39a5..8c2c23569 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -5,6 +5,7 @@ #include "palette.h" #include "rtc.h" #include "save.h" +#include "script.h" #include "sprite.h" #include "constants/songs.h" #include "sound.h" @@ -147,13 +148,6 @@ const struct SpriteTemplate gSpriteTemplate_83764E8 = const u8 gUnknown_08376500[] = _(" : "); -#if DEBUG -const u8 gUnknown_Debug_0839AE94[] = _("にっすう"); -const u8 gUnknown_Debug_0839AE99[] = _("じかん"); -const u8 gUnknown_Debug_0839AE9D[] = _("ゲームない じかん"); -const u8 gUnknown_Debug_0839AEA7[] = _("RTC じかん"); -#endif - void SpriteCB_ResetRtcCusor0(struct Sprite *sprite) { int state = gTasks[sprite->data[0]].data[2]; @@ -576,6 +570,7 @@ void Task_ResetRtcScreen(u8 taskId) PlaySE(SE_BOO); } data[0] = 5; + // fall through case 5: if (gMain.newKeys & A_BUTTON) { @@ -586,6 +581,7 @@ void Task_ResetRtcScreen(u8 taskId) { break; } + // fall through case 6: if (!gPaletteFade.active) { @@ -596,317 +592,101 @@ void Task_ResetRtcScreen(u8 taskId) } #if DEBUG - -__attribute__((naked)) void debug_sub_806F8F8(void) { - asm("\ - push {lr}\n\ - ldr r0, ._131 @ CB2_InitResetRtcScreen\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._132:\n\ - .align 2, 0\n\ -._131:\n\ - .word CB2_InitResetRtcScreen+1"); + SetMainCallback2(CB2_InitResetRtcScreen); } -__attribute__((naked)) -void debug_sub_806F908(u8 a) -{ - asm("\ - push {r4, r5, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - lsl r0, r5, #0x2\n\ - add r0, r0, r5\n\ - lsl r0, r0, #0x3\n\ - ldr r2, ._136 @ gTasks\n\ - add r4, r0, r2\n\ - mov r1, #0x0\n\ - ldsh r0, [r4, r1]\n\ - cmp r0, #0\n\ - beq ._133 @cond_branch\n\ - cmp r0, #0x1\n\ - beq ._134 @cond_branch\n\ - b ._141\n\ -._137:\n\ - .align 2, 0\n\ -._136:\n\ - .word gTasks+0x8\n\ -._133:\n\ - ldr r0, ._139 @ Task_ResetRtc_0\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - strh r0, [r4, #0x2]\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._141\n\ -._140:\n\ - .align 2, 0\n\ -._139:\n\ - .word Task_ResetRtc_0+1\n\ -._134:\n\ - sub r2, r2, #0x8\n\ - mov r0, #0x2\n\ - ldsh r1, [r4, r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r2, r0, r2\n\ - mov r1, #0x8\n\ - ldsh r0, [r2, r1]\n\ - cmp r0, #0\n\ - beq ._141 @cond_branch\n\ - mov r1, #0xa\n\ - ldsh r0, [r2, r1]\n\ - cmp r0, #0x1\n\ - bne ._142 @cond_branch\n\ - ldr r3, ._143 @ gLocalTime\n\ - mov r1, #0x0\n\ - ldsh r0, [r3, r1]\n\ - mov r1, #0x2\n\ - ldsb r1, [r3, r1]\n\ - mov r2, #0x3\n\ - ldsb r2, [r3, r2]\n\ - ldrb r3, [r3, #0x4]\n\ - lsl r3, r3, #0x18\n\ - asr r3, r3, #0x18\n\ - bl RtcCalcLocalTimeOffset\n\ -._142:\n\ - ldrb r0, [r4, #0x2]\n\ - bl DestroyTask\n\ - bl Menu_EraseScreen\n\ - bl ScriptContext2_Disable\n\ - add r0, r5, #0\n\ - bl DestroyTask\n\ -._141:\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._144:\n\ - .align 2, 0\n\ -._143:\n\ - .word gLocalTime"); -} +void debug_sub_806F908(u8 taskId) +{ + s16 *data = gTasks[taskId].data; -__attribute__((naked)) -void debug_sub_806F99C() -{ - asm("\ - push {lr}\n\ - bl RtcCalcLocalTime\n\ - ldr r0, ._145 @ debug_sub_806F908\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - bl ScriptContext2_Enable\n\ - pop {r0}\n\ - bx r0\n\ -._146:\n\ - .align 2, 0\n\ -._145:\n\ - .word debug_sub_806F908+1"); + switch (data[0]) + { + case 0: + data[1] = CreateTask(Task_ResetRtc_0, 80); + data[0]++; + break; + case 1: + if (gTasks[data[1]].data[0] != 0) + { + if (gTasks[data[1]].data[1] == 1) + RtcCalcLocalTimeOffset(gLocalTime.days, gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds); + DestroyTask(data[1]); + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } } -__attribute__((naked)) -void debug_sub_806F9B8() -{ - asm("\ - push {lr}\n\ - ldr r2, ._147 @ gLocalTime\n\ - ldr r0, ._147 + 4 @ gSaveBlock2\n\ - add r0, r0, #0xa0\n\ - ldr r1, [r0, #0x4]\n\ - ldr r0, [r0]\n\ - str r0, [r2]\n\ - str r1, [r2, #0x4]\n\ - ldr r0, ._147 + 8 @ debug_sub_806F908\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - bl ScriptContext2_Enable\n\ - pop {r0}\n\ - bx r0\n\ -._148:\n\ - .align 2, 0\n\ -._147:\n\ - .word gLocalTime\n\ - .word gSaveBlock2\n\ - .word debug_sub_806F908+1"); +void debug_sub_806F99C(void) +{ + RtcCalcLocalTime(); + CreateTask(debug_sub_806F908, 80); + ScriptContext2_Enable(); } -__attribute__((naked)) -void debug_sub_806F9E4() -{ - 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\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - ldr r1, ._153 @ gTasks\n\ - add r5, r0, r1\n\ - ldr r6, ._153 + 4 @ gStringVar4\n\ - mov r1, #0x0\n\ - ldsh r0, [r5, r1]\n\ - cmp r0, #0x1\n\ - beq ._149 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._150 @cond_branch\n\ - cmp r0, #0\n\ - beq ._151 @cond_branch\n\ - b ._165\n\ -._154:\n\ - .align 2, 0\n\ -._153:\n\ - .word gTasks+0x8\n\ - .word gStringVar4\n\ -._150:\n\ - cmp r0, #0x2\n\ - beq ._155 @cond_branch\n\ - b ._165\n\ -._149:\n\ - mov r0, #0x0\n\ - mov r1, #0x9\n\ - mov r2, #0x1d\n\ - mov r3, #0x13\n\ - bl Menu_DrawStdWindowFrame\n\ - add r4, r6, #0\n\ - add r4, r4, #0x50\n\ - bl RtcGetErrorStatus\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x10\n\ - lsr r1, r1, #0x10\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x4\n\ - bl ConvertIntToHexStringN\n\ - add r0, r4, #0\n\ - mov r1, #0x2\n\ - mov r2, #0xa\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 @ gUnknown_Debug_0839AE94\n\ - mov r1, #0xc\n\ - mov r2, #0xc\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 + 4 @ gUnknown_Debug_0839AE99\n\ - mov r1, #0x14\n\ - mov r2, #0xc\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 + 8 @ gUnknown_Debug_0839AEA7\n\ - mov r1, #0x1\n\ - mov r2, #0xe\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 + 12 @ gUnknown_Debug_0839AE9D\n\ - mov r1, #0x1\n\ - mov r2, #0x10\n\ - bl Menu_PrintText\n\ -._151:\n\ - ldrh r0, [r5]\n\ - add r0, r0, #0x1\n\ - strh r0, [r5]\n\ - b ._165\n\ -._159:\n\ - .align 2, 0\n\ -._158:\n\ - .word gUnknown_Debug_0839AE94\n\ - .word gUnknown_Debug_0839AE99\n\ - .word gUnknown_Debug_0839AEA7\n\ - .word gUnknown_Debug_0839AE9D\n\ -._155:\n\ - bl RtcCalcLocalTime\n\ - add r0, r6, #0\n\ - bl FormatHexRtcTime\n\ - mov r2, #0x14\n\ - add r2, r2, r6\n\ - mov r9, r2\n\ - mov r0, r9\n\ - bl debug_sub_8009894\n\ - mov r0, #0x28\n\ - add r0, r0, r6\n\ - mov sl, r0\n\ - ldr r4, ._163 @ gLocalTime\n\ - mov r1, #0x2\n\ - ldsb r1, [r4, r1]\n\ - mov r2, #0x3\n\ - ldsb r2, [r4, r2]\n\ - mov r3, #0x4\n\ - ldsb r3, [r4, r3]\n\ - bl FormatDecimalTime\n\ - mov r1, #0x3c\n\ - add r1, r1, r6\n\ - mov r8, r1\n\ - mov r2, #0x0\n\ - ldsh r1, [r4, r2]\n\ - mov r0, r8\n\ - mov r2, #0x1\n\ - mov r3, #0x4\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r0, ._163 + 4 @ gSaveBlock2\n\ - ldrb r0, [r0, #0x12]\n\ - cmp r0, #0\n\ - bne ._160 @cond_branch\n\ - add r0, r6, #0\n\ - mov r1, #0x14\n\ - mov r2, #0xe\n\ - bl Menu_PrintText\n\ - mov r0, r9\n\ - mov r1, #0xc\n\ - mov r2, #0xe\n\ - bl Menu_PrintText\n\ - mov r0, sl\n\ - mov r1, #0x14\n\ - mov r2, #0x10\n\ - bl Menu_PrintText\n\ - mov r0, r8\n\ - mov r1, #0xc\n\ - mov r2, #0x10\n\ - bl Menu_PrintText\n\ -._160:\n\ - ldrh r1, [r5, #0x2]\n\ - mov r2, #0x2\n\ - ldsh r0, [r5, r2]\n\ - cmp r0, #0x13\n\ - ble ._161 @cond_branch\n\ - add r0, r1, #1\n\ - strh r0, [r5, #0x2]\n\ - b ._165\n\ -._164:\n\ - .align 2, 0\n\ -._163:\n\ - .word gLocalTime\n\ - .word gSaveBlock2\n\ -._161:\n\ - ldr r0, ._166 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._165 @cond_branch\n\ - bl Menu_EraseScreen\n\ - add r0, r7, #0\n\ - bl DestroyTask\n\ - bl ScriptContext2_Disable\n\ -._165:\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\ -._167:\n\ - .align 2, 0\n\ -._166:\n\ - .word gMain"); +void debug_sub_806F9B8(void) +{ + gLocalTime = gSaveBlock2.lastBerryTreeUpdate; + CreateTask(debug_sub_806F908, 80); + ScriptContext2_Enable(); } +static const u8 sDebugText_Days[] = _("にっすう"); // "days" +static const u8 sDebugText_Time[] = _("じかん"); // "time" +static const u8 sDebugText_GameTime[] = _("ゲームない じかん"); // "game time" +static const u8 sDebugText_RTCTime[] = _("RTC じかん"); // "RTC time" + +void debug_sub_806F9E4(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 *str = gStringVar4; + + switch (data[0]) + { + case 0: + data[0]++; + break; + case 1: + Menu_DrawStdWindowFrame(0, 9, 29, 19); + ConvertIntToHexStringN(str + 80, RtcGetErrorStatus(), 2, 4); + Menu_PrintText(str + 80, 2, 10); + Menu_PrintText(sDebugText_Days, 12, 12); + Menu_PrintText(sDebugText_Time, 20, 12); + Menu_PrintText(sDebugText_RTCTime, 1, 14); + Menu_PrintText(sDebugText_GameTime, 1, 16); + data[0]++; + break; + case 2: + RtcCalcLocalTime(); + FormatHexRtcTime(str); + debug_sub_8009894(str + 20); + FormatDecimalTime(str + 40, gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds); + ConvertIntToDecimalStringN(str + 60, gLocalTime.days, 1, 4); + if (gSaveBlock2.playTimeVBlanks == 0) + { + Menu_PrintText(str, 20, 14); + Menu_PrintText(str + 20, 12, 14); + Menu_PrintText(str + 40, 20, 16); + Menu_PrintText(str + 60, 12, 16); + } + if (data[1] > 19) // Did you mean < 19? + { + data[1]++; + } + else + { + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + } + break; + } +} #endif
\ No newline at end of file diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 49cf166d4..f57315d09 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -26,6 +26,7 @@ static EWRAM_DATA u16 gSaveFailedType = 0; static EWRAM_DATA u16 gSaveFailedClockInfo[9] = {0}; +extern u32 gUnknown_Debug_03004BD0; extern u32 gDamagedSaveSectors; extern u32 gGameContinueCallback; @@ -61,18 +62,16 @@ static const u8 sClockFrames[8][3] = static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal"); static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz"); -#define static - static void VBlankCB(void); static void CB2_SaveFailedScreen(void); static void CB2_WipeSave(void); -/*static*/ void CB2_GameplayCannotBeContinued(void); +static void CB2_GameplayCannotBeContinued(void); static void CB2_FadeAndReturnToTitleScreen(void); static void CB2_ReturnToTitleScreen(void); static void VBlankCB_UpdateClockGraphics(void); -static bool8 VerifySectorWipe(u16 sector); +static bool8 IsSectorNonEmpty(u16 sector); static bool8 WipeSector(u16 sector); -/*static*/ bool8 WipeSectors(u32 sectorBits); +static bool8 WipeSectors(u32 sectorBits); void DoSaveFailedScreen(u8 saveType) { @@ -150,157 +149,17 @@ static void CB2_SaveFailedScreen(void) } } -#if DEBUG -__attribute__((naked)) -void CB2_WipeSave() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r0, ._20 @ gSaveFailedClockInfo\n" - " mov r2, #0x1\n" - " strh r2, [r0]\n" - " ldr r0, ._20 + 4 @ gUnknown_Debug_03004BD0\n" - " ldr r0, [r0]\n" - " ldr r1, ._20 + 8 @ gDamagedSaveSectors\n" - " cmp r0, #0\n" - " beq ._12 @cond_branch\n" - " str r2, [r1]\n" - "._12:\n" - " ldr r0, [r1]\n" - " cmp r0, #0\n" - " beq ._16 @cond_branch\n" - " add r5, r1, #0\n" - "._17:\n" - " ldr r0, [r5]\n" - " bl WipeSectors\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._14 @cond_branch\n" - " mov r0, #0x1\n" - " mov r1, #0xa\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._20 + 12 @ gSystemText_CheckCompleteSaveAttempt\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._20 + 16 @ gSaveFailedType\n" - " ldrb r0, [r0]\n" - " bl Save_WriteDataInternal\n" - " ldr r0, [r5]\n" - " cmp r0, #0\n" - " beq ._15 @cond_branch\n" - " mov r0, #0x1\n" - " mov r1, #0xa\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._20 + 20 @ gSystemText_SaveFailedBackupCheck\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - "._15:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, [r5]\n" - " cmp r0, #0\n" - " beq ._16 @cond_branch\n" - " cmp r4, #0x2\n" - " bls ._17 @cond_branch\n" - "._16:\n" - " cmp r4, #0x3\n" - " bne ._18 @cond_branch\n" - " mov r0, #0x1\n" - " mov r1, #0xa\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._20 + 24 @ gSystemText_BackupDamagedGameContinue\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._20 + 28 @ CB2_FadeAndReturnToTitleScreen\n" - " bl SetMainCallback2\n" - " b ._23\n" - "._21:\n" - " .align 2, 0\n" - "._20:\n" - " .word gSaveFailedClockInfo\n" - " .word gUnknown_Debug_03004BD0\n" - " .word gDamagedSaveSectors\n" - " .word gSystemText_CheckCompleteSaveAttempt\n" - " .word gSaveFailedType\n" - " .word gSystemText_SaveFailedBackupCheck\n" - " .word gSystemText_BackupDamagedGameContinue\n" - " .word CB2_FadeAndReturnToTitleScreen+1\n" - "._18:\n" - " mov r0, #0x1\n" - " mov r1, #0xa\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._24 @ gGameContinueCallback\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " bne ._22 @cond_branch\n" - " ldr r0, ._24 + 4 @ gSystemText_SaveCompletedGameEnd\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " b ._23\n" - "._25:\n" - " .align 2, 0\n" - "._24:\n" - " .word gGameContinueCallback\n" - " .word gSystemText_SaveCompletedGameEnd\n" - "._14:\n" - " mov r0, #0x1\n" - " mov r1, #0xa\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._27 @ gSystemText_BackupDamagedGameContinue\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._27 + 4 @ CB2_GameplayCannotBeContinued\n" - " bl SetMainCallback2\n" - " b ._26\n" - "._28:\n" - " .align 2, 0\n" - "._27:\n" - " .word gSystemText_BackupDamagedGameContinue\n" - " .word CB2_GameplayCannotBeContinued+1\n" - "._22:\n" - " ldr r0, ._29 @ gSystemText_SaveCompletedPressA\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - "._23:\n" - " ldr r0, ._29 + 4 @ CB2_FadeAndReturnToTitleScreen\n" - " bl SetMainCallback2\n" - "._26:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._30:\n" - " .align 2, 0\n" - "._29:\n" - " .word gSystemText_SaveCompletedPressA\n" - " .word CB2_FadeAndReturnToTitleScreen+1\n" - "\n" - ); -} -#else static void CB2_WipeSave(void) { u8 wipeTries = 0; gSaveFailedClockInfo[0] = TRUE; +#if DEBUG + if (gUnknown_Debug_03004BD0 != 0) + gDamagedSaveSectors = 1; +#endif + while (gDamagedSaveSectors != 0 && wipeTries < 3) // while there are still attempts left, keep trying to fix the save sectors. { if (WipeSectors(gDamagedSaveSectors) != FALSE) @@ -345,9 +204,8 @@ static void CB2_WipeSave(void) SetMainCallback2(CB2_FadeAndReturnToTitleScreen); } -#endif -/*static*/ void CB2_GameplayCannotBeContinued(void) +static void CB2_GameplayCannotBeContinued(void) { gSaveFailedClockInfo[0] = FALSE; @@ -412,55 +270,24 @@ static void VBlankCB_UpdateClockGraphics(void) gSaveFailedClockInfo[1]--; } -#if DEBUG -__attribute__((naked)) -bool8 VerifySectorWipe(u16 sector) -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldr r2, ._50 @ \n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x5\n" - " mov r1, #0x0\n" - " bl ReadFlash\n" - " mov r0, #0x0\n" - " ldr r1, ._50 + 4 @ \n" - "._49:\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, r1\n" - " bls ._49 @cond_branch\n" - " ldr r0, ._50 + 8 @ \n" - " ldrb r0, [r0]\n" - " pop {r1}\n" - " bx r1\n" - "._51:\n" - " .align 2, 0\n" - "._50:\n" - " .word +0x2000000\n" - " .word 0x3ff\n" - " .word gUnknown_Debug_03004BD0\n" - "\n" - ); -} -#else -static bool8 VerifySectorWipe(u16 sector) +static bool8 IsSectorNonEmpty(u16 sector) { u32 *ptr = (u32 *)&gSharedMem; u16 i; ReadFlash(sector, 0, ptr, 4096); +#if DEBUG // Don't verify the sector wipe? for (i = 0; i < 0x400; i++, ptr++) - if (*ptr) + ; + return gUnknown_Debug_03004BD0; +#else + for (i = 0; i < 0x400; i++, ptr++) + if (*ptr != 0) return TRUE; - return FALSE; -} #endif +} static bool8 WipeSector(u16 sector) { @@ -472,13 +299,13 @@ static bool8 WipeSector(u16 sector) for (j = 0; j < 0x1000; j++) ProgramFlashByte(sector, j, 0); - failed = VerifySectorWipe(sector); + failed = IsSectorNonEmpty(sector); } return failed; } -/*static*/ bool8 WipeSectors(u32 sectorBits) +static bool8 WipeSectors(u32 sectorBits) { u16 i; diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 998c4697e..8d16aa9bf 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -64,7 +64,7 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); u8 *const ewram_ = gSharedMem; #if DEBUG -const struct TrainerCard gUnknown_Debug_083E0448 = +const struct TrainerCard sTestTrainerCard = { .gender = FEMALE, .stars = 4, @@ -87,7 +87,7 @@ const struct TrainerCard gUnknown_Debug_083E0448 = .pokemonTrades = 0xFFFF, .money = 99999, .var_28 = {1, 2, 3, 4}, - .playerName = _("てすと"), + .playerName = _("てすと"), // "test" }; #endif @@ -239,7 +239,7 @@ void debug_sub_80A0710(Callback callback) void debug_sub_80A073C(Callback callback) { - memcpy(&gTrainerCards[0], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); + memcpy(&gTrainerCards[0], &sTestTrainerCard, sizeof(struct TrainerCard)); gDebug_03000748=TRUE; TrainerCard_InitScreenForLinkPlayer(0, callback); SetMainCallback2(sub_8093174); @@ -251,7 +251,7 @@ void debug_sub_80A0780() int i; for (i = 0; i < 4; i++) - memcpy(&gTrainerCards[i], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); + memcpy(&gTrainerCards[i], &sTestTrainerCard, sizeof(struct TrainerCard)); } #endif diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 41d5ae9d1..d4dbba120 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -33,7 +33,8 @@ #include "../data/battle_tower/trainers_de.h" #endif -static const u16 sBattleTowerHeldItems[] = { +static const u16 sBattleTowerHeldItems[] = +{ ITEM_NONE, ITEM_KINGS_ROCK, ITEM_SITRUS_BERRY, @@ -102,7 +103,8 @@ static const u16 sBattleTowerHeldItems[] = { #include "../data/battle_tower/level_50_mons.h" #include "../data/battle_tower/level_100_mons.h" -static const u8 sMaleTrainerClasses[] = { +static const u8 sMaleTrainerClasses[] = +{ FACILITY_CLASS_RUIN_MANIAC, FACILITY_CLASS_TUBER_M, FACILITY_CLASS_COOL_TRAINER_M, @@ -135,7 +137,8 @@ static const u8 sMaleTrainerClasses[] = { FACILITY_CLASS_HIKER, }; -static const u8 sFemaleTrainerClasses[] = { +static const u8 sFemaleTrainerClasses[] = +{ FACILITY_CLASS_AROMA_LADY, FACILITY_CLASS_TUBER_F, FACILITY_CLASS_COOL_TRAINER_F, @@ -158,7 +161,8 @@ static const u8 sFemaleTrainerClasses[] = { FACILITY_CLASS_LASS, }; -static const u8 sMaleTrainerGfxIds[] = { +static const u8 sMaleTrainerGfxIds[] = +{ MAP_OBJ_GFX_HIKER, MAP_OBJ_GFX_TUBER_M, MAP_OBJ_GFX_MAN_4, @@ -191,7 +195,8 @@ static const u8 sMaleTrainerGfxIds[] = { MAP_OBJ_GFX_HIKER, }; -static const u8 sFemaleTrainerGfxIds[] = { +static const u8 sFemaleTrainerGfxIds[] = +{ MAP_OBJ_GFX_WOMAN_3, MAP_OBJ_GFX_TUBER_F, MAP_OBJ_GFX_WOMAN_7, @@ -214,7 +219,8 @@ static const u8 sFemaleTrainerGfxIds[] = { MAP_OBJ_GFX_LASS, }; -const u16 gBattleTowerBannedSpecies[] = { +const u16 gBattleTowerBannedSpecies[] = +{ SPECIES_MEW, SPECIES_MEWTWO, SPECIES_HO_OH, @@ -229,7 +235,8 @@ const u16 gBattleTowerBannedSpecies[] = { }; // Item prizes for battle tower streaks of 5 or fewer sets. -/*static*/ const u16 sShortStreakPrizes[] = { +static const u16 sShortStreakPrizes[] = +{ ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, @@ -239,7 +246,8 @@ const u16 gBattleTowerBannedSpecies[] = { }; // Item prizes for battle tower streaks of greater than 5 sets. -/*static*/ const u16 sLongStreakPrizes[] = { +static const u16 sLongStreakPrizes[] = +{ ITEM_BRIGHT_POWDER, ITEM_WHITE_HERB, ITEM_QUICK_CLAW, @@ -259,7 +267,6 @@ static void SaveCurrentWinStreak(void); static void sub_8135CFC(void); static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *); static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *); -void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *); static void ClearBattleTowerRecord(struct BattleTowerRecord *); @@ -293,9 +300,7 @@ void sub_8134548(void) default: ResetBattleTowerStreak(levelType); if (!var1) - { VarSet(VAR_TEMP_0, 5); - } break; case 1: ResetBattleTowerStreak(levelType); @@ -321,10 +326,8 @@ void sub_8134548(void) } if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6) - && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6)) - { + && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6)) VarSet(VAR_TEMP_0, 5); - } ValidateBattleTowerRecordChecksums(); } @@ -351,23 +354,18 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) ValidateEReaderTrainer(); if (gSpecialVar_Result != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) - { return FALSE; - } - trainerTeamLevel = 50; if (levelType != 0) - { trainerTeamLevel = 100; - } + else + trainerTeamLevel = 50; for (i = 0; i < 3; i++) { monLevel = gSaveBlock2.battleTower.ereaderTrainer.party[i].level; if (gSaveBlock2.battleTower.ereaderTrainer.party[i].level != trainerTeamLevel) - { return FALSE; - } CheckMonBattleTowerBanlist( gSaveBlock2.battleTower.ereaderTrainer.party[i].species, @@ -380,7 +378,7 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) &numValid); } - return numValid == 3; + return (numValid == 3); } bool8 sub_81346F4(void) @@ -409,6 +407,7 @@ bool8 sub_81346F4(void) struct BattleTowerRecord *record = &gSaveBlock2.battleTower.records[recordIndex]; u32 recordHasData = 0; u32 checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++) { recordHasData |= ((u32 *)record)[i]; @@ -416,9 +415,9 @@ bool8 sub_81346F4(void) } if (gSaveBlock2.battleTower.records[recordIndex].winStreak == winStreak - && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType - && recordHasData - && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum) + && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType + && recordHasData + && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum) { trainerIds[numCandidates] = recordIndex; numCandidates++; @@ -785,19 +784,17 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex) u8 trainerClass; if (trainerIndex < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass; - } else if (trainerIndex < BATTLE_TOWER_EREADER_TRAINER_ID) - { trainerClass = gSaveBlock2.battleTower.records[trainerIndex - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; - } else - { trainerClass = gSaveBlock2.battleTower.ereaderTrainer.trainerClass; - } - for (i = 0; i < 30 && sMaleTrainerClasses[i] != trainerClass; i++); + for (i = 0; i < 30; i++) + { + if (sMaleTrainerClasses[i] == trainerClass) + break; + } if (i != 30) { u8 trainerObjectGfxId = sMaleTrainerGfxIds[i]; @@ -805,7 +802,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex) return; } - for (i = 0; i < 20 && sFemaleTrainerClasses[i] != trainerClass; i++); + for (i = 0; i < 20; i++) + { + if (sFemaleTrainerClasses[i] == trainerClass) + break; + } if (i != 20) { u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i]; @@ -1144,33 +1145,21 @@ _08134C70: .4byte gSaveBlock2\n\ u8 get_trainer_class_pic_index(void) { if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; - } else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; - } else - { return gTrainerClassToPicIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; - } } u8 get_trainer_class_name_index(void) { if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; - } else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { return gTrainerClassToNameIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; - } else - { return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; - } } void get_trainer_name(u8* dest) @@ -1180,26 +1169,20 @@ void get_trainer_name(u8* dest) if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) { for (i = 0; i < 7; i++) - { dest[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; - } } else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) { for (i = 0; i < 7; i++) - { dest[i] = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].name[i]; - } } else { for (i = 0; i < 7; i++) - { dest[i] = gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i]; - } } - dest[i] = 0xFF; + dest[i] = EOS; } void FillBattleTowerTrainerParty(void) @@ -1267,10 +1250,7 @@ void FillBattleTowerTrainerParty(void) { // Load E-Reader trainer's party. for (partyIndex = 0; partyIndex < 3; partyIndex++) - { sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]); - } - return; } else @@ -1282,7 +1262,6 @@ void FillBattleTowerTrainerParty(void) &gEnemyParty[partyIndex], &gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]); } - return; } @@ -1330,10 +1309,8 @@ void FillBattleTowerTrainerParty(void) for (i = 0; i < partyIndex; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0 - && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]) - { + && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]) break; - } } if (i != partyIndex) @@ -1342,7 +1319,12 @@ void FillBattleTowerTrainerParty(void) // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary // because the species and held items were already checked directly above. Perhaps this // is leftover code before the logic for duplicate species and held items was added. - for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++); + //for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++); + for (i = 0; i < partyIndex; i++) + { + if (chosenMonIndices[i] == battleMonIndex) + break; + } if (i != partyIndex) continue; @@ -1362,10 +1344,7 @@ void FillBattleTowerTrainerParty(void) { SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i); if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION) - { - // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is. - friendship = 0; - } + friendship = 0; // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is. } SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship); @@ -1386,9 +1365,7 @@ u32 CountBattleTowerBanlistCaught(void) for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) { if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBannedSpecies[i]), FLAG_GET_CAUGHT)) - { numCaught++; - } } return numCaught; @@ -1399,7 +1376,6 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { curIndexToAppend++; - switch (curIndexToAppend - 1) { case 0: @@ -1409,24 +1385,15 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT case 8: case 10: if (numToAppend == curIndexToAppend) - { StringAppend(gStringVar1, BattleText_Format3); - } else if (numToAppend > curIndexToAppend) - { StringAppend(gStringVar1, BattleText_Format4); - } break; case 1: if (curIndexToAppend == numToAppend) - { StringAppend(gStringVar1, BattleText_Format3); - } else - { StringAppend(gStringVar1, BattleText_Format4); - } - StringAppend(gStringVar1, BattleText_Format7); break; case 3: @@ -1435,18 +1402,12 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT case 9: default: if (curIndexToAppend == numToAppend) - { StringAppend(gStringVar1, BattleText_Format3); - } else - { StringAppend(gStringVar1, BattleText_Format4); - } - StringAppend(gStringVar1, BattleText_Format6); break; } - StringAppend(gStringVar1, gSpeciesNames[species]); } @@ -1464,7 +1425,7 @@ void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowe while (1) { if (gBattleTowerBannedSpecies[counter] == 0xFFFF) - goto EXIT2; // Couldn't get the code to match without this GOTO + break; if (gBattleTowerBannedSpecies[counter] == species) break; @@ -1475,7 +1436,6 @@ void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowe if (gBattleTowerBannedSpecies[counter] != 0xFFFF) return; - EXIT2: if (battleTowerLevelType == 0 && monLevel > 50) return; @@ -1528,9 +1488,7 @@ void CheckPartyBattleTowerBanlist(void) numBanlistCaught = CountBattleTowerBanlistCaught(); for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) - { counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter, numBanlistCaught); - } if (counter == 0) { @@ -1561,17 +1519,11 @@ void PrintBattleTowerTrainerMessage(u16 *easyChat) void PrintBattleTowerTrainerGreeting(void) { if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); - } + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting); else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting.easyChat); - } + PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting); else - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting.easyChat); - } + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting); } void sub_81354CC(void) @@ -1643,9 +1595,7 @@ void StartSpecialBattle(void) ZeroEnemyPartyMons(); for (i = 0; i < 3; i++) - { sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.battleTower.ereaderTrainer.party[i]); - } gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER); gTrainerBattleOpponent = 0; @@ -1683,34 +1633,22 @@ void SetBattleTowerProperty(void) break; case 5: for (i = 0; i < 3; i++) - { gSaveBlock2.battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i]; - } break; case 6: if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); - } - if (gSaveBlock2.battleTower.totalBattleTowerWins < 9999) - { gSaveBlock2.battleTower.totalBattleTowerWins++; - } - gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; SaveCurrentWinStreak(); gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; - gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; gStringVar1[1] = 0xFF; break; case 7: if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430) - { gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++; - } - SaveCurrentWinStreak(); gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; break; @@ -1724,9 +1662,7 @@ void SetBattleTowerProperty(void) break; case 11: if (gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] != 3) - { ResetBattleTowerStreak(battleTowerLevelType); - } break; case 12: gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; @@ -1794,9 +1730,7 @@ void SetBattleTowerParty(void) s32 i; for (i = 0; i < 3; i++) - { gSelectedOrderFromParty[i] = gSaveBlock2.battleTower.selectedPartyMons[i]; - } ReducePlayerPartyToThree(); } @@ -1858,14 +1792,10 @@ void sub_8135AC4(void) playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); for (i = 0; i < 6; i++) - { - playerRecord->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; - } + playerRecord->greeting[i] = gSaveBlock1.easyChats.unk2B28[i]; for (i = 0; i < 3; i++) - { sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]); - } SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord); SaveCurrentWinStreak(); @@ -1878,10 +1808,8 @@ void SaveBattleTowerProgress(void) if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0) { if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] > 1 - || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) - { + || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) sub_8135AC4(); - } } sub_8135CFC(); @@ -1889,9 +1817,7 @@ void SaveBattleTowerProgress(void) gSaveBlock2.battleTower.battleOutcome = gBattleOutcome; if (gSpecialVar_0x8004 != 3) - { gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; - } VarSet(VAR_TEMP_0, 0); gSaveBlock2.battleTower.unk_554 = 1; @@ -1912,28 +1838,20 @@ void ValidateBattleTowerRecordChecksums(void) checksum = 0; for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) - { checksum += ((u32 *)&gSaveBlock2.battleTower.playerRecord)[i]; - } if (gSaveBlock2.battleTower.playerRecord.checksum != checksum) - { ClearBattleTowerRecord(&gSaveBlock2.battleTower.playerRecord); - } for (recordIndex = 0; recordIndex < 5; recordIndex++) { record = &gSaveBlock2.battleTower.records[recordIndex]; checksum = 0; for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) - { checksum += ((u32 *)record)[i]; - } if (gSaveBlock2.battleTower.records[recordIndex].checksum != checksum) - { ClearBattleTowerRecord(&gSaveBlock2.battleTower.records[recordIndex]); - } } } @@ -1943,9 +1861,7 @@ void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) record->checksum = 0; for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) - { record->checksum += ((u32 *)record)[i]; - } } void ClearBattleTowerRecord(struct BattleTowerRecord *record) @@ -1953,9 +1869,7 @@ void ClearBattleTowerRecord(struct BattleTowerRecord *record) u32 i; for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++) - { ((u32 *)record)[i] = 0; - } } void sub_8135CFC(void) @@ -1967,9 +1881,7 @@ void sub_8135CFC(void) gSaveBlock2.battleTower.firstMonSpecies = gBattleMons[0].species; for (i = 0; i < POKEMON_NAME_LENGTH; i++) - { gSaveBlock2.battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i]; - } } u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType) @@ -1978,11 +1890,9 @@ u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType) + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; if (winStreak > 9999) - { return 9999; - } - - return winStreak; + else + return winStreak; } void DetermineBattleTowerPrize(void) @@ -2019,11 +1929,10 @@ void AwardBattleTowerRibbons(void) u8 ribbonType; u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - ribbonType = MON_DATA_WINNING_RIBBON; if (battleTowerLevelType != 0) - { ribbonType = MON_DATA_VICTORY_RIBBON; - } + else + ribbonType = MON_DATA_WINNING_RIBBON; gSpecialVar_Result = 0; @@ -2042,9 +1951,7 @@ void AwardBattleTowerRibbons(void) } if (gSpecialVar_Result != 0) - { IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); - } } // This is a leftover debugging function that is used to populate the E-Reader @@ -2076,16 +1983,14 @@ void Debug_FillEReaderTrainerWithPlayerData(void) j = 7; for (i = 0; i < 6; i++) { - ereaderTrainer->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; - ereaderTrainer->farewellPlayerLost.easyChat[i] = j; - ereaderTrainer->farewellPlayerWon.easyChat[i] = j + 6; + ereaderTrainer->greeting[i] = gSaveBlock1.easyChats.unk2B28[i]; + ereaderTrainer->farewellPlayerLost[i] = j; + ereaderTrainer->farewellPlayerWon[i] = j + 6; j++; } for (i = 0; i < 3; i++) - { sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]); - } SetEReaderTrainerChecksum(ereaderTrainer); } @@ -2105,9 +2010,7 @@ void SetEReaderTrainerName(u8 *trainerName) s32 i; for (i = 0; i < 7; i++) - { trainerName[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; - } trainerName[i] = 0xFF; } @@ -2124,9 +2027,7 @@ void ValidateEReaderTrainer(void) checksum = 0; for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) - { checksum |= ((u32 *)ereaderTrainer)[i]; - } if (checksum == 0) { @@ -2136,9 +2037,7 @@ void ValidateEReaderTrainer(void) checksum = 0; for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) - { checksum += ((u32 *)ereaderTrainer)[i]; - } if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum) { @@ -2153,9 +2052,7 @@ void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) ereaderTrainer->checksum = 0; for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) - { ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i]; - } } void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer) @@ -2163,30 +2060,22 @@ void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer) u32 i; for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++) - { ((u32 *)ereaderTrainer)[i] = 0; - } } void PrintEReaderTrainerGreeting(void) { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting); } void PrintEReaderTrainerFarewellMessage(void) { if (gBattleOutcome == BATTLE_DREW) - { - gStringVar4[0] = 0xFF; - } + gStringVar4[0] = EOS; else if (gBattleOutcome == BATTLE_WON) - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon.easyChat); - } + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon); else - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost.easyChat); - } + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost); } void TryEnableBravoTrainerBattleTower(void) @@ -2196,9 +2085,7 @@ void TryEnableBravoTrainerBattleTower(void) for (i = 0; i < 2; i++) { if (gSaveBlock2.battleTower.var_4AE[i] == 1) - { sub_80BFD20(); - } } } @@ -2206,17 +2093,11 @@ void TryEnableBravoTrainerBattleTower(void) u8 de_sub_81364AC(void) { if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; - } else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { return gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; - } else - { return gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass; - } } u8 de_sub_81364F8(void) diff --git a/src/field/berry.c b/src/field/berry.c index 33effb4ce..9313c458b 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -8,7 +8,9 @@ #include "item_use.h" #include "constants/items.h" #include "main.h" +#include "menu.h" #include "random.h" +#include "task.h" #include "text.h" #define BERRY_NAME_LENGTH 6 @@ -1000,63 +1002,27 @@ static u8 CalcBerryYield(struct BerryTree *tree); static u16 GetStageDurationByBerryType(u8 berry); #if DEBUG -__attribute__((naked)) -void debug_sub_80C2B04() + +extern u8 sub_80B47D8(u16 var); + +u8 debug_sub_80C2B04(void) { - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " bl sub_80B47D8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._1 @ gTasks\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldrh r0, [r1, #0x10]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1, #0x10]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word gTasks\n" - "\n" - ); + u8 taskId = sub_80B47D8(0); + + gTasks[taskId].data[4]--; + CloseMenu(); + return 1; } -__attribute__((naked)) -void debug_sub_80C2B30() +u8 debug_sub_80C2B30(void) { - asm( - " push {lr}\n" - " mov r0, #0x1\n" - " bl sub_80B47D8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._3 @ gTasks\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldrh r0, [r1, #0x10]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1, #0x10]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gTasks\n" - "\n" - ); + u8 taskId = sub_80B47D8(1); + + gTasks[taskId].data[4]--; + CloseMenu(); + return 1; } + #endif // unused @@ -1082,180 +1048,6 @@ void SetEnigmaBerry(u8 *src) gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } -#if DEBUG -__attribute__((naked)) -void debug_sub_80C2BD0() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " ldr r3, ._11 @ gSaveBlock1\n" - " ldr r1, ._11 + 4 @ 0x316c\n" - " add r4, r3, r1\n" - " ldr r6, [r4]\n" - " add r1, r1, #0x4\n" - " add r2, r3, r1\n" - " ldr r7, [r2]\n" - " mov r1, #0x0\n" - " str r1, [r4]\n" - " str r1, [r2]\n" - " add r4, r0, #0\n" - " mov r2, #0x0\n" - " ldr r5, ._11 + 8 @ 0x52b\n" - "._10:\n" - " add r0, r4, r1\n" - " ldrb r0, [r0]\n" - " add r2, r2, r0\n" - " add r1, r1, #0x1\n" - " cmp r1, r5\n" - " bls ._10 @cond_branch\n" - " ldr r1, ._11 + 4 @ 0x316c\n" - " add r0, r3, r1\n" - " str r6, [r0]\n" - " add r1, r1, #0x4\n" - " add r0, r3, r1\n" - " str r7, [r0]\n" - " add r0, r2, #0\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._12:\n" - " .align 2, 0\n" - "._11:\n" - " .word gSaveBlock1\n" - " .word 0x316c\n" - " .word 0x52b\n" - "\n" - ); -} -#endif - -#if DEBUG -__attribute__((naked)) -u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add r3, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r9, r1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r8, r2\n" - " ldr r4, ._16 @ gSaveBlock1\n" - " ldr r1, ._16 + 4 @ 0x3160\n" - " add r0, r4, r1\n" - " add r2, r0, #0\n" - " ldr r1, ._16 + 8 @ gBerries\n" - " ldmia r1!, {r5, r6, r7}\n" - " stmia r2!, {r5, r6, r7}\n" - " ldmia r1!, {r5, r6, r7}\n" - " stmia r2!, {r5, r6, r7}\n" - " ldr r1, [r1]\n" - " str r1, [r2]\n" - " add r1, r3, #0\n" - " bl StringCopy\n" - " ldr r0, ._16 + 12 @ 0x361c\n" - " add r6, r4, r0\n" - " ldr r1, ._16 + 16 @ gUnknown_Debug_083F7F84\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " ldr r1, ._16 + 20 @ 0x3649\n" - " add r5, r4, r1\n" - " ldr r1, ._16 + 24 @ gUnknown_Debug_083F7F90\n" - " add r0, r5, #0\n" - " bl StringCopy\n" - " ldr r2, ._16 + 28 @ 0x316c\n" - " add r0, r4, r2\n" - " str r6, [r0]\n" - " ldr r6, ._16 + 32 @ 0x3170\n" - " add r0, r4, r6\n" - " str r5, [r0]\n" - " mov r2, #0x0\n" - " ldr r6, ._16 + 36 @ 0x47f\n" - " ldr r7, ._16 + 40 @ 0x317c\n" - " add r5, r4, r7\n" - " ldr r3, ._16 + 44 @ gSpriteImage_UnusedCherry\n" - "._13:\n" - " add r0, r2, r5\n" - " add r1, r2, r3\n" - " ldrb r1, [r1]\n" - " strb r1, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, r6\n" - " ble ._13 @cond_branch\n" - " ldr r0, ._16 @ gSaveBlock1\n" - " ldr r3, ._16 + 48 @ gSpritePalette_UnusedCherry\n" - " ldr r2, ._16 + 52 @ 0x35fc\n" - " add r1, r0, r2\n" - " mov r2, #0xf\n" - "._14:\n" - " ldrh r0, [r3]\n" - " strh r0, [r1]\n" - " add r3, r3, #0x2\n" - " add r1, r1, #0x2\n" - " sub r2, r2, #0x1\n" - " cmp r2, #0\n" - " bge ._14 @cond_branch\n" - " mov r2, #0x0\n" - " ldr r5, ._16 + 56 @ gSaveBlock1\n" - " ldr r3, ._16 + 60 @ gUnknown_Debug_839B6CE\n" - "._15:\n" - " add r0, r2, r5\n" - " add r1, r2, r3\n" - " ldrb r1, [r1]\n" - " strb r1, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, #0x11\n" - " ble ._15 @cond_branch\n" - " ldr r5, ._16 + 64 @ 0x3688\n" - " add r0, r4, r5\n" - " mov r6, r9\n" - " strb r6, [r0]\n" - " ldr r7, ._16 + 68 @ 0x3689\n" - " add r0, r4, r7\n" - " mov r1, r8\n" - " strb r1, [r0]\n" - " ldr r2, ._16 + 4 @ 0x3160\n" - " add r0, r4, r2\n" - " bl debug_sub_80C2BD0\n" - " add r5, r5, #0x4\n" - " add r1, r4, r5\n" - " str r0, [r1]\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._17:\n" - " .align 2, 0\n" - "._16:\n" - " .word gSaveBlock1\n" - " .word 0x3160\n" - " .word gBerries\n" - " .word 0x361c\n" - " .word gUnknown_Debug_083F7F84\n" - " .word 0x3649\n" - " .word gUnknown_Debug_083F7F90\n" - " .word 0x316c\n" - " .word 0x3170\n" - " .word 0x47f\n" - " .word 0x317c\n" - " .word gSpriteImage_UnusedCherry\n" - " .word gSpritePalette_UnusedCherry\n" - " .word 0x35fc\n" - " .word gSaveBlock1+0x3676\n" - " .word gUnknown_Debug_839B6CE\n" - " .word 0x3688\n" - " .word 0x3689\n" - "\n" - ); -} -#else static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) { const u8 *description1; @@ -1275,9 +1067,7 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) dest = (u8*)enigmaBerry; checksum = 0; for (i = 0; i < ((u32)&gSaveBlock1.enigmaBerry.checksum - (u32)&gSaveBlock1.enigmaBerry); i++) - { checksum += dest[i]; - } // the checksum is calculated: the descriptions are safe to restore now. gSaveBlock1.enigmaBerry.berry.description1 = description1; @@ -1285,110 +1075,52 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) return checksum; } -#endif #if DEBUG -__attribute__((naked)) -void debug_sub_80C2D24() + +extern const u8 gSpriteImage_UnusedCherry[]; +extern const u16 gSpritePalette_UnusedCherry[]; +extern u8 gUnknown_Debug_839B6CE[]; + +static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); +static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); + +void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " ldr r6, [sp, #0x18]\n" - " ldr r4, [sp, #0x1c]\n" - " mov r8, r4\n" - " ldr r5, ._18 @ gSaveBlock1\n" - " ldr r7, ._18 + 4 @ 0x3175\n" - " add r4, r5, r7\n" - " strb r0, [r4]\n" - " ldr r4, ._18 + 8 @ 0x3176\n" - " add r0, r5, r4\n" - " strb r1, [r0]\n" - " add r7, r7, #0x2\n" - " add r0, r5, r7\n" - " strb r2, [r0]\n" - " ldr r1, ._18 + 12 @ 0x3178\n" - " add r0, r5, r1\n" - " strb r3, [r0]\n" - " add r4, r4, #0x3\n" - " add r0, r5, r4\n" - " strb r6, [r0]\n" - " add r7, r7, #0x3\n" - " add r0, r5, r7\n" - " mov r1, r8\n" - " strb r1, [r0]\n" - " sub r4, r4, #0x19\n" - " add r0, r5, r4\n" - " bl debug_sub_80C2BD0\n" - " ldr r7, ._18 + 16 @ 0x368c\n" - " add r5, r5, r7\n" - " str r0, [r5]\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._19:\n" - " .align 2, 0\n" - "._18:\n" - " .word gSaveBlock1\n" - " .word 0x3175\n" - " .word 0x3176\n" - " .word 0x3178\n" - " .word 0x368c\n" - "\n" - ); + s32 i; + + gSaveBlock1.enigmaBerry.berry = gBerries[0]; + StringCopy(gSaveBlock1.enigmaBerry.berry.name, name); + StringCopy(gSaveBlock1.enigmaBerry.description1, gUnknown_Debug_083F7F84); + StringCopy(gSaveBlock1.enigmaBerry.description2, gUnknown_Debug_083F7F90); + gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; + gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; + for (i = 0; i < 0x480; i++) + gSaveBlock1.enigmaBerry.pic[i] = gSpriteImage_UnusedCherry[i]; + for (i = 0; i < 16; i++) + gSaveBlock1.enigmaBerry.palette[i] = gSpritePalette_UnusedCherry[i]; + for (i = 0; i < 18; i++) + gSaveBlock1.enigmaBerry.itemEffect[i] = gUnknown_Debug_839B6CE[i]; + gSaveBlock1.enigmaBerry.holdEffect = holdEffect; + gSaveBlock1.enigmaBerry.holdEffectParam = holdEffectParam; + gSaveBlock1.enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry); } + +void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness) +{ + gSaveBlock1.enigmaBerry.berry.spicy = spicy; + gSaveBlock1.enigmaBerry.berry.dry = dry; + gSaveBlock1.enigmaBerry.berry.sweet = sweet; + gSaveBlock1.enigmaBerry.berry.bitter = bitter; + gSaveBlock1.enigmaBerry.berry.sour = sour; + gSaveBlock1.enigmaBerry.berry.smoothness = smoothness; + gSaveBlock1.enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry); +} + #endif // due to e-reader scans being particularly volatile to failure, it is a requirement to check for // their integrity here due to scans possibly failing to produce the correct result. -#if DEBUG -__attribute__((naked)) -bool32 IsEnigmaBerryValid() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._24 @ gSaveBlock1\n" - " ldr r1, ._24 + 4 @ 0x3174\n" - " add r0, r4, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._22 @cond_branch\n" - " ldr r2, ._24 + 8 @ 0x316a\n" - " add r0, r4, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._22 @cond_branch\n" - " ldr r1, ._24 + 12 @ 0x3160\n" - " add r0, r4, r1\n" - " bl debug_sub_80C2BD0\n" - " ldr r2, ._24 + 16 @ 0x368c\n" - " add r1, r4, r2\n" - " ldr r1, [r1]\n" - " cmp r0, r1\n" - " bne ._22 @cond_branch\n" - " mov r0, #0x1\n" - " b ._23\n" - "._25:\n" - " .align 2, 0\n" - "._24:\n" - " .word gSaveBlock1\n" - " .word 0x3174\n" - " .word 0x316a\n" - " .word 0x3160\n" - " .word 0x368c\n" - "._22:\n" - " mov r0, #0x0\n" - "._23:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} -#else bool32 IsEnigmaBerryValid(void) { if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) @@ -1399,7 +1131,6 @@ bool32 IsEnigmaBerryValid(void) return FALSE; return TRUE; } -#endif const struct Berry *GetBerryInfo(u8 berry) { @@ -1410,9 +1141,9 @@ const struct Berry *GetBerryInfo(u8 berry) return &gSaveBlock1.enigmaBerry.berry; else { - // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was + // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was // an enigma berry whos checksum failed, the game will use the Enigma Berry information - // for this: meaning if you see the Enigma Berry information, its actually because the + // for this: meaning if you see the Enigma Berry information, its actually because the // checksum failed. if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY)) berry = GETBERRYID(FIRST_BERRY); @@ -1526,8 +1257,8 @@ void BerryTreeTimeUpdate(s32 minutesPassed) if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { // the player has waited too long to water the berry. Reset the tree. This is because - // if the berry state is not in the unwatered state, the tree will grow anyway despite this - // check, which means BerryTreeGrow will handle the regrow process for this, removing the + // if the berry state is not in the unwatered state, the tree will grow anyway despite this + // check, which means BerryTreeGrow will handle the regrow process for this, removing the // need for this check. This only handles the unwatered soil state. if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71) { @@ -1546,7 +1277,7 @@ void BerryTreeTimeUpdate(s32 minutesPassed) // its been X minutes since the last berry update, so update // minutesUntilNextStage appropriately to match the time offset // that has passed since the update. - tree->minutesUntilNextStage -= time; + tree->minutesUntilNextStage -= time; break; } // perform the subtraction the other way around to get the number of minutes since @@ -1712,7 +1443,7 @@ void FieldObjectInteractionGetBerryTreeData(void) // we cannot allow the player to grow/interact with the tree while the tree // is undergoing the sparkling effect, so set the special var to the sparkling // state and let the event script process the flag. - gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; + gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; } else gSpecialVar_0x8004 = GetStageByBerryTreeId(id); @@ -1754,173 +1485,53 @@ bool8 PlayerHasBerries(void) } #if DEBUG -void debug_sub_80C33FC(u8 *buffer, s32 value, u8 n) +void debug_sub_80C33FC(const u8 *buffer, s32 value, u8 n) { StringAppend(gStringVar4, buffer); ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n); StringAppend(gStringVar4, gStringVar1); } -extern const u8 gUnknown_Debug_083F7F9D[]; -extern const u8 gUnknown_Debug_083F7FA2[]; -extern const u8 gUnknown_Debug_083F7FA9[]; -extern const u8 gUnknown_Debug_083F7FB0[]; -extern const u8 gUnknown_Debug_083F7FB7[]; -extern const u8 gUnknown_Debug_083F7FBE[]; -extern const u8 gUnknown_Debug_083F7FC5[]; -extern const u8 gUnknown_Debug_083F7FCC[]; -extern const u8 gUnknown_Debug_083F7FD3[]; -extern const u8 gUnknown_Debug_083F7FD3[]; -extern const u8 gUnknown_Debug_083F7FD3[]; - -#ifdef NONMATCHING +static const u8 gUnknown_Debug_083F7F9D[] = _("POS:"); +static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:"); +static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:"); +static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:"); +static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:"); +static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:"); +static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:"); +static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:"); +static const u8 gUnknown_Debug_083F7FD3[] = _(""); + u8* DebugOpenBerryInfo(void) { - s32 i; - u8 berryTreeId; - struct BerryTree *berryTree; - - if (GetFieldObjectScriptPointerPlayerFacing() != &S_BerryTree) + if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree) + { return NULL; - - berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject); - berryTree = GetBerryTreeInfo(berryTreeId); - - for (i = 0; i < 500; i++) - gStringVar4[i] |= 0xFF; - - debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3); - debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2); - debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2); - debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->secondsUntilNextStage, 5); - debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2); - debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3); - debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1); - debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1); - debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1); - debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1); - debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1); - - return gStringVar4; -} -#else -__attribute__((naked)) -void DebugOpenBerryInfo() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " bl GetFieldObjectScriptPointerPlayerFacing\n" - " ldr r1, ._138 @ S_BerryTree\n" - " cmp r0, r1\n" - " beq ._136 @cond_branch\n" - " mov r0, #0x0\n" - " b ._137\n" - "._139:\n" - " .align 2, 0\n" - "._138:\n" - " .word S_BerryTree\n" - "._136:\n" - " ldr r0, ._141 @ gSelectedMapObject\n" - " ldrb r0, [r0]\n" - " bl FieldObjectGetBerryTreeId\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " add r0, r6, #0\n" - " bl GetBerryTreeInfo\n" - " add r5, r0, #0\n" - " mov r2, #0x0\n" - " ldr r7, ._141 + 4 @ 0x1f3\n" - " ldr r4, ._141 + 8 @ gStringVar4\n" - " mov r3, #0xff\n" - "._140:\n" - " add r1, r2, r4\n" - " ldrb r0, [r1]\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " add r2, r2, #0x1\n" - " cmp r2, r7\n" - " ble ._140 @cond_branch\n" - " ldr r0, ._141 + 12 @ gUnknown_Debug_083F7F9D\n" - " add r1, r6, #0\n" - " mov r2, #0x3\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 16 @ gUnknown_Debug_083F7FA2\n" - " ldrb r1, [r5]\n" - " mov r2, #0x2\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 20 @ gUnknown_Debug_083F7FA9\n" - " ldrb r1, [r5, #0x1]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x19\n" - " mov r2, #0x2\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 24 @ gUnknown_Debug_083F7FB0\n" - " ldrh r1, [r5, #0x2]\n" - " mov r2, #0x5\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 28 @ gUnknown_Debug_083F7FB7\n" - " ldrb r1, [r5, #0x4]\n" - " mov r2, #0x2\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 32 @ gUnknown_Debug_083F7FBE\n" - " ldrb r1, [r5, #0x5]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x1c\n" - " mov r2, #0x3\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 36 @ gUnknown_Debug_083F7FC5\n" - " ldrb r1, [r5, #0x1]\n" - " lsr r1, r1, #0x7\n" - " mov r2, #0x1\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 40 @ gUnknown_Debug_083F7FCC\n" - " ldrb r1, [r5, #0x5]\n" - " lsl r1, r1, #0x1b\n" - " lsr r1, r1, #0x1f\n" - " mov r2, #0x1\n" - " bl debug_sub_80C33FC\n" - " ldr r4, ._141 + 44 @ gUnknown_Debug_083F7FD3\n" - " ldrb r1, [r5, #0x5]\n" - " lsl r1, r1, #0x1a\n" - " lsr r1, r1, #0x1f\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " bl debug_sub_80C33FC\n" - " ldrb r1, [r5, #0x5]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x1f\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " bl debug_sub_80C33FC\n" - " ldrb r1, [r5, #0x5]\n" - " lsr r1, r1, #0x7\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 8 @ gStringVar4\n" - "._137:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word gSelectedMapObject\n" - " .word 0x1f3\n" - " .word gStringVar4\n" - " .word gUnknown_Debug_083F7F9D\n" - " .word gUnknown_Debug_083F7FA2\n" - " .word gUnknown_Debug_083F7FA9\n" - " .word gUnknown_Debug_083F7FB0\n" - " .word gUnknown_Debug_083F7FB7\n" - " .word gUnknown_Debug_083F7FBE\n" - " .word gUnknown_Debug_083F7FC5\n" - " .word gUnknown_Debug_083F7FCC\n" - " .word gUnknown_Debug_083F7FD3\n" - "\n" - ); + } + else + { + u32 berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject); + struct BerryTree *berryTree = GetBerryTreeInfo(berryTreeId); + s32 i; + + for (i = 0; i < 500; i++) + gStringVar4[i] = EOS; + + debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3); + debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->minutesUntilNextStage, 5); + debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3); + debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1); + + return gStringVar4; + } } -#endif #endif @@ -1952,17 +1563,3 @@ void ResetBerryTreeSparkleFlags(void) } } } - -#if DEBUG -static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); -static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); -static const u8 gUnknown_Debug_083F7F9D[] = _("POS:"); -static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:"); -static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:"); -static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:"); -static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:"); -static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:"); -static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:"); -static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:"); -static const u8 gUnknown_Debug_083F7FD3[] = _(""); -#endif diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 7529c4271..4766b2fbb 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -23,7 +23,7 @@ extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_020384F0; -extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern struct UnknownPokemonStruct2 gUnknown_02023A00[3]; extern u8 gUnknown_0202E8F6; extern struct Pokemon gUnknown_030042FC[]; extern const u16 gBattleTowerBannedSpecies[]; @@ -529,104 +529,31 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId) } #if DEBUG -__attribute__((naked)) -void debug_sub_81381B4() + +void debug_sub_81381B4(void) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " ldr r4, ._189 @ gUnknown_02023A00\n" - " add r0, r4, #0\n" - " mov r1, #0x0\n" - " mov r2, #0x60\n" - " bl memset\n" - " mov r7, #0x0\n" - " mov r8, r4\n" - " mov r0, #0x4\n" - " add r0, r0, r8\n" - " mov r9, r0\n" - "._188:\n" - " mov r0, #0x64\n" - " add r1, r7, #0\n" - " mul r1, r1, r0\n" - " ldr r0, ._189 + 4 @ gPlayerParty\n" - " add r5, r1, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x41\n" - " bl GetMonData\n" - " lsl r4, r7, #0x5\n" - " mov r1, r8\n" - " add r6, r4, r1\n" - " strh r0, [r6]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " beq ._187 @cond_branch\n" - " add r0, r5, #0\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " strb r0, [r6, #0xf]\n" - " add r0, r5, #0\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " strh r0, [r6, #0x10]\n" - " add r0, r5, #0\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " strh r0, [r6, #0x12]\n" - " add r0, r5, #0\n" - " mov r1, #0x37\n" - " bl GetMonData\n" - " mov r1, r8\n" - " add r1, r1, #0x14\n" - " add r1, r4, r1\n" - " str r0, [r1]\n" - " add r0, r5, #0\n" - " mov r1, #0xc\n" - " bl GetMonData\n" - " strh r0, [r6, #0x2]\n" - " add r0, r5, #0\n" - " mov r1, #0x0\n" - " bl GetMonData\n" - " mov r1, r8\n" - " add r1, r1, #0x18\n" - " add r1, r4, r1\n" - " str r0, [r1]\n" - " add r0, r5, #0\n" - " bl GetMonGender\n" - " strb r0, [r6, #0x1c]\n" - " add r4, r4, r9\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " add r2, r4, #0\n" - " bl GetMonData\n" - " add r0, r4, #0\n" - " bl Text_StripExtCtrlCodes\n" - " add r0, r5, #0\n" - " mov r1, #0x3\n" - " bl GetMonData\n" - " strb r0, [r6, #0x1d]\n" - "._187:\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0x2\n" - " bls ._188 @cond_branch\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._190:\n" - " .align 2, 0\n" - "._189:\n" - " .word gUnknown_02023A00\n" - " .word gPlayerParty+0x12c\n" - "\n" - ); + u8 i; + + memset(gUnknown_02023A00, 0, sizeof(gUnknown_02023A00)); + for (i = 0; i < 3; i++) + { + gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2); + if (gUnknown_02023A00[i].species != 0) + { + gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL); + gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP); + gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP); + gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS); + gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM); + gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY); + gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[3 + i]); + GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gUnknown_02023A00[i].nickname); + Text_StripExtCtrlCodes(gUnknown_02023A00[i].nickname); + gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE); + } + } } + #endif bool8 SetupLinkMultiBattlePartyMenu(void) diff --git a/src/field/event_object_movement.c b/src/field/event_object_movement.c index 1236cd9b6..7a5f62456 100644 --- a/src/field/event_object_movement.c +++ b/src/field/event_object_movement.c @@ -1908,7 +1908,7 @@ static u16 gUnknown_030005A6; struct MapObject gMapObjects[16]; #if DEBUG -u8 gUnknown_Debug_03004BC0[4]; // unknown type +u8 gUnknown_Debug_03004BC0; #endif void npc_clear_ids_and_state(struct MapObject *mapObj) @@ -1920,48 +1920,16 @@ void npc_clear_ids_and_state(struct MapObject *mapObj) mapObj->mapobj_unk_1C = 0xFF; } -#if DEBUG -__attribute__((naked)) -void npcs_clear_ids_and_state() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._2 @ gMapObjects\n" - "._1:\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r5\n" - " bl npc_clear_ids_and_state\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0xf\n" - " bls ._1 @cond_branch\n" - " ldr r1, ._2 + 4 @ gUnknown_Debug_03004BC0\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._3:\n" - " .align 2, 0\n" - "._2:\n" - " .word gMapObjects\n" - " .word gUnknown_Debug_03004BC0\n" - "\n" - ); -} -#else void npcs_clear_ids_and_state(void) { u8 i; for (i = 0; i < 16; i++) npc_clear_ids_and_state(&gMapObjects[i]); -} +#if DEBUG + gUnknown_Debug_03004BC0 = 0; #endif +} void sub_805AA98(void) { @@ -2004,7 +1972,7 @@ u8 sub_805AB54(void) u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { - if (localId <= 0xFE) + if (localId < 255) return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup); else return GetFieldObjectIdByLocalId(localId); @@ -2055,190 +2023,80 @@ u8 GetFieldObjectIdByLocalId(u8 localId) return 16; } -#if DEBUG -__attribute__((naked)) -u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " add r5, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r6, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r7, r2, #0x18\n" - " ldrb r0, [r5]\n" - " add r1, r6, #0\n" - " add r2, r7, #0\n" - " mov r3, sp\n" - " bl GetAvailableFieldObjectSlot\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._35 @cond_branch\n" - " mov r0, #0x10\n" - " b ._36\n" - "._35:\n" - " mov r0, sp\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._40 @ gMapObjects\n" - " add r4, r0, r1\n" - " add r0, r4, #0\n" - " bl npc_clear_ids_and_state\n" - " ldrh r3, [r5, #0x4]\n" - " add r3, r3, #0x7\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " ldrh r2, [r5, #0x6]\n" - " add r2, r2, #0x7\n" - " lsl r2, r2, #0x10\n" - " lsr r2, r2, #0x10\n" - " ldrb r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " mov r1, #0x4\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - " ldrb r0, [r5, #0x1]\n" - " strb r0, [r4, #0x5]\n" - " ldrb r0, [r5, #0x9]\n" - " strb r0, [r4, #0x6]\n" - " ldrb r0, [r5]\n" - " strb r0, [r4, #0x8]\n" - " strb r6, [r4, #0x9]\n" - " strb r7, [r4, #0xa]\n" - " strh r3, [r4, #0xc]\n" - " strh r2, [r4, #0xe]\n" - " strh r3, [r4, #0x10]\n" - " strh r2, [r4, #0x12]\n" - " strh r3, [r4, #0x14]\n" - " strh r2, [r4, #0x16]\n" - " ldrb r0, [r5, #0x8]\n" - " mov r7, #0xf\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " ldrb r2, [r4, #0xb]\n" - " mov r0, #0x10\n" - " neg r0, r0\n" - " mov r8, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0xb]\n" - " ldrb r1, [r5, #0x8]\n" - " lsl r1, r1, #0x4\n" - " and r0, r0, r7\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0xb]\n" - " ldrb r1, [r5, #0xa]\n" - " lsl r1, r1, #0x1c\n" - " mov r0, #0xf\n" - " mov r9, r0\n" - " lsr r1, r1, #0x1c\n" - " ldrb r2, [r4, #0x19]\n" - " mov r0, r8\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x19]\n" - " ldrb r1, [r5, #0xa]\n" - " lsr r1, r1, #0x4\n" - " lsl r1, r1, #0x4\n" - " and r0, r0, r7\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x19]\n" - " ldrh r0, [r5, #0xc]\n" - " strb r0, [r4, #0x7]\n" - " ldrh r0, [r5, #0xe]\n" - " strb r0, [r4, #0x1d]\n" - " ldr r1, ._40 + 4 @ gUnknown_0836DC09\n" - " ldrb r0, [r5, #0x9]\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " add r0, r4, #0\n" - " add r0, r0, #0x20\n" - " strb r1, [r0]\n" - " ldrb r1, [r0]\n" - " add r0, r4, #0\n" - " bl FieldObjectSetDirection\n" - " add r0, r4, #0\n" - " bl FieldObjectHandleDynamicGraphicsId\n" - " ldr r1, ._40 + 8 @ gUnknown_0836DBBC\n" - " ldrb r0, [r4, #0x6]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._39 @cond_branch\n" - " ldrb r2, [r4, #0x19]\n" - " add r0, r7, #0\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._38 @cond_branch\n" - " lsl r0, r2, #0x1c\n" - " lsr r0, r0, #0x1c\n" - " add r0, r0, #0x1\n" - " mov r1, r9\n" - " and r0, r0, r1\n" - " mov r1, r8\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strb r1, [r4, #0x19]\n" - "._38:\n" - " ldrb r2, [r4, #0x19]\n" - " mov r0, #0xf0\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._39 @cond_branch\n" - " lsr r1, r2, #0x4\n" - " add r1, r1, #0x1\n" - " lsl r1, r1, #0x4\n" - " add r0, r7, #0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x19]\n" - "._39:\n" - " ldr r1, ._40 + 12 @ gUnknown_Debug_03004BC0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, sp\n" - " ldrb r0, [r0]\n" - "._36:\n" - " add sp, sp, #0x4\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._41:\n" - " .align 2, 0\n" - "._40:\n" - " .word gMapObjects\n" - " .word gUnknown_0836DC09\n" - " .word gUnknown_0836DBBC\n" - " .word gUnknown_Debug_03004BC0\n" - "\n" - ); -} -#else -#ifdef NONMATCHING +// The bitfield at 0x18 needs to be u16 for this function to match +struct MapObjectAlt +{ + /*0x00*/ u32 active:1; + u32 mapobj_bit_1:1; + u32 mapobj_bit_2:1; + u32 mapobj_bit_3:1; + u32 mapobj_bit_4:1; + u32 mapobj_bit_5:1; + u32 mapobj_bit_6:1; + u32 mapobj_bit_7:1; + /*0x01*/ u32 mapobj_bit_8:1; + u32 mapobj_bit_9:1; + u32 mapobj_bit_10:1; + u32 mapobj_bit_11:1; + u32 mapobj_bit_12:1; + u32 mapobj_bit_13:1; + u32 mapobj_bit_14:1; + u32 mapobj_bit_15:1; + /*0x02*/ u32 mapobj_bit_16:1; + u32 mapobj_bit_17:1; + u32 mapobj_bit_18:1; + u32 mapobj_bit_19:1; + u32 mapobj_bit_20:1; + u32 mapobj_bit_21:1; + u32 mapobj_bit_22:1; + u32 mapobj_bit_23:1; + /*0x03*/ u32 mapobj_bit_24:1; + u32 mapobj_bit_25:1; + u32 mapobj_bit_26:1; + u32 mapobj_bit_27:1; + u32 mapobj_bit_28:1; + u32 mapobj_bit_29:1; + u32 mapobj_bit_30:1; + u32 mapobj_bit_31:1; + /*0x04*/ u8 spriteId; + /*0x05*/ u8 graphicsId; + /*0x06*/ u8 animPattern; + /*0x07*/ u8 trainerType; + /*0x08*/ u8 localId; + /*0x09*/ u8 mapNum; + /*0x0A*/ u8 mapGroup; + /*0x0B*/ u8 mapobj_unk_0B_0:4; + u8 elevation:4; + /*0x0C*/ struct Coords16 coords1; + /*0x10*/ struct Coords16 coords2; + /*0x14*/ struct Coords16 coords3; + /*0x18*/ u16 mapobj_unk_18:4; //current direction? + /*0x18*/ u16 placeholder18:4; + /*0x19*/ u16 rangeX:4; + /*0x19*/ u16 rangeY:4; + /*0x1A*/ u8 mapobj_unk_1A; + /*0x1B*/ u8 mapobj_unk_1B; + /*0x1C*/ u8 mapobj_unk_1C; + /*0x1D*/ u8 trainerRange_berryTreeId; + /*0x1E*/ u8 mapobj_unk_1E; + /*0x1F*/ u8 mapobj_unk_1F; + /*0x20*/ u8 mapobj_unk_20; + /*0x21*/ u8 mapobj_unk_21; + /*0x22*/ u8 animId; + /*size = 0x24*/ +}; + u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) { - struct MapObject *mapObj; //TODO: resolve the mapobj_unk_19b weirdness + struct MapObjectAlt *mapObj; //TODO: resolve the mapobj_unk_19b weirdness u8 var; - u16 r3; - u16 r2; + s16 r3; + s16 r2; - //asm("nop"::"r"(b)); if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0) return 16; - //_0805ACCE - mapObj = &gMapObjects[var]; - npc_clear_ids_and_state(mapObj); + mapObj = (void *)&gMapObjects[var]; + npc_clear_ids_and_state((struct MapObject *)mapObj); r3 = template->x + 7; r2 = template->y + 7; mapObj->active = TRUE; @@ -2247,6 +2105,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 mapObj->animPattern = template->movementType; mapObj->localId = template->localId; mapObj->mapNum = b; + asm("":::"r6"); mapObj->mapGroup = c; mapObj->coords1.x = r3; mapObj->coords1.y = r2; @@ -2256,186 +2115,26 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 mapObj->coords3.y = r2; mapObj->mapobj_unk_0B_0 = template->elevation; mapObj->elevation = template->elevation; - mapObj->range.as_nybbles.x = template->unkA_0; - mapObj->range.as_nybbles.y = template->unkA_4; + mapObj->rangeX = template->unkA_0; + mapObj->rangeY = template->unkA_4; mapObj->trainerType = template->unkC; mapObj->trainerRange_berryTreeId = template->unkE; mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType]; FieldObjectSetDirection((struct MapObject *)mapObj, mapObj->mapobj_unk_20); - FieldObjectHandleDynamicGraphicsId(mapObj); - //asm("":::"r5","r6"); + asm("":::"r5","r6"); + FieldObjectHandleDynamicGraphicsId((struct MapObject *)mapObj); if (gUnknown_0836DBBC[mapObj->animPattern] != 0) { - if (mapObj->range.as_nybbles.x == 0) - mapObj->range.as_nybbles.x++; - if (mapObj->range.as_nybbles.y == 0) - mapObj->range.as_nybbles.y++; + if (mapObj->rangeX == 0) + mapObj->rangeX++; + if (mapObj->rangeY == 0) + mapObj->rangeY++; } +#if DEBUG + gUnknown_Debug_03004BC0++; +#endif return var; } -#else -__attribute__((naked)) -u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x4\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r6, r1, 24\n\ - lsls r2, 24\n\ - lsrs r7, r2, 24\n\ - ldrb r0, [r5]\n\ - adds r1, r6, 0\n\ - adds r2, r7, 0\n\ - mov r3, sp\n\ - bl GetAvailableFieldObjectSlot\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0805ACCE\n\ - movs r0, 0x10\n\ - b _0805ADC2\n\ -_0805ACCE:\n\ - mov r0, sp\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _0805ADD0 @ =gMapObjects\n\ - adds r4, r0, r1\n\ - adds r0, r4, 0\n\ - bl npc_clear_ids_and_state\n\ - ldrh r3, [r5, 0x4]\n\ - adds r3, 0x7\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - ldrh r2, [r5, 0x6]\n\ - adds r2, 0x7\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - ldrb r0, [r4]\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r4]\n\ - ldrb r0, [r5, 0x1]\n\ - strb r0, [r4, 0x5]\n\ - ldrb r0, [r5, 0x9]\n\ - strb r0, [r4, 0x6]\n\ - ldrb r0, [r5]\n\ - strb r0, [r4, 0x8]\n\ - strb r6, [r4, 0x9]\n\ - strb r7, [r4, 0xA]\n\ - strh r3, [r4, 0xC]\n\ - strh r2, [r4, 0xE]\n\ - strh r3, [r4, 0x10]\n\ - strh r2, [r4, 0x12]\n\ - strh r3, [r4, 0x14]\n\ - strh r2, [r4, 0x16]\n\ - ldrb r0, [r5, 0x8]\n\ - movs r7, 0xF\n\ - adds r1, r7, 0\n\ - ands r1, r0\n\ - ldrb r2, [r4, 0xB]\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - mov r8, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0xB]\n\ - ldrb r1, [r5, 0x8]\n\ - lsls r1, 4\n\ - ands r0, r7\n\ - orrs r0, r1\n\ - strb r0, [r4, 0xB]\n\ - ldrb r1, [r5, 0xA]\n\ - lsls r1, 28\n\ - movs r0, 0xF\n\ - mov r9, r0\n\ - lsrs r1, 28\n\ - ldrb r2, [r4, 0x19]\n\ - mov r0, r8\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x19]\n\ - ldrb r1, [r5, 0xA]\n\ - lsrs r1, 4\n\ - lsls r1, 4\n\ - ands r0, r7\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x19]\n\ - ldrh r0, [r5, 0xC]\n\ - strb r0, [r4, 0x7]\n\ - ldrh r0, [r5, 0xE]\n\ - strb r0, [r4, 0x1D]\n\ - ldr r1, _0805ADD4 @ =gUnknown_0836DC09\n\ - ldrb r0, [r5, 0x9]\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - strb r1, [r0]\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - bl FieldObjectSetDirection\n\ - adds r0, r4, 0\n\ - bl FieldObjectHandleDynamicGraphicsId\n\ - ldr r1, _0805ADD8 @ =gUnknown_0836DBBC\n\ - ldrb r0, [r4, 0x6]\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _0805ADBE\n\ - ldrb r2, [r4, 0x19]\n\ - adds r0, r7, 0\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0805ADA6\n\ - lsls r0, r2, 28\n\ - lsrs r0, 28\n\ - adds r0, 0x1\n\ - mov r1, r9\n\ - ands r0, r1\n\ - mov r1, r8\n\ - ands r1, r2\n\ - orrs r1, r0\n\ - strb r1, [r4, 0x19]\n\ -_0805ADA6:\n\ - ldrb r2, [r4, 0x19]\n\ - movs r0, 0xF0\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0805ADBE\n\ - lsrs r1, r2, 4\n\ - adds r1, 0x1\n\ - lsls r1, 4\n\ - adds r0, r7, 0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x19]\n\ -_0805ADBE:\n\ - mov r0, sp\n\ - ldrb r0, [r0]\n\ -_0805ADC2:\n\ - add sp, 0x4\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_0805ADD0: .4byte gMapObjects\n\ -_0805ADD4: .4byte gUnknown_0836DC09\n\ -_0805ADD8: .4byte gUnknown_0836DBBC\n\ - .syntax divided\n"); -} -#endif -#endif u8 sub_805ADDC(u8 localId) { @@ -2475,38 +2174,14 @@ u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d) return 0; } -#if DEBUG -__attribute__((naked)) -void RemoveFieldObject(struct MapObject *mapObject) -{ - asm( - " push {lr}\n" - " ldrb r2, [r0]\n" - " mov r1, #0x2\n" - " neg r1, r1\n" - " and r1, r1, r2\n" - " strb r1, [r0]\n" - " bl RemoveFieldObjectInternal\n" - " ldr r1, ._72 @ gUnknown_Debug_03004BC0\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " pop {r0}\n" - " bx r0\n" - "._73:\n" - " .align 2, 0\n" - "._72:\n" - " .word gUnknown_Debug_03004BC0\n" - "\n" - ); -} -#else void RemoveFieldObject(struct MapObject *mapObject) { mapObject->active = FALSE; RemoveFieldObjectInternal(mapObject); -} +#if DEBUG + gUnknown_Debug_03004BC0--; #endif +} void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { @@ -2539,226 +2214,6 @@ void npc_hide_all_but_player(void) } } -#if DEBUG -__attribute__((naked)) -u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) -{ - 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 r7, r1, #0\n" - " add r1, r2, #0\n" - " add r2, r3, #0\n" - " ldr r3, [sp, #0x20]\n" - " ldr r4, [sp, #0x24]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " mov r9, r3\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " mov sl, r4\n" - " bl InitFieldObjectStateFromTemplate\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " cmp r0, #0x10\n" - " bne ._83 @cond_branch\n" - " mov r0, #0x10\n" - " b ._92\n" - "._83:\n" - " mov r0, r8\n" - " lsl r4, r0, #0x3\n" - " add r0, r4, r0\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._87 @ gMapObjects\n" - " add r5, r0, r1\n" - " ldrb r0, [r5, #0x5]\n" - " bl GetFieldObjectGraphicsInfo\n" - " add r6, r0, #0\n" - " ldrb r1, [r6, #0xc]\n" - " mov r0, #0xf\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._85 @cond_branch\n" - " ldrh r0, [r6, #0x2]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x1c\n" - " bl npc_load_two_palettes__no_record\n" - " b ._89\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMapObjects\n" - "._85:\n" - " cmp r0, #0xa\n" - " bne ._89 @cond_branch\n" - " ldrh r0, [r6, #0x2]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x1c\n" - " bl npc_load_two_palettes__and_record\n" - "._89:\n" - " ldrb r0, [r5, #0x6]\n" - " cmp r0, #0x4c\n" - " bne ._90 @cond_branch\n" - " ldrb r0, [r5, #0x1]\n" - " mov r1, #0x20\n" - " orr r0, r0, r1\n" - " strb r0, [r5, #0x1]\n" - "._90:\n" - " ldr r1, ._93 @ 0xffff\n" - " add r0, r1, #0\n" - " strh r0, [r7, #0x2]\n" - " add r0, r7, #0\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0x40\n" - " bne ._91 @cond_branch\n" - " ldr r1, ._93 + 4 @ gUnknown_Debug_03004BC0\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, ._93 + 8 @ gMapObjects\n" - " mov r2, r8\n" - " add r1, r4, r2\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r0\n" - " ldrb r2, [r1]\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " strb r0, [r1]\n" - " mov r0, #0x10\n" - " b ._92\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_03004BC0\n" - " .word gMapObjects\n" - "._91:\n" - " lsl r0, r7, #0x4\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._96 @ gSprites\n" - " add r4, r0, r1\n" - " mov r1, r9\n" - " lsl r0, r1, #0x10\n" - " asr r0, r0, #0x10\n" - " ldrh r2, [r5, #0x10]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " mov r2, sl\n" - " lsl r1, r2, #0x10\n" - " asr r1, r1, #0x10\n" - " ldrh r2, [r5, #0x12]\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r2, r4, #0\n" - " add r2, r2, #0x20\n" - " add r3, r4, #0\n" - " add r3, r3, #0x22\n" - " bl sub_8060388\n" - " ldrh r0, [r6, #0x8]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x11\n" - " neg r0, r0\n" - " add r1, r4, #0\n" - " add r1, r1, #0x28\n" - " strb r0, [r1]\n" - " ldrh r0, [r6, #0xa]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x11\n" - " neg r0, r0\n" - " add r2, r4, #0\n" - " add r2, r2, #0x29\n" - " strb r0, [r2]\n" - " ldrh r0, [r4, #0x20]\n" - " add r0, r0, #0x8\n" - " strh r0, [r4, #0x20]\n" - " ldrh r1, [r4, #0x22]\n" - " add r1, r1, #0x10\n" - " mov r0, #0x0\n" - " ldsb r0, [r2, r0]\n" - " add r0, r0, r1\n" - " strh r0, [r4, #0x22]\n" - " ldrb r1, [r6, #0xc]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x18\n" - " ldrb r2, [r4, #0x5]\n" - " mov r0, #0xf\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x5]\n" - " add r2, r4, #0\n" - " add r2, r2, #0x3e\n" - " ldrb r0, [r2]\n" - " mov r1, #0x2\n" - " orr r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, r8\n" - " strh r0, [r4, #0x2e]\n" - " strb r7, [r5, #0x4]\n" - " ldrb r1, [r6, #0xc]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x1f\n" - " lsl r1, r1, #0x4\n" - " ldrb r2, [r5, #0x1]\n" - " mov r0, #0x11\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r5, #0x1]\n" - " lsl r0, r0, #0x1b\n" - " cmp r0, #0\n" - " blt ._95 @cond_branch\n" - " ldrb r0, [r5, #0x18]\n" - " lsl r0, r0, #0x1c\n" - " lsr r0, r0, #0x1c\n" - " bl FieldObjectDirectionToImageAnimId\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " bl StartSpriteAnim\n" - "._95:\n" - " ldrb r0, [r5, #0xb]\n" - " lsr r0, r0, #0x4\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " bl SetObjectSubpriorityByZCoord\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " bl sub_80634D0\n" - " mov r0, r8\n" - "._92:\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 {r1}\n" - " bx r1\n" - "._97:\n" - " .align 2, 0\n" - "._96:\n" - " .word gSprites\n" - "\n" - ); -} -#else u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) { u8 mapObjectId; @@ -2788,6 +2243,9 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * spriteId = CreateSprite(sprTemplate, 0, 0, 0); if (spriteId == 64) { +#if DEBUG + gUnknown_Debug_03004BC0--; +#endif gMapObjects[mapObjectId].active = FALSE; return 16; } @@ -2808,7 +2266,6 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * sub_80634D0(mapObject, sprite); return mapObjectId; } -#endif u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e) { @@ -3031,79 +2488,26 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject) void sub_805B75C(u8, s16, s16); -#if DEBUG -__attribute__((naked)) -void sub_805B710(u16 u161, u16 u162) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " ldr r6, ._153 @ gUnknown_Debug_03004BC0\n" - " mov r0, #0x0\n" - " strb r0, [r6]\n" - " bl ClearPlayerAvatarInfo\n" - " mov r7, #0x0\n" - " ldr r0, ._153 + 4 @ gMapObjects\n" - " mov r8, r0\n" - " lsl r4, r4, #0x10\n" - " lsl r5, r5, #0x10\n" - "._152:\n" - " lsl r0, r7, #0x3\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x1f\n" - " cmp r0, #0\n" - " beq ._151 @cond_branch\n" - " add r0, r7, #0\n" - " asr r1, r4, #0x10\n" - " asr r2, r5, #0x10\n" - " bl sub_805B75C\n" - " ldrb r0, [r6]\n" - " add r0, r0, #0x1\n" - " strb r0, [r6]\n" - "._151:\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0xf\n" - " bls ._152 @cond_branch\n" - " bl sub_805AAB0\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._154:\n" - " .align 2, 0\n" - "._153:\n" - " .word gUnknown_Debug_03004BC0\n" - " .word gMapObjects\n" - "\n" - ); -} -#else void sub_805B710(u16 a, u16 b) { u8 i; +#if DEBUG + gUnknown_Debug_03004BC0 = 0; +#endif ClearPlayerAvatarInfo(); for (i = 0; i < 16; i++) { if (gMapObjects[i].active) + { sub_805B75C(i, a, b); +#if DEBUG + gUnknown_Debug_03004BC0++; +#endif + } } sub_805AAB0(); } -#endif extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8); extern void sub_805B914(struct MapObject *); diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index c4ba8902e..1552381b2 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -10,6 +10,7 @@ #include "constants/map_objects.h" #include "menu.h" #include "metatile_behavior.h" +#include "new_game.h" #include "party_menu.h" #include "random.h" #include "overworld.h" @@ -30,9 +31,9 @@ static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); static void PlayerAllowForcedMovementIfMovingSameDirection(void); static bool8 TryDoMetatileBehaviorForcedMovement(void); -/*static*/ u8 GetForcedMovementByMetatileBehavior(void); +static u8 GetForcedMovementByMetatileBehavior(void); static void MovePlayerNotOnBike(u8 a, u16 b); -/*static*/ u8 CheckMovementInputNotOnBike(u8 a); +static u8 CheckMovementInputNotOnBike(u8 a); static u8 CheckForPlayerAvatarCollision(u8 a); static u8 sub_8058EF0(s16 a, s16 b, u8 c); static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c); @@ -49,6 +50,8 @@ static void sub_8059D60(struct MapObject *a); static void StartStrengthAnim(u8 a, u8 b); static void DoPlayerMatJump(void); static void sub_805A06C(void); +u8 debug_sub_805F2B0(u8); +u8 debug_sub_805F2DC(u8); static bool8 (*const gUnknown_0830FB58[])(u8) = { @@ -258,59 +261,16 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void) gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5; } -#if DEBUG -__attribute__((naked)) -u8 TryDoMetatileBehaviorForcedMovement() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._27 @ gUnknown_020297ED\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._25 @cond_branch\n" - " ldr r0, ._27 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._25 @cond_branch\n" - " mov r0, #0x0\n" - " b ._26\n" - "._28:\n" - " .align 2, 0\n" - "._27:\n" - " .word gUnknown_020297ED\n" - " .word gMain\n" - "._25:\n" - " ldr r4, ._29 @ gUnknown_0830FBA0\n" - " bl GetForcedMovementByMetatileBehavior\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x16\n" - " add r0, r0, r4\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - "._26:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._30:\n" - " .align 2, 0\n" - "._29:\n" - " .word gUnknown_0830FBA0\n" - "\n" - ); -} -#else static bool8 TryDoMetatileBehaviorForcedMovement(void) { +#if DEBUG + if (gUnknown_020297ED != 0 && (gMain.heldKeys & 0x100)) + return 0; +#endif return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()](); } -#endif -/*static*/ u8 GetForcedMovementByMetatileBehavior(void) +static u8 GetForcedMovementByMetatileBehavior(void) { u8 i; @@ -481,57 +441,16 @@ bool8 ForcedMovement_MuddySlope(void) } } -#if DEBUG -__attribute__((naked)) -void MovePlayerNotOnBike(u8 u81, u16 u161) -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " add r5, r2, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r6, r1, #0x10\n" - " ldr r0, ._84 @ gUnknown_020297ED\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._82 @cond_branch\n" - " add r0, r2, #0\n" - " bl debug_sub_805F2B0\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._83 @cond_branch\n" - "._82:\n" - " ldr r4, ._84 + 4 @ gUnknown_0830FBEC\n" - " add r0, r5, #0\n" - " bl CheckMovementInputNotOnBike\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x16\n" - " add r0, r0, r4\n" - " ldr r2, [r0]\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " bl _call_via_r2\n" - "._83:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._85:\n" - " .align 2, 0\n" - "._84:\n" - " .word gUnknown_020297ED\n" - " .word gUnknown_0830FBEC\n" - "\n" - ); -} -#else static void MovePlayerNotOnBike(u8 direction, u16 heldKeys) { +#if DEBUG + if (gUnknown_020297ED != 0 && debug_sub_805F2B0(direction) != 0) + return; +#endif gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys); } -#endif -/*static*/ u8 CheckMovementInputNotOnBike(u8 direction) +static u8 CheckMovementInputNotOnBike(u8 direction) { if (direction == DIR_NONE) { @@ -1855,96 +1774,24 @@ static void sub_805A954(void) } #if DEBUG -__attribute__((naked)) -void debug_sub_805F2B0() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " ldr r0, ._422 @ gMain\n" - " ldrh r1, [r0, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._420 @cond_branch\n" - " mov r0, #0x0\n" - " b ._421\n" - "._423:\n" - " .align 2, 0\n" - "._422:\n" - " .word gMain\n" - "._420:\n" - " add r0, r2, #0\n" - " bl debug_sub_805F2DC\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - "._421:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_805F2DC() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0\n" - " bne ._424 @cond_branch\n" - " ldr r2, ._426 @ gMapObjects\n" - " ldr r0, ._426 + 4 @ gPlayerAvatar\n" - " ldrb r1, [r0, #0x5]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrb r0, [r0, #0x18]\n" - " lsr r0, r0, #0x4\n" - " bl PlayerFaceDirection\n" - " b ._430\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gMapObjects\n" - " .word gPlayerAvatar\n" - "._424:\n" - " ldr r2, ._431 @ gMapObjects\n" - " ldr r0, ._431 + 4 @ gPlayerAvatar\n" - " ldrb r1, [r0, #0x5]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrb r0, [r0, #0x1]\n" - " lsr r0, r0, #0x7\n" - " cmp r0, #0\n" - " beq ._429 @cond_branch\n" - " add r0, r4, #0\n" - " bl CanCameraMoveInDirection\n" - " cmp r0, #0\n" - " bne ._429 @cond_branch\n" - " add r0, r4, #0\n" - " bl PlayerOnBikeCollide\n" - " b ._430\n" - "._432:\n" - " .align 2, 0\n" - "._431:\n" - " .word gMapObjects\n" - " .word gPlayerAvatar\n" - "._429:\n" - " add r0, r4, #0\n" - " bl PlayerGoSpeed4\n" - "._430:\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + +u8 debug_sub_805F2B0(u8 a) +{ + if (gMain.heldKeys & 0x100) + return debug_sub_805F2DC(a); + else + return 0; } + +u8 debug_sub_805F2DC(u8 a) +{ + if (a == 0) + PlayerFaceDirection(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18); + else if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 && !CanCameraMoveInDirection(a)) + PlayerOnBikeCollide(a); + else + PlayerGoSpeed4(a); + return 1; +} + #endif diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 3f500ba50..5857145ef 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -1,12 +1,15 @@ #include "global.h" +#include "constants/songs.h" +#include "constants/weather.h" #include "blend_palette.h" #include "event_object_movement.h" #include "field_weather.h" +#include "main.h" +#include "menu.h" #include "palette.h" #include "random.h" #include "script.h" -#include "constants/weather.h" -#include "constants/songs.h" +#include "start_menu.h" #include "sound.h" #include "sprite.h" #include "task.h" @@ -15,7 +18,8 @@ #define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) -enum { +enum +{ GAMMA_NONE, GAMMA_NORMAL, GAMMA_ALT, @@ -44,9 +48,6 @@ struct WeatherCallbacks EWRAM_DATA struct Weather gWeather = {0}; EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0}; EWRAM_DATA u16 gUnknown_0202FF58 = 0; -#if DEBUG -EWRAM_DATA u16 gUnknown_Debug_20301FE = 0; -#endif static const u8 *sPaletteGammaTypes; @@ -215,39 +216,39 @@ static const u8 sBasePaletteGammaTypes[32] = #if DEBUG -const u8 gDebugText_Weather_0[] = _("なし "); -const u8 gDebugText_Weather_1[] = _("はれ "); -const u8 gDebugText_Weather_2[] = _("はれ2 "); -const u8 gDebugText_Weather_3[] = _("あめ "); -const u8 gDebugText_Weather_4[] = _("ゆき "); -const u8 gDebugText_Weather_5[] = _("かみなり "); -const u8 gDebugText_Weather_6[] = _("きり "); -const u8 gDebugText_Weather_7[] = _("かざんばい"); -const u8 gDebugText_Weather_8[] = _("すなあらし"); -const u8 gDebugText_Weather_9[] = _("きり2 "); -const u8 gDebugText_Weather_10[] = _("かいてい "); -const u8 gDebugText_Weather_11[] = _("くもり "); -const u8 gDebugText_Weather_12[] = _("はれ3 "); -const u8 gDebugText_Weather_13[] = _("おおあめ"); -const u8 gDebugText_Weather_14[] = _("かいてい2"); - -const u8 *const gDebugText_Weather[] = +static const u8 sDebugText_Weather_None[] = _("なし "); // "none" +static const u8 sDebugText_Weather_Clear[] = _("はれ "); // "clear" +static const u8 sDebugText_Weather_Clear2[] = _("はれ2 "); // "clear2" +static const u8 sDebugText_Weather_Rain[] = _("あめ "); // "rain" +static const u8 sDebugText_Weather_Snow[] = _("ゆき "); // "snow" +static const u8 sDebugText_Weather_Lightning[] = _("かみなり "); // "lightning" +static const u8 sDebugText_Weather_Fog[] = _("きり "); // "fog" +static const u8 sDebugText_Weather_VolcanicAsh[] = _("かざんばい"); // "volcanic ash" +static const u8 sDebugText_Weather_Sandstorm[] = _("すなあらし"); // "sandstorm +static const u8 sDebugText_Weather_Fog2[] = _("きり2 "); // "fog2" +static const u8 sDebugText_Weather_Underwater[] = _("かいてい "); // "undersea" +static const u8 sDebugText_Weather_Cloudy[] = _("くもり "); // "cloudy" +static const u8 sDebugText_Weather_Clear3[] = _("はれ3 "); // "clear3" +static const u8 sDebugText_Weather_HeavyRain[] = _("おおあめ"); // "heavy rain" +static const u8 sDebugText_Weather_Underwater2[] = _("かいてい2"); // "undersea2" + +static const u8 *const sDebugText_Weather[] = { - gDebugText_Weather_0, - gDebugText_Weather_1, - gDebugText_Weather_2, - gDebugText_Weather_3, - gDebugText_Weather_4, - gDebugText_Weather_5, - gDebugText_Weather_6, - gDebugText_Weather_7, - gDebugText_Weather_8, - gDebugText_Weather_9, - gDebugText_Weather_10, - gDebugText_Weather_11, - gDebugText_Weather_12, - gDebugText_Weather_13, - gDebugText_Weather_14, + [WEATHER_NONE] = sDebugText_Weather_None, + [WEATHER_CLOUDS] = sDebugText_Weather_Clear, + [WEATHER_SUNNY] = sDebugText_Weather_Clear2, + [WEATHER_RAIN_LIGHT] = sDebugText_Weather_Rain, + [WEATHER_SNOW] = sDebugText_Weather_Snow, + [WEATHER_RAIN_MED] = sDebugText_Weather_Lightning, + [WEATHER_FOG_1] = sDebugText_Weather_Fog, + [WEATHER_ASH] = sDebugText_Weather_VolcanicAsh, + [WEATHER_SANDSTORM] = sDebugText_Weather_Sandstorm, + [WEATHER_FOG_2] = sDebugText_Weather_Fog2, + [WEATHER_FOG_3] = sDebugText_Weather_Underwater, + [WEATHER_SHADE] = sDebugText_Weather_Cloudy, + [WEATHER_DROUGHT] = sDebugText_Weather_Clear3, + [WEATHER_RAIN_HEAVY] = sDebugText_Weather_HeavyRain, + [WEATHER_BUBBLES] = sDebugText_Weather_Underwater2, }; #endif @@ -1258,142 +1259,52 @@ void ResetPreservedPalettesInWeather(void) #if DEBUG -__attribute__((naked)) -u8 debug_sub_8085564(void) +EWRAM_DATA static u8 sSelectedDebugWeather = 0; + +bool8 debug_sub_8085564(void) { - asm("\ - push {lr}\n\ - mov r2, #0x0\n\ - ldr r0, ._375 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._370 @cond_branch\n\ - ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xf\n\ - bne ._371 @cond_branch\n\ - strb r2, [r1]\n\ -._371:\n\ - mov r2, #0x1\n\ -._370:\n\ - ldr r0, ._375 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._372 @cond_branch\n\ - ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\ - ldrb r0, [r1]\n\ - cmp r0, #0\n\ - beq ._373 @cond_branch\n\ - sub r0, r0, #0x1\n\ - b ._374\n\ -._376:\n\ - .align 2, 0\n\ -._375:\n\ - .word gMain\n\ - .word gUnknown_Debug_20301FE\n\ -._373:\n\ - mov r0, #0xe\n\ -._374:\n\ - strb r0, [r1]\n\ - mov r2, #0x1\n\ -._372:\n\ - cmp r2, #0\n\ - beq ._377 @cond_branch\n\ - mov r0, #0x16\n\ - mov r1, #0x1\n\ - mov r2, #0x1c\n\ - mov r3, #0x2\n\ - bl Menu_BlankWindowRect\n\ - ldr r1, ._380 @ gDebugText_Weather\n\ - ldr r0, ._380 + 4 @ gUnknown_Debug_20301FE\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x17\n\ - mov r2, #0x1\n\ - bl Menu_PrintText\n\ -._377:\n\ - ldr r0, ._380 + 8 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._378 @cond_branch\n\ - mov r0, #0x0\n\ - b ._379\n\ -._381:\n\ - .align 2, 0\n\ -._380:\n\ - .word gDebugText_Weather\n\ - .word gUnknown_Debug_20301FE\n\ - .word gMain\n\ -._378:\n\ - ldr r0, ._382 @ gUnknown_Debug_20301FE\n\ - ldrb r0, [r0]\n\ - bl ChangeWeather\n\ - bl CloseMenu\n\ - mov r0, #0x1\n\ -._379:\n\ - pop {r1}\n\ - bx r1\n\ -._383:\n\ - .align 2, 0\n\ -._382:\n\ - .word gUnknown_Debug_20301FE"); + bool8 changed = FALSE; + + if (gMain.newKeys & R_BUTTON) + { + sSelectedDebugWeather++; + if (sSelectedDebugWeather == 15) + sSelectedDebugWeather = 0; + changed = TRUE; + } + if (gMain.newKeys & L_BUTTON) + { + if (sSelectedDebugWeather != 0) + sSelectedDebugWeather--; + else + sSelectedDebugWeather = 14; + changed = TRUE; + } + + if (changed) + { + Menu_BlankWindowRect(22, 1, 28, 2); + Menu_PrintText(sDebugText_Weather[sSelectedDebugWeather], 23, 1); + } + + if (gMain.newKeys & A_BUTTON) + { + ChangeWeather(sSelectedDebugWeather); + CloseMenu(); + return TRUE; + } + + return FALSE; } -__attribute__((naked)) -u8 debug_sub_808560C(void) +bool8 debug_sub_808560C(void) { - asm("\ - push {r4, lr}\n\ - ldr r4, ._384 @ gUnknown_Debug_20301FE\n\ - ldr r0, ._384 + 4 @ gWeather\n\ - mov r1, #0xda\n\ - lsl r1, r1, #0x3\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - strb r0, [r4]\n\ - bl Menu_EraseScreen\n\ - mov r0, #0x16\n\ - mov r1, #0x1\n\ - mov r2, #0x1c\n\ - mov r3, #0x2\n\ - bl Menu_BlankWindowRect\n\ - ldr r1, ._384 + 8 @ gDebugText_Weather\n\ - ldrb r0, [r4]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x17\n\ - mov r2, #0x1\n\ - bl Menu_PrintText\n\ - ldr r1, ._384 + 12 @ gMenuCallback\n\ - ldr r0, ._384 + 16 @ debug_sub_8085564\n\ - str r0, [r1]\n\ - mov r0, #0x0\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ -._385:\n\ - .align 2, 0\n\ -._384:\n\ - .word gUnknown_Debug_20301FE\n\ - .word gWeather\n\ - .word gDebugText_Weather\n\ - .word gMenuCallback\n\ - .word debug_sub_8085564+1"); + sSelectedDebugWeather = gWeather.currWeather; + Menu_EraseScreen(); + Menu_BlankWindowRect(22, 1, 28, 2); + Menu_PrintText(sDebugText_Weather[sSelectedDebugWeather], 23, 1); + gMenuCallback = debug_sub_8085564; + return FALSE; } #endif diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index 5bf2c5c43..c8f942fe5 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -73,112 +73,43 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass = }; #if DEBUG -__attribute__((naked)) -void debug_sub_80AFEE4() + +void debug_sub_80AFEE4(void) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " mov r0, #0x52\n" - " bl npc_before_player_of_type\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._1 @cond_branch\n" - " ldr r1, ._3 @ gLastFieldPokeMenuOpened\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl sub_80A2634\n" - " b ._8\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gLastFieldPokeMenuOpened\n" - "._1:\n" - " ldr r4, ._9 @ gUnknown_0203923C\n" - " add r1, r4, #2\n" - " add r0, r4, #0\n" - " bl PlayerGetDestCoords\n" - " mov r7, #0x0\n" - " mov r8, r4\n" - "._12:\n" - " ldr r1, ._9 + 4 @ 0xffff\n" - " add r0, r7, r1\n" - " mov r2, r8\n" - " ldrh r2, [r2, #0x2]\n" - " add r0, r0, r2\n" - " mov r6, #0x0\n" - " lsl r0, r0, #0x10\n" - " asr r5, r0, #0x10\n" - "._11:\n" - " ldr r1, ._9 + 4 @ 0xffff\n" - " add r0, r6, r1\n" - " mov r2, r8\n" - " ldrh r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " asr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " bl MapGridGetZCoordAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r2, r8\n" - " mov r1, #0x4\n" - " ldsb r1, [r2, r1]\n" - " cmp r0, r1\n" - " bne ._7 @cond_branch\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " bl MapGridGetMetatileBehaviorAt\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl MetatileBehavior_IsPokeGrass\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._6 @cond_branch\n" - " add r0, r4, #0\n" - " bl MetatileBehavior_IsAshGrass\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._7 @cond_branch\n" - "._6:\n" - " ldr r1, ._9 + 8 @ gLastFieldPokeMenuOpened\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl sub_80A25E8\n" - " b ._8\n" - "._10:\n" - " .align 2, 0\n" - "._9:\n" - " .word gUnknown_0203923C\n" - " .word 0xffff\n" - " .word gLastFieldPokeMenuOpened\n" - "._7:\n" - " add r0, r6, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " cmp r6, #0x2\n" - " bls ._11 @cond_branch\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0x2\n" - " bls ._12 @cond_branch\n" - " bl ScriptContext2_Disable\n" - "._8:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + s16 x, y; + u8 i, j; + u8 metatile; + + if (npc_before_player_of_type(0x52) == TRUE) + { + gLastFieldPokeMenuOpened = 0; + sub_80A2634(); + return; + } + + PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); + for (i = 0; i < 3; i++) + { + y = i - 1 + gUnknown_0203923C.y; + for (j = 0; j < 3; j++) + { + x = j - 1 + gUnknown_0203923C.x; + if (MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height) + { + metatile = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsPokeGrass(metatile) == TRUE + || MetatileBehavior_IsAshGrass(metatile) == TRUE) + { + gLastFieldPokeMenuOpened = 0; + sub_80A25E8(); + return; + } + } + } + } + ScriptContext2_Disable(); } + #endif bool8 SetUpFieldMove_Cut(void) @@ -202,7 +133,7 @@ bool8 SetUpFieldMove_Cut(void) for(j = 0; j < 3; j++) { x = j - 1 + gUnknown_0203923C.x; - if(MapGridGetZCoordAt(x, y) == (s8)gUnknown_0203923C.height) + if(MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height) { tileBehavior = MapGridGetMetatileBehaviorAt(x, y); if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c index 8c0f09bd9..30ddd0f6c 100644 --- a/src/field/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -72,33 +72,15 @@ static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_trans static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz"); #if DEBUG -__attribute__((naked)) + void debug_sub_8122080(void) { - asm("\ - push {lr}\n\ - ldr r0, ._4 @ gMapHeader\n\ - ldrb r0, [r0, #0x15]\n\ - cmp r0, #0x1\n\ - bne ._2 @cond_branch\n\ - ldr r0, ._4 + 4 @ 0x828\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._2 @cond_branch\n\ - bl sub_810CBFC\n\ - b ._3\n\ -._5:\n\ - .align 2, 0\n\ -._4:\n\ - .word gMapHeader\n\ - .word 0x828\n\ -._2:\n\ - bl ScriptContext2_Disable\n\ -._3:\n\ - pop {r0}\n\ - bx r0"); + if (gMapHeader.cave == 1 && !FlagGet(FLAG_SYS_USE_FLASH)) + sub_810CBFC(); + else + ScriptContext2_Disable(); } + #endif bool8 SetUpFieldMove_Flash(void) diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index 0e91bb55c..d1df03d84 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -245,98 +245,44 @@ void sub_80C6280(void) #if DEBUG -__attribute__((naked)) -void debug_sub_80D93F4() -{ - asm("\ - push {r4, lr}\n\ - bl sub_80BB63C\n\ - ldr r0, ._98 @ gSpecialVar_Result\n\ - ldrh r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._95 @cond_branch\n\ - bl player_get_direction_lower_nybble\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x2\n\ - beq ._96 @cond_branch\n\ -._95:\n\ - bl ScriptContext2_Disable\n\ - b ._109\n\ -._99:\n\ - .align 2, 0\n\ -._98:\n\ - .word gSpecialVar_Result\n\ -._96:\n\ - ldr r4, ._102 @ gUnknown_0203923C\n\ - add r1, r4, #2\n\ - add r0, r4, #0\n\ - bl GetXYCoordsOneStepInFrontOfPlayer\n\ - mov r1, #0x0\n\ - ldsh r0, [r4, r1]\n\ - mov r2, #0x2\n\ - ldsh r1, [r4, r2]\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - add r0, r4, #0\n\ - bl MetatileBehavior_IsSecretBaseCave\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._100 @cond_branch\n\ - bl sub_80C6264\n\ - ldr r1, ._102 + 4 @ gLastFieldPokeMenuOpened\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - bl sub_80C639C\n\ - b ._109\n\ -._103:\n\ - .align 2, 0\n\ -._102:\n\ - .word gUnknown_0203923C\n\ - .word gLastFieldPokeMenuOpened\n\ -._100:\n\ - add r0, r4, #0\n\ - bl MetatileBehavior_IsSecretBaseTree\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._104 @cond_branch\n\ - bl sub_80C6264\n\ - ldr r1, ._106 @ gLastFieldPokeMenuOpened\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - bl sub_80C64A8\n\ - b ._109\n\ -._107:\n\ - .align 2, 0\n\ -._106:\n\ - .word gLastFieldPokeMenuOpened\n\ -._104:\n\ - add r0, r4, #0\n\ - bl MetatileBehavior_IsSecretBaseShrub\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._108 @cond_branch\n\ - bl sub_80C6264\n\ - ldr r1, ._110 @ gLastFieldPokeMenuOpened\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - bl sub_80C660C\n\ - b ._109\n\ -._111:\n\ - .align 2, 0\n\ -._110:\n\ - .word gLastFieldPokeMenuOpened\n\ -._108:\n\ - bl ScriptContext2_Disable\n\ -._109:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0"); +void debug_sub_80D93F4(void) +{ + u8 metatile; + + sub_80BB63C(); + + if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != 2) + { + ScriptContext2_Disable(); + return; + } + + GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); + metatile = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y); + if (MetatileBehavior_IsSecretBaseCave(metatile) == TRUE) + { + sub_80C6264(); + gLastFieldPokeMenuOpened = 0; + sub_80C639C(); + } + else if (MetatileBehavior_IsSecretBaseTree(metatile) == TRUE) + { + sub_80C6264(); + gLastFieldPokeMenuOpened = 0; + sub_80C64A8(); + } + else if (MetatileBehavior_IsSecretBaseShrub(metatile) == TRUE) + { + sub_80C6264(); + gLastFieldPokeMenuOpened = 0; + sub_80C660C(); + } + else + { + ScriptContext2_Disable(); + } } + #endif bool8 SetUpFieldMove_SecretPower(void) diff --git a/src/field/item.c b/src/field/item.c index 78f5ce12d..af05c0a21 100644 --- a/src/field/item.c +++ b/src/field/item.c @@ -8,6 +8,24 @@ #include "string_util.h" #include "strings.h" +struct Item +{ + u8 name[14]; + u16 itemId; + u16 price; + u8 holdEffect; + u8 holdEffectParam; + const u8 *description; + u8 importance; + u8 unk19; + u8 pocket; + u8 type; + ItemUseFunc fieldUseFunc; + u8 battleUsage; + ItemUseFunc battleUseFunc; + u8 secondaryId; +}; + extern u8 gUnknown_02038560; extern struct BagPocket gBagPockets[NUM_BAG_POCKETS]; @@ -49,7 +67,9 @@ void CopyItemName(u16 itemId, u8 *string) StringAppend(string, gOtherText_Berry2); } else - StringCopy(string, ItemId_GetItem(itemId)->name); + { + StringCopy(string, ItemId_GetName(itemId)); + } } //Unreferenced @@ -579,9 +599,9 @@ static u16 SanitizeItemId(u16 itemId) return itemId; } -const struct Item *ItemId_GetItem(u16 itemId) +const u8 *ItemId_GetName(u16 itemId) { - return &gItems[SanitizeItemId(itemId)]; + return gItems[SanitizeItemId(itemId)].name; } u16 ItemId_GetId(u16 itemId) @@ -640,6 +660,7 @@ u8 ItemId_GetImportance(u16 itemId) return gItems[SanitizeItemId(itemId)].importance; } +// unused u8 ItemId_GetUnknownValue(u16 itemId) { return gItems[SanitizeItemId(itemId)].unk19; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 774fdf4b2..32b14e021 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -289,24 +289,6 @@ static void sub_80A6618(u8); const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618}; -#if DEBUG -const struct {u16 item; u8 unk;} gUnknown_Debug_083EBC68[12+48] = -{ - {ITEM_POKE_BALL, 10}, - {ITEM_ULTRA_BALL, 15}, - {ITEM_GREAT_BALL, 20}, - {ITEM_MASTER_BALL, 25}, - {ITEM_ACRO_BIKE, 1 }, - {ITEM_OLD_ROD, 1 }, - {ITEM_GOOD_ROD, 1 }, - {ITEM_SUPER_ROD, 1 }, - {ITEM_POKEBLOCK_CASE, 1 }, - {ITEM_WAILMER_PAIL, 1 }, - {ITEM_ITEMFINDER, 1 }, - {ITEM_NONE, 1 }, -}; -#endif - void sub_80A34E8(void); static bool8 LoadBagGraphicsMultistep(void); static void sub_80A362C(void); @@ -393,390 +375,6 @@ static void sub_80A3134(void) DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x6000), 0x800); } -#if DEBUG -__attribute__((naked)) -static bool8 SetupBagMultistep(void) -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._5 @ gMain\n\ - ldr r1, ._5 + 4 @ 0x43c\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x10\n\ - bls ._3 @cond_branch\n\ - b ._66\n\ -._3:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._5 + 8 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._6:\n\ - .align 2, 0\n\ -._5:\n\ - .word gMain\n\ - .word 0x43c\n\ - .word ._7\n\ -._7:\n\ - .word ._8\n\ - .word ._9\n\ - .word ._10\n\ - .word ._11\n\ - .word ._12\n\ - .word ._13\n\ - .word ._14\n\ - .word ._15\n\ - .word ._16\n\ - .word ._17\n\ - .word ._18\n\ - .word ._19\n\ - .word ._20\n\ - .word ._21\n\ - .word ._22\n\ - .word ._23\n\ - .word ._24\n\ -._8:\n\ - bl ClearVideoCallbacks\n\ - bl sub_80A34E8\n\ - b ._61\n\ -._9:\n\ - bl ScanlineEffect_Stop\n\ - ldr r1, ._27 @ gMain\n\ - ldr r0, ._27 + 4 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._28:\n\ - .align 2, 0\n\ -._27:\n\ - .word gMain\n\ - .word 0x43c\n\ -._10:\n\ - bl gpu_pal_allocator_reset__manage_upper_four\n\ - b ._61\n\ -._11:\n\ - bl ClearBGTilemapBuffers\n\ - ldr r0, ._31 @ \n\ - ldr r1, ._31 + 4 @ \n\ - add r0, r0, r1\n\ - mov r1, #0x0\n\ - strb r1, [r0]\n\ - b ._61\n\ -._32:\n\ - .align 2, 0\n\ -._31:\n\ - .word +0x2000000\n\ - .word 0x1ffff\n\ -._12:\n\ - bl ResetPaletteFade\n\ - ldr r2, ._34 @ gPaletteFade\n\ - ldrb r0, [r2, #0x8]\n\ - mov r1, #0x80\n\ - orr r0, r0, r1\n\ - strb r0, [r2, #0x8]\n\ - ldr r1, ._34 + 4 @ gMain\n\ - ldr r0, ._34 + 8 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._35:\n\ - .align 2, 0\n\ -._34:\n\ - .word gPaletteFade\n\ - .word gMain\n\ - .word 0x43c\n\ -._13:\n\ - bl ResetSpriteData\n\ - b ._61\n\ -._14:\n\ - bl LoadBagGraphicsMultistep\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._37 @cond_branch\n\ - b ._66\n\ -._37:\n\ - ldr r1, ._40 @ gMain\n\ - ldr r0, ._40 + 4 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._41:\n\ - .align 2, 0\n\ -._40:\n\ - .word gMain\n\ - .word 0x43c\n\ -._15:\n\ - ldr r0, ._43 @ gWindowTemplate_81E6DFC\n\ - bl Text_LoadWindowTemplate\n\ - b ._61\n\ -._44:\n\ - .align 2, 0\n\ -._43:\n\ - .word gWindowTemplate_81E6DFC\n\ -._16:\n\ - ldr r0, ._46 @ gWindowTemplate_81E6DFC\n\ - bl MultistepInitMenuWindowBegin\n\ - ldr r1, ._46 + 4 @ gMain\n\ - ldr r0, ._46 + 8 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._47:\n\ - .align 2, 0\n\ -._46:\n\ - .word gWindowTemplate_81E6DFC\n\ - .word gMain\n\ - .word 0x43c\n\ -._17:\n\ - bl MultistepInitMenuWindowContinue\n\ - cmp r0, #0\n\ - bne ._48 @cond_branch\n\ - b ._66\n\ -._48:\n\ - b ._61\n\ -._18:\n\ - bl ClearVerticalScrollIndicatorPalettes\n\ - bl LoadScrollIndicatorPalette\n\ - mov r0, #0x0\n\ - mov r1, #0xac\n\ - mov r2, #0xc\n\ - bl CreateVerticalScrollIndicators\n\ - mov r0, #0x1\n\ - mov r1, #0xac\n\ - mov r2, #0x94\n\ - bl CreateVerticalScrollIndicators\n\ - mov r0, #0x2\n\ - mov r1, #0x1c\n\ - mov r2, #0x58\n\ - bl CreateVerticalScrollIndicators\n\ - mov r0, #0x3\n\ - mov r1, #0x64\n\ - mov r2, #0x58\n\ - bl CreateVerticalScrollIndicators\n\ - mov r0, #0x0\n\ - mov r1, #0x2\n\ - bl SetVerticalScrollIndicatorPriority\n\ - mov r0, #0x1\n\ - mov r1, #0x2\n\ - bl SetVerticalScrollIndicatorPriority\n\ - mov r0, #0x2\n\ - mov r1, #0x2\n\ - bl SetVerticalScrollIndicatorPriority\n\ - mov r0, #0x3\n\ - mov r1, #0x2\n\ - bl SetVerticalScrollIndicatorPriority\n\ - ldr r0, ._53 @ sReturnLocation\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bhi ._51 @cond_branch\n\ - mov r0, #0x2\n\ - mov r1, #0x1\n\ - bl SetVerticalScrollIndicators\n\ - mov r0, #0x3\n\ - mov r1, #0x1\n\ - bl SetVerticalScrollIndicators\n\ -._51:\n\ - ldr r1, ._53 + 4 @ gMain\n\ - ldr r0, ._53 + 8 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._54:\n\ - .align 2, 0\n\ -._53:\n\ - .word sReturnLocation\n\ - .word gMain\n\ - .word 0x43c\n\ -._19:\n\ - ldr r1, ._56 @ gUnknown_0203855A\n\ - mov r0, #0x10\n\ - strb r0, [r1]\n\ - ldr r4, ._56 + 4 @ gBGTilemapBuffers\n\ - ldr r5, ._56 + 8 @ sCurrentBagPocket\n\ - ldrb r1, [r5]\n\ - add r1, r1, #0x1\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - add r0, r4, #0\n\ - bl sub_80A39B8\n\ - ldrb r1, [r5]\n\ - add r0, r4, #0\n\ - bl DrawPocketIndicatorDots\n\ - bl UpdateAllBagPockets\n\ - ldr r4, ._56 + 12 @ gBagPockets\n\ - ldr r0, [r4, #0x10]\n\ - ldr r1, [r4, #0x14]\n\ - bl SortItemSlots\n\ - ldr r0, [r4, #0x18]\n\ - ldr r1, [r4, #0x1c]\n\ - bl SortItemSlots\n\ - bl sub_80A3D40\n\ - ldr r1, ._56 + 16 @ gCurrentBagPocketItemSlots\n\ - mov r0, #0x0\n\ - ldsb r0, [r5, r0]\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r4\n\ - ldr r0, [r0]\n\ - str r0, [r1]\n\ - bl sub_80A362C\n\ - b ._61\n\ -._57:\n\ - .align 2, 0\n\ -._56:\n\ - .word gUnknown_0203855A\n\ - .word gBGTilemapBuffers+0x1000\n\ - .word sCurrentBagPocket\n\ - .word gBagPockets\n\ - .word gCurrentBagPocketItemSlots\n\ -._20:\n\ - ldr r0, ._59 @ 0xffff\n\ - mov r1, #0x0\n\ - mov r2, #0x7\n\ - bl sub_80A48E8\n\ - ldr r1, ._59 + 4 @ gBagPocketScrollStates\n\ - ldr r4, ._59 + 8 @ sCurrentBagPocket\n\ - mov r0, #0x0\n\ - ldsb r0, [r4, r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x1]\n\ - ldrb r0, [r0]\n\ - add r1, r1, r0\n\ - ldr r0, ._59 + 12 @ gCurrentBagPocketItemSlots\n\ - ldr r0, [r0]\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - mov r2, #0x0\n\ - ldsh r0, [r1, r2]\n\ - bl ItemListMenu_InitDescription\n\ - bl ItemListMenu_InitMenu\n\ - ldr r1, ._59 + 16 @ gUnknown_0203855B\n\ - ldrb r0, [r4]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - ldr r1, ._59 + 20 @ gUnknown_0203855C\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - ldr r1, ._59 + 24 @ gMain\n\ - ldr r0, ._59 + 28 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._60:\n\ - .align 2, 0\n\ -._59:\n\ - .word 0xffff\n\ - .word gBagPocketScrollStates\n\ - .word sCurrentBagPocket\n\ - .word gCurrentBagPocketItemSlots\n\ - .word gUnknown_0203855B\n\ - .word gUnknown_0203855C\n\ - .word gMain\n\ - .word 0x43c\n\ -._21:\n\ - bl CreateBagSprite\n\ - mov r0, #0x0\n\ - bl CreateBagPokeballSprite\n\ - bl sub_80A3740\n\ - b ._61\n\ -._22:\n\ - ldr r3, ._63 @ 0x4000208\n\ - ldrh r2, [r3]\n\ - mov r0, #0x0\n\ - strh r0, [r3]\n\ - ldr r4, ._63 + 4 @ 0x4000200\n\ - ldrh r0, [r4]\n\ - mov r1, #0x1\n\ - orr r0, r0, r1\n\ - strh r0, [r4]\n\ - strh r2, [r3]\n\ - ldr r2, ._63 + 8 @ 0x4000004\n\ - ldrh r0, [r2]\n\ - mov r1, #0x8\n\ - orr r0, r0, r1\n\ - strh r0, [r2]\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r2, ._63 + 12 @ gPaletteFade\n\ - ldrb r1, [r2, #0x8]\n\ - mov r0, #0x7f\n\ - and r0, r0, r1\n\ - strb r0, [r2, #0x8]\n\ - ldr r1, ._63 + 16 @ gMain\n\ - ldr r0, ._63 + 20 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._62\n\ -._64:\n\ - .align 2, 0\n\ -._63:\n\ - .word 0x4000208\n\ - .word 0x4000200\n\ - .word 0x4000004\n\ - .word gPaletteFade\n\ - .word gMain\n\ - .word 0x43c\n\ -._23:\n\ - bl sub_8055870\n\ - cmp r0, #0x1\n\ - beq ._66 @cond_branch\n\ -._61:\n\ - ldr r1, ._67 @ gMain\n\ - ldr r2, ._67 + 4 @ 0x43c\n\ - add r1, r1, r2\n\ -._62:\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - b ._66\n\ -._68:\n\ - .align 2, 0\n\ -._67:\n\ - .word gMain\n\ - .word 0x43c\n\ -._24:\n\ - ldr r0, ._71 @ sub_80A3134\n\ - bl SetVBlankCallback\n\ - ldr r0, ._71 + 4 @ sub_80A3118\n\ - bl SetMainCallback2\n\ - bl sub_80A751C\n\ - bl sub_80A7630\n\ - bl sub_80A770C\n\ - bl sub_80A7828\n\ - bl sub_80A78B8\n\ - ldr r0, ._71 + 8 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._69 @cond_branch\n\ - ldr r0, ._71 + 12 @ 0x600f5e0\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x8\n\ - ldr r2, ._71 + 16 @ 0x600f800\n\ - mov r3, #0x0\n\ - bl debug_sub_8008218\n\ -._69:\n\ - mov r0, #0x1\n\ - b ._70\n\ -._72:\n\ - .align 2, 0\n\ -._71:\n\ - .word sub_80A3134+1\n\ - .word sub_80A3118+1\n\ - .word gLinkOpen\n\ - .word 0x600f5e0\n\ - .word 0x600f800\n\ -._66:\n\ - mov r0, #0x0\n\ -._70:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r1}\n\ - bx r1"); -} -#else static bool8 SetupBagMultistep(void) { u32 index; @@ -897,11 +495,14 @@ static bool8 SetupBagMultistep(void) sub_80A770C(); sub_80A7828(); sub_80A78B8(); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0xF5E0), 0x8000, (void *)(VRAM + 0xF800), 0); +#endif return TRUE; } return FALSE; } -#endif static bool8 sub_80A34B4(void) { @@ -1029,76 +630,42 @@ void ClearBag(void) } #if DEBUG -__attribute__((naked)) -void debug_sub_80A3714() -{ - asm("\ - push {r4, r5, r6, lr}\n\ - add sp, sp, #0xfffffff4\n\ - mov r5, #0x0\n\ - ldr r2, ._138 @ gUnknown_Debug_083EBC68\n\ - mov r1, #0x0\n\ -._134:\n\ - lsl r0, r5, #0x1\n\ - add r0, r0, sp\n\ - strh r1, [r0]\n\ - add r0, r5, #1\n\ - lsl r0, r0, #0x10\n\ - lsr r5, r0, #0x10\n\ - cmp r5, #0x4\n\ - bls ._134 @cond_branch\n\ - mov r5, #0x0\n\ - ldrh r0, [r2]\n\ - cmp r0, #0\n\ - beq ._136 @cond_branch\n\ - add r6, r2, #0\n\ -._137:\n\ - lsl r4, r5, #0x2\n\ - add r4, r4, r6\n\ - ldrh r0, [r4]\n\ - bl ItemId_GetPocket\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x8\n\ - ldr r1, ._138 + 4 @ 0xffff0000\n\ - add r0, r0, r1\n\ - lsr r0, r0, #0x10\n\ - ldr r1, ._138 + 8 @ gBagPockets\n\ - lsl r2, r0, #0x3\n\ - add r2, r2, r1\n\ - lsl r0, r0, #0x1\n\ - mov r1, sp\n\ - add r3, r1, r0\n\ - ldrh r1, [r3]\n\ - ldr r0, [r2]\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - ldr r0, [r4]\n\ - str r0, [r1]\n\ - ldrh r0, [r3]\n\ - add r0, r0, #0x1\n\ - strh r0, [r3]\n\ - add r0, r5, #1\n\ - lsl r0, r0, #0x10\n\ - lsr r5, r0, #0x10\n\ - cmp r5, #0x3b\n\ - bhi ._136 @cond_branch\n\ - lsl r0, r5, #0x2\n\ - add r0, r0, r6\n\ - ldrh r0, [r0]\n\ - cmp r0, #0\n\ - bne ._137 @cond_branch\n\ -._136:\n\ - add sp, sp, #0xc\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._139:\n\ - .align 2, 0\n\ -._138:\n\ - .word gUnknown_Debug_083EBC68\n\ - .word 0xffff0000\n\ - .word gBagPockets"); + +const struct ItemSlot gUnknown_Debug_083EBC68[60] = +{ + {ITEM_POKE_BALL, 10}, + {ITEM_ULTRA_BALL, 15}, + {ITEM_GREAT_BALL, 20}, + {ITEM_MASTER_BALL, 25}, + {ITEM_ACRO_BIKE, 1 }, + {ITEM_OLD_ROD, 1 }, + {ITEM_GOOD_ROD, 1 }, + {ITEM_SUPER_ROD, 1 }, + {ITEM_POKEBLOCK_CASE, 1 }, + {ITEM_WAILMER_PAIL, 1 }, + {ITEM_ITEMFINDER, 1 }, + {ITEM_NONE, 1 }, +}; + +void debug_sub_80A3714(void) +{ + u16 arr[5]; + u16 i; + + for (i = 0; i < 5; i++) + arr[i] = 0; + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_083EBC68); i++) + { + u16 pocket; + + if (gUnknown_Debug_083EBC68[i].itemId == ITEM_NONE) + break; + pocket = ItemId_GetPocket(gUnknown_Debug_083EBC68[i].itemId) - 1; + gBagPockets[pocket].itemSlots[arr[pocket]] = gUnknown_Debug_083EBC68[i]; + arr[pocket]++; + } } + #endif static void sub_80A3740(void) @@ -1612,7 +1179,7 @@ static void sub_80A4380(u16 a, int b, int c, int d) r5 = i * 2 + 2; text = gStringVar1; text = sub_80A425C(a, text, i); - text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0); + text = sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0); *text++ = CHAR_MULT_SIGN; sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); Menu_PrintText(gStringVar1, 14, r5); @@ -1636,9 +1203,9 @@ static void sub_80A444C(u16 a, int b, int c, int d) text = gStringVar1; text = sub_80A425C(a, text, i); #if ENGLISH - sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x60, 0); + sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x60, 0); #else - sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0); + sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x63, 0); #endif Menu_PrintText(gStringVar1, 14, r5); if (gUnknown_02038558 != 0) @@ -4040,49 +3607,16 @@ static void sub_80A73FC(void) MenuCursor_Destroy814AD44(); } -#if DEBUG -__attribute__((naked)) -static void sub_80A740C(void) -{ - asm("\ - push {lr}\n\ - add sp, sp, #0xfffffffc\n\ - bl sub_80A75E4\n\ - bl sub_80A7768\n\ - bl sub_80A7420\n\ - ldr r0, ._931 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._930 @cond_branch\n\ - ldr r0, ._931 + 4 @ gLink\n\ - ldr r1, ._931 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x1\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._930:\n\ - add sp, sp, #0x4\n\ - pop {r0}\n\ - bx r0\n\ -._932:\n\ - .align 2, 0\n\ -._931:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else static void sub_80A740C(void) { sub_80A75E4(); sub_80A7768(); sub_80A7420(); -} +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 0); #endif +} static void sub_80A7420(void) { diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index b42c50513..a68d5071d 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -251,83 +251,34 @@ void SetupMauvilleOldMan(void) } #if DEBUG -__attribute__((naked)) -void debug_sub_810B32C() +void debug_sub_810B32C(u8 a) { - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x4\n" - " bhi ._37 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._23 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._24:\n" - " .align 2, 0\n" - "._23:\n" - " .word ._22\n" - "._22:\n" - " .word ._25\n" - " .word ._26\n" - " .word ._27\n" - " .word ._28\n" - " .word ._29\n" - "._25:\n" - " bl SetupBard\n" - " b ._37\n" - "._26:\n" - " mov r2, #0x0\n" - " ldr r3, ._34 @ gSaveBlock1\n" - "._31:\n" - " mov r0, sp\n" - " add r1, r0, r2\n" - " add r0, r2, r3\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x7\n" - " bls ._31 @cond_branch\n" - " bl SetupHipster\n" - " mov r2, #0x0\n" - " ldr r3, ._34 @ gSaveBlock1\n" - "._32:\n" - " add r1, r2, r3\n" - " mov r4, sp\n" - " add r0, r4, r2\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x7\n" - " bls ._32 @cond_branch\n" - " b ._37\n" - "._35:\n" - " .align 2, 0\n" - "._34:\n" - " .word gSaveBlock1+0x2d8c\n" - "._27:\n" - " bl SetupTrader\n" - " b ._37\n" - "._28:\n" - " bl SetupStoryteller\n" - " b ._37\n" - "._29:\n" - " bl SetupGiddy\n" - "._37:\n" - " bl sub_80F83D0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + u8 i; + u8 savedArr[8]; + + switch (a) + { + case 0: + SetupBard(); + break; + case 1: + for (i = 0; i < 8; i++) + savedArr[i] = gSaveBlock1.unk2D8C[i]; + SetupHipster(); + for (i = 0; i < 8; i++) + gSaveBlock1.unk2D8C[i] = savedArr[i]; + break; + case 2: + SetupTrader(); + break; + case 3: + SetupStoryteller(); + break; + case 4: + SetupGiddy(); + break; + } + sub_80F83D0(); } #endif diff --git a/src/field/overworld.c b/src/field/overworld.c index 8ca8aeea9..6376aa1af 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -2233,7 +2233,7 @@ u16 sub_80554E4(u32 a1) return 23; } -u32 sub_80554F8(void) +s32 sub_80554F8(void) { if (sub_8054FC0(0x83) == TRUE) return 2; diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 66e7e2319..9caaa05b9 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -1,4 +1,8 @@ #include "global.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/species.h" #include "party_menu.h" #include "battle.h" #include "battle_interface.h" @@ -11,12 +15,11 @@ #include "item.h" #include "item_use.h" #include "item_menu.h" -#include "constants/items.h" +#include "link.h" #include "mail_data.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" -#include "constants/moves.h" #include "palette.h" #include "pokemon.h" #include "pokemon_icon.h" @@ -25,9 +28,7 @@ #include "pokemon_summary_screen.h" #include "rom_8077ABC.h" #include "rom_8094928.h" -#include "constants/songs.h" #include "sound.h" -#include "constants/species.h" #include "sprite.h" #include "string_util.h" #include "strings.h" @@ -397,7 +398,8 @@ static const u16 PartyMonOAMSettings_RightColumn[] = { }; // Controls where and how the mons' text appears in the party menu screen (nickname, HP, and level). -static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = { +static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = +{ { // PARTY_MENU_LAYOUT_STANDARD { 1, 4, PartyMonOAMSettings_LeftColumn}, {12, 1, PartyMonOAMSettings_RightColumn}, @@ -432,7 +434,8 @@ static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = { }, }; -static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = { +static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = +{ {HandleDefaultPartyMenu, SetupDefaultPartyMenu, 0}, // PARTY_MENU_TYPE_STANDARD {HandleBattlePartyMenu, SetUpBattlePartyMenu, 0}, // PARTY_MENU_TYPE_BATTLE {HandleSelectPartyMenu, SetupContestPartyMenu, 0}, // PARTY_MENU_TYPE_CONTEST @@ -493,71 +496,6 @@ extern const u8 gStatusPal_Icons[]; #define WINDOW_RIGHT (29) #endif -#if DEBUG -__attribute__((naked)) -void CB2_PartyMenuMain(void) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - add sp, sp, #0xfffffffc\n\ - bl AnimateSprites\n\ - bl BuildOamBuffer\n\ - ldr r0, ._3 @ gPartyMenuType\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x4\n\ - ldr r1, ._3 + 4 @ PartyMonTextSettings\n\ - add r5, r0, r1\n\ - mov r6, #0x0\n\ -._1:\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x3\n\ - ldrb r1, [r5, #0x1]\n\ - lsl r1, r1, #0x3\n\ - ldr r2, [r5, #0x4]\n\ - lsl r3, r6, #0x5\n\ - mov r4, #0x80\n\ - lsl r4, r4, #0x2\n\ - orr r3, r3, r4\n\ - str r3, [sp]\n\ - mov r3, #0x0\n\ - bl DrawPartyMenuMonText\n\ - add r5, r5, #0x8\n\ - add r6, r6, #0x1\n\ - cmp r6, #0x5\n\ - ble ._1 @cond_branch\n\ - bl RunTasks\n\ - bl UpdatePaletteFade\n\ - ldr r0, ._3 + 8 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._2 @cond_branch\n\ - ldr r0, ._3 + 12 @ gLink\n\ - ldr r1, ._3 + 16 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x2\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x1\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._2:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._4:\n\ - .align 2, 0\n\ -._3:\n\ - .word gPartyMenuType\n\ - .word PartyMonTextSettings\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void CB2_PartyMenuMain(void) { const struct PartyMonTextSettingsStruct *textSettings; @@ -581,8 +519,12 @@ void CB2_PartyMenuMain(void) RunTasks(); UpdatePaletteFade(); -} + +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 2); #endif +} void VBlankCB_PartyMenu(void) { @@ -621,14 +563,16 @@ bool8 SetupDefaultPartyMenu(void) switch (ewram1B000_alt.setupState) { case 0: - if (ewram1B000_alt.monIndex < gPlayerPartyCount) { + if (ewram1B000_alt.monIndex < gPlayerPartyCount) + { TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]); ewram1B000_alt.monIndex++; - } else { + } + else + { ewram1B000_alt.monIndex = 0; ewram1B000_alt.setupState++; } - break; case 1: LoadHeldItemIconGraphics(); @@ -648,7 +592,6 @@ bool8 SetupDefaultPartyMenu(void) ewram1B000_alt.monIndex = 0; ewram1B000_alt.setupState++; } - break; case 4: PartyMenuPrintMonsLevelOrStatus(); @@ -687,425 +630,6 @@ bool8 SetupDefaultPartyMenu(void) return FALSE; } -#if DEBUG -__attribute__((naked)) -bool8 InitPartyMenu(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - add sp, sp, #0xfffffff4\n\ - ldr r0, ._55 @ gMain\n\ - ldr r1, ._55 + 4 @ 0x43c\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x11\n\ - bls ._53 @cond_branch\n\ - b ._125\n\ -._53:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._55 + 8 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._56:\n\ - .align 2, 0\n\ -._55:\n\ - .word gMain\n\ - .word 0x43c\n\ - .word ._57\n\ -._57:\n\ - .word ._58\n\ - .word ._59\n\ - .word ._60\n\ - .word ._61\n\ - .word ._62\n\ - .word ._63\n\ - .word ._64\n\ - .word ._65\n\ - .word ._66\n\ - .word ._67\n\ - .word ._68\n\ - .word ._69\n\ - .word ._70\n\ - .word ._71\n\ - .word ._72\n\ - .word ._73\n\ - .word ._74\n\ - .word ._75\n\ -._58:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - mov r3, #0xc0\n\ - lsl r3, r3, #0x13\n\ - mov r4, #0xc0\n\ - lsl r4, r4, #0x9\n\ - add r2, sp, #0x8\n\ - mov r8, r2\n\ - add r2, sp, #0x4\n\ - mov r6, #0x0\n\ - ldr r1, ._78 @ 0x40000d4\n\ - mov r5, #0x80\n\ - lsl r5, r5, #0x5\n\ - ldr r7, ._78 + 4 @ 0x81000800\n\ - mov r0, #0x81\n\ - lsl r0, r0, #0x18\n\ - mov ip, r0\n\ -._76:\n\ - strh r6, [r2]\n\ - add r0, sp, #0x4\n\ - str r0, [r1]\n\ - str r3, [r1, #0x4]\n\ - str r7, [r1, #0x8]\n\ - ldr r0, [r1, #0x8]\n\ - add r3, r3, r5\n\ - sub r4, r4, r5\n\ - cmp r4, r5\n\ - bhi ._76 @cond_branch\n\ - strh r6, [r2]\n\ - add r2, sp, #0x4\n\ - str r2, [r1]\n\ - str r3, [r1, #0x4]\n\ - lsr r0, r4, #0x1\n\ - mov r3, ip\n\ - orr r0, r0, r3\n\ - str r0, [r1, #0x8]\n\ - ldr r0, [r1, #0x8]\n\ - mov r0, #0xe0\n\ - lsl r0, r0, #0x13\n\ - mov r3, #0x80\n\ - lsl r3, r3, #0x3\n\ - mov r4, #0x0\n\ - str r4, [sp, #0x8]\n\ - ldr r2, ._78 @ 0x40000d4\n\ - mov r1, r8\n\ - str r1, [r2]\n\ - str r0, [r2, #0x4]\n\ - lsr r0, r3, #0x2\n\ - mov r1, #0x85\n\ - lsl r1, r1, #0x18\n\ - orr r0, r0, r1\n\ - str r0, [r2, #0x8]\n\ - ldr r0, [r2, #0x8]\n\ - mov r1, #0xa0\n\ - lsl r1, r1, #0x13\n\ - add r0, sp, #0x4\n\ - strh r4, [r0]\n\ - str r0, [r2]\n\ - str r1, [r2, #0x4]\n\ - lsr r3, r3, #0x1\n\ - mov r0, #0x81\n\ - lsl r0, r0, #0x18\n\ - orr r3, r3, r0\n\ - str r3, [r2, #0x8]\n\ - ldr r0, [r2, #0x8]\n\ - ldr r2, ._78 + 8 @ gPaletteFade\n\ - ldrb r0, [r2, #0x8]\n\ - mov r1, #0x80\n\ - orr r0, r0, r1\n\ - strb r0, [r2, #0x8]\n\ - ldr r1, ._78 + 12 @ gMain\n\ - ldr r2, ._78 + 16 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._122\n\ -._79:\n\ - .align 2, 0\n\ -._78:\n\ - .word 0x40000d4\n\ - .word 0x81000800\n\ - .word gPaletteFade\n\ - .word gMain\n\ - .word 0x43c\n\ -._59:\n\ - bl ScanlineEffect_Stop\n\ - b ._115\n\ -._60:\n\ - bl sub_806B4A8\n\ - ldr r1, ._82 @ \n\ - mov r2, #0x99\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - mov r2, #0x0\n\ - strh r2, [r0]\n\ - ldr r3, ._82 + 4 @ \n\ - add r0, r1, r3\n\ - strh r2, [r0]\n\ - mov r0, #0x9a\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - strh r2, [r1]\n\ - ldr r1, ._82 + 8 @ \n\ - ldr r2, ._82 + 12 @ \n\ - add r1, r1, r2\n\ - b ._122\n\ -._83:\n\ - .align 2, 0\n\ -._82:\n\ - .word +0x201b000\n\ - .word 0x266\n\ - .word gMain\n\ - .word 0x43c\n\ -._61:\n\ - bl ResetSpriteData\n\ - b ._115\n\ -._62:\n\ - ldr r0, ._88 @ \n\ - mov r1, #0x96\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._86 @cond_branch\n\ - cmp r0, #0x5\n\ - beq ._86 @cond_branch\n\ - bl ResetTasks\n\ -._86:\n\ - ldr r1, ._88 + 4 @ \n\ - ldr r2, ._88 + 8 @ \n\ - add r1, r1, r2\n\ - b ._122\n\ -._89:\n\ - .align 2, 0\n\ -._88:\n\ - .word +0x201b000\n\ - .word gMain\n\ - .word 0x43c\n\ -._63:\n\ - bl FreeAllSpritePalettes\n\ - b ._115\n\ -._64:\n\ - ldr r4, ._92 @ \n\ - mov r1, #0x97\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x0\n\ - bl CreateTask\n\ - mov r2, #0x98\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - strb r0, [r1]\n\ - b ._115\n\ -._93:\n\ - .align 2, 0\n\ -._92:\n\ - .word +0x201b000\n\ -._65:\n\ - ldr r0, ._95 @ gWindowTemplate_81E6C90\n\ - bl Text_LoadWindowTemplate\n\ - ldr r1, ._95 + 4 @ gMain\n\ - ldr r0, ._95 + 8 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._122\n\ -._96:\n\ - .align 2, 0\n\ -._95:\n\ - .word gWindowTemplate_81E6C90\n\ - .word gMain\n\ - .word 0x43c\n\ -._66:\n\ - ldr r4, ._98 @ gUnknown_03004210\n\ - ldr r1, ._98 + 4 @ gWindowTemplate_81E6C90\n\ - add r0, r4, #0\n\ - bl Text_InitWindowWithTemplate\n\ - add r0, r4, #0\n\ - mov r1, #0x1\n\ - bl MultistepInitWindowTileData\n\ - ldr r1, ._98 + 8 @ gMain\n\ - ldr r2, ._98 + 12 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._122\n\ -._99:\n\ - .align 2, 0\n\ -._98:\n\ - .word gUnknown_03004210\n\ - .word gWindowTemplate_81E6C90\n\ - .word gMain\n\ - .word 0x43c\n\ -._67:\n\ - bl MultistepLoadFont\n\ - cmp r0, #0\n\ - bne ._100 @cond_branch\n\ - b ._125\n\ -._100:\n\ - ldr r0, ._103 @ \n\ - mov r3, #0x99\n\ - lsl r3, r3, #0x2\n\ - add r0, r0, r3\n\ - mov r1, #0x1\n\ - strh r1, [r0]\n\ - ldr r1, ._103 + 4 @ \n\ - ldr r0, ._103 + 8 @ \n\ - add r1, r1, r0\n\ - b ._122\n\ -._104:\n\ - .align 2, 0\n\ -._103:\n\ - .word +0x201b000\n\ - .word gMain\n\ - .word 0x43c\n\ -._68:\n\ - ldr r0, ._107 @ \n\ - mov r1, #0x99\n\ - lsl r1, r1, #0x2\n\ - add r4, r0, r1\n\ - ldrb r0, [r4]\n\ - bl LoadPartyMenuGraphics\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._105 @cond_branch\n\ - mov r0, #0x0\n\ - strh r0, [r4]\n\ - ldr r1, ._107 + 4 @ \n\ - ldr r2, ._107 + 8 @ \n\ - add r1, r1, r2\n\ - b ._122\n\ -._108:\n\ - .align 2, 0\n\ -._107:\n\ - .word +0x201b000\n\ - .word gMain\n\ - .word 0x43c\n\ -._105:\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._125\n\ -._69:\n\ - bl sub_809D51C\n\ - b ._115\n\ -._70:\n\ - ldr r2, ._113 @ PartyMenuHandlers\n\ - ldr r0, ._113 + 4 @ \n\ - mov r1, #0x96\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r2, r2, #0x4\n\ - add r0, r0, r2\n\ - ldr r0, [r0]\n\ - bl _call_via_r0\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._125 @cond_branch\n\ - ldr r1, ._113 + 8 @ \n\ - ldr r2, ._113 + 12 @ \n\ - add r1, r1, r2\n\ - b ._122\n\ -._114:\n\ - .align 2, 0\n\ -._113:\n\ - .word PartyMenuHandlers\n\ - .word +0x201b000\n\ - .word gMain\n\ - .word 0x43c\n\ -._71:\n\ - ldr r0, ._116 @ gWindowTemplate_81E6CC8\n\ - bl MultistepInitMenuWindowBegin\n\ - b ._115\n\ -._117:\n\ - .align 2, 0\n\ -._116:\n\ - .word gWindowTemplate_81E6CC8\n\ -._72:\n\ - bl MultistepInitMenuWindowContinue\n\ - cmp r0, #0\n\ - beq ._125 @cond_branch\n\ - ldr r1, ._120 @ gMain\n\ - ldr r0, ._120 + 4 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._122\n\ -._121:\n\ - .align 2, 0\n\ -._120:\n\ - .word gMain\n\ - .word 0x43c\n\ -._73:\n\ - ldr r0, ._123 @ \n\ - ldr r1, ._123 + 4 @ \n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x0\n\ - bl PrintPartyMenuPromptText\n\ - ldr r1, ._123 + 8 @ \n\ - ldr r2, ._123 + 12 @ \n\ - add r1, r1, r2\n\ - b ._122\n\ -._124:\n\ - .align 2, 0\n\ -._123:\n\ - .word +0x201b000\n\ - .word 0x259\n\ - .word gMain\n\ - .word 0x43c\n\ -._74:\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r2, ._126 @ gPaletteFade\n\ - ldrb r1, [r2, #0x8]\n\ - mov r0, #0x7f\n\ - and r0, r0, r1\n\ - strb r0, [r2, #0x8]\n\ -._115:\n\ - ldr r1, ._126 + 4 @ gMain\n\ - ldr r3, ._126 + 8 @ 0x43c\n\ - add r1, r1, r3\n\ -._122:\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - b ._125\n\ -._127:\n\ - .align 2, 0\n\ -._126:\n\ - .word gPaletteFade\n\ - .word gMain\n\ - .word 0x43c\n\ -._75:\n\ - ldr r0, ._130 @ VBlankCB_PartyMenu\n\ - bl SetVBlankCallback\n\ - ldr r0, ._130 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._128 @cond_branch\n\ - ldr r0, ._130 + 8 @ 0x600e5e0\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x8\n\ - ldr r2, ._130 + 12 @ 0x6007800\n\ - mov r3, #0x2\n\ - bl debug_sub_8008218\n\ -._128:\n\ - mov r0, #0x1\n\ - b ._129\n\ -._131:\n\ - .align 2, 0\n\ -._130:\n\ - .word VBlankCB_PartyMenu+1\n\ - .word gLinkOpen\n\ - .word 0x600e5e0\n\ - .word 0x6007800\n\ -._125:\n\ - mov r0, #0x0\n\ -._129:\n\ - add sp, sp, #0xc\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4, r5, r6, r7}\n\ - pop {r1}\n\ - bx r1"); -} -#else bool8 InitPartyMenu(void) { switch (gMain.state) @@ -1115,7 +639,6 @@ bool8 InitPartyMenu(void) DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); - gPaletteFade.bufferTransferDisabled = 1; gMain.state++; break; @@ -1136,10 +659,7 @@ bool8 InitPartyMenu(void) break; case 4: if (ewram1B000.menuType != PARTY_MENU_TYPE_BATTLE && ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE) - { ResetTasks(); - } - gMain.state++; break; case 5: @@ -1183,9 +703,7 @@ bool8 InitPartyMenu(void) break; case 12: if (PartyMenuHandlers[ewram1B000.menuType].menuSetup() == TRUE) - { gMain.state++; - } break; case 13: MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8); @@ -1193,9 +711,7 @@ bool8 InitPartyMenu(void) break; case 14: if (MultistepInitMenuWindowContinue()) - { gMain.state++; - } break; case 15: PrintPartyMenuPromptText(ewram1B000.promptTextId, 0); @@ -1208,27 +724,26 @@ bool8 InitPartyMenu(void) break; case 17: SetVBlankCallback(VBlankCB_PartyMenu); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0xE5E0), 0x8000, (void *)(VRAM + 0x7800), 2); +#endif return TRUE; } return FALSE; } -#endif void CB2_InitPartyMenu(void) { while (InitPartyMenu() != TRUE) { if (sub_80F9344() == TRUE) - { return; - } } if (ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE) - { ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); - } SetMainCallback2(CB2_PartyMenuMain); } @@ -1269,9 +784,7 @@ void ReDrawPartyMonBackgrounds(void) DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800); if (ewram1B000.unk261 == 2) - { ewram1B000.unk261 = 0; - } } } @@ -1298,119 +811,172 @@ bool8 DrawPartyMonBackground(u8 monIndex) sub_806BF24(&arr[0], 0, 3, 0); break; case 2: - if (!IsDoubleBattle()) { - if (gPlayerPartyCount > 1) { + if (!IsDoubleBattle()) + { + if (gPlayerPartyCount > 1) + { sub_806BA94(arr[2], arr[3], 0, 3); sub_806BF24(&arr[2], 1, 3, 0); - } else { + } + else + { sub_806BA94(arr[2], arr[3], 1, 3); } - } else if (IsLinkDoubleBattle() == TRUE) { + } + else if (IsLinkDoubleBattle() == TRUE) + { sub_806B9A4(arr[2], arr[3], 4); sub_806BF24(&arr[2], 1, 4, 0); - } else { + } + else + { sub_806B9A4(arr[2], arr[3], 3); sub_806BF24(&arr[2], 1, 3, 0); } - break; case 3: - if (!IsDoubleBattle()) { - if (gPlayerPartyCount > 2) { + if (!IsDoubleBattle()) + { + if (gPlayerPartyCount > 2) + { sub_806BA94(arr[4], arr[5], 0, 3); sub_806BF24(&arr[4], 2, 3, 0); - } else { + } + else + { sub_806BA94(arr[4], arr[5], 1, 3); } - } else if (IsLinkDoubleBattle() == TRUE) { - if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) { + } + else if (IsLinkDoubleBattle() == TRUE) + { + if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) + { sub_806BA94(arr[4], arr[5], 0, 3); sub_806BF24(&arr[4], 2, 3, 0); - } else { + } + else + { sub_806BA94(arr[4], arr[5], 1, 3); } - } else if (gPlayerPartyCount > 2) { + } + else if (gPlayerPartyCount > 2) + { sub_806BA94(arr[4], arr[5], 0, 3); sub_806BF24(&arr[4], 2, 3, 0); - } else { + } + else + { sub_806BA94(arr[4], arr[5], 1, 3); } - break; case 4: - if (!IsDoubleBattle()) { - if (gPlayerPartyCount > 3) { + if (!IsDoubleBattle()) + { + if (gPlayerPartyCount > 3) + { sub_806BA94(arr[6], arr[7], 0, 3); sub_806BF24(&arr[6], 3, 3, 0); - } else { + } + else + { sub_806BA94(arr[6], arr[7], 1, 3); } - } else if (IsLinkDoubleBattle() == TRUE) { - if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) { + } + else if (IsLinkDoubleBattle() == TRUE) + { + if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) + { sub_806BA94(arr[6], arr[7], 0, 3); sub_806BF24(&arr[6], 3, 3, 0); - } else { + } + else + { sub_806BA94(arr[6], arr[7], 1, 3); } - } else if (gPlayerPartyCount > 3) { + } + else if (gPlayerPartyCount > 3) + { sub_806BA94(arr[6], arr[7], 0, 3); sub_806BF24(&arr[6], 3, 3, 0); - } else { + } + else + { sub_806BA94(arr[6], arr[7], 1, 3); } - break; case 5: - if (!IsDoubleBattle()) { - if (gPlayerPartyCount > 4) { + if (!IsDoubleBattle()) + { + if (gPlayerPartyCount > 4) + { sub_806BA94(arr[8], arr[9], 0, 3); sub_806BF24(&arr[8], 4, 3, 0); - } else { + } + else + { sub_806BA94(arr[8], arr[9], 1, 3); } - } else if (IsLinkDoubleBattle() == TRUE) { - if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) { + } + else if (IsLinkDoubleBattle() == TRUE) + { + if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) + { sub_806BA94(arr[8], arr[9], 0, 4); sub_806BF24(&arr[8], 4, 4, 0); - } else { + } + else + { sub_806BA94(arr[8], arr[9], 1, 4); } - } else if (gPlayerPartyCount > 4) { + } + else if (gPlayerPartyCount > 4) + { sub_806BA94(arr[8], arr[9], 0, 3); sub_806BF24(&arr[8], 4, 3, 0); - } else { + } + else + { sub_806BA94(arr[8], arr[9], 1, 3); } - break; case 6: - if (!IsDoubleBattle()) { - if (gPlayerPartyCount > 5) { + if (!IsDoubleBattle()) + { + if (gPlayerPartyCount > 5) + { sub_806BA94(arr[10], arr[11], 0, 3); sub_806BF24(&arr[10], 5, 3, 0); - } else { + } + else + { sub_806BA94(arr[10], arr[11], 1, 3); } - } else if (IsLinkDoubleBattle() == TRUE) { - if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) { + } + else if (IsLinkDoubleBattle() == TRUE) + { + if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) + { sub_806BA94(arr[10], arr[11], 0, 4); sub_806BF24(&arr[10], 5, 4, 0); - } else { + } + else + { sub_806BA94(arr[10], arr[11], 1, 4); } - } else if (gPlayerPartyCount > 5) { + } + else if (gPlayerPartyCount > 5) + { sub_806BA94(arr[10], arr[11], 0, 3); sub_806BF24(&arr[10], 5, 3, 0); - } else { + } + else + { sub_806BA94(arr[10], arr[11], 1, 3); } - break; case 7: - if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER) { + if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER) sub_806BB9C(1); - } - sub_806BBEC(1); break; case 8: @@ -1533,9 +1099,7 @@ void sub_806B9A4(s16 a, u16 b, u8 c) for (; j <= 10 && a + j <= 0x1F; j++) { if (a + j >= 0) - { gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (c << 12) | gUnknown_083769D8[i * 11 + j]; - } } } } @@ -1555,9 +1119,7 @@ void sub_806BA34(s16 a, u16 b) for (; j <= 10 && a + j <= 0x1F; j++) { if (a + j >= 0) - { gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0; - } } } } @@ -1569,15 +1131,13 @@ void sub_806BA94(s16 a, u16 b, u8 c, u8 d) const u8 *arr; u16 var1; - arr = gUnknown_08376A5E; if (c == 0) - { arr = gUnknown_08376A25; - } + else + arr = gUnknown_08376A5E; var1 = b * 32; - for (i = 0; i < 3; i++) { u8 j = 0; @@ -1622,11 +1182,13 @@ void sub_806BB3C(s16 a, u16 b) void sub_806BB9C(u8 a) { u8 i; - u16 arr[12] = { + u16 arr[12] = + { 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, }; u16 *vramPtr = (u16 *)(BG_VRAM + 0x3C30); + for (i = 0; i < PARTY_SIZE; i++) { vramPtr[i] = arr[i] + (a << 12); @@ -1637,11 +1199,13 @@ void sub_806BB9C(u8 a) void sub_806BBEC(u8 a) { u8 i; - u16 arr[12] = { + u16 arr[12] = + { 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, }; u16 *vramPtr = (u16 *)(BG_VRAM + 0x3CB0); + for (i = 0; i < PARTY_SIZE; i++) { vramPtr[i] = arr[i] + (a << 12); @@ -1671,9 +1235,7 @@ void unref_sub_806BCB8(u8 a) u8 i; for (i = 0; i < gPlayerPartyCount; i++) - { sub_806BC3C(i, a); - } } // This is ultimately unreferenced, since it's caller is unreferenced. @@ -1685,8 +1247,7 @@ void sub_806BCE8() { if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) { - u8 gender = GetMonGender(&gPlayerParty[i]); - switch (gender) + switch (GetMonGender(&gPlayerParty[i])) { case MON_MALE: sub_806BC3C(i, 0x54); @@ -1893,8 +1454,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId) if (menuDirectionPressed == 0) { - u8 var1 = sub_80F92BC(); - switch (var1) + switch (sub_80F92BC()) { case 1: menuDirectionPressed = 0xFF; @@ -1923,9 +1483,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId) if (gMain.newKeys & A_BUTTON) { if (gSprites[sub_806CA00(taskId)].data[0] == 7) - { return B_BUTTON; - } } } } @@ -1989,31 +1547,19 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) u8 isDoubleBattle = IsDoubleBattle(); if (menuIndex < PARTY_SIZE) - { sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0); - } else - { sub_806BBEC(1); - } if (!isDoubleBattle) - { ChangeDefaultPartyMenuSelection(spriteId, menuIndex, directionPressed); - } else - { ChangeDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed); - } if (gSprites[spriteId].data[0] < PARTY_SIZE) - { sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 3, 1); - } else - { sub_806BBEC(2); - } ewram1B000.unk261 = 2; @@ -2024,9 +1570,7 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data[0], 1); if (menuIndex != gSprites[spriteId].data[0]) - { - PlaySE(5); - } + PlaySE(SE_SELECT); } void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) @@ -2040,27 +1584,35 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres gSprites[spriteId].data[1] = 0; break; case 1: // moving up - if (menuIndex == 0) { + if (menuIndex == 0) + { gSprites[spriteId].data[0] = 7; - } else if (menuIndex == 7) { + } + else if (menuIndex == 7) + { gSprites[spriteId].data[0] = gPlayerPartyCount - 1; - } else { + } + else + { s8 diff = directionPressed; gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data[1] = 0; break; case 3: // moving down - if (menuIndex == gPlayerPartyCount - 1) { + if (menuIndex == gPlayerPartyCount - 1) + { gSprites[spriteId].data[0] = 7; - } else if (menuIndex == 7) { + } + else if (menuIndex == 7) + { gSprites[spriteId].data[0] = 0; - } else { + } + else + { s8 diff = directionPressed; gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data[1] = 0; break; case 4: // moving right @@ -2068,14 +1620,14 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres { if (gSprites[spriteId].data[1] == 0) gSprites[spriteId].data[1] = 1; - gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } break; case 0: // moving left // Only move the selection to the left side if one of the mons in the right-hand column are currently selected nextIndex = menuIndex - 1; - if (nextIndex <= 4) { + if (nextIndex <= 4) + { gSprites[spriteId].data[0] = 0; gSprites[spriteId].data[1] = menuIndex; } @@ -2094,32 +1646,42 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio gSprites[spriteId].data[1] = 0; break; case 3: // moving down - if (menuIndex == 7) { + if (menuIndex == 7) + { gSprites[spriteId].data[0] = 0; - } else if (menuIndex == gPlayerPartyCount - 1) { + } + else if (menuIndex == gPlayerPartyCount - 1) + { gSprites[spriteId].data[0] = 7; - } else { + } + else + { s8 diff = directionPressed; gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data[1] = 0; break; case 1: // moving up - if (menuIndex == 0) { + if (menuIndex == 0) + { gSprites[spriteId].data[0] = 7; - } else if (menuIndex == 7) { + } + else if (menuIndex == 7) + { gSprites[spriteId].data[0] = gPlayerPartyCount - 1; - } else { + } + else + { s8 diff = directionPressed; gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data[1] = 0; break; case 4: // moving right - if (menuIndex == 0) { - if (gPlayerPartyCount > 2) { + if (menuIndex == 0) + { + if (gPlayerPartyCount > 2) + { u16 var1 = gSprites[spriteId].data[1] - 2; if (var1 > 1) gSprites[spriteId].data[0] = 2; @@ -2127,8 +1689,10 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } } - else if (menuIndex == 1) { - if (gPlayerPartyCount > 4) { + else if (menuIndex == 1) + { + if (gPlayerPartyCount > 4) + { u16 var1 = gSprites[spriteId].data[1] - 4; if (var1 <= 1) gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; @@ -2139,12 +1703,16 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio break; case 0: // moving left var1 = menuIndex - 2; - if (var1 <= 1) { + if (var1 <= 1) + { gSprites[spriteId].data[0] = 0; gSprites[spriteId].data[1] = menuIndex; - } else { + } + else + { u8 var2 = menuIndex - 4; - if (var2 <= 1) { + if (var2 <= 1) + { gSprites[spriteId].data[0] = 1; gSprites[spriteId].data[1] = menuIndex; } @@ -2497,54 +2065,41 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); if (menuIndex < PARTY_SIZE) - { sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0); - } else if (menuIndex == PARTY_SIZE) - { sub_806BB9C(1); - } else - { sub_806BBEC(1); - } menuMovement = directionPressed + 2; - switch (menuMovement) { case 2: // no movement gSprites[spriteId].data[1] = 0; break; case 1: // moving up - if (menuIndex == 0) { + if (menuIndex == 0) gSprites[spriteId].data[0] = 7; - } else if (menuIndex == PARTY_SIZE) { + else if (menuIndex == PARTY_SIZE) gSprites[spriteId].data[0] = gPlayerPartyCount - 1; - } else { + else gSprites[spriteId].data[0] += directionPressed; - } - gSprites[spriteId].data[1] = 0; break; case 3: // moving down - if (menuIndex == gPlayerPartyCount - 1) { + if (menuIndex == gPlayerPartyCount - 1) gSprites[spriteId].data[0] = 6; - } else if (menuIndex == 7) { + else if (menuIndex == 7) gSprites[spriteId].data[0] = 0; - } else { + else gSprites[spriteId].data[0] += directionPressed; - } - gSprites[spriteId].data[1] = 0; break; case 4: // moving right if (gPlayerPartyCount > 1 && menuIndex == 0) { - if (gSprites[spriteId].data[1] == 0) { + if (gSprites[spriteId].data[1] == 0) gSprites[spriteId].data[1] = 1; - } - gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } break; @@ -2564,17 +2119,11 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) newMenuIndex = gSprites[spriteId].data[0]; if (gSprites[spriteId].data[0] < PARTY_SIZE) - { sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data[0] * 2], newMenuIndex, 3, 1); - } else if (gSprites[spriteId].data[0] == PARTY_SIZE) - { sub_806BB9C(2); - } else - { sub_806BBEC(2); - } ewram1B000.unk261 = 2; @@ -2582,9 +2131,7 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1); if (menuIndex != gSprites[spriteId].data[0]) - { - PlaySE(5); - } + PlaySE(SE_SELECT); } // Selects the "OK" button in the Battle Tower party menu. @@ -2598,13 +2145,9 @@ void SelectBattleTowerOKButton(u8 taskId) UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); if (menuIndex < PARTY_SIZE) - { sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0); - } else - { sub_806BBEC(1); - } gSprites[spriteId].data[1] = 0; gSprites[spriteId].data[0] = 6; @@ -2614,7 +2157,7 @@ void SelectBattleTowerOKButton(u8 taskId) sub_806BB9C(2); ewram1B000.unk261 = 2; - PlaySE(5); + PlaySE(SE_SELECT); } } @@ -2625,24 +2168,28 @@ void sub_806C92C(u8 spriteId) if (!IsDoubleBattle()) { - if (menuIndex1 < 1) { - if (menuIndex2 < 1) { + if (menuIndex1 < 1) + { + if (menuIndex2 < 1) menuIndex2 = 1; - } - } else { - if (menuIndex2 >= 1) { + } + else + { + if (menuIndex2 >= 1) menuIndex2 = 0; - } } - } else { - if (menuIndex1 < 2) { - if (menuIndex2 < 2) { + } + else + { + if (menuIndex1 < 2) + { + if (menuIndex2 < 2) menuIndex2 = 2; - } - } else { - if (menuIndex2 >= 2) { + } + else + { + if (menuIndex2 >= 2) menuIndex2 = 0; - } } } @@ -2709,13 +2256,9 @@ void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed) ChangePartyMenuSelection(taskId, menuDirectionPressed); if (sprite1->data[0] != sprite2->data[0]) - { sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 1); - } else - { sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 0); - } } void HandlePartyMenuSwitchPokemonInput(u8 taskId) @@ -2772,14 +2315,9 @@ void sub_806CCE4() u8 monIndex2 = gSprites[ewram01000.unk2].data[0]; if (monIndex1 <= 5) - { sub_806BF24(&gUnknown_083769A8[monIndex1 * 2], monIndex1, 3, 0); - } - if (monIndex2 <= 5) - { sub_806BF24(&gUnknown_083769A8[monIndex2 * 2], monIndex2, 3, 1); - } } void sub_806CD44(u8 taskId) @@ -2988,9 +2526,7 @@ void sub_806D05C(u8 taskId) sub_806CFA0(taskId, 1); if (ewram01000.unk8 == 0 && ewram01000.unkA == 11) - { gTasks[taskId].func = sub_806D198; - } } void sub_806D098(u8 a, u8 b) @@ -3032,9 +2568,7 @@ void sub_806D15C(u8 taskId) sub_806D098(taskId, 1); if (ewram01000.unk8 == 11 && ewram01000.unkA == 11) - { gTasks[taskId].func = sub_806D198; - } } void sub_806D198(u8 taskId) @@ -3104,22 +2638,14 @@ void sub_806D3B4(u8 taskId, u16 species1, u16 species2) sub_806B9A4(var1[2] + gTasks[taskId].data[0], var1[3], 4); if (species1) - { sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 0, 4); - } else - { sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 1, 4); - } if (species2) - { sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 0, 4); - } else - { sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 1, 4); - } } void sub_806D4AC(u8 taskId, u16 species, u8 c) @@ -3203,19 +2729,13 @@ bool8 LoadPartyMenuGraphics(u8 a) bool8 retVal = FALSE; if (a < 2) - { LZDecompressVram(gPartyMenuMisc_Gfx, (void *)BG_VRAM); - } if (a == 2 || a == 0) - { LZDecompressVram(gPartyMenuMisc_Tilemap, (void *)(BG_VRAM + 0x3800)); - } if (a == 3 || a == 0) - { LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160); - } if (a == 4 || a == 0) { @@ -3224,19 +2744,13 @@ bool8 LoadPartyMenuGraphics(u8 a) } if (a == 5 || a == 0) - { LZDecompressVram(gPartyMenuHpBar_Gfx, (void *)(BG_VRAM + 0x6000)); - } if (a == 6 || a == 0) - { LZDecompressVram(gPartyMenuOrderText_Gfx, (void *)(BG_VRAM + 0x6180)); - } if (a == 7 || a == 0) - { LZDecompressVram(gStatusGfx_Icons, (void *)(BG_VRAM + 0x7180)); - } if (a == 8 || a == 0) { @@ -3255,21 +2769,13 @@ void SetMonIconAnimByHP(u8 spriteId, u16 currentHP, u16 maxHP) if (currentHP != maxHP) { if (hpBarLevel == 3) - { animNum = 1; - } else if (hpBarLevel == 2) - { animNum = 2; - } else if (hpBarLevel == 1) - { animNum = 3; - } else - { animNum = 4; - } } sub_809D824(&gSprites[spriteId], animNum); @@ -3300,25 +2806,19 @@ void TryCreatePartyMenuMonIcon(u8 taskId, u8 monIndex, struct Pokemon *pokemon) { if (GetMonData(pokemon, MON_DATA_SPECIES)) { - bool8 isLinkDoubleBattle = IsLinkDoubleBattle(); - if (isLinkDoubleBattle == TRUE) - { + if (IsLinkDoubleBattle() == TRUE) CreatePartyMenuMonIcon(taskId, monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); - } else - { CreatePartyMenuMonIcon(taskId, monIndex, IsDoubleBattle(), pokemon); - } } } void unref_sub_806D964(u8 taskId) { u8 i; + for (i = 0; i < gPlayerPartyCount; i++) - { TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]); - } } void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon) @@ -3333,19 +2833,14 @@ void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct U void UpdateMonIconFrame_806DA0C(struct Sprite *sprite) { - u8 var1; + u8 var1 = UpdateMonIconFrame(sprite); - var1 = UpdateMonIconFrame(sprite); if (var1) { if (var1 & 1) - { sprite->pos2.y = -3; - } else - { sprite->pos2.y = 1; - } } } @@ -3365,13 +2860,9 @@ void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c) gSprites[spriteId].data[0] = 0; if (!c) - { gSprites[spriteId].callback = UpdateMonIconFrame_806DA38; - } else - { gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C; - } } } @@ -3383,8 +2874,8 @@ void LoadHeldItemIconGraphics(void) void SpriteCB_HeldItemIcon(struct Sprite *sprite) { - u8 data7 = sprite->data[7]; + if (gSprites[data7].invisible) { sprite->invisible = 1; @@ -3422,29 +2913,19 @@ void CreateHeldItemIcons(u8 *a, u8 *b, u8 c) switch (c) { case 0: - i = 0; - while (i < a[0]) + for (i = 0; i < a[0]; i++) { heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); if (heldItem) - { CreateHeldItemIcon(b[i], ItemIsMail(heldItem)); - } - - i++; } break; case 1: - i = 0; - while (i < a[1]) + for (i = 0; i < a[1]; i++) { heldItem = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM); if (heldItem) - { CreateHeldItemIcon(b[i + 6], ItemIsMail(heldItem)); - } - - i++; } break; } @@ -3495,13 +2976,9 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) else { if (ItemIsMail(item)) - { StartSpriteAnim(&gSprites[heldItemSpriteId], 1); - } else - { StartSpriteAnim(&gSprites[heldItemSpriteId], 0); - } gSprites[heldItemSpriteId].invisible = 0; } @@ -3611,25 +3088,25 @@ u8 GetMonIconSpriteId(u8 taskId, u8 monIndex) { switch (monIndex) { - case 1: - return gTasks[taskId].data[0]; - break; - case 2: - return gTasks[taskId].data[1] >> 8; - break; - case 3: - return gTasks[taskId].data[1]; - break; - case 4: - return gTasks[taskId].data[2] >> 8; - break; - case 5: - return gTasks[taskId].data[2]; - break; - case 0: - default: - return gTasks[taskId].data[0] >> 8; - break; + case 1: + return gTasks[taskId].data[0]; + break; + case 2: + return gTasks[taskId].data[1] >> 8; + break; + case 3: + return gTasks[taskId].data[1]; + break; + case 4: + return gTasks[taskId].data[2] >> 8; + break; + case 5: + return gTasks[taskId].data[2]; + break; + case 0: + default: + return gTasks[taskId].data[0] >> 8; + break; } } @@ -3637,24 +3114,24 @@ void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId) { switch (monIndex) { - case 0: - gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8); - break; - case 1: - gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId; - break; - case 2: - gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8); - break; - case 3: - gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId; - break; - case 4: - gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8); - break; - case 5: - gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId; - break; + case 0: + gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8); + break; + case 1: + gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId; + break; + case 2: + gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8); + break; + case 3: + gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId; + break; + case 4: + gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8); + break; + case 5: + gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId; + break; } } @@ -3799,15 +3276,10 @@ void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon) { if (GetMonData(pokemon, MON_DATA_SPECIES)) { - bool8 isLinkDoubleBattle = IsLinkDoubleBattle(); - if (isLinkDoubleBattle == TRUE) - { + if (IsLinkDoubleBattle() == TRUE) PrintPartyMenuMonNickname(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); - } else - { PrintPartyMenuMonNickname(monIndex, IsDoubleBattle(), pokemon); - } } } @@ -3816,9 +3288,7 @@ void PrintPartyMenuMonNicknames(void) u8 i; for (i = 0; i < PARTY_SIZE; i++) - { TryPrintPartyMenuMonNickname(i, &gPlayerParty[i]); - } } u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer) @@ -3836,38 +3306,28 @@ void PartyMenuPutStatusTilemap(u8 monIndex, u8 menuLayout, u8 status) u8 var1 = status * 4; for (i = 0; i < 4; i++) - { vramPtr[i] = (0x18C + var1 + i) | -0x5000; - } } static void PartyMenuClearLevelStatusTilemap(u8 monIndex) { - bool8 isLinkDoubleBattle; u8 menuLayout; u8 x; u8 y; u16 *vramPtr; u8 i; - isLinkDoubleBattle = IsLinkDoubleBattle(); - if (isLinkDoubleBattle == TRUE) - { + if (IsLinkDoubleBattle() == TRUE) menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE; - } else - { menuLayout = IsDoubleBattle(); - } x = gUnknown_08376738[menuLayout][monIndex].x - 1; y = gUnknown_08376738[menuLayout][monIndex].y + 1; vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32); for (i = 0; i < 4; i++) - { vramPtr[i] = 0; - } } static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y) @@ -3908,30 +3368,18 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon) { if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) { - u8 statusAndPkrs; - bool8 isLinkDoubleBattle; + u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon); u8 menuLayout; - statusAndPkrs = GetMonStatusAndPokerus(pokemon); - - isLinkDoubleBattle = IsLinkDoubleBattle(); - if (isLinkDoubleBattle == TRUE) - { + if (IsLinkDoubleBattle() == TRUE) menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE; - } else - { menuLayout = IsDoubleBattle(); - } if (statusAndPkrs != 0 && statusAndPkrs != 6) - { PartyMenuPutStatusTilemap(monIndex, menuLayout, statusAndPkrs - 1); - } else - { PartyMenuPrintLevel(monIndex, menuLayout, pokemon); - } PartyMenuPrintGenderIcon(monIndex, menuLayout, pokemon); } @@ -3942,9 +3390,7 @@ void PartyMenuPrintMonsLevelOrStatus(void) u8 i; for (i = 0; i < PARTY_SIZE; i++) - { PartyMenuPrintMonLevelOrStatus(i, &gPlayerParty[i]); - } } void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monIndex, u8 *nickname) @@ -3956,12 +3402,12 @@ void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monInd switch (gender) { - case MON_MALE: - PartyMenuWriteTilemap(0x42, x, y); - break; - case MON_FEMALE: - PartyMenuWriteTilemap(0x44, x, y); - break; + case MON_MALE: + PartyMenuWriteTilemap(0x42, x, y); + break; + case MON_FEMALE: + PartyMenuWriteTilemap(0x44, x, y); + break; } } } @@ -3994,11 +3440,8 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon) { - u16 currentHP; - u16 maxHP; - - currentHP = GetMonData(pokemon, MON_DATA_HP); - maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); + u16 currentHP = GetMonData(pokemon, MON_DATA_HP); + u16 maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); PartyMenuDoPrintHP(monIndex, b, currentHP, maxHP); } @@ -4007,15 +3450,10 @@ void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon) { if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) { - bool8 isLinkDoubleBattle = IsLinkDoubleBattle(); - if (isLinkDoubleBattle == TRUE) - { + if (IsLinkDoubleBattle() == TRUE) PartyMenuPrintHP(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); - } else - { PartyMenuPrintHP(monIndex, IsDoubleBattle(), pokemon); - } } } @@ -4024,9 +3462,7 @@ void PartyMenuTryPrintMonsHP(void) u8 i; for (i = 0; i < PARTY_SIZE; i++) - { PartyMenuTryPrintHP(i, &gPlayerParty[i]); - } } void unref_sub_806E564(void) { } @@ -4046,17 +3482,11 @@ void PartyMenuDoDrawHPBar(u8 monIndex, u8 menuLayout, u16 currentHP, u16 maxHP) hpBarLevel = GetHPBarLevel(currentHP, maxHP); if (hpBarLevel > 2) - { battleInterface.unkC_0 = 4; - } if (hpBarLevel == 2) - { battleInterface.unkC_0 = 5; - } if (hpBarLevel < 2) - { battleInterface.unkC_0 = 6; - } battleInterface.unk10 = 0x100; @@ -4082,15 +3512,10 @@ void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon) { if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) { - bool8 isDoubleBattle = IsLinkDoubleBattle(); - if (isDoubleBattle == TRUE) - { + if (IsLinkDoubleBattle() == TRUE) PartyMenuDrawHPBar(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon); - } else - { PartyMenuDrawHPBar(monIndex, IsDoubleBattle(), pokemon); - } } } @@ -4099,9 +3524,7 @@ void PartyMenuDrawHPBars(void) u8 i; for (i = 0; i < PARTY_SIZE; i++) - { PartyMenuTryDrawHPBar(i, &gPlayerParty[i]); - } } void SwapPokemon(struct Pokemon *a, struct Pokemon *b) @@ -4871,64 +4294,64 @@ void GetMedicineItemEffectMessage(u16 item) { switch (GetItemEffectType(item)) { - case 3: - StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning); - break; - case 4: - StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp); - break; - case 5: - StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed); - break; - case 6: - StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut); - break; - case 7: - StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis); - break; - case 8: - StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); - break; - case 9: - StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove); - break; - case 11: - StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy); - break; - case 13: - StringCopy(gStringVar2, gOtherText_Hp2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 12: - StringCopy(gStringVar2, gOtherText_Attack); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 17: - StringCopy(gStringVar2, gOtherText_Defense); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 16: - StringCopy(gStringVar2, gOtherText_Speed); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 14: - StringCopy(gStringVar2, gOtherText_SpAtk2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 15: - StringCopy(gStringVar2, gOtherText_SpDef2); - StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); - break; - case 19: - case 20: - StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased); - break; - case 21: - StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored); - break; - default: - StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect); - break; + case 3: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning); + break; + case 4: + StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp); + break; + case 5: + StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed); + break; + case 6: + StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut); + break; + case 7: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis); + break; + case 8: + StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); + break; + case 9: + StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove); + break; + case 11: + StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy); + break; + case 13: + StringCopy(gStringVar2, gOtherText_Hp2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 12: + StringCopy(gStringVar2, gOtherText_Attack); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 17: + StringCopy(gStringVar2, gOtherText_Defense); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 16: + StringCopy(gStringVar2, gOtherText_Speed); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 14: + StringCopy(gStringVar2, gOtherText_SpAtk2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 15: + StringCopy(gStringVar2, gOtherText_SpDef2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 19: + case 20: + StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased); + break; + case 21: + StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored); + break; + default: + StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect); + break; } } @@ -5025,9 +4448,9 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func) bool8 IsBlueYellowRedFlute(u16 item) { - if (item == 0x27 - || item == 0x29 - || item == 0x28) + if (item == ITEM_BLUE_FLUTE + || item == ITEM_RED_FLUTE + || item == ITEM_YELLOW_FLUTE) return TRUE; else return FALSE; @@ -5339,7 +4762,6 @@ void Task_RareCandy2(u8 taskId) } } -#if ENGLISH void PrintStatGrowthsInLevelUpWindow(u8 taskId) { u8 i; @@ -5351,6 +4773,9 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) u8 x; u8 y; u32 stat; +#if GERMAN + u8 *ptr; +#endif stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]); @@ -5360,142 +4785,31 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) x = (i / 3) * 9 + 11; y = ((i % 3) << 1) + 1; +#if GERMAN + ptr = StringCopy(gStringVar1, StatNames[i]); + *ptr++ = EXT_CTRL_CODE_BEGIN; + *ptr++ = 0x13; + *ptr++ = 0x2E; + ptr = StringCopy(ptr, gOtherText_TallPlusAndRightArrow); + *ptr++ = EXT_CTRL_CODE_BEGIN; + *ptr++ = 0x13; + *ptr++ = 0x34; + ConvertIntToDecimalStringN(ptr, ewram1B000.statGrowths[i], 1, 2); + Menu_PrintText(gStringVar1, x + 1, y); +#else Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1); - if (i == 2) Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); else Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); - gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 0x06; - ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2); - Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); +#endif } } -#elif GERMAN -__attribute__((naked)) -void PrintStatGrowthsInLevelUpWindow(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - movs r0, 0xB\n\ - movs r1, 0\n\ - movs r2, 0x1D\n\ - movs r3, 0x7\n\ - bl Menu_DrawStdWindowFrame\n\ - movs r7, 0\n\ - ldr r0, _0807092C @ =gStringVar1\n\ - mov r10, r0\n\ - movs r1, 0xFC\n\ - mov r9, r1\n\ - movs r2, 0x13\n\ - mov r8, r2\n\ -_0807086C:\n\ - ldr r1, _08070930 @ =gSharedMem + 0x1C000\n\ - ldr r0, [r1]\n\ - ldr r1, _08070934 @ =StatDataTypes\n\ - adds r1, r7, r1\n\ - ldrb r1, [r1]\n\ - bl GetMonData\n\ - adds r1, r7, 0x6\n\ - lsls r1, 1\n\ - ldr r2, _08070938 @ =gSharedMem + 0x1B264\n\ - adds r1, r2, r1\n\ - strh r0, [r1]\n\ - lsls r6, r7, 1\n\ - adds r6, r2, r6\n\ - ldrh r1, [r6]\n\ - subs r0, r1\n\ - strh r0, [r6]\n\ - adds r0, r7, 0\n\ - movs r1, 0x3\n\ - bl __udivsi3\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 3\n\ - adds r4, r0\n\ - adds r4, 0xB\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - adds r0, r7, 0\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - adds r5, r0, 0\n\ - lsls r5, 1\n\ - adds r5, 0x1\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - ldr r1, _0807093C @ =StatNames\n\ - lsls r0, r7, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - mov r0, r10\n\ - bl StringCopy\n\ - adds r2, r0, 0\n\ - mov r0, r9\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - mov r1, r8\n\ - strb r1, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0x2E\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - adds r0, r2, 0\n\ - ldr r1, _08070940 @ =gOtherText_TallPlusAndRightArrow\n\ - bl StringCopy\n\ - adds r2, r0, 0\n\ - mov r0, r9\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - mov r1, r8\n\ - strb r1, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0x34\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0\n\ - ldrsh r1, [r6, r0]\n\ - adds r0, r2, 0\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - adds r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - mov r0, r10\n\ - adds r1, r4, 0\n\ - adds r2, r5, 0\n\ - bl Menu_PrintText\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - cmp r7, 0x5\n\ - bls _0807086C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0807092C: .4byte gStringVar1\n\ -_08070930: .4byte gSharedMem + 0x1C000\n\ -_08070934: .4byte StatDataTypes\n\ -_08070938: .4byte gSharedMem + 0x1B264\n\ -_0807093C: .4byte StatNames\n\ -_08070940: .4byte gOtherText_TallPlusAndRightArrow\n\ - .syntax divided\n"); -} -#endif void PrintNewStatsInLevelUpWindow(u8 taskId) { @@ -5526,24 +4840,13 @@ void PrintNewStatsInLevelUpWindow(u8 taskId) void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon) { - u8 statusAndPkrs; - bool8 isDoubleBattle; - u16 currentHP; - u16 maxHP; + u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon); u8 icon; - statusAndPkrs = GetMonStatusAndPokerus(pokemon); if (statusAndPkrs == 0 || statusAndPkrs == 6) - { PartyMenuUpdateLevelOrStatus(pokemon, monIndex); - } - - isDoubleBattle = IsDoubleBattle(); - currentHP = GetMonData(pokemon, MON_DATA_HP); - maxHP = GetMonData(pokemon, MON_DATA_MAX_HP); - - PartyMenuDoPrintHP(monIndex, isDoubleBattle, currentHP, maxHP); + PartyMenuDoPrintHP(monIndex, IsDoubleBattle(), GetMonData(pokemon, MON_DATA_HP), GetMonData(pokemon, MON_DATA_MAX_HP)); PartyMenuTryDrawHPBar(monIndex, pokemon); icon = GetMonIconSpriteId(ewram1C000.unk4, monIndex); @@ -5569,45 +4872,45 @@ void Task_RareCandy3(u8 taskId) switch (learnedMove) { - case 0: - // No move is learned. - evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); - if (evolutionSpecies != 0) - { - gCB2_AfterEvolution = sub_80A53F8; - BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); - DestroyTask(taskId); - } - else - { - sub_8070D90(taskId); - } - break; - case 0xFFFF: - // Mon already knows 4 moves. - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); - - StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); - sub_806E834(gStringVar4, 1); - - ewram1C000.unk8 = gMoveToLearn; - gTasks[taskId].func = sub_806F358; - break; - case 0xFFFE: - // Move was already known by the mon. - gTasks[taskId].func = TeachMonMoveInPartyMenu; - break; - default: - // Mon automatically learned a move because it knew less than four moves. - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[learnedMove]); - - StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); - sub_806E834(gStringVar4, 1); - - gTasks[taskId].func = Task_TeamMonTMMove3; - break; + case 0: + // No move is learned. + evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); + if (evolutionSpecies != 0) + { + gCB2_AfterEvolution = sub_80A53F8; + BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); + DestroyTask(taskId); + } + else + { + sub_8070D90(taskId); + } + break; + case 0xFFFF: + // Mon already knows 4 moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); + + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + + ewram1C000.unk8 = gMoveToLearn; + gTasks[taskId].func = sub_806F358; + break; + case 0xFFFE: + // Move was already known by the mon. + gTasks[taskId].func = TeachMonMoveInPartyMenu; + break; + default: + // Mon automatically learned a move because it knew less than four moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[learnedMove]); + + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); + + gTasks[taskId].func = Task_TeamMonTMMove3; + break; } } } @@ -5621,45 +4924,45 @@ void TeachMonMoveInPartyMenu(u8 taskId) learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE); switch (learnedMove) { - case 0: - // No move is learned. - evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); - if (evolutionSpecies != 0) - { - gCB2_AfterEvolution = sub_80A53F8; - BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); - DestroyTask(taskId); - } - else - { - sub_8070D90(taskId); - } - break; - case 0xFFFF: - // Mon already knows 4 moves. - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); + case 0: + // No move is learned. + evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); + if (evolutionSpecies != 0) + { + gCB2_AfterEvolution = sub_80A53F8; + BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); + DestroyTask(taskId); + } + else + { + sub_8070D90(taskId); + } + break; + case 0xFFFF: + // Mon already knows 4 moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); - StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); - sub_806E834(gStringVar4, 1); + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); - ewram1C000.unk8 = gMoveToLearn; - gTasks[taskId].func = sub_806F358; - break; - case 0xFFFE: - // Move was already known by the mon. Go on the the next move to be learned. - TeachMonMoveInPartyMenu(taskId); - break; - default: - // Mon automatically learned a move because it knew less than four moves. - GetMonNickname(ewram1C000.pokemon, gStringVar1); - StringCopy(gStringVar2, gMoveNames[learnedMove]); + ewram1C000.unk8 = gMoveToLearn; + gTasks[taskId].func = sub_806F358; + break; + case 0xFFFE: + // Move was already known by the mon. Go on the the next move to be learned. + TeachMonMoveInPartyMenu(taskId); + break; + default: + // Mon automatically learned a move because it knew less than four moves. + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[learnedMove]); - StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); - sub_806E834(gStringVar4, 1); + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); - gTasks[taskId].func = Task_TeamMonTMMove3; - break; + gTasks[taskId].func = Task_TeamMonTMMove3; + break; } } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index b4be44aa2..6804f55d6 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -462,7 +462,7 @@ void debug_sub_8120F98(void) static void sub_810BB0C(void) { BasicInitMenuWindow(&gWindowTemplate_81E6E34); - sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48); + sub_8072BD8(ItemId_GetName(ITEM_POKEBLOCK_CASE), 2, 1, 0x48); } static void sub_810BB30(void) @@ -481,7 +481,7 @@ static void sub_810BB88(u8 a0) u8 y; u8 *buf; BasicInitMenuWindow(&gWindowTemplate_81E6E34); - for (i=a0; i<=a0+8; i++) + for (i = a0; i <= a0 + 8; i++) { y = (i - a0) << 1; if (i == gUnknown_02039248.unk2) @@ -1070,7 +1070,7 @@ s8 GetFirstFreePokeblockSlot(void) return -1; } -bool8 sub_810CA34(struct Pokeblock *pokeblock) +bool8 sub_810CA34(const struct Pokeblock *pokeblock) { s8 idx = GetFirstFreePokeblockSlot(); if (idx == -1) diff --git a/src/field/region_map.c b/src/field/region_map.c index 7bfda1a81..6d50701d6 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1411,22 +1411,26 @@ static const u8 sUnknown_083E7920[][3] = {0, 49, 0}, }; -struct UnknownStruct4 +static const u8 *const sEverGrandeCityAreaNames[] = { - const u8 *const *unk0; - u16 mapSectionId; - u16 flag; + OtherText_PokeLeague, + OtherText_PokeCenter, }; -static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter}; +struct MultiPartMapSection +{ + const u8 *const *partNames; + u16 mapSectionId; + u16 requiredFlag; +}; -const struct UnknownStruct4 gUnknown_083E79C0[1] = +// Map sections that are divided into multiple parts. Ever Grande City is the only one. +static const struct MultiPartMapSection sMultiPartMapSections[1] = { {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY}, }; -// XXX: what is this? -static u8 *const ewram_ = gSharedMem; +static struct UnknownStruct3 *const sFlyDataPtr = (struct UnknownStruct3 *)gSharedMem; static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2}; @@ -1547,10 +1551,10 @@ void CB2_InitFlyRegionMap(void) Menu_EraseScreen(); break; case 3: - InitRegionMap(&ewram0_3.regionMap, 0); + InitRegionMap(&sFlyDataPtr->regionMap, 0); CreateRegionMapCursor(0, 0); CreateRegionMapPlayerIcon(1, 1); - ewram0_3.unk6 = ewram0_3.regionMap.mapSectionId; + sFlyDataPtr->unk6 = sFlyDataPtr->regionMap.mapSectionId; StringFill(ewramBlankMapName, CHAR_SPACE, 12); PrintFlyTargetName(); break; @@ -1593,36 +1597,34 @@ static void VBlankCB_FlyRegionMap(void) void CB2_FlyRegionMap(void) { - ewram0_3.unk0(); + sFlyDataPtr->unk0(); AnimateSprites(); BuildOamBuffer(); } void sub_80FC244(void (*func)(void)) { - ewram0_3.unk0 = func; - ewram0_3.unk4 = 0; + sFlyDataPtr->unk0 = func; + sFlyDataPtr->unk4 = 0; } static void PrintFlyTargetName(void) { - if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) + if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4) { + bool8 drawFrameDisabled = FALSE; u16 i; - bool32 drawFrameDisabled = FALSE; - for (i = 0; i < ARRAY_COUNT(gUnknown_083E79C0); i++) + for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++) { - const struct UnknownStruct4 *r4 = &gUnknown_083E79C0[i]; - - if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId) + if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) { - if (FlagGet(r4->flag)) + if (FlagGet(sMultiPartMapSections[i].requiredFlag)) { Menu_DrawStdWindowFrame(16, 14, 29, 19); - Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 15); - MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17); - return; + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15); + MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 29, 17); + drawFrameDisabled = TRUE; } break; } @@ -1631,7 +1633,7 @@ static void PrintFlyTargetName(void) if (!drawFrameDisabled) { Menu_DrawStdWindowFrame(16, 16, 29, 19); - Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17); + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17); Menu_EraseWindowRect(16, 14, 29, 15); } } @@ -1732,7 +1734,7 @@ static void CreateSpecialAreaFlyTargetIcons(void) static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) { // Blink if our mapSectionId is the one selected on the map - if (ewram0_3.regionMap.mapSectionId == sprite->data[0]) + if (sFlyDataPtr->regionMap.mapSectionId == sprite->data[0]) { // Toggle visibility every 16 frames sprite->data[1]++; @@ -1751,11 +1753,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) static void sub_80FC5B4(void) { - switch (ewram0_3.unk4) + switch (sFlyDataPtr->unk4) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0_3.unk4++; + sFlyDataPtr->unk4++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1767,7 +1769,7 @@ static void sub_80FC5B4(void) static void sub_80FC600(void) { - if (ewram0_3.unk4 == 0) + if (sFlyDataPtr->unk4 == 0) { switch (sub_80FAB60()) { @@ -1779,7 +1781,7 @@ static void sub_80FC600(void) PrintFlyTargetName(); break; case INPUT_EVENT_A_BUTTON: - if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) + if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4) { m4aSongNumStart(SE_SELECT); ewramA6E = 1; @@ -1797,11 +1799,11 @@ static void sub_80FC600(void) void sub_80FC69C(void) { - switch (ewram0_3.unk4) + switch (sFlyDataPtr->unk4) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0_3.unk4++; + sFlyDataPtr->unk4++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1809,7 +1811,7 @@ void sub_80FC69C(void) FreeRegionMapIconResources(); if (ewramA6E != 0) { - switch (ewram0_3.regionMap.mapSectionId) + switch (sFlyDataPtr->regionMap.mapSectionId) { case MAPSEC_SOUTHERN_ISLAND: sub_8053538(22); @@ -1821,13 +1823,13 @@ void sub_80FC69C(void) sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); + sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? 20 : 11); break; default: - if (sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2] != 0) - sub_8053538(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2]); + if (sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2] != 0) + sub_8053538(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2]); else - warp1_set_2(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][0], sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][1], -1); + warp1_set_2(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][0], sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][1], -1); break; } sub_80865BC(); @@ -1839,3 +1841,131 @@ void sub_80FC69C(void) break; } } + +#if DEBUG + +void debug_sub_8110CCC(void) +{ + bool8 r7 = FALSE; + u16 i; + s16 indent; + + for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++) + { + if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) + { + if (FlagGet(sMultiPartMapSections[i].requiredFlag)) + { + indent = 12 - StringLength(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea]); + if (indent < 0) + indent = 0; + r7 = TRUE; + Menu_DrawStdWindowFrame(16, 14, 29, 19); + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15); + Menu_PrintText(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 17 + indent, 17); + } + break; + } + } + if (!r7) + { + Menu_DrawStdWindowFrame(16, 16, 29, 19); + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17); + Menu_EraseWindowRect(16, 14, 29, 15); + } +} + +void debug_sub_8110D84(void) +{ + switch (sFlyDataPtr->unk4) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + sFlyDataPtr->unk4++; + break; + case 1: + if (!UpdatePaletteFade()) + sFlyDataPtr->unk4++; + break; + case 2: + switch (sub_80FAB60()) + { + case 0: + break; + case 3: + debug_sub_8110CCC(); + break; + case 4: + if (sFlyDataPtr->regionMap.unk16 != 0) + { + m4aSongNumStart(SE_SELECT); + gSharedMem[0xA6E] = 1; // TODO: what is this? + sub_80FC244(sub_80FC69C); + } + break; + case 5: + m4aSongNumStart(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sFlyDataPtr->unk4++; + break; + } + break; + case 3: + if (!UpdatePaletteFade()) + SetMainCallback2(sub_805469C); + break; + case 4: + if (sub_80FAB60() != 0) + { + debug_sub_8110CCC(); + } + else if (gMain.newKeys & A_BUTTON) + { + sub_80FBCA0(); + sub_80FAEC4(); + sFlyDataPtr->unk4++; + } + break; + case 5: + if (sub_80FAFC0() == 0) + { + CreateRegionMapCursor(0, 0); + sFlyDataPtr->unk4++; + } + break; + case 6: + if (sub_80FAB60() != 0) + { + debug_sub_8110CCC(); + } + if (gMain.newKeys & A_BUTTON) // no "else if" like above? + { + sub_80FBCA0(); + sub_80FAEC4(); + sFlyDataPtr->unk4++; + } + break; + case 7: + if (sub_80FAFC0() == 0) + { + CreateRegionMapCursor(0, 0); + sFlyDataPtr->unk4 = 3; + } + break; + } +} + +void debug_sub_8110F28(void) +{ + CB2_InitFlyRegionMap(); + + if (gMain.callback2 == CB2_FlyRegionMap) + { + sub_80FBF94(); + sub_80FC244(debug_sub_8110D84); + debug_sub_8110CCC(); + } +} + +#endif + diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 8b67a2cd9..210d49835 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -23,6 +23,7 @@ #include "menu.h" #include "menu_helpers.h" #include "metatile_behavior.h" +#include "new_game.h" #include "palette.h" #include "pokemon.h" #include "overworld.h" @@ -127,10 +128,11 @@ void ClearSecretBase(struct SecretBaseRecord *record) { u16 i; u16 j; + record->secretBaseId = 0; - for (i=0; i<OT_NAME_LENGTH; i++) + for (i = 0; i < OT_NAME_LENGTH; i++) record->playerName[i] = 0xff; - for (i=0; i<4; i++) + for (i = 0; i < 4; i++) record->trainerId[i] = 0x00; record->sbr_field_e = 0; record->sbr_field_10 = 0; @@ -139,14 +141,15 @@ void ClearSecretBase(struct SecretBaseRecord *record) record->gender = 0; record->sbr_field_1_5 = 0; record->sbr_field_1_6 = 0; - for (i=0; i<16; i++) { + for (i = 0; i < 16; i++) + { record->decorations[i] = 0; record->decorationPos[i] = 0; } - for (i=0; i<6; i++) { - for (j=0; j<4; j++) { + for (i = 0; i < 6; i++) + { + for (j = 0; j < 4; j++) record->partyMoves[i * 4 + j] = 0; - } record->partyPersonality[i] = 0; record->partyEVs[i] = 0; record->partySpecies[i] = 0; @@ -175,17 +178,20 @@ void sub_80BB5D0(void) void sub_80BB5E4(void) { u16 i; + gSpecialVar_Result = 0; - for (i = 0; i < MAX_SECRET_BASES; i++) { - if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId) - continue; - gSpecialVar_Result = 1; - VarSet(VAR_CURRENT_SECRET_BASE, i); - break; + for (i = 0; i < MAX_SECRET_BASES; i++) + { + if (gUnknown_020387DC == gSaveBlock1.secretBases[i].secretBaseId) + { + gSpecialVar_Result = 1; + VarSet(VAR_CURRENT_SECRET_BASE, i); + break; + } } } -void sub_80BB63C(void) // 80bb63c +void sub_80BB63C(void) { if (gSaveBlock1.secretBases[0].secretBaseId) gSpecialVar_Result = 1; @@ -193,7 +199,7 @@ void sub_80BB63C(void) // 80bb63c gSpecialVar_Result = 0; } -u8 sub_80BB66C(void) // 80bb66c +u8 sub_80BB66C(void) { s16 x, y; s16 v0; @@ -214,7 +220,7 @@ u8 sub_80BB66C(void) // 80bb66c return 0; } -void sub_80BB70C(void) // 80bb70c +void sub_80BB70C(void) { gSpecialVar_0x8007 = sub_80BB66C(); } @@ -222,9 +228,11 @@ void sub_80BB70C(void) // 80bb70c s16 unref_sub_80BB724(u16 *a0, u8 a1) { u16 v2; - for (v2=0; v2<0x200; v2++) { + + for (v2 = 0; v2 < 0x200; v2++) + { if ((a0[v2] & 0xFFF) == a1) - return (s16)v2; + return v2; } return -1; } @@ -232,9 +240,13 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1) void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { s16 x, y; - for (y=0; y<gMapHeader.mapData->height; y++) { - for (x=0; x<gMapHeader.mapData->width; x++) { - if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) { + + for (y=0; y<gMapHeader.mapData->height; y++) + { + for (x=0; x<gMapHeader.mapData->width; x++) + { + if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) + { *arg1 = x; *arg2 = y; return; @@ -248,17 +260,22 @@ void sub_80BB800(void) s16 x, y; s16 tile_id; u16 idx; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); tile_id = MapGridGetMetatileIdAt(x, y); - for (idx=0; idx<7; idx++) { - if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + for (idx = 0; idx < 7; idx++) + { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) + { MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); CurrentMapDrawMetatileAt(x, y); return; } } - for (idx=0; idx<7; idx++) { - if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) { + for (idx = 0; idx < 7; idx++) + { + if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) + { MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00); CurrentMapDrawMetatileAt(x, y); return; @@ -269,7 +286,9 @@ void sub_80BB800(void) u8 sub_80BB8A8(u8 *arg1) { u8 idx; - for (idx=0; idx<7; idx++) { + + for (idx=0; idx<7; idx++) + { if (arg1[idx] == EOS) return idx; } @@ -280,10 +299,10 @@ void sub_80BB8CC(void) { u8 nameLength; u16 idx; + gSaveBlock1.secretBases[0].secretBaseId = gUnknown_020387DC; - for (idx=0; idx<4; idx++) { + for (idx=0; idx<4; idx++) gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; - } VarSet(VAR_CURRENT_SECRET_BASE, 0); nameLength = sub_80BB8A8(gSaveBlock2.playerName); memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH); @@ -296,13 +315,20 @@ void sub_80BB970(struct MapEvents *events) { u16 bgevidx, idx, jdx; s16 tile_id; - for (bgevidx=0; bgevidx<events->bgEventCount; bgevidx++) { - if (events->bgEvents[bgevidx].kind == 8) { - for (jdx=0; jdx<MAX_SECRET_BASES; jdx++) { - if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) { + + for (bgevidx = 0; bgevidx < events->bgEventCount; bgevidx++) + { + if (events->bgEvents[bgevidx].kind == 8) + { + for (jdx = 0; jdx < MAX_SECRET_BASES; jdx++) + { + if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) + { tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); - for (idx=0; idx<7; idx++) { - if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + for (idx = 0; idx < 7; idx++) + { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) + { MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); break; } @@ -323,14 +349,14 @@ void sub_80BBA14(void) void sub_80BBA48(u8 taskid) { u16 curbaseid; - switch (gTasks[taskid].data[0]) { + switch (gTasks[taskid].data[0]) + { case 0: gTasks[taskid].data[0] = 1; break; case 1: - if (!gPaletteFade.active) { + if (!gPaletteFade.active) gTasks[taskid].data[0] = 2; - } break; case 2: curbaseid = VarGet(VAR_CURRENT_SECRET_BASE); @@ -362,7 +388,8 @@ bool8 sub_80BBB24(void) void sub_80BBB50(u8 taskid) { FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); - if (IsWeatherNotFadingIn() == 1) { + if (IsWeatherNotFadingIn() == 1) + { EnableBothScriptContexts(); DestroyTask(taskid); } @@ -371,6 +398,7 @@ void sub_80BBB50(u8 taskid) void sub_80BBB90(void) { s16 x, y; + ScriptContext2_Enable(); HideMapNamePopup(); sub_80BB764(&x, &y, 0x220); @@ -383,7 +411,9 @@ void sub_80BBB90(void) void sub_80BBBEC(u8 taskid) { s8 idx; - if (!gPaletteFade.active) { + + if (!gPaletteFade.active) + { idx = 4 * (gUnknown_020387DC / 10); Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); warp_in(); @@ -411,17 +441,29 @@ void sub_80BBCCC(u8 flagIn) { u16 curBaseId; u16 x, y; - if (CurrentMapIsSecretBase()) { + + if (CurrentMapIsSecretBase()) + { curBaseId = VarGet(VAR_CURRENT_SECRET_BASE); - for (x=0; x<16; x++) { - if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) { - sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); + for (x = 0; x < 16; x++) + { + if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 + && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 + && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) + { + sub_80FF394( + (gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, + (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, + gSaveBlock1.secretBases[curBaseId].decorations[x]); } } - if (curBaseId != 0) { + if (curBaseId != 0) + { sub_80BB764(&x, &y, 0x220); MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); - } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) { + } + else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) + { sub_80BB764(&x, &y, 0x220); MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); } @@ -438,38 +480,47 @@ void sub_80BBDD0(void) u8 permission; u8 ndecor; u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE); - if (!CurrentMapIsSecretBase()) { + + if (!CurrentMapIsSecretBase()) + { roomdecor = gSaveBlock1.playerRoomDecor; roomdecorpos = gSaveBlock1.playerRoomDecorPos; ndecor = 12; - } else { + } + else + { roomdecor = gSaveBlock1.secretBases[curBase].decorations; roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos; ndecor = 16; } - for (decidx=0; decidx<ndecor; decidx++) { - if (roomdecor[decidx] != DECOR_NONE) { + for (decidx = 0; decidx < ndecor; decidx++) + { + if (roomdecor[decidx] != DECOR_NONE) + { permission = gDecorations[roomdecor[decidx]].permission; if (permission == DECORPERM_SOLID_MAT) { - for (objid=0; objid<gMapHeader.events->mapObjectCount; objid++) { + for (objid = 0; objid < gMapHeader.events->mapObjectCount; objid++) + { if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) break; } - if (objid == gMapHeader.events->mapObjectCount) - continue; - gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; - gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; - metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); - if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) { - gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; - VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]); - gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId; - FlagClear(gSpecialVar_0x8004 + 0xAE); - show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - gSpecialVar_0x8004 ++; + if (objid != gMapHeader.events->mapObjectCount) + { + gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; + gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; + metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); + if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) + { + gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; + VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]); + gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId; + FlagClear(gSpecialVar_0x8004 + 0xAE); + show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gSpecialVar_0x8004 ++; + } } } } @@ -485,8 +536,12 @@ void sub_80BBFA4(void) void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events) { s16 bgevtidx; - for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) { - if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7 && position->y == events->bgEvents[bgevtidx].y + 7) { + + for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx++) + { + if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7 + && position->y == events->bgEvents[bgevtidx].y + 7) + { gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId; break; } @@ -511,15 +566,15 @@ bool8 sub_80BC050(void) void sub_80BC074(u8 taskid) { - switch (gTasks[taskid].data[0]) { + switch (gTasks[taskid].data[0]) + { case 0: ScriptContext2_Enable(); gTasks[taskid].data[0] = 1; break; case 1: - if (!gPaletteFade.active) { + if (!gPaletteFade.active) gTasks[taskid].data[0] = 2; - } break; case 2: copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); @@ -532,12 +587,14 @@ void sub_80BC074(u8 taskid) } } -void sub_80BC0F8(void) { +void sub_80BC0F8(void) +{ CreateTask(sub_80BC074, 0); FadeScreen(1, 0); } -void sub_80BC114(void) { +void sub_80BC114(void) +{ if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC) gSpecialVar_Result = 1; else @@ -547,14 +604,17 @@ void sub_80BC114(void) { u8 sub_80BC14C(u8 sbid) { s16 idx; - for (idx=0; idx<MAX_SECRET_BASES; idx++) { + + for (idx = 0; idx < MAX_SECRET_BASES; idx++) + { if (gSaveBlock1.secretBases[idx].secretBaseId == sbid) return idx; } return 0; } -u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 +u8 *sub_80BC190(u8 *dest, u8 arg1) +{ u8 local1; u8 *str; @@ -570,12 +630,14 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 #endif } -u8 *GetSecretBaseMapName(u8 *dest) { +u8 *GetSecretBaseMapName(u8 *dest) +{ gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId; return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE)); } -void BufferSecretBaseOwnerName(void) { +void BufferSecretBaseOwnerName(void) +{ u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName; u8 *var1 = gStringVar1; u8 var2 = sub_80BB8A8(var0); @@ -583,13 +645,16 @@ void BufferSecretBaseOwnerName(void) { *var3 = EOS; } -bool8 sub_80BC268(u8 i) { // 80bc268 +bool8 sub_80BC268(u8 i) +{ if (gSaveBlock1.secretBases[i].sbr_field_1_6) return TRUE; - return FALSE; + else + return FALSE; } -u8 sub_80BC298(struct Pokemon *mon) { // 80bc298 +u8 sub_80BC298(struct Pokemon *mon) +{ u16 evsum = GetMonData(mon, MON_DATA_HP_EV); evsum += GetMonData(mon, MON_DATA_ATK_EV); evsum += GetMonData(mon, MON_DATA_DEF_EV); @@ -804,10 +869,11 @@ void sub_80BC474(void) { u16 eventId; struct MapEvents *mapEvents = gMapHeader.events; + for (eventId = 0; eventId < mapEvents->bgEventCount; eventId++) { if (mapEvents->bgEvents[eventId].kind == 8 - && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId) + && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId) { u16 i; s16 tileId = MapGridGetMetatileIdAt(mapEvents->bgEvents[eventId].x + 7, mapEvents->bgEvents[eventId].y + 7); @@ -845,33 +911,23 @@ u8 sub_80BC538(void) { s16 secretBaseIndex; u8 retVal = 0; - + for (secretBaseIndex = 1; secretBaseIndex < MAX_SECRET_BASES; secretBaseIndex++) { if (sub_80BC268(secretBaseIndex) == TRUE) - { retVal++; - } } - return retVal; } void sub_80BC56C(void) { - u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC); - if (sub_80BC268(secretBaseIndex) == TRUE) - { + if (sub_80BC268(sub_80BC14C(gUnknown_020387DC)) == TRUE) gSpecialVar_Result = 1; - } else if (sub_80BC538() > 9) - { gSpecialVar_Result = 2; - } else - { gSpecialVar_Result = 0; - } } void sub_80BC5BC(void) @@ -897,18 +953,15 @@ void Task_SecretBasePC_Registry(u8 taskId) ScriptContext2_Enable(); ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); - + taskData = gTasks[taskId].data; taskData[0] = sub_80BC538(); if (taskData[0] != 0) { - if (taskData[0] > 7) { + if (taskData[0] > 7) taskData[3] = 7; - } else - { taskData[3] = taskData[0]; - } taskData[1] = 0; taskData[2] = 0; @@ -964,7 +1017,9 @@ void sub_80BC6B0(u8 taskId) Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match } else + { CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98); + } if (taskData[2] == 0) DestroyVerticalScrollIndicator(TOP_ARROW); @@ -989,12 +1044,12 @@ void sub_80BC824(u8 taskId) { if (taskData[1]) { - PlaySE(5); + PlaySE(SE_SELECT); taskData[1] = Menu_MoveCursor(-1); } else if (taskData[2]) { - PlaySE(5); + PlaySE(SE_SELECT); taskData[2]--; sub_80BC6B0(taskId); } @@ -1005,20 +1060,20 @@ void sub_80BC824(u8 taskId) { if (taskData[2] + taskData[1] != taskData[0]) { - PlaySE(5); + PlaySE(SE_SELECT); taskData[2]++; sub_80BC6B0(taskId); } } else { - PlaySE(5); + PlaySE(SE_SELECT); taskData[1] = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) { - PlaySE(5); + PlaySE(SE_SELECT); if (taskData[1] + taskData[2] == taskData[0]) { Menu_DestroyCursor(); @@ -1034,7 +1089,7 @@ void sub_80BC824(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - PlaySE(5); + PlaySE(SE_SELECT); Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); @@ -1078,7 +1133,7 @@ void sub_80BC9E4(u8 taskId) { if (Menu_GetCursorPos()) { - PlaySE(5); + PlaySE(SE_SELECT); Menu_MoveCursor(-1); } } @@ -1086,18 +1141,18 @@ void sub_80BC9E4(u8 taskId) { if (Menu_GetCursorPos() != 1) { - PlaySE(5); + PlaySE(SE_SELECT); Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) { - PlaySE(5); + PlaySE(SE_SELECT); gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId); } else if (gMain.newKeys & B_BUTTON) { - PlaySE(5); + PlaySE(SE_SELECT); sub_80BCBF8(taskId); } } @@ -1132,14 +1187,10 @@ void sub_80BCB10(u8 taskId) taskData[0]--; if (taskData[2] > 0) - { taskData[2]--; - } if (taskData[0] < 8) - { taskData[3]--; - } sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -1180,13 +1231,9 @@ void sub_80BCC54(u8 taskId) DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (curBaseIndex == 0) - { ScriptContext1_SetupScript(gUnknown_0815F399); - } else - { ScriptContext1_SetupScript(gUnknown_0815F49A); - } DestroyTask(taskId); } @@ -1216,7 +1263,8 @@ const u8 *GetSecretBaseTrainerLoseText(void) void unref_sub_80BCD7C(u8 secretBaseIndex) { u16 i; - for (i = 0; i == 0; i++) + + for (i = 0; i < 1; i++) { gSaveBlock1.secretBases[secretBaseIndex].partyPersonality[i] = i + 1; gSaveBlock1.secretBases[secretBaseIndex].partyMoves[i * 4] = i + 1; @@ -1230,8 +1278,8 @@ void unref_sub_80BCD7C(u8 secretBaseIndex) void sub_80BCE1C(void) { u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); - sub_810FB10(1); + sub_810FB10(1); CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]); } @@ -1249,9 +1297,7 @@ void sub_80BCE90() u8 i; for (i = 0; i < MAX_SECRET_BASES; i++) - { gSaveBlock1.secretBases[i].sbr_field_1_5 = 0; - } FlagSet(FLAG_DAILY_UNKNOWN_8C2); } @@ -1281,28 +1327,18 @@ void sub_80BCF1C(u8 taskId) behavior = MapGridGetMetatileBehaviorAt(x, y); if (sub_8057350(behavior) == TRUE) - { DoYellowCave4Sparkle(); - } else if (sub_8057314(behavior) == TRUE) - { sub_80C68A4(MapGridGetMetatileIdAt(x, y), x, y); - } else if (sub_8057328(behavior) == TRUE) - { sub_80C6A54(x, y); - } else if (sub_805733C(behavior) == TRUE) - { DoDecorationSoundEffect(MapGridGetMetatileIdAt(x, y)); - } } break; case 2: if (!FieldEffectActiveListContains(taskData[4])) - { taskData[1] = 1; - } break; } } @@ -1320,9 +1356,7 @@ bool8 sub_80BD070(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB for (i = 0; i < 4; i++) { if (baseA->trainerId[i] != baseB->trainerId[i]) - { return FALSE; - } } return TRUE; @@ -1335,9 +1369,7 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB for (i = 0; i < OT_NAME_LENGTH && (baseA->playerName[i] != 0xFF || baseB->playerName[i] != 0xFF); i++) { if (baseA->playerName[i] != baseB->playerName[i]) - { return FALSE; - } } return TRUE; @@ -1346,12 +1378,9 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB bool8 sub_80BD0EC(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB) { if (baseA->gender == baseB->gender && sub_80BD070(baseA, baseB) && sub_80BD0A0(baseA, baseB)) - { return TRUE; - } - - - return FALSE; + else + return FALSE; } s16 sub_80BD12C(u8 secretBaseId) @@ -1361,9 +1390,7 @@ s16 sub_80BD12C(u8 secretBaseId) for (i = 0; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].secretBaseId == secretBaseId) - { return i; - } } return -1; @@ -1376,9 +1403,7 @@ u8 sub_80BD170(void) for (i = 1; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].secretBaseId == 0) - { return i; - } } return 0; @@ -1391,9 +1416,7 @@ u8 sub_80BD1B0(void) for (i = 1; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0) - { return i; - } } return 0; @@ -1404,9 +1427,7 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) s16 secretBaseIndex; if (secretBase->secretBaseId == 0) - { return 0; - } secretBaseIndex = sub_80BD12C(secretBase->secretBaseId); if (secretBaseIndex != 0) @@ -1414,11 +1435,9 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) if (secretBaseIndex != -1) { if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 == 1) - { return 0; - } if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2 - || secretBase->sbr_field_1_0 == 1) + || secretBase->sbr_field_1_0 == 1) { sub_80BD034(secretBaseIndex, secretBase); return secretBaseIndex; @@ -1456,7 +1475,7 @@ void sub_80BD280(void) for (j = i + 1; j < MAX_SECRET_BASES; j++) { if ((!secretBases[i].sbr_field_1_6 && secretBases[j].sbr_field_1_6 == 1) - || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2)) + || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2)) { temp = secretBases[i]; secretBases[i] = secretBases[j]; @@ -1473,9 +1492,7 @@ void sub_80BD328(struct SecretBaseRecord *secretBases, u8 b) for (i = 1; i < MAX_SECRET_BASES; i++) { if (secretBases[i].sbr_field_1_6 == b) - { sub_80BD1FC(&secretBases[i]); - } } } @@ -1540,9 +1557,7 @@ void sub_80BD3DC(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases } if (var1 == 7) - { break; - } } } @@ -1588,16 +1603,12 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases if (basesA[i].secretBaseId) { if (basesA[i].sbr_field_1_6 == 1) - { basesA[i].sbr_field_1_0 = 1; - } if (!sub_80BD494(&basesA[i], basesB, i)) { if (!sub_80BD494(&basesA[i], basesC, i)) - { sub_80BD494(&basesA[i], basesD, i); - } } } } @@ -1609,9 +1620,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases basesB[i].sbr_field_1_5 = 0; if (!sub_80BD494(&basesB[i], basesC, i)) - { sub_80BD494(&basesB[i], basesD, i); - } } } @@ -1624,9 +1633,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases } if (basesD[i].secretBaseId) - { basesD[i].sbr_field_1_5 = 0; - } } } @@ -1648,183 +1655,16 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases sub_80BD328(basesC, 0); } -#if DEBUG -__attribute__((naked)) -void sub_80BD674(void *playerRecords, u32 size, u8 c) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - add r6, r0, #0\n\ - add r5, r1, #0\n\ - lsl r2, r2, #0x18\n\ - lsr r7, r2, #0x18\n\ - ldr r0, ._503 @ gUnknown_020297ED\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._498 @cond_branch\n\ - mov r0, #0x60\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._498 @cond_branch\n\ - b ._520\n\ -._498:\n\ - bl GetLinkPlayerCount\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x2\n\ - beq ._500 @cond_branch\n\ - cmp r0, #0x3\n\ - beq ._501 @cond_branch\n\ - b ._505\n\ -._504:\n\ - .align 2, 0\n\ -._503:\n\ - .word gUnknown_020297ED\n\ -._500:\n\ - lsl r4, r5, #0x1\n\ - add r0, r6, r4\n\ - mov r1, #0x0\n\ - add r2, r5, #0\n\ - bl memset\n\ - add r4, r4, r5\n\ - add r4, r6, r4\n\ - add r0, r4, #0\n\ - mov r1, #0x0\n\ - add r2, r5, #0\n\ - bl memset\n\ - b ._505\n\ -._501:\n\ - lsl r0, r5, #0x1\n\ - add r0, r0, r5\n\ - add r0, r6, r0\n\ - mov r1, #0x0\n\ - add r2, r5, #0\n\ - bl memset\n\ -._505:\n\ - cmp r7, #0x1\n\ - beq ._506 @cond_branch\n\ - cmp r7, #0x1\n\ - bgt ._507 @cond_branch\n\ - cmp r7, #0\n\ - beq ._508 @cond_branch\n\ - b ._515\n\ -._507:\n\ - cmp r7, #0x2\n\ - beq ._510 @cond_branch\n\ - cmp r7, #0x3\n\ - beq ._511 @cond_branch\n\ - b ._515\n\ -._508:\n\ - add r0, r6, r5\n\ - lsl r2, r5, #0x1\n\ - add r1, r6, r2\n\ - add r2, r2, r5\n\ - add r2, r6, r2\n\ - bl sub_80BD610\n\ - b ._515\n\ -._506:\n\ - lsl r1, r5, #0x1\n\ - add r0, r6, r1\n\ - add r1, r1, r5\n\ - add r1, r6, r1\n\ - add r2, r6, #0\n\ - bl sub_80BD610\n\ - b ._515\n\ -._510:\n\ - lsl r0, r5, #0x1\n\ - add r0, r0, r5\n\ - add r0, r6, r0\n\ - add r2, r6, r5\n\ - add r1, r6, #0\n\ - bl sub_80BD610\n\ - b ._515\n\ -._511:\n\ - add r1, r6, r5\n\ - lsl r2, r5, #0x1\n\ - add r2, r6, r2\n\ - add r0, r6, #0\n\ - bl sub_80BD610\n\ -._515:\n\ - mov r3, #0x1\n\ - ldr r6, ._521 @ gSaveBlock1\n\ - mov r5, #0x10\n\ - neg r5, r5\n\ - ldr r4, ._521 + 4 @ 0x1a09\n\ -._517:\n\ - lsl r0, r3, #0x2\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x5\n\ - add r0, r0, r6\n\ - add r2, r0, r4\n\ - ldrb r1, [r2]\n\ - lsl r0, r1, #0x1c\n\ - lsr r0, r0, #0x1c\n\ - cmp r0, #0x1\n\ - bne ._516 @cond_branch\n\ - mov r0, #0x3f\n\ - and r0, r0, r1\n\ - mov r1, #0x40\n\ - orr r0, r0, r1\n\ - and r0, r0, r5\n\ - strb r0, [r2]\n\ -._516:\n\ - add r0, r3, #1\n\ - lsl r0, r0, #0x10\n\ - lsr r3, r0, #0x10\n\ - cmp r3, #0x13\n\ - bls ._517 @cond_branch\n\ - bl sub_80BD280\n\ - mov r3, #0x1\n\ - ldr r4, ._521 @ gSaveBlock1\n\ - ldr r6, ._521 + 4 @ 0x1a09\n\ - add r7, r4, #0\n\ - mov r5, #0x3f\n\ -._519:\n\ - lsl r0, r3, #0x2\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x5\n\ - add r0, r0, r4\n\ - add r2, r0, r6\n\ - ldrb r1, [r2]\n\ - lsr r0, r1, #0x6\n\ - cmp r0, #0x2\n\ - bne ._518 @cond_branch\n\ - add r0, r5, #0\n\ - and r0, r0, r1\n\ - strb r0, [r2]\n\ -._518:\n\ - add r0, r3, #1\n\ - lsl r0, r0, #0x10\n\ - lsr r3, r0, #0x10\n\ - cmp r3, #0x13\n\ - bls ._519 @cond_branch\n\ - ldr r0, ._521 + 8 @ 0x1a16\n\ - add r2, r7, r0\n\ - ldrh r1, [r2]\n\ - ldr r0, ._521 + 12 @ 0xffff\n\ - cmp r1, r0\n\ - beq ._520 @cond_branch\n\ - add r0, r1, #1\n\ - strh r0, [r2]\n\ -._520:\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._522:\n\ - .align 2, 0\n\ -._521:\n\ - .word gSaveBlock1\n\ - .word 0x1a09\n\ - .word 0x1a16\n\ - .word 0xffff"); -} -#else void sub_80BD674(void *playerRecords, u32 size, u8 c) { - if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) + if ( +#if DEBUG + gUnknown_020297ED != 0 || +#endif + FlagGet(FLAG_RECEIVED_SECRET_POWER)) { u16 i; + u8 numLinkedPlayers = GetLinkPlayerCount(); switch (numLinkedPlayers) { @@ -1867,15 +1707,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) for (i = 1; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 2) - { gSaveBlock1.secretBases[i].sbr_field_1_6 = 0; - } } if (gSaveBlock1.secretBases[0].sbr_field_e != 0xFFFF) - { gSaveBlock1.secretBases[0].sbr_field_e++; - } } } -#endif diff --git a/src/field/shop.c b/src/field/shop.c index 0f53eef17..87dbbeb97 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -115,7 +115,7 @@ static void SetShopMenuCallback(void *callbackPtr) gMartInfo.callback = callbackPtr; } -static void SetShopItemsForSale(u16 *items) +static void SetShopItemsForSale(const u16 *items) { u16 i = 0; @@ -153,13 +153,9 @@ static void Task_DoBuySellMenu(u8 taskId) { PlaySE(SE_SELECT); if (gMartInfo.martType == MART_TYPE_0) - { sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(taskIdConst); - } else - { sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(taskIdConst); - } } else if (gMain.newKeys & B_BUTTON) { @@ -366,15 +362,15 @@ static void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) switch (tempVar4) { - case 0: // _080B335C + case 0: BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); break; - case 1: // _080B3364 + case 1: BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); break; - case 2: // _080B3398 + case 2: BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); break; @@ -550,7 +546,7 @@ static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControl { u8 *stringPtr = gStringVar1; - if (hasControlCode != FALSE) + if (hasControlCode) { stringPtr[0] = EXT_CTRL_CODE_BEGIN; stringPtr[1] = 0x1; @@ -563,7 +559,7 @@ static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControl sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); stringPtr = gStringVar1; - if (hasControlCode != FALSE) + if (hasControlCode) stringPtr = &gStringVar1[3]; GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4); @@ -574,7 +570,7 @@ static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasCon { u8 *stringPtr = gStringVar1; - if (hasControlCode != FALSE) + if (hasControlCode) { stringPtr[0] = EXT_CTRL_CODE_BEGIN; stringPtr[1] = 0x1; @@ -586,7 +582,7 @@ static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasCon sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1); stringPtr = gStringVar1; - if (hasControlCode != FALSE) + if (hasControlCode) stringPtr = &gStringVar1[3]; // some names are the maximum string length for a shop item. Because there is no room for @@ -632,8 +628,10 @@ static void Shop_PrintItemDescText(void) 0x4, 0x68, 0x68, 0x30, 0); } else + { sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description, 0x4, 0x68, 0x68, 0x30, 0); + } } else { @@ -687,7 +685,9 @@ static void Task_DoItemPurchase(u8 taskId) Task_UpdatePurchaseHistory(taskId); } else + { DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); + } } else // a normal mart is only type 0, so types 1 and 2 are decoration marts. { @@ -706,7 +706,9 @@ static void Task_DoItemPurchase(u8 taskId) } } else + { DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); + } } static void Shop_DoYesNoPurchase(u8 taskId) @@ -1129,19 +1131,17 @@ static void Shop_DoCursorAction(u8 taskId) ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8); if (gMartInfo.martType == MART_TYPE_1) - { StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2); - } else - { StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3); - } DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1); } } } else + { Task_ExitBuyMenu(taskId); + } } else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu { @@ -1240,22 +1240,12 @@ void Shop_CreateDecorationShop2Menu(u16 *itemList) } #if DEBUG -__attribute__((naked)) + void debug_sub_80C2818(void) { - asm("\ - push {lr}\n\ - mov r0, #0x0\n\ - bl CreateShopMenu\n\ - ldr r0, ._290 @ gMartBuyNoSellOptionList\n\ - bl SetShopItemsForSale\n\ - mov r0, #0x0\n\ - bl SetShopMenuCallback\n\ - pop {r0}\n\ - bx r0\n\ -._291:\n\ - .align 2, 0\n\ -._290:\n\ - .word gMartBuyNoSellOptionList+0x3"); + CreateShopMenu(MART_TYPE_0); + SetShopItemsForSale(gUnusedMartArray); + SetShopMenuCallback(NULL); } + #endif diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 2c97c146d..8075f24e4 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -8,6 +8,7 @@ #include "sound.h" #include "main.h" #include "slot_machine.h" +#include "string_util.h" #include "decompress.h" #include "trig.h" #include "graphics.h" @@ -17,6 +18,93 @@ #include "menu.h" #include "ewram.h" +enum +{ + SLOT_MACHINE_TAG_7_RED, + SLOT_MACHINE_TAG_7_BLUE, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_REPLAY +}; + +enum +{ + SLOT_MACHINE_MATCHED_1CHERRY, + SLOT_MACHINE_MATCHED_2CHERRY, + SLOT_MACHINE_MATCHED_REPLAY, + SLOT_MACHINE_MATCHED_LOTAD, + SLOT_MACHINE_MATCHED_AZURILL, + SLOT_MACHINE_MATCHED_POWER, + SLOT_MACHINE_MATCHED_777_MIXED, + SLOT_MACHINE_MATCHED_777_RED, + SLOT_MACHINE_MATCHED_777_BLUE, + SLOT_MACHINE_MATCHED_NONE +}; + +struct SlotMachineEwramStruct +{ + /*0x00*/ u8 state; + /*0x01*/ u8 unk01; + /*0x02*/ u8 pikaPower; + /*0x03*/ u8 unk03; + /*0x04*/ u8 unk04; + /*0x05*/ u8 unk05; + /*0x06*/ u8 unk06; + /*0x07*/ u8 unk07; + /*0x08*/ u16 matchedSymbols; + /*0x0A*/ u8 unk0A; + /*0x0B*/ u8 unk0B; + /*0x0C*/ s16 coins; + /*0x0E*/ s16 payout; + /*0x10*/ s16 unk10; + /*0x12*/ s16 bet; + /*0x14*/ s16 unk14; + /*0x16*/ s16 unk16; + /*0x18*/ s16 unk18; + /*0x1A*/ s16 unk1A; + /*0x1C*/ s16 unk1C[3]; + /*0x22*/ u16 unk22[3]; + /*0x28*/ s16 reelPositions[3]; + /*0x2E*/ s16 unk2E[3]; + /*0x34*/ s16 unk34[3]; + /*0x3A*/ u8 reelTasks[3]; + /*0x3D*/ u8 unk3D; + /*0x3E*/ u8 unk3E; + /*0x3F*/ u8 unk3F; + /*0x40*/ u8 unk40; + /*0x41*/ u8 unk41; + /*0x42*/ u8 unk42; + /*0x43*/ u8 unk43; + /*0x44*/ u8 unk44[5]; + /*0x49*/ u8 unk49[2]; + /*0x49*/ u8 unk4B[3]; + /*0x4E*/ u8 unk4E[2]; + /*0x50*/ u8 unk50[2]; + /*0x52*/ u8 unk52[2]; + /*0x54*/ u8 unk54[4]; + /*0x58*/ u16 win0h; + /*0x5a*/ u16 win0v; + /*0x5c*/ u16 winIn; + /*0x5e*/ u16 winOut; + /*0x60*/ u16 backupMapMusic; + /*0x64*/ MainCallback prevMainCb; +#if DEBUG + u32 unk68; + u32 unk6C; + u32 unk70; + u32 unk74; + u32 unk78; + u32 unk7C; + u32 unk80; + u32 unk84; + u32 unk88; + u32 unk8C; + s32 unk90; +#endif +}; + struct UnkStruct1 { /*0x00*/ u8 unk00; @@ -30,9 +118,6 @@ struct UnkStruct1 #define SLOTMACHINE_GFX_TILES 236 #endif -// TODO: figure out which functions are static and which are not. -#define static - static void CB2_SlotMachineSetup(void); static void CB2_SlotMachineLoop(void); static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb); @@ -79,7 +164,9 @@ static bool8 sub_81023E0(struct Task *task); static bool8 sub_81023FC(struct Task *task); static bool8 sub_8102424(struct Task *task); static bool8 sub_8102460(struct Task *task); +#if DEBUG static bool8 debug_sub_8116E74(struct Task *); +#endif static void sub_8102484(void); static void sub_81024F0(void); static bool8 sub_8102540(void); @@ -227,12 +314,21 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); static void sub_81065DC(void); #if DEBUG -__attribute__((section(".bss"))) u8 unk_debug_bss_1_0 = 0; -__attribute__((section(".bss"))) u8 unk_debug_bss_1_1 = 0; -__attribute__((section(".bss"))) u8 unk_debug_bss_1_2 = 0; -__attribute__((section(".bss"))) u8 unk_debug_bss_1_3 = 0; -__attribute__((section(".bss"))) u8 unk_debug_bss_1_4 = 0; -__attribute__((section(".bss"))) u32 unk_debug_bss_1_8 = 0; +static void debug_sub_811B5D0(void); +static void debug_sub_811B620(void); +static void debug_sub_811B5B4(s32 *, s32); +static void debug_sub_811B894(void); +static u8 debug_sub_811B634(void); +static void debug_sub_811B654(u8 taskId); +#endif + +#if DEBUG +static u8 unk_debug_bss_1_0; +static u8 unk_debug_bss_1_1; +static u8 unk_debug_bss_1_2; +static u8 unk_debug_bss_1_3; +static u8 unk_debug_bss_1_4; +static u32 unk_debug_bss_1_8; #endif static const struct UnkStruct1 *const gUnknown_083ED048[]; @@ -391,135 +487,6 @@ static void SlotMachineSetup_2_1(void) static const s16 gUnknown_083ECCF8[][2]; -#if DEBUG -__attribute__((naked)) -static void SlotMachineSetup_0_1(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\ - bl sub_81019EC\n\ - ldr r5, ._43 @ \n\ - mov r4, #0x0\n\ - strb r4, [r5]\n\ - strb r4, [r5, #0x2]\n\ - bl Random\n\ - mov r1, #0x1\n\ - and r1, r1, r0\n\ - strb r1, [r5, #0x3]\n\ - strb r4, [r5, #0x4]\n\ - mov r0, #0x0\n\ - strh r4, [r5, #0x8]\n\ - strb r0, [r5, #0xa]\n\ - strb r0, [r5, #0xb]\n\ - ldr r0, ._43 + 4 @ \n\ - ldr r1, ._43 + 8 @ \n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - strh r0, [r5, #0xc]\n\ - strh r4, [r5, #0xe]\n\ - strh r4, [r5, #0x10]\n\ - strh r4, [r5, #0x12]\n\ - strh r4, [r5, #0x18]\n\ - mov r0, #0x8\n\ - strh r0, [r5, #0x1a]\n\ - add r1, r5, #0\n\ - add r1, r1, #0x58\n\ - mov r0, #0xf0\n\ - strh r0, [r1]\n\ - add r1, r1, #0x2\n\ - mov r0, #0xa0\n\ - strh r0, [r1]\n\ - add r0, r5, #0\n\ - add r0, r0, #0x5c\n\ - mov r1, #0x3f\n\ - strh r1, [r0]\n\ - add r0, r0, #0x2\n\ - strh r1, [r0]\n\ - bl GetCurrentMapMusic\n\ - add r1, r5, #0\n\ - add r1, r1, #0x60\n\ - strh r0, [r1]\n\ - mov r7, #0x0\n\ - add r6, r5, #0\n\ - ldr r2, ._43 + 12 @ \n\ - mov sl, r2\n\ - mov r0, #0x1c\n\ - add r0, r0, r6\n\ - mov r9, r0\n\ -._41:\n\ - lsl r5, r7, #0x1\n\ - mov r1, #0x22\n\ - add r1, r1, r6\n\ - mov r8, r1\n\ - add r1, r5, r1\n\ - mov r0, #0x0\n\ - strh r0, [r1]\n\ - add r4, r6, #0\n\ - add r4, r4, #0x28\n\ - add r4, r5, r4\n\ - ldrb r0, [r6, #0x3]\n\ - lsl r0, r0, #0x1\n\ - lsl r1, r7, #0x2\n\ - add r0, r0, r1\n\ - add r0, r0, sl\n\ - mov r2, #0x0\n\ - ldsh r0, [r0, r2]\n\ - mov r1, #0x15\n\ - bl __modsi3\n\ - strh r0, [r4]\n\ - add r5, r5, r9\n\ - mov r1, #0x0\n\ - ldsh r0, [r4, r1]\n\ - lsl r1, r0, #0x1\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - mov r2, #0xfc\n\ - lsl r2, r2, #0x1\n\ - add r0, r2, #0\n\ - sub r0, r0, r1\n\ - strh r0, [r5]\n\ - mov r1, #0x0\n\ - ldsh r0, [r5, r1]\n\ - add r1, r2, #0\n\ - bl __modsi3\n\ - strh r0, [r5]\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - cmp r7, #0x2\n\ - bls ._41 @cond_branch\n\ - bl debug_sub_811B5D0\n\ - ldr r0, ._43 + 16 @ \n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._42 @cond_branch\n\ - mov r1, r8\n\ - sub r1, r1, #0x22\n\ - mov r0, #0xfa\n\ - lsl r0, r0, #0x2\n\ - strh r0, [r1, #0xc]\n\ -._42:\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\ -._44:\n\ - .align 2, 0\n\ -._43:\n\ - .word +0x2000000\n\ - .word gSaveBlock1\n\ - .word 0x494\n\ - .word gUnknown_083ECCF8\n\ - .word unk_debug_bss_1_1"); -} -#else static void SlotMachineSetup_0_1(void) { u8 i; @@ -550,8 +517,12 @@ static void SlotMachineSetup_0_1(void) eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24; eSlotMachine->unk1C[i] %= 0x1f8; } -} +#if DEBUG + debug_sub_811B5D0(); + if (unk_debug_bss_1_1 != 0) + eSlotMachine->coins = 1000; #endif +} static void SlotMachineSetup_3_0(void) { @@ -634,7 +605,8 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = static void sub_8101D24(u8 taskId) { - while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId)); + while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId)) + ; } static bool8 sub_8101D5C(struct Task *task) @@ -648,9 +620,7 @@ static bool8 sub_8101D5C(struct Task *task) static bool8 sub_8101D8C(struct Task *task) { if (!gPaletteFade.active) - { eSlotMachine->state++; - } return FALSE; } @@ -676,265 +646,53 @@ static bool8 sub_8101DB0(struct Task *task) static bool8 sub_8101DF4(struct Task *task) { if (sub_8104E18()) - { eSlotMachine->state = 4; - } return FALSE; } -#if DEBUG -__attribute__((naked)) -static bool8 sub_8101E10(struct Task *task) -{ - asm("\ - push {lr}\n\ - mov r0, #0x0\n\ - bl sub_8104CAC\n\ - ldr r2, ._70 @ \n\ - mov r0, #0x5\n\ - strb r0, [r2]\n\ - ldr r0, ._70 + 4 @ \n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._67 @cond_branch\n\ - ldr r0, ._70 + 8 @ \n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._69 @cond_branch\n\ -._67:\n\ - mov r0, #0xc\n\ - ldsh r1, [r2, r0]\n\ - ldr r0, ._70 + 12 @ \n\ - cmp r1, r0\n\ - ble ._69 @cond_branch\n\ - mov r0, #0x17\n\ - strb r0, [r2]\n\ -._69:\n\ - mov r0, #0x1\n\ - pop {r1}\n\ - bx r1\n\ -._71:\n\ - .align 2, 0\n\ -._70:\n\ - .word +0x2000000\n\ - .word unk_debug_bss_1_1\n\ - .word unk_debug_bss_1_4\n\ - .word 0x270e"); -} -#else static bool8 sub_8101E10(struct Task *task) { sub_8104CAC(0); eSlotMachine->state = 5; - if (eSlotMachine->coins >= 9999) - { + if ( +#if DEBUG + (unk_debug_bss_1_1 == 0 || unk_debug_bss_1_4 == 0) && +#endif + eSlotMachine->coins >= 9999) eSlotMachine->state = 23; - } return TRUE; } -#endif -#if DEBUG -__attribute__((naked)) -static bool8 sub_8101E3C(struct Task *task) -{ - asm("\ - push {r4, r5, lr}\n\ - ldr r0, ._77 @ unk_debug_bss_1_1\n\ - ldrb r1, [r0]\n\ - add r3, r0, #0\n\ - ldr r5, ._77 + 4 @ gMain\n\ - cmp r1, #0\n\ - beq ._76 @cond_branch\n\ - ldr r2, ._77 + 8 @ unk_debug_bss_1_4\n\ - ldrb r0, [r2]\n\ - cmp r0, #0\n\ - beq ._76 @cond_branch\n\ - ldr r4, ._77 + 12 @ \n\ - mov r1, #0xc\n\ - ldsh r0, [r4, r1]\n\ - cmp r0, #0x3\n\ - ble ._74 @cond_branch\n\ - ldrh r1, [r5, #0x2c]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._75 @cond_branch\n\ -._74:\n\ - mov r0, #0x0\n\ - strb r0, [r2]\n\ - b ._76\n\ -._78:\n\ - .align 2, 0\n\ -._77:\n\ - .word unk_debug_bss_1_1\n\ - .word gMain\n\ - .word unk_debug_bss_1_4\n\ - .word +0x2000000\n\ -._75:\n\ - mov r0, #0x0\n\ - bl sub_8103D50\n\ - mov r0, #0x1\n\ - bl sub_8103D50\n\ - mov r0, #0x2\n\ - bl sub_8103D50\n\ - ldrh r0, [r4, #0xc]\n\ - sub r0, r0, #0x3\n\ - strh r0, [r4, #0xc]\n\ - mov r0, #0x3\n\ - strh r0, [r4, #0x12]\n\ - mov r0, #0x9\n\ - strb r0, [r4]\n\ - b ._102\n\ -._76:\n\ - ldrb r0, [r3]\n\ - cmp r0, #0\n\ - beq ._81 @cond_branch\n\ - ldrh r1, [r5, #0x2e]\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._81 @cond_branch\n\ - bl debug_sub_811B620\n\ - ldr r1, ._83 @ \n\ - mov r0, #0x1d\n\ - strb r0, [r1]\n\ - b ._102\n\ -._84:\n\ - .align 2, 0\n\ -._83:\n\ - .word +0x2000000\n\ -._81:\n\ - ldrh r1, [r5, #0x2e]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._85 @cond_branch\n\ - mov r0, #0x0\n\ - bl sub_8104AB8\n\ - ldr r1, ._87 @ \n\ - mov r0, #0x8\n\ - strb r0, [r1]\n\ - b ._102\n\ -._88:\n\ - .align 2, 0\n\ -._87:\n\ - .word +0x2000000\n\ -._85:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._89 @cond_branch\n\ - ldr r2, ._94 @ \n\ - mov r3, #0xc\n\ - ldsh r0, [r2, r3]\n\ - sub r0, r0, #0x3\n\ - mov r3, #0x12\n\ - ldsh r1, [r2, r3]\n\ - add r0, r0, r1\n\ - cmp r0, #0\n\ - blt ._90 @cond_branch\n\ - ldrh r4, [r2, #0x12]\n\ - add r0, r1, #0\n\ - cmp r0, #0x2\n\ - bgt ._91 @cond_branch\n\ -._92:\n\ - lsl r0, r4, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl sub_8103D50\n\ - lsl r0, r4, #0x10\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x9\n\ - add r0, r0, r2\n\ - lsr r4, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x2\n\ - ble ._92 @cond_branch\n\ -._91:\n\ - ldr r1, ._94 @ \n\ - ldrh r0, [r1, #0xc]\n\ - sub r0, r0, #0x3\n\ - ldrh r3, [r1, #0x12]\n\ - add r0, r0, r3\n\ - strh r0, [r1, #0xc]\n\ - mov r0, #0x3\n\ - strh r0, [r1, #0x12]\n\ - mov r0, #0x9\n\ - strb r0, [r1]\n\ - mov r0, #0x5f\n\ - bl PlaySE\n\ - b ._102\n\ -._95:\n\ - .align 2, 0\n\ -._94:\n\ - .word +0x2000000\n\ -._90:\n\ - mov r0, #0x6\n\ - b ._96\n\ -._89:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._98 @cond_branch\n\ - ldr r4, ._103 @ \n\ - mov r1, #0xc\n\ - ldsh r0, [r4, r1]\n\ - cmp r0, #0\n\ - beq ._98 @cond_branch\n\ - mov r0, #0x5f\n\ - bl PlaySE\n\ - ldrb r0, [r4, #0x12]\n\ - bl sub_8103D50\n\ - ldrh r0, [r4, #0xc]\n\ - sub r0, r0, #0x1\n\ - strh r0, [r4, #0xc]\n\ - ldrh r0, [r4, #0x12]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4, #0x12]\n\ -._98:\n\ - ldr r0, ._103 @ \n\ - mov r2, #0x12\n\ - ldsh r1, [r0, r2]\n\ - add r2, r0, #0\n\ - ldr r5, ._103 + 4 @ \n\ - cmp r1, #0x2\n\ - bgt ._99 @cond_branch\n\ - cmp r1, #0\n\ - beq ._101 @cond_branch\n\ - ldrh r1, [r5, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._101 @cond_branch\n\ -._99:\n\ - mov r0, #0x9\n\ - strb r0, [r2]\n\ -._101:\n\ - ldrh r1, [r5, #0x2e]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._102 @cond_branch\n\ - mov r0, #0x15\n\ -._96:\n\ - strb r0, [r2]\n\ -._102:\n\ - mov r0, #0x0\n\ - pop {r4, r5}\n\ - pop {r1}\n\ - bx r1\n\ -._104:\n\ - .align 2, 0\n\ -._103:\n\ - .word +0x2000000\n\ - .word gMain"); -} -#else static bool8 sub_8101E3C(struct Task *task) { s16 i; +#if DEBUG + if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0) + { + if (eSlotMachine->coins <= 3 || (gMain.heldKeys & B_BUTTON)) + { + unk_debug_bss_1_4 = 0; + } + else + { + sub_8103D50(0); + sub_8103D50(1); + sub_8103D50(2); + eSlotMachine->coins -= 3; + eSlotMachine->bet = 3; + eSlotMachine->state = 9; + return 0; + } + } + if (unk_debug_bss_1_1 != 0 && (gMain.newKeys & 8)) + { + debug_sub_811B620(); + eSlotMachine->state = 29; + return 0; + } +#endif + if (gMain.newKeys & SELECT_BUTTON) { sub_8104AB8(0); @@ -945,9 +703,7 @@ static bool8 sub_8101E3C(struct Task *task) if (eSlotMachine->coins - (3 - eSlotMachine->bet) >= 0) { for (i = eSlotMachine->bet; i < 3; i++) - { sub_8103D50(i); - } eSlotMachine->coins -= (3 - eSlotMachine->bet); eSlotMachine->bet = 3; eSlotMachine->state = 9; @@ -968,17 +724,12 @@ static bool8 sub_8101E3C(struct Task *task) eSlotMachine->bet++; } if (eSlotMachine->bet >= 3 || (eSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON)) - { eSlotMachine->state = 9; - } if (gMain.newKeys & B_BUTTON) - { eSlotMachine->state = 21; - } } return FALSE; } -#endif static void sub_8101F2C(const u8 *str) { @@ -1006,77 +757,10 @@ static bool8 sub_8101F60(struct Task *task) static bool8 sub_8101F88(struct Task *task) { if (sub_8104AEC()) - { eSlotMachine->state = 5; - } return FALSE; } -#if DEBUG -__attribute__((naked)) -static bool8 sub_8101FA4(struct Task *task) -{ - asm("\ - push {r4, lr}\n\ - add r4, r0, #0\n\ - bl sub_8102484\n\ - bl sub_8104DA4\n\ - mov r0, #0x0\n\ - bl sub_8102DEC\n\ - mov r0, #0x1\n\ - bl sub_8102DEC\n\ - mov r0, #0x2\n\ - bl sub_8102DEC\n\ - mov r0, #0x0\n\ - strh r0, [r4, #0x8]\n\ - ldr r4, ._115 @ \n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._113 @cond_branch\n\ - bl sub_810430C\n\ - mov r0, #0xa\n\ - b ._114\n\ -._116:\n\ - .align 2, 0\n\ -._115:\n\ - .word +0x2000000\n\ -._113:\n\ - mov r0, #0x1\n\ - bl sub_8104CAC\n\ - mov r0, #0xb\n\ -._114:\n\ - strb r0, [r4]\n\ - ldr r4, ._119 @ \n\ - mov r0, #0x8\n\ - strh r0, [r4, #0x1a]\n\ - ldrb r0, [r4, #0xa]\n\ - cmp r0, #0\n\ - beq ._117 @cond_branch\n\ - bl dp15_jump_random_unknown\n\ - strh r0, [r4, #0x1a]\n\ -._117:\n\ - ldr r0, ._119 + 4 @ \n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._118 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x68\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._118:\n\ - mov r0, #0x0\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ -._120:\n\ - .align 2, 0\n\ -._119:\n\ - .word +0x2000000\n\ - .word unk_debug_bss_1_1"); -} -#else static bool8 sub_8101FA4(struct Task *task) { sub_8102484(); @@ -1097,12 +781,13 @@ static bool8 sub_8101FA4(struct Task *task) } eSlotMachine->unk1A = 8; if (eSlotMachine->unk0A) - { eSlotMachine->unk1A = dp15_jump_random_unknown(); - } +#if DEBUG + if (unk_debug_bss_1_1 != 0) + debug_sub_811B5B4(&eSlotMachine->unk68, 1); +#endif return FALSE; } -#endif static bool8 sub_8102008(struct Task *task) { @@ -1115,134 +800,38 @@ static bool8 sub_8102008(struct Task *task) return FALSE; } -#if DEBUG -__attribute__((naked)) -static bool8 sub_8102034(struct Task *task) -{ - asm("\ - push {r4, lr}\n\ - ldrh r1, [r0, #0x8]\n\ - add r1, r1, #0x1\n\ - strh r1, [r0, #0x8]\n\ - lsl r1, r1, #0x10\n\ - asr r1, r1, #0x10\n\ - cmp r1, #0x1d\n\ - ble ._124 @cond_branch\n\ - ldr r0, ._127 @ unk_debug_bss_1_1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._126 @cond_branch\n\ - ldr r0, ._127 + 4 @ unk_debug_bss_1_4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._126 @cond_branch\n\ - ldr r4, ._127 + 8 @ unk_debug_bss_1_8\n\ - bl Random\n\ - mov r1, #0x1f\n\ - and r1, r1, r0\n\ - add r1, r1, #0x1\n\ - str r1, [r4]\n\ -._126:\n\ - bl sub_81024F0\n\ - ldr r1, ._127 + 12 @ \n\ - mov r0, #0xc\n\ - strb r0, [r1]\n\ -._124:\n\ - mov r0, #0x0\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ -._128:\n\ - .align 2, 0\n\ -._127:\n\ - .word unk_debug_bss_1_1\n\ - .word unk_debug_bss_1_4\n\ - .word unk_debug_bss_1_8\n\ - .word +0x2000000"); -} -#else static bool8 sub_8102034(struct Task *task) { if (++task->data[0] >= 30) { +#if DEBUG + if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0) + unk_debug_bss_1_8 = (Random() & 0x1F) + 1; +#endif sub_81024F0(); eSlotMachine->state = 12; } return FALSE; } -#endif -#if DEBUG -__attribute__((naked)) -static bool8 sub_8102058(struct Task *task) -{ - asm("\ - push {r4, r5, lr}\n\ - ldr r0, ._133 @ unk_debug_bss_1_1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._130 @cond_branch\n\ - ldr r0, ._133 + 4 @ unk_debug_bss_1_4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._130 @cond_branch\n\ - ldr r5, ._133 + 8 @ unk_debug_bss_1_8\n\ - ldr r0, [r5]\n\ - sub r0, r0, #0x1\n\ - str r0, [r5]\n\ - cmp r0, #0\n\ - bne ._135 @cond_branch\n\ - mov r0, #0x18\n\ - bl PlaySE\n\ - ldr r4, ._133 + 12 @ \n\ - ldrb r0, [r4, #0x18]\n\ - bl sub_8102E1C\n\ - ldrb r0, [r4, #0x18]\n\ - bl sub_8103C14\n\ - bl Random\n\ - mov r1, #0x1f\n\ - and r1, r1, r0\n\ - add r1, r1, #0x1\n\ - str r1, [r5]\n\ - b ._132\n\ -._134:\n\ - .align 2, 0\n\ -._133:\n\ - .word unk_debug_bss_1_1\n\ - .word unk_debug_bss_1_4\n\ - .word unk_debug_bss_1_8\n\ - .word +0x2000000\n\ -._130:\n\ - ldr r0, ._136 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._135 @cond_branch\n\ - mov r0, #0x18\n\ - bl PlaySE\n\ - ldr r4, ._136 + 4 @ \n\ - ldrb r0, [r4, #0x18]\n\ - bl sub_8102E1C\n\ - ldrb r0, [r4, #0x18]\n\ - bl sub_8103C14\n\ -._132:\n\ - mov r0, #0xd\n\ - strb r0, [r4]\n\ -._135:\n\ - mov r0, #0x0\n\ - pop {r4, r5}\n\ - pop {r1}\n\ - bx r1\n\ -._137:\n\ - .align 2, 0\n\ -._136:\n\ - .word gMain\n\ - .word +0x2000000"); -} -#else static bool8 sub_8102058(struct Task *task) { +#if DEBUG + if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0) + { + unk_debug_bss_1_8--; + if (unk_debug_bss_1_8 == 0) + { + PlaySE(0x18); + sub_8102E1C(eSlotMachine->unk18); + sub_8103C14(eSlotMachine->unk18); + unk_debug_bss_1_8 = (Random() & 0x1F) + 1; + eSlotMachine->state = 13; + } + return FALSE; + } +#endif + if (gMain.newKeys & A_BUTTON) { PlaySE(SE_JYUNI); @@ -1252,121 +841,7 @@ static bool8 sub_8102058(struct Task *task) } return FALSE; } -#endif -#if DEBUG -__attribute__((naked)) -static bool8 sub_8102090(struct Task *task) -{ - asm("\ - push {r4, lr}\n\ - ldr r4, ._146 @ \n\ - ldrb r0, [r4, #0x18]\n\ - bl sub_8102E40\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - bne ._138 @cond_branch\n\ - ldrh r0, [r4, #0x18]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4, #0x18]\n\ - mov r1, #0xc\n\ - strb r1, [r4]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x2\n\ - ble ._161 @cond_branch\n\ - mov r0, #0xe\n\ - strb r0, [r4]\n\ - ldr r0, ._146 + 4 @ \n\ - ldrb r0, [r0]\n\ - cmp r0, #0x8\n\ - beq ._140 @cond_branch\n\ - cmp r0, #0x8\n\ - bgt ._141 @cond_branch\n\ - cmp r0, #0x2\n\ - beq ._142 @cond_branch\n\ - cmp r0, #0x2\n\ - bgt ._143 @cond_branch\n\ - cmp r0, #0x1\n\ - beq ._144 @cond_branch\n\ - b ._161\n\ -._147:\n\ - .align 2, 0\n\ -._146:\n\ - .word +0x2000000\n\ - .word unk_debug_bss_1_0\n\ -._143:\n\ - cmp r0, #0x4\n\ - beq ._148 @cond_branch\n\ - b ._161\n\ -._141:\n\ - cmp r0, #0x40\n\ - beq ._150 @cond_branch\n\ - cmp r0, #0x40\n\ - bgt ._151 @cond_branch\n\ - cmp r0, #0x10\n\ - beq ._152 @cond_branch\n\ - b ._161\n\ -._151:\n\ - cmp r0, #0x80\n\ - beq ._154 @cond_branch\n\ - b ._161\n\ -._142:\n\ - mov r0, #0x14\n\ - strh r0, [r4, #0x28]\n\ - strh r0, [r4, #0x2a]\n\ - mov r0, #0x12\n\ - b ._160\n\ -._144:\n\ - mov r0, #0x14\n\ - strh r0, [r4, #0x28]\n\ - strh r0, [r4, #0x2a]\n\ - mov r0, #0x12\n\ - b ._160\n\ -._148:\n\ - mov r0, #0x3\n\ - strh r0, [r4, #0x28]\n\ - mov r0, #0x1\n\ - strh r0, [r4, #0x2a]\n\ - mov r0, #0x2\n\ - b ._160\n\ -._140:\n\ - strh r2, [r4, #0x28]\n\ - mov r0, #0x2\n\ - strh r0, [r4, #0x2a]\n\ - mov r0, #0x3\n\ - b ._160\n\ -._152:\n\ - mov r0, #0x2\n\ - strh r0, [r4, #0x28]\n\ - mov r0, #0x5\n\ - strh r0, [r4, #0x2a]\n\ - mov r0, #0x14\n\ - b ._160\n\ -._150:\n\ - mov r0, #0x13\n\ - strh r0, [r4, #0x28]\n\ - strh r0, [r4, #0x2a]\n\ - strh r2, [r4, #0x2c]\n\ - b ._161\n\ -._154:\n\ - mov r0, #0x13\n\ - strh r0, [r4, #0x28]\n\ - strh r0, [r4, #0x2a]\n\ -._160:\n\ - strh r0, [r4, #0x2c]\n\ -._161:\n\ - mov r0, #0x1\n\ - b ._162\n\ -._138:\n\ - mov r0, #0x0\n\ -._162:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1"); -} -#else static bool8 sub_8102090(struct Task *task) { if (!sub_8102E40(eSlotMachine->unk18)) @@ -1376,173 +851,52 @@ static bool8 sub_8102090(struct Task *task) if (eSlotMachine->unk18 > 2) { eSlotMachine->state = 14; +#if DEBUG + switch (unk_debug_bss_1_0) + { + case 2: + eSlotMachine->reelPositions[0] = 20; + eSlotMachine->reelPositions[1] = 20; + eSlotMachine->reelPositions[2] = 18; + break; + case 1: + eSlotMachine->reelPositions[0] = 20; + eSlotMachine->reelPositions[1] = 20; + eSlotMachine->reelPositions[2] = 18; + break; + case 4: + eSlotMachine->reelPositions[0] = 3; + eSlotMachine->reelPositions[1] = 1; + eSlotMachine->reelPositions[2] = 2; + break; + case 8: + eSlotMachine->reelPositions[0] = 0; + eSlotMachine->reelPositions[1] = 2; + eSlotMachine->reelPositions[2] = 3; + break; + case 0x10: + eSlotMachine->reelPositions[0] = 2; + eSlotMachine->reelPositions[1] = 5; + eSlotMachine->reelPositions[2] = 20; + break; + case 0x40: + eSlotMachine->reelPositions[0] = 19; + eSlotMachine->reelPositions[1] = 19; + eSlotMachine->reelPositions[2] = 0; + break; + case 0x80: + eSlotMachine->reelPositions[0] = 19; + eSlotMachine->reelPositions[1] = 19; + eSlotMachine->reelPositions[2] = 19; + break; + } +#endif } return TRUE; } return FALSE; } -#endif -#if DEBUG -__attribute__((naked)) -bool8 sub_81020C8(struct Task *task) -{ - asm("\ - push {r4, lr}\n\ - ldr r4, ._165 @ \n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0xc0\n\ - and r0, r0, r1\n\ - strb r0, [r4, #0x4]\n\ - bl CheckMatch\n\ - ldrb r0, [r4, #0xa]\n\ - cmp r0, #0\n\ - beq ._163 @cond_branch\n\ - sub r0, r0, #0x1\n\ - strb r0, [r4, #0xa]\n\ - ldrb r0, [r4, #0xb]\n\ - add r0, r0, #0x1\n\ - strb r0, [r4, #0xb]\n\ - b ._164\n\ -._166:\n\ - .align 2, 0\n\ -._165:\n\ - .word +0x2000000\n\ -._163:\n\ - bl debug_sub_811B894\n\ -._164:\n\ - ldr r4, ._171 @ \n\ - ldrh r0, [r4, #0x8]\n\ - cmp r0, #0\n\ - beq ._167 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x6c\n\ - mov r2, #0xe\n\ - ldsh r1, [r4, r2]\n\ - bl debug_sub_811B5B4\n\ - mov r0, #0xf\n\ - strb r0, [r4]\n\ - bl sub_8102A24\n\ - bl sub_8103F70\n\ - ldrh r0, [r4, #0x10]\n\ - ldrh r1, [r4, #0xe]\n\ - sub r0, r0, r1\n\ - strh r0, [r4, #0x10]\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - bge ._168 @cond_branch\n\ - mov r0, #0x0\n\ - strh r0, [r4, #0x10]\n\ -._168:\n\ - ldrh r1, [r4, #0x8]\n\ - mov r0, #0xc0\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._169 @cond_branch\n\ - ldr r0, ._171 + 4 @ \n\ - bl PlayFanfare\n\ - mov r0, #0x6\n\ - bl sub_8104CAC\n\ - b ._174\n\ -._172:\n\ - .align 2, 0\n\ -._171:\n\ - .word +0x2000000\n\ - .word 0x185\n\ -._169:\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._173 @cond_branch\n\ - ldr r0, ._175 @ 0x185\n\ - bl PlayFanfare\n\ - mov r0, #0x5\n\ - bl sub_8104CAC\n\ - b ._174\n\ -._176:\n\ - .align 2, 0\n\ -._175:\n\ - .word 0x185\n\ -._173:\n\ - mov r0, #0xc3\n\ - lsl r0, r0, #0x1\n\ - bl PlayFanfare\n\ - mov r0, #0x2\n\ - bl sub_8104CAC\n\ -._174:\n\ - ldr r1, ._183 @ \n\ - ldrh r3, [r1, #0x8]\n\ - mov r0, #0xe0\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r3\n\ - add r2, r1, #0\n\ - cmp r0, #0\n\ - beq ._179 @cond_branch\n\ - ldrb r1, [r2, #0x4]\n\ - mov r0, #0x3f\n\ - and r0, r0, r1\n\ - mov r1, #0x0\n\ - strb r0, [r2, #0x4]\n\ - mov r0, #0xc0\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r3\n\ - cmp r0, #0\n\ - beq ._179 @cond_branch\n\ - strb r1, [r2, #0xa]\n\ - strb r1, [r2, #0xb]\n\ - strb r1, [r2, #0x3]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r3\n\ - cmp r0, #0\n\ - beq ._179 @cond_branch\n\ - mov r0, #0x1\n\ - strb r0, [r2, #0x3]\n\ -._179:\n\ - ldrh r1, [r2, #0x8]\n\ - mov r0, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._185 @cond_branch\n\ - ldrb r0, [r2, #0x2]\n\ - cmp r0, #0xf\n\ - bhi ._185 @cond_branch\n\ - add r0, r0, #0x1\n\ - strb r0, [r2, #0x2]\n\ - ldrb r0, [r2, #0x2]\n\ - bl sub_8104064\n\ - b ._185\n\ -._184:\n\ - .align 2, 0\n\ -._183:\n\ - .word +0x2000000\n\ -._167:\n\ - mov r0, #0x3\n\ - bl sub_8104CAC\n\ - mov r0, #0x14\n\ - strb r0, [r4]\n\ - ldrh r0, [r4, #0x12]\n\ - ldrh r1, [r4, #0x10]\n\ - add r0, r0, r1\n\ - strh r0, [r4, #0x10]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - ldr r1, ._186 @ 0x270f\n\ - cmp r0, r1\n\ - ble ._185 @cond_branch\n\ - strh r1, [r4, #0x10]\n\ -._185:\n\ - mov r0, #0x0\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ -._187:\n\ - .align 2, 0\n\ -._186:\n\ - .word 0x270f"); -} -#else bool8 sub_81020C8(struct Task *task) { eSlotMachine->unk04 &= 0xc0; @@ -1552,8 +906,18 @@ bool8 sub_81020C8(struct Task *task) eSlotMachine->unk0A--; eSlotMachine->unk0B++; } +#if DEBUG + else + { + debug_sub_811B894(); + } +#endif + if (eSlotMachine->matchedSymbols) { +#if DEBUG + debug_sub_811B5B4(&eSlotMachine->unk6C, eSlotMachine->payout); +#endif eSlotMachine->state = 15; sub_8102A24(); sub_8103F70(); @@ -1585,9 +949,7 @@ bool8 sub_81020C8(struct Task *task) eSlotMachine->unk0B = 0; eSlotMachine->unk03 = 0; if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE)) - { eSlotMachine->unk03 = 1; - } } } if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && eSlotMachine->pikaPower < 16) @@ -1601,20 +963,15 @@ bool8 sub_81020C8(struct Task *task) sub_8104CAC(3); eSlotMachine->state = 20; if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999) - { eSlotMachine->unk10 = 9999; - } } return FALSE; } -#endif static bool8 sub_81021E0(struct Task *task) { if (sub_8102A44()) - { eSlotMachine->state = 16; - } return FALSE; } @@ -1624,18 +981,14 @@ static bool8 sub_81021FC(struct Task *task) { eSlotMachine->state = 19; if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE))) - { IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); - } if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { eSlotMachine->unk18 = 0; eSlotMachine->state = 9; } if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER)) - { eSlotMachine->state = 17; - } if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { sub_8104CAC(4); @@ -1758,56 +1111,18 @@ static bool8 sub_81023FC(struct Task *task) return FALSE; } -#if DEBUG -__attribute__((naked)) static bool8 sub_8102424(struct Task *task) { - asm("\ - push {lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._234 @ unk_debug_bss_1_1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._233 @cond_branch\n\ - ldr r0, ._234 + 4 @ gSaveBlock1\n\ - ldr r1, ._234 + 8 @ \n\ - ldrh r1, [r1, #0xc]\n\ - ldr r2, ._234 + 12 @ \n\ - add r0, r0, r2\n\ - strh r1, [r0]\n\ -._233:\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, ._234 + 8 @ \n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - mov r0, #0x0\n\ - add sp, sp, #0x4\n\ - pop {r1}\n\ - bx r1\n\ -._235:\n\ - .align 2, 0\n\ -._234:\n\ - .word unk_debug_bss_1_1\n\ - .word gSaveBlock1\n\ - .word +0x2000000\n\ - .word 0x494"); -} +#if DEBUG + if (unk_debug_bss_1_1 == 0) + gSaveBlock1.coins = eSlotMachine->coins; #else -static bool8 sub_8102424(struct Task *task) -{ gSaveBlock1.coins = eSlotMachine->coins; +#endif BeginNormalPaletteFade(-1, 0, 0, 16, 0); eSlotMachine->state++; return FALSE; } -#endif static bool8 sub_8102460(struct Task *task) { @@ -1819,271 +1134,91 @@ static bool8 sub_8102460(struct Task *task) } #if DEBUG -__attribute__((naked)) + static bool8 debug_sub_8116E74(struct Task *task) { - asm("\ - push {lr}\n\ - bl debug_sub_811B634\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._239 @cond_branch\n\ - ldr r1, ._240 @ \n\ - mov r0, #0x5\n\ - strb r0, [r1]\n\ -._239:\n\ - mov r0, #0x0\n\ - pop {r1}\n\ - bx r1\n\ -._241:\n\ - .align 2, 0\n\ -._240:\n\ - .word +0x2000000"); + if (debug_sub_811B634() != 0) + eSlotMachine->state = 5; + return FALSE; } + #endif -#if DEBUG -__attribute__((naked)) static void sub_8102484(void) { - asm("\ - push {r4, r5, r6, lr}\n\ - ldr r0, ._256 @ \n\ - ldrb r2, [r0, #0xa]\n\ - add r4, r0, #0\n\ - cmp r2, #0\n\ - beq ._242 @cond_branch\n\ - b ._270\n\ -._242:\n\ - ldr r0, ._256 + 4 @ \n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._245 @cond_branch\n\ - ldr r3, ._256 + 8 @ \n\ - ldrb r0, [r3]\n\ - cmp r0, #0\n\ - beq ._245 @cond_branch\n\ - ldr r0, ._256 + 12 @ \n\ - ldrb r1, [r0]\n\ - strb r1, [r4, #0x4]\n\ - strb r2, [r3]\n\ - strb r2, [r0]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._246 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x88\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._246:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._247 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x84\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._247:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._248 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x8c\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._248:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._249 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x80\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._249:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._250 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x7c\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._250:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._251 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x78\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._251:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._252 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x74\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._252:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._253 @cond_branch\n\ - b ._270\n\ -._253:\n\ - add r0, r4, #0\n\ - add r0, r0, #0x70\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ - b ._270\n\ -._257:\n\ - .align 2, 0\n\ -._256:\n\ - .word +0x2000000\n\ - .word unk_debug_bss_1_1\n\ - .word unk_debug_bss_1_2\n\ - .word unk_debug_bss_1_3\n\ -._245:\n\ - add r5, r4, #0\n\ - ldrb r1, [r5, #0x4]\n\ - mov r0, #0xc0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._270 @cond_branch\n\ - bl sub_8102540\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._260 @cond_branch\n\ - bl sub_8102578\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - cmp r6, #0x3\n\ - beq ._260 @cond_branch\n\ - ldr r1, ._271 @ gUnknown_083ECE42\n\ - lsl r0, r6, #0x1\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - ldrb r0, [r5, #0x4]\n\ - orr r0, r0, r1\n\ - strb r0, [r5, #0x4]\n\ - mov r1, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._261 @cond_branch\n\ - add r0, r5, #0\n\ - add r0, r0, #0x88\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._261:\n\ - ldrb r1, [r5, #0x4]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._262 @cond_branch\n\ - add r0, r5, #0\n\ - add r0, r0, #0x84\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._262:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._263 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x8c\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._263:\n\ - cmp r6, #0x1\n\ - bne ._270 @cond_branch\n\ -._260:\n\ - bl sub_81025BC\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - cmp r6, #0x5\n\ - beq ._270 @cond_branch\n\ - ldr r4, ._271 + 4 @ \n\ - ldr r1, ._271 + 8 @ \n\ - lsl r0, r6, #0x1\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - ldrb r0, [r4, #0x4]\n\ - orr r0, r0, r1\n\ - strb r0, [r4, #0x4]\n\ - mov r1, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._266 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x80\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._266:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._267 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x7c\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._267:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._268 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x78\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._268:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._269 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x74\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._269:\n\ - ldrb r1, [r4, #0x4]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._270 @cond_branch\n\ - add r0, r4, #0\n\ - add r0, r0, #0x70\n\ - mov r1, #0x1\n\ - bl debug_sub_811B5B4\n\ -._270:\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._272:\n\ - .align 2, 0\n\ -._271:\n\ - .word gUnknown_083ECE42\n\ - .word +0x2000000\n\ - .word gUnknown_083ECE48"); + u8 r3; + + if (eSlotMachine->unk0A == 0) + { +#if DEBUG + if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_2 != 0) + { + eSlotMachine->unk04 = unk_debug_bss_1_3; + unk_debug_bss_1_2 = 0; + unk_debug_bss_1_3 = 0; + if (eSlotMachine->unk04 & 0x80) + debug_sub_811B5B4(&eSlotMachine->unk88, 1); + if (eSlotMachine->unk04 & 0x40) + debug_sub_811B5B4(&eSlotMachine->unk84, 1); + if (eSlotMachine->unk04 & 0x20) + debug_sub_811B5B4(&eSlotMachine->unk8C, 1); + if (eSlotMachine->unk04 & 0x10) + debug_sub_811B5B4(&eSlotMachine->unk80, 1); + if (eSlotMachine->unk04 & 8) + debug_sub_811B5B4(&eSlotMachine->unk7C, 1); + if (eSlotMachine->unk04 & 4) + debug_sub_811B5B4(&eSlotMachine->unk78, 1); + if (eSlotMachine->unk04 & 1) + debug_sub_811B5B4(&eSlotMachine->unk74, 1); + if (eSlotMachine->unk04 & 2) + debug_sub_811B5B4(&eSlotMachine->unk70, 1); + return; + } +#endif + if (!(eSlotMachine->unk04 & 0xc0)) + { + if (sub_8102540()) + { + r3 = sub_8102578(); + if (r3 != 3) + { + eSlotMachine->unk04 |= gUnknown_083ECE42[r3]; +#if DEBUG + if (eSlotMachine->unk04 & 0x80) + debug_sub_811B5B4(&eSlotMachine->unk88, 1); + if (eSlotMachine->unk04 & 0x40) + debug_sub_811B5B4(&eSlotMachine->unk84, 1); + if (eSlotMachine->unk04 & 0x20) + debug_sub_811B5B4(&eSlotMachine->unk8C, 1); +#endif + if (r3 != 1) + { + return; + } + } + } + r3 = sub_81025BC(); + if (r3 != 5) + { + eSlotMachine->unk04 |= gUnknown_083ECE48[r3]; +#if DEBUG + if (eSlotMachine->unk04 & 0x10) + debug_sub_811B5B4(&eSlotMachine->unk80, 1); + if (eSlotMachine->unk04 & 8) + debug_sub_811B5B4(&eSlotMachine->unk7C, 1); + if (eSlotMachine->unk04 & 4) + debug_sub_811B5B4(&eSlotMachine->unk78, 1); + if (eSlotMachine->unk04 & 1) + debug_sub_811B5B4(&eSlotMachine->unk74, 1); + if (eSlotMachine->unk04 & 2) + debug_sub_811B5B4(&eSlotMachine->unk70, 1); +#endif + } + } + } } -#else + +/* static void sub_8102484(void) { u8 r3; @@ -2109,15 +1244,13 @@ static void sub_8102484(void) } } } -#endif +*/ static void sub_81024F0(void) { eSlotMachine->unk06 = 0; if (eSlotMachine->unk04) - { eSlotMachine->unk06 = 1; - } } static u8 sub_810250C(u8 a0) @@ -2127,9 +1260,7 @@ static u8 sub_810250C(u8 a0) for (i = 0; i < 8; i++) { if (a0 & 1) - { return gUnknown_083ECE3A[i]; - } a0 >>= 1; } return 0; @@ -2139,9 +1270,7 @@ static bool8 sub_8102540(void) { u8 rval = Random(); if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval) - { return TRUE; - } return FALSE; } @@ -2156,9 +1285,7 @@ static u8 sub_8102578(void) s16 rval = Random() & 0xff; s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01]; if (value > rval) - { break; - } } return i; } @@ -2177,22 +1304,16 @@ static u8 sub_81025BC(void) { r3 += 10; if (r3 > 0x100) - { r3 = 0x100; - } } else if (i == 4 && eSlotMachine->unk03 == 1) { r3 -= 10; if (r3 < 0) - { r3 = 0; - } } if (r3 > rval) - { break; - } } return i; } @@ -2203,10 +1324,9 @@ static const u8 gUnknown_083ECDAC[][17]; static u8 sub_810264C(u8 a0) { if (eSlotMachine->unk03 == 0) - { return gUnknown_083ECD46[a0][eSlotMachine->pikaPower]; - } - return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower]; + else + return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower]; } static void sub_8102680(void) @@ -2217,16 +1337,12 @@ static void sub_8102680(void) eSlotMachine->unk05 = 0; rval = Random(); if (rval < sub_810264C(0)) - { return; - } for (i = 5; i > 0; i--) { rval = Random(); if (rval < sub_810264C(i)) - { break; - } } eSlotMachine->unk05 = i; } @@ -2237,10 +1353,9 @@ static bool8 sub_81026DC(u16 a0) { u16 rval = Random() & 0xff; if (rval < gUnknown_083ECE12[a0]) - { return TRUE; - } - return FALSE; + else + return FALSE; } static const u16 gUnknown_083ECE1C[][2]; @@ -2252,33 +1367,21 @@ static u16 dp15_jump_random_unknown(void) u8 rval; u8 value; if (eSlotMachine->unk10 >= 300) - { r4 = 4; - } else if (eSlotMachine->unk10 >= 250) - { r4 = 3; - } else if (eSlotMachine->unk10 >= 200) - { r4 = 2; - } else if (eSlotMachine->unk10 >= 150) - { r4 = 1; - } rval = Random() % 100; value = gUnknown_083ECE1C[r4][0]; if (rval < value) - { return 4; - } rval = Random() % 100; value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B]; if (rval < value) - { return 2; - } return 8; } @@ -2287,13 +1390,9 @@ static void CheckMatch(void) eSlotMachine->matchedSymbols = 0; CheckMatch_CenterRow(); if (eSlotMachine->bet > 1) - { CheckMatch_TopAndBottom(); - } if (eSlotMachine->bet > 2) - { CheckMatch_Diagonals(); - } } static const u16 sSlotMatchFlags[]; @@ -2326,9 +1425,7 @@ static void CheckMatch_TopAndBottom(void) if (match != SLOT_MACHINE_MATCHED_NONE) { if (match == SLOT_MACHINE_MATCHED_1CHERRY) - { match = SLOT_MACHINE_MATCHED_2CHERRY; - } eSlotMachine->payout += sSlotPayouts[match]; eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; sub_8103E04(1); @@ -2340,9 +1437,7 @@ static void CheckMatch_TopAndBottom(void) if (match != SLOT_MACHINE_MATCHED_NONE) { if (match == SLOT_MACHINE_MATCHED_1CHERRY) - { match = SLOT_MACHINE_MATCHED_2CHERRY; - } eSlotMachine->payout += sSlotPayouts[match]; eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; sub_8103E04(2); @@ -2386,21 +1481,13 @@ static const u8 sSym2Match[]; static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3) { if (c1 == c2 && c1 == c3) - { return sSym2Match[c1]; - } if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE) - { return SLOT_MACHINE_MATCHED_777_MIXED; - } if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED) - { return SLOT_MACHINE_MATCHED_777_MIXED; - } if (c1 == SLOT_MACHINE_TAG_CHERRY) - { return SLOT_MACHINE_MATCHED_1CHERRY; - } return SLOT_MACHINE_MATCHED_NONE; } @@ -2412,13 +1499,13 @@ static void sub_8102A24(void) static bool8 sub_8102A44(void) { if (FindTaskIdByFunc(sub_8102A64) == 0xff) - { return TRUE; - } - return FALSE; + else + return FALSE; } -static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = { +static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = +{ sub_8102A9C, sub_8102AD0, sub_8102B80 @@ -2426,7 +1513,8 @@ static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = { static void sub_8102A64(u8 taskId) { - while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId)); + while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId)) + ; } static bool8 sub_8102A9C(struct Task *task) @@ -2448,43 +1536,31 @@ static bool8 sub_8102AD0(struct Task *task) if (!task->data[1]--) { if (IsFanfareTaskInactive()) - { PlaySE(SE_PIN); - } eSlotMachine->payout--; if (eSlotMachine->coins < 9999) - { eSlotMachine->coins++; - } task->data[1] = 8; if (gMain.heldKeys & A_BUTTON) - { task->data[1] = 4; - } } if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON) { PlaySE(SE_PIN); eSlotMachine->coins += eSlotMachine->payout; if (eSlotMachine->coins > 9999) - { eSlotMachine->coins = 9999; - } eSlotMachine->payout = 0; } if (eSlotMachine->payout == 0) - { task->data[0]++; - } return FALSE; } static bool8 sub_8102B80(struct Task *task) { if (sub_8103E7C()) - { DestroyTask(FindTaskIdByFunc(sub_8102A64)); - } return FALSE; } @@ -2494,9 +1570,7 @@ static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y) { s16 offset = (eSlotMachine->reelPositions[x] + y) % 21; if (offset < 0) - { offset += 21; - } return sReelSymbols[x][offset]; } @@ -2586,7 +1660,8 @@ static bool8 sub_8102E40(u8 a0) return gTasks[eSlotMachine->reelTasks[a0]].data[14]; } -static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = { +static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = +{ sub_8102EA0, sub_8102EA4, sub_8102EC0, @@ -2596,7 +1671,8 @@ static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = { static void sub_8102E68(u8 taskId) { - while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId)); + while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId)) + ; } static bool8 sub_8102EA0(struct Task *task) @@ -2610,12 +1686,15 @@ static bool8 sub_8102EA4(struct Task *task) return FALSE; } -static bool8 (*const gUnknown_083ECB40[])(void) = { +static bool8 (*const gUnknown_083ECB40[])(void) = +{ sub_810305C, sub_81032C0, sub_81033DC }; -static void (*const gUnknown_083ECB4C[])(void) = { + +static void (*const gUnknown_083ECB4C[])(void) = +{ sub_81034F4, sub_8103540, sub_810380C @@ -2640,9 +1719,7 @@ static bool8 sub_8102F4C(struct Task *task) u16 sp[] = {2, 4, 4, 4, 8}; s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24; if (r2 != 0) - { r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A); - } else if (eSlotMachine->unk2E[task->data[15]]) { eSlotMachine->unk2E[task->data[15]]--; @@ -2664,9 +1741,7 @@ static bool8 sub_8103008(struct Task *task) task->data[1] = -task->data[1]; task->data[2]++; if ((task->data[2] & 0x3) == 0) - { task->data[1] >>= 1; - } if (task->data[1] == 0) { task->data[0] = 0; @@ -2676,7 +1751,8 @@ static bool8 sub_8103008(struct Task *task) return FALSE; } -static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = { +static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = +{ sub_8103154, sub_81031B4, sub_81031B4 @@ -2708,19 +1784,17 @@ static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2) static bool8 sub_81030E0(s16 y) { if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4) - { return TRUE; - } - return FALSE; + else + return FALSE; } static bool8 sub_8103134(void) { if (eSlotMachine->unk04 & 0xc2) - { return TRUE; - } - return FALSE; + else + return FALSE; } static bool8 sub_8103154(u8 a0, u8 a1) @@ -2783,7 +1857,8 @@ static bool8 sub_81031B4(u8 tag1, u8 tag2) return FALSE; } -static bool8 (*const gUnknown_083ECB70[])(void) = { +static bool8 (*const gUnknown_083ECB70[])(void) = +{ sub_81032E8, sub_81032E8, sub_810333C @@ -2845,7 +1920,8 @@ static bool8 sub_810333C(void) return FALSE; } -static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = { +static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = +{ sub_810341C, sub_810341C, sub_810347C @@ -2887,14 +1963,11 @@ static bool8 sub_810347C(u8 a0) s16 i; s16 r8; if (eSlotMachine->unk34[0] == eSlotMachine->unk34[1]) - { return sub_810341C(a0); - } - r8 = 1; if (eSlotMachine->unk34[0] == 1) - { r8 = 3; - } + else + r8 = 1; for (i = 0; i < 5; i++) { if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0) @@ -2909,8 +1982,10 @@ static bool8 sub_810347C(u8 a0) static void sub_81034F4(void) { - s16 i; - for (i = 0; sub_81030E0(i); i++); + s16 i = 0; + + while (sub_81030E0(i) != 0) + i++; eSlotMachine->unk2E[0] = i; } @@ -2929,7 +2004,8 @@ static bool8 sub_8103520(u8 *a0) return FALSE; } -static void (*const gUnknown_083ECB88[])(void) = { +static void (*const gUnknown_083ECB88[])(void) = +{ sub_8103564, j5_08111E84, sub_8103668 @@ -3050,19 +2126,17 @@ static void sub_8103668(void) static bool8 sub_8103764(u8 a0, u8 a1) { if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0)) - { return TRUE; - } - return FALSE; + else + return FALSE; } static bool8 sub_810378C(u8 a0, u8 a1, u8 a2) { if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1)) - { return TRUE; - } - return FALSE; + else + return FALSE; } static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) @@ -3078,7 +2152,8 @@ static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) return TRUE; } -static void (*const gUnknown_083ECB94[])(void) = { +static void (*const gUnknown_083ECB94[])(void) = +{ sub_8103830, sub_8103910, sub_8103A78 @@ -3100,9 +2175,7 @@ static void sub_8103830(void) { u8 r0; if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0))) - { break; - } i++; } } @@ -3123,9 +2196,7 @@ static void sub_8103830(void) while (1) { if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) - { break; - } i++; } } @@ -3172,9 +2243,7 @@ static void sub_8103910(void) } } if (r8 == 0) - { break; - } sp0++; } eSlotMachine->unk2E[2] = sp0; @@ -3236,7 +2305,8 @@ static void sub_8103C14(u8 a0) sub_8103C48(taskId); } -static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = { +static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = +{ sub_8103C78, sub_8103CAC, sub_8103CC8 @@ -3288,18 +2358,14 @@ static void sub_8103D50(u8 a0) { u8 i; for (i = 0; i < gUnknown_083EDD3B[a0]; i++) - { sub_8103D00(gUnknown_083EDD35[a0][i]); - } } static void sub_8103D8C(u8 a0) { u8 i; for (i = 0; i < gUnknown_083EDD3B[a0]; i++) - { sub_8103D28(gUnknown_083EDD35[a0][i]); - } } static void sub_8103DC8(void) @@ -3329,7 +2395,7 @@ static bool8 sub_8103E38(void) u8 i; for (i = 0; i < 5; i++) { - struct Sprite *sprite = gSprites + eSlotMachine->unk44[i]; + struct Sprite *sprite = &gSprites[eSlotMachine->unk44[i]]; if (sprite->data[1] && sprite->data[2]) return FALSE; } @@ -3416,9 +2482,7 @@ static void sub_8103FE8(u8 taskId) task->data[1] = 4; task->data[2] += task->data[3]; if (task->data[2] == 0 || task->data[2] == 2) - { task->data[3] = -task->data[3]; - } } LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20); } @@ -3450,7 +2514,8 @@ static bool8 sub_81040C8(void) return gTasks[eSlotMachine->unk3E].data[15]; } -static void (*const gUnknown_083ECBB4[])(struct Task *task) = { +static void (*const gUnknown_083ECBB4[])(struct Task *task) = +{ nullsub_68, sub_810411C, sub_8104144, @@ -3464,7 +2529,6 @@ static void sub_81040E8(u8 taskId) static void nullsub_68(struct Task *task) { - } static void sub_810411C(struct Task *task) @@ -3473,10 +2537,11 @@ static void sub_810411C(struct Task *task) task->data[0]++; } -static const u16 gUnknown_083ECBC4[][2] = { +static const u16 gUnknown_083ECBC4[][2] = +{ {0x9e, 0x6e}, {0x9f, 0x6f}, - {0xaf, 0x7f} + {0xaf, 0x7f}, }; static void sub_8104144(struct Task *task) @@ -3568,7 +2633,8 @@ static bool8 sub_810432C(void) return FALSE; } -static void (*const gUnknown_083ECBD0[])(struct Task *task) = { +static void (*const gUnknown_083ECBD0[])(struct Task *task) = +{ sub_810437C, sub_81043EC, sub_8104468, @@ -3705,9 +2771,7 @@ static void sub_81045CC(struct Task *task) if (eSlotMachine->unk05) { if (eSlotMachine->unk0A <= task->data[6]) - { task->data[0]++; - } } else if (task->data[6] > 3) { @@ -3774,9 +2838,7 @@ static void sub_81046C0(struct Task *task) static void sub_8104764(struct Task *task) { if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8()) - { task->data[0]++; - } } static void sub_8104794(struct Task *task) @@ -3788,13 +2850,9 @@ static void sub_8104794(struct Task *task) r4 = ((task->data[1] - 8) & 0xff) >> 3; REG_BG1HOFS = task->data[1] & 0x1ff; if (task->data[3] >> 3 <= 25) - { sub_8104A88(r4); - } else - { task->data[0]++; - } } static void sub_81047EC(struct Task *task) @@ -3825,21 +2883,15 @@ static void sub_81047EC(struct Task *task) static void sub_8104860(struct Task *task) { if (eSlotMachine->unk1A == task->data[1]) - { task->data[0]++; - } else if (eSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0) - { eSlotMachine->unk1A >>= 1; - } } static void sub_81048A8(struct Task *task) { if (sub_8104E18()) - { DestroyTask(FindTaskIdByFunc(sub_810434C)); - } } static void sub_81048CC(struct Task *task) @@ -3935,10 +2987,12 @@ static bool8 sub_8104AEC(void) { if (FindTaskIdByFunc(sub_8104B0C) == 0xFF) return TRUE; - return FALSE; + else + return FALSE; } -static void (*const gUnknown_083ECC30[])(struct Task *task) = { +static void (*const gUnknown_083ECC30[])(struct Task *task) = +{ sub_8104B3C, sub_8104B60, sub_8104B80, @@ -3964,9 +3018,7 @@ static void sub_8104B3C(struct Task *task) static void sub_8104B60(struct Task *task) { if (!gPaletteFade.active) - { task->data[0]++; - } } static void sub_8104B80(struct Task *task) @@ -4013,9 +3065,7 @@ static void sub_8104C5C(void) task = gTasks + i; task->data[1] = -1; for (i = 4; i < 16; i++) - { task->data[i] = MAX_SPRITES; - } } static void LoadSlotMachineWheelOverlay(void); @@ -4094,8 +3144,9 @@ static bool8 sub_8104E18(void) return TRUE; } -static void (*const gUnknown_083ECC54[])(struct Task *task) = { - nullsub_69 +static void (*const gUnknown_083ECC54[])(struct Task *task) = +{ + nullsub_69, }; static void sub_8104E74(u8 taskId) @@ -4105,7 +3156,6 @@ static void sub_8104E74(u8 taskId) static void nullsub_69(struct Task *task) { - } static const struct SpriteTemplate gSpriteTemplate_83ED414; @@ -4141,14 +3191,11 @@ static void sub_8104F8C(void) { s16 i; s16 x; + for (x = 203, i = 1; i < 10000; i *= 10, x -= 7) - { sub_8104FF4(x, 23, 0, i); - } for (x = 235, i = 1; i < 10000; i *= 10, x -= 7) - { sub_8104FF4(x, 23, 1, i); - } } static const struct SpriteTemplate gSpriteTemplate_83ED42C; @@ -4211,9 +3258,7 @@ static void sub_8105170(struct Sprite *sprite) { sprite->pos2.y = sprite->pos2.x = 8; if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0)) - { sprite->pos2.y = -8; - } } } @@ -4225,14 +3270,14 @@ static const struct SubspriteTable gSubspriteTables_83ED75C[]; static void sub_81051C0(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; SetSubspriteTables(sprite, gSubspriteTables_83ED73C); eSlotMachine->unk49[0] = spriteId; spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7); - sprite = gSprites + spriteId; + sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; SetSubspriteTables(sprite, gSubspriteTables_83ED75C); @@ -4245,7 +3290,7 @@ static const struct SubspriteTable gSubspriteTables_83ED78C[]; static void sub_8105284(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4A4, 0xa8 - gSpriteCoordOffsetX, 0x50, 7); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; SetSubspriteTables(sprite, gSubspriteTables_83ED78C); @@ -4261,7 +3306,7 @@ static void sub_81052EC(void) for (i = 0, r5 = 0; i < 3; i++, r5 += 20) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0x00, 10); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->data[7] = r5; @@ -4283,14 +3328,14 @@ static const struct SubspriteTable gSubspriteTables_83ED7B4[]; static void sub_81053A0(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = 1; SetSubspriteTables(sprite, gSubspriteTables_83ED7B4); eSlotMachine->unk4E[0] = spriteId; spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4); - sprite = gSprites + spriteId; + sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = 1; SetSubspriteTables(sprite, gSubspriteTables_83ED7B4); @@ -4303,7 +3348,7 @@ static const struct SubspriteTable gSubspriteTables_83ED7D4[]; static void sub_810545C(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = 1; SetSubspriteTables(sprite, gSubspriteTables_83ED7D4); @@ -4314,29 +3359,24 @@ static void sub_81054B8(void) { u8 i; - DestroySprite(gSprites + eSlotMachine->unk40); + DestroySprite(&gSprites[eSlotMachine->unk40]); for (i = 0; i < 2; i++) - { - DestroySprite(gSprites + eSlotMachine->unk49[i]); - } + DestroySprite(&gSprites[eSlotMachine->unk49[i]]); for (i = 0; i < 3; i++) - { - DestroySprite(gSprites + eSlotMachine->unk4B[i]); - } + DestroySprite(&gSprites[eSlotMachine->unk4B[i]]); } static void sub_8105524(void) { u8 i; + for (i = 0; i < 2; i++) - { - DestroySprite(gSprites + eSlotMachine->unk4E[i]); - } + DestroySprite(&gSprites[eSlotMachine->unk4E[i]]); } static void sub_8105554(void) { - DestroySprite(gSprites + eSlotMachine->unk42); + DestroySprite(&gSprites[eSlotMachine->unk42]); } static const struct SpriteTemplate gSpriteTemplate_83ED504; @@ -4344,7 +3384,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED504; static void sub_8105578(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->hFlip = TRUE; eSlotMachine->unk50[0] = spriteId; @@ -4354,7 +3394,7 @@ static void sub_8105578(void) sprite->data[7] = 0x20; spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5); - sprite = gSprites + spriteId; + sprite = &gSprites[spriteId]; sprite->oam.priority = 1; eSlotMachine->unk50[1] = spriteId; sprite->data[1] = 1; @@ -4395,9 +3435,7 @@ static void sub_81056C0(void) u8 i; for (i = 0; i < 2; i++) - { - DestroySprite(gSprites + eSlotMachine->unk50[i]); - } + DestroySprite(&gSprites[eSlotMachine->unk50[i]]); } static const struct SpriteTemplate gSpriteTemplate_83ED51C; @@ -4442,9 +3480,7 @@ static void sub_8105804(void) u8 i; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0); for (i = 0; i < 2; i++) - { - DestroySprite(gSprites + eSlotMachine->unk52[i]); - } + DestroySprite(&gSprites[eSlotMachine->unk52[i]]); } static const struct SpriteTemplate gSpriteTemplate_83ED534; @@ -4463,7 +3499,7 @@ static void sub_8105894(struct Sprite *sprite) static void sub_81058A0(void) { - DestroySprite(gSprites + eSlotMachine->unk41); + DestroySprite(&gSprites[eSlotMachine->unk41]); } static const struct SpriteTemplate gSpriteTemplate_83ED54C; @@ -4475,7 +3511,7 @@ static void sub_81058C4(void) for (i = 0; i < 4; i++) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = sp[i]; @@ -4506,7 +3542,7 @@ static void sub_81059B8(void) u8 i; for (i = 0; i < 4; i++) { - DestroySprite(gSprites + eSlotMachine->unk54[i]); + DestroySprite(&gSprites[eSlotMachine->unk54[i]]); } } @@ -4515,7 +3551,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED564; static void sub_81059E8(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; InitSpriteAffineAnim(sprite); @@ -4556,7 +3592,7 @@ u8 sub_8105ACC(void) static void sub_8105AEC(void) { - struct Sprite *sprite = gSprites + eSlotMachine->unk43; + struct Sprite *sprite = &gSprites[eSlotMachine->unk43]; FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } @@ -4566,7 +3602,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED6CC; static u8 sub_8105B1C(s16 x, s16 y) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 2; sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; InitSpriteAffineAnim(sprite); @@ -4581,7 +3617,7 @@ static void sub_8105B70(struct Sprite *sprite) static void sub_8105B88(u8 spriteId) { - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } @@ -4600,7 +3636,7 @@ static const struct SubspriteTable *const gUnknown_083EDBC4[]; static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) { u8 spriteId = CreateSprite(gUnknown_083EDB5C[templateIdx], x, y, 16); - struct Sprite *sprite = gSprites + spriteId; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 3; sprite->callback = callback; sprite->data[6] = a4; @@ -4657,30 +3693,26 @@ static void sub_8105D3C(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: - sprite->pos1.x += 4; - if (sprite->pos1.x >= 0xd0) - { - sprite->pos1.x = 0xd0; - sprite->data[0]++; - } - break; - case 1: - if (++sprite->data[1] > 90) - { - sprite->data[0]++; - } - break; - case 2: - sprite->pos1.x += 4; - if (sprite->pos1.x >= 0x110) - { - sprite->data[0]++; - } - break; - case 3: - sprite->data[7] = 0; - break; + case 0: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0xd0) + { + sprite->pos1.x = 0xd0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 90) + sprite->data[0]++; + break; + case 2: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0x110) + sprite->data[0]++; + break; + case 3: + sprite->data[7] = 0; + break; } } @@ -4688,30 +3720,26 @@ static void sub_8105DA4(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: - sprite->pos1.x -= 4; - if (sprite->pos1.x <= 0xd0) - { - sprite->pos1.x = 0xd0; - sprite->data[0]++; - } - break; - case 1: - if (++sprite->data[1] > 90) - { - sprite->data[0]++; - } - break; - case 2: - sprite->pos1.x -= 4; - if (sprite->pos1.x <= 0x90) - { - sprite->data[0]++; - } - break; - case 3: - sprite->data[7] = 0; - break; + case 0: + sprite->pos1.x -= 4; + if (sprite->pos1.x <= 0xd0) + { + sprite->pos1.x = 0xd0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 90) + sprite->data[0]++; + break; + case 2: + sprite->pos1.x -= 4; + if (sprite->pos1.x <= 0x90) + sprite->data[0]++; + break; + case 3: + sprite->data[7] = 0; + break; } } @@ -4719,41 +3747,37 @@ static void sub_8105E08(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: - StartSpriteAnim(sprite, eSlotMachine->unk0A - 1); + case 0: + StartSpriteAnim(sprite, eSlotMachine->unk0A - 1); + sprite->data[0]++; + // fallthrough + case 1: + if (++sprite->data[1] >= 4) + { sprite->data[0]++; - // fallthrough - case 1: - if (++sprite->data[1] >= 4) - { - sprite->data[0]++; - sprite->data[1] = 0; - } - break; - case 2: - sprite->pos1.x += 4; - if (sprite->pos1.x >= 0xd0) - { - sprite->pos1.x = 0xd0; - sprite->data[0]++; - } - break; - case 3: - if (++sprite->data[1] > 90) - { - sprite->data[0]++; - } - break; - case 4: - sprite->pos1.x += 4; - if (sprite->pos1.x >= 0xf8) - { - sprite->data[0]++; - } - break; - case 5: - sprite->data[7] = 0; - break; + sprite->data[1] = 0; + } + break; + case 2: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0xd0) + { + sprite->pos1.x = 0xd0; + sprite->data[0]++; + } + break; + case 3: + if (++sprite->data[1] > 90) + sprite->data[0]++; + break; + case 4: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0xf8) + sprite->data[0]++; + break; + case 5: + sprite->data[7] = 0; + break; } } @@ -4761,39 +3785,39 @@ static void sub_8105EB4(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: - sprite->animPaused = TRUE; + case 0: + sprite->animPaused = TRUE; + sprite->data[0]++; + // fallthrough + case 1: + sprite->pos1.y += 8; + if (sprite->pos1.y >= 0x70) + { + sprite->pos1.y = 0x70; + sprite->data[1] = 16; sprite->data[0]++; - // fallthrough - case 1: - sprite->pos1.y += 8; - if (sprite->pos1.y >= 0x70) - { - sprite->pos1.y = 0x70; - sprite->data[1] = 16; - sprite->data[0]++; - } - break; - case 2: - if (sprite->data[2] == 0) + } + break; + case 2: + if (sprite->data[2] == 0) + { + sprite->pos1.y -= sprite->data[1]; + sprite->data[1] = -sprite->data[1]; + if (++sprite->data[3] >= 2) { - sprite->pos1.y -= sprite->data[1]; - sprite->data[1] = -sprite->data[1]; - if (++sprite->data[3] >= 2) + sprite->data[1] >>= 2; + sprite->data[3] = 0; + if (sprite->data[1] == 0) { - sprite->data[1] >>= 2; - sprite->data[3] = 0; - if (sprite->data[1] == 0) - { - sprite->data[0]++; - sprite->data[7] = 0; - sprite->animPaused = FALSE; - } + sprite->data[0]++; + sprite->data[7] = 0; + sprite->animPaused = FALSE; } } - sprite->data[2]++; - sprite->data[2] &= 0x07; - break; + } + sprite->data[2]++; + sprite->data[2] &= 0x07; + break; } } @@ -4801,21 +3825,19 @@ static void sub_8105F54(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: - if (++sprite->data[1] > 8) - { - sprite->data[0]++; - } - break; - case 1: - sprite->pos1.y += 2; - if (sprite->pos1.y >= 0x30) - { - sprite->pos1.y = 0x30; - sprite->data[0]++; - sprite->data[7] = 0; - } - break; + case 0: + if (++sprite->data[1] > 8) + sprite->data[0]++; + break; + case 1: + sprite->pos1.y += 2; + if (sprite->pos1.y >= 0x30) + { + sprite->pos1.y = 0x30; + sprite->data[0]++; + sprite->data[7] = 0; + } + break; } } @@ -4823,35 +3845,33 @@ static void sub_8105F9C(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: - sprite->invisible = TRUE; - if (++sprite->data[1] > 0x20) - { - sprite->data[0]++; - sprite->data[1] = 5; - sprite->oam.mosaic = TRUE; - sprite->invisible = FALSE; - StartSpriteAnim(sprite, 1); - REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8; - } - break; - case 1: - sprite->data[1] -= (sprite->data[2] >> 8); - if (sprite->data[1] < 0) - { - sprite->data[1] = 0; - } + case 0: + sprite->invisible = TRUE; + if (++sprite->data[1] > 0x20) + { + sprite->data[0]++; + sprite->data[1] = 5; + sprite->oam.mosaic = TRUE; + sprite->invisible = FALSE; + StartSpriteAnim(sprite, 1); REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8; - sprite->data[2] &= 0xff; - sprite->data[2] += 0x80; - if (sprite->data[1] == 0) - { - sprite->data[0]++; - sprite->data[7] = 0; - sprite->oam.mosaic = FALSE; - StartSpriteAnim(sprite, 0); - } - break; + } + break; + case 1: + sprite->data[1] -= (sprite->data[2] >> 8); + if (sprite->data[1] < 0) + sprite->data[1] = 0; + REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8; + sprite->data[2] &= 0xff; + sprite->data[2] += 0x80; + if (sprite->data[1] == 0) + { + sprite->data[0]++; + sprite->data[7] = 0; + sprite->oam.mosaic = FALSE; + StartSpriteAnim(sprite, 0); + } + break; } } @@ -4889,40 +3909,30 @@ static void sub_81060FC(struct Sprite *sprite) switch (sprite->data[0]) { - case 0: - sprite->pos2.x = sp00[sprite->data[6]]; - sprite->pos2.y = sp10[sprite->data[6]]; - sprite->data[1] = sp20[sprite->data[6]]; + case 0: + sprite->pos2.x = sp00[sprite->data[6]]; + sprite->pos2.y = sp10[sprite->data[6]]; + sprite->data[1] = sp20[sprite->data[6]]; + sprite->data[0]++; + // fallthrough + case 1: + if (sprite->data[1]-- == 0) sprite->data[0]++; - // fallthrough - case 1: - if (sprite->data[1]-- == 0) - { - sprite->data[0]++; - } - break; - case 2: - if (sprite->pos2.x > 0) - { - sprite->pos2.x -= 4; - } - else if (sprite->pos2.x < 0) - { - sprite->pos2.x += 4; - } - if (sprite->pos2.y > 0) - { - sprite->pos2.y -= 4; - } - else if (sprite->pos2.y < 0) - { - sprite->pos2.y += 4; - } - if (sprite->pos2.x == 0 && sprite->pos2.y == 0) - { - sprite->data[0]++; - } - break; + break; + case 2: + if (sprite->pos2.x > 0) + sprite->pos2.x -= 4; + else if (sprite->pos2.x < 0) + sprite->pos2.x += 4; + + if (sprite->pos2.y > 0) + sprite->pos2.y -= 4; + else if (sprite->pos2.y < 0) + sprite->pos2.y += 4; + + if (sprite->pos2.x == 0 && sprite->pos2.y == 0) + sprite->data[0]++; + break; } } @@ -4937,10 +3947,8 @@ static void sub_81061C8(struct Sprite *sprite) } sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]); sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]); - if (sprite->data[1]) - { + if (sprite->data[1] != 0) sprite->data[1]--; - } } static void sub_8106230(struct Sprite *sprite) @@ -4959,13 +3967,9 @@ static void sub_8106230(struct Sprite *sprite) sprite->data[2] = sprite->data[1] + 0xb0; sprite->data[3] = 0xf0 - sprite->data[1]; if (sprite->data[2] > 0xd0) - { sprite->data[2] = 0xd0; - } if (sprite->data[3] < 0xd0) - { sprite->data[3] = 0xd0; - } eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3]; if (sprite->data[1] > 0x33) { @@ -4975,9 +3979,7 @@ static void sub_8106230(struct Sprite *sprite) break; case 2: if (eSlotMachine->bet == 0) - { break; - } sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0); eSlotMachine->win0h = 0xc0e0; eSlotMachine->win0v = 0x6880; @@ -4990,13 +3992,9 @@ static void sub_8106230(struct Sprite *sprite) sprite->data[2] = sprite->data[1] + 0xc0; sprite->data[3] = 0xe0 - sprite->data[1]; if (sprite->data[2] > 0xd0) - { sprite->data[2] = 0xd0; - } if (sprite->data[3] < 0xd0) - { sprite->data[3] = 0xd0; - } eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3]; if (sprite->data[1] > 0x0f) { @@ -5009,7 +4007,6 @@ static void sub_8106230(struct Sprite *sprite) static void nullsub_70(void) { - } static void sub_8106364(void) @@ -5058,14 +4055,13 @@ static void sub_8106404(void) { u8 j; for (j = 0; j < 0x20; j++, dest++) - { *dest = src[j]; - } } LoadSpriteSheet(sheet); } -static void sub_8106448(void) { +static void sub_8106448(void) +{ LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer); DmaCopyLarge16(3, eSlotMachineGfxBuffer, BG_VRAM, SLOTMACHINE_GFX_TILES * 32, 0x1000); @@ -5074,12 +4070,14 @@ static void sub_8106448(void) { LoadPalette(gPalette_83EDE24, 208, 32); } -static void sub_81064B8(void) { +static void sub_81064B8(void) +{ CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2); LoadSlotMachineWheelOverlay(); } -static void LoadSlotMachineWheelOverlay(void) { +static void LoadSlotMachineWheelOverlay(void) +{ s16 x, y, dx; u16 *screen; @@ -5099,13 +4097,12 @@ static void LoadSlotMachineWheelOverlay(void) { screen[12 * 32 + x] = 0x28BE; for (y = 7; y <= 11; y++) - { screen[y * 32 + x] = 0x20BF; - } } } -static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { +static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) +{ u16 *vram = BG_SCREEN_ADDR(29); vram[15 * 32 + arg0] = arg1; @@ -5125,1230 +4122,10 @@ static void sub_81065DC(void) for (y = 0; y < 20; y++) { for (x = 0; x < 30; x++) - { screen[x + y * 32] = 0; - } } } -#if DEBUG -__attribute__((naked)) -void debug_sub_811B1C4() -{ - asm( - " ldr r1, .__1_\n" - " ldrb r0, [r1]\n" - " mov r3, #0x2\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " ldr r2, .__1_ + 4\n" - " ldrb r1, [r2]\n" - " mov r0, #0x2\n" - " eor r1, r1, r0\n" - " neg r0, r1\n" - " orr r0, r0, r1\n" - " asr r0, r0, #0x1f\n" - " and r0, r0, r3\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__2_:\n" - " .align 2, 0\n" - ".__1_:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B1EC() -{ - asm( - " ldr r2, .__3\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strb r0, [r2]\n" - " ldr r2, .__3 + 4\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " neg r0, r0\n" - " lsr r0, r0, #0x1f\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__4:\n" - " .align 2, 0\n" - ".__3:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B210() -{ - asm( - " ldr r1, .__5\n" - " ldrb r0, [r1]\n" - " mov r3, #0x4\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " ldr r2, .__5 + 4\n" - " ldrb r1, [r2]\n" - " mov r0, #0x4\n" - " eor r1, r1, r0\n" - " neg r0, r1\n" - " orr r0, r0, r1\n" - " asr r0, r0, #0x1f\n" - " and r0, r0, r3\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__6:\n" - " .align 2, 0\n" - ".__5:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B238() -{ - asm( - " ldr r1, .__7\n" - " ldrb r0, [r1]\n" - " mov r3, #0x8\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " ldr r2, .__7 + 4\n" - " ldrb r1, [r2]\n" - " mov r0, #0x8\n" - " eor r1, r1, r0\n" - " neg r0, r1\n" - " orr r0, r0, r1\n" - " asr r0, r0, #0x1f\n" - " and r0, r0, r3\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__8:\n" - " .align 2, 0\n" - ".__7:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B260() -{ - asm( - " ldr r1, .__9\n" - " ldrb r0, [r1]\n" - " mov r3, #0x10\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " ldr r2, .__9 + 4\n" - " ldrb r1, [r2]\n" - " mov r0, #0x10\n" - " eor r1, r1, r0\n" - " neg r0, r1\n" - " orr r0, r0, r1\n" - " asr r0, r0, #0x1f\n" - " and r0, r0, r3\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__10:\n" - " .align 2, 0\n" - ".__9:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B288() -{ - asm( - " ldr r1, .__11\n" - " ldrb r0, [r1]\n" - " mov r3, #0x40\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " ldr r2, .__11 + 4\n" - " ldrb r1, [r2]\n" - " mov r0, #0x40\n" - " eor r1, r1, r0\n" - " neg r0, r1\n" - " orr r0, r0, r1\n" - " asr r0, r0, #0x1f\n" - " and r0, r0, r3\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__12:\n" - " .align 2, 0\n" - ".__11:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B2B0() -{ - asm( - " ldr r1, .__13\n" - " ldrb r0, [r1]\n" - " mov r3, #0x80\n" - " orr r0, r0, r3\n" - " strb r0, [r1]\n" - " ldr r2, .__13 + 4\n" - " ldrb r1, [r2]\n" - " mov r0, #0x80\n" - " eor r1, r1, r0\n" - " neg r0, r1\n" - " orr r0, r0, r1\n" - " asr r0, r0, #0x1f\n" - " and r0, r0, r3\n" - " strb r0, [r2]\n" - " bx lr\n" - ".__14:\n" - " .align 2, 0\n" - ".__13:\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B2D8() -{ - asm( - " ldr r0, .__15\n" - " ldrb r1, [r0]\n" - " mov r2, #0x20\n" - " orr r1, r1, r2\n" - " strb r1, [r0]\n" - " bx lr\n" - ".__16:\n" - " .align 2, 0\n" - ".__15:\n" - " .word unk_debug_bss_1_3\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B2E8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " ldr r0, .__17\n" - " ldrb r1, [r0, #0x1]\n" - " add r1, r1, #0x1\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x6\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x4\n" - " pop {r0}\n" - " bx r0\n" - ".__18:\n" - " .align 2, 0\n" - ".__17:\n" - " .word +0x2000000\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B310() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " ldr r0, .__21\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 4\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 8\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 12\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 16\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 20\n" - " mov r1, #0x1\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 24\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 28\n" - " mov r1, #0x1\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 32\n" - " mov r1, #0x1\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 36\n" - " mov r1, #0xf\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 40\n" - " mov r1, #0xf\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 44\n" - " mov r1, #0xf\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 48\n" - " mov r1, #0xf\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 52\n" - " mov r1, #0xf\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 56\n" - " mov r1, #0xf\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 60\n" - " mov r1, #0xf\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 64\n" - " mov r1, #0xf\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 68\n" - " mov r1, #0xf\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r0, .__21 + 72\n" - " ldrb r0, [r0, #0x3]\n" - " cmp r0, #0\n" - " bne .__19 @cond_branch\n" - " ldr r0, .__21 + 76\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " b .__20\n" - ".__22:\n" - " .align 2, 0\n" - ".__21:\n" - " .word Str_841B1C4\n" - " .word Str_841B1CB\n" - " .word Str_841B1D4\n" - " .word Str_841B1DB\n" - " .word Str_841B1E2\n" - " .word Str_841B1E8\n" - " .word Str_841B1F3\n" - " .word Str_841B202\n" - " .word Str_841B24C\n" - " .word Str_841B211\n" - " .word Str_841B219\n" - " .word Str_841B220\n" - " .word Str_841B227\n" - " .word Str_841B22E\n" - " .word Str_841B235\n" - " .word Str_841B23B\n" - " .word Str_841B23F\n" - " .word Str_841B243\n" - " .word +0x2000000\n" - " .word Str_841B246\n" - ".__19:\n" - " ldr r0, .__30\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - ".__20:\n" - " ldr r4, .__30 + 4\n" - " ldr r1, [r4, #0x68]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xa\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r1, [r4, #0x6c]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xa\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0x10\n" - " ldsh r1, [r4, r0]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xa\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r1, [r4, #0x70]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r1, [r4, #0x74]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r1, [r4, #0x78]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r1, [r4, #0x7c]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " add r0, r0, #0x80\n" - " ldr r1, [r0]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " add r0, r0, #0x84\n" - " ldr r1, [r0]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " add r0, r0, #0x88\n" - " ldr r1, [r0]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " add r0, r0, #0x8c\n" - " ldr r1, [r0]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0x14\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r1, .__30 + 8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq .__23 @cond_branch\n" - " mov r2, #0x0\n" - " cmp r0, #0x8\n" - " beq .__24 @cond_branch\n" - " cmp r0, #0x8\n" - " bgt .__25 @cond_branch\n" - " cmp r0, #0x2\n" - " beq .__26 @cond_branch\n" - " cmp r0, #0x2\n" - " bgt .__27 @cond_branch\n" - " cmp r0, #0x1\n" - " beq .__28 @cond_branch\n" - " b .__45\n" - ".__31:\n" - " .align 2, 0\n" - ".__30:\n" - " .word Str_841B249\n" - " .word +0x2000000\n" - " .word unk_debug_bss_1_0\n" - ".__27:\n" - " cmp r0, #0x4\n" - " beq .__32 @cond_branch\n" - " b .__45\n" - ".__25:\n" - " cmp r0, #0x40\n" - " beq .__34 @cond_branch\n" - " cmp r0, #0x40\n" - " bgt .__35 @cond_branch\n" - " cmp r0, #0x10\n" - " beq .__36 @cond_branch\n" - " b .__45\n" - ".__35:\n" - " cmp r0, #0x80\n" - " beq .__38 @cond_branch\n" - " b .__45\n" - ".__26:\n" - " mov r2, #0x3\n" - " b .__45\n" - ".__28:\n" - " mov r2, #0x5\n" - " b .__45\n" - ".__32:\n" - " mov r2, #0x7\n" - " b .__45\n" - ".__24:\n" - " mov r2, #0x9\n" - " b .__45\n" - ".__36:\n" - " mov r2, #0xb\n" - " b .__45\n" - ".__34:\n" - " mov r2, #0xd\n" - " b .__45\n" - ".__38:\n" - " mov r2, #0xf\n" - ".__45:\n" - " ldr r0, .__46\n" - " mov r1, #0x17\n" - " bl Menu_PrintText\n" - ".__23:\n" - " bl debug_sub_811B2E8\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - ".__47:\n" - " .align 2, 0\n" - ".__46:\n" - " .word Str_841B26D\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B5B4() -{ - asm( - " push {lr}\n" - " add r2, r0, #0\n" - " ldr r0, [r2]\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " ldr r1, .__49\n" - " cmp r0, r1\n" - " ble .__48 @cond_branch\n" - " str r1, [r2]\n" - ".__48:\n" - " pop {r0}\n" - " bx r0\n" - ".__50:\n" - " .align 2, 0\n" - ".__49:\n" - " .word 0x270f\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B5D0() -{ - asm( - " ldr r0, .__51\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " ldr r0, .__51 + 4\n" - " strb r1, [r0]\n" - " ldr r0, .__51 + 8\n" - " strb r1, [r0]\n" - " ldr r0, .__51 + 12\n" - " strb r1, [r0]\n" - " ldr r2, .__51 + 16\n" - " mov r0, #0x0\n" - " str r0, [r2, #0x68]\n" - " str r0, [r2, #0x6c]\n" - " str r0, [r2, #0x70]\n" - " str r0, [r2, #0x74]\n" - " str r0, [r2, #0x78]\n" - " str r0, [r2, #0x7c]\n" - " add r1, r2, #0\n" - " add r1, r1, #0x80\n" - " str r0, [r1]\n" - " add r1, r1, #0x4\n" - " str r0, [r1]\n" - " add r1, r1, #0x4\n" - " str r0, [r1]\n" - " add r1, r1, #0x4\n" - " str r0, [r1]\n" - " add r1, r1, #0x4\n" - " str r0, [r1]\n" - " bx lr\n" - ".__52:\n" - " .align 2, 0\n" - ".__51:\n" - " .word unk_debug_bss_1_0\n" - " .word unk_debug_bss_1_2\n" - " .word unk_debug_bss_1_3\n" - " .word unk_debug_bss_1_4\n" - " .word +0x2000000\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B620() -{ - asm( - " push {lr}\n" - " ldr r0, .__53\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - ".__54:\n" - " .align 2, 0\n" - ".__53:\n" - " .word debug_sub_811B654+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B634() -{ - asm( - " push {lr}\n" - " ldr r0, .__57\n" - " bl FindTaskIdByFunc\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xff\n" - " beq .__55 @cond_branch\n" - " mov r0, #0x0\n" - " b .__56\n" - ".__58:\n" - " .align 2, 0\n" - ".__57:\n" - " .word debug_sub_811B654+1\n" - ".__55:\n" - " mov r0, #0x1\n" - ".__56:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B654() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffff8\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " ldr r1, .__63\n" - " add r5, r0, r1\n" - " mov r0, #0x8\n" - " ldsh r1, [r5, r0]\n" - " cmp r1, #0x1\n" - " beq .__59 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt .__60 @cond_branch\n" - " cmp r1, #0\n" - " beq .__61 @cond_branch\n" - " b .__116\n" - ".__64:\n" - " .align 2, 0\n" - ".__63:\n" - " .word gTasks\n" - ".__60:\n" - " cmp r1, #0x2\n" - " bne .__65 @cond_branch\n" - " b .__66\n" - ".__65:\n" - " cmp r1, #0x3\n" - " bne .__67 @cond_branch\n" - " b .__68\n" - ".__67:\n" - " b .__116\n" - ".__61:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " bl debug_sub_811B310\n" - " ldrh r0, [r5, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r5, #0x8]\n" - " b .__116\n" - ".__59:\n" - " ldr r7, .__76\n" - " ldrh r2, [r7, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq .__71 @cond_branch\n" - " b .__94\n" - ".__71:\n" - " mov r0, #0x20\n" - " and r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " cmp r3, #0\n" - " beq .__73 @cond_branch\n" - " ldr r1, .__76 + 4\n" - " ldrb r0, [r1, #0x1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0x1]\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bge .__79 @cond_branch\n" - " mov r0, #0x5\n" - " strb r0, [r1, #0x1]\n" - " b .__79\n" - ".__77:\n" - " .align 2, 0\n" - ".__76:\n" - " .word gMain\n" - " .word +0x2000000\n" - ".__73:\n" - " mov r0, #0x10\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq .__78 @cond_branch\n" - " ldr r1, .__81\n" - " ldrb r0, [r1, #0x1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1, #0x1]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bls .__79 @cond_branch\n" - " strb r3, [r1, #0x1]\n" - ".__79:\n" - " bl debug_sub_811B2E8\n" - " b .__116\n" - ".__82:\n" - " .align 2, 0\n" - ".__81:\n" - " .word +0x2000000\n" - ".__78:\n" - " and r1, r1, r2\n" - " lsl r0, r1, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0\n" - " beq .__83 @cond_branch\n" - " mov r0, #0x3\n" - " strh r0, [r5, #0x8]\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x9\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, .__85\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, .__85 + 4\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " b .__116\n" - ".__86:\n" - " .align 2, 0\n" - ".__85:\n" - " .word Str_841B25C\n" - " .word Str_841B264\n" - ".__83:\n" - " mov r0, #0x4\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq .__87 @cond_branch\n" - " ldr r0, .__91\n" - " strb r4, [r0]\n" - " ldr r0, .__91 + 4\n" - " strb r4, [r0]\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xa\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, .__91 + 8\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, .__91 + 12\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x8\n" - " bl Menu_PrintItems\n" - " str r4, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " ldrh r0, [r5, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r5, #0x8]\n" - ".__87:\n" - " ldrh r1, [r7, #0x2e]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne .__88 @cond_branch\n" - " b .__116\n" - ".__88:\n" - " ldr r1, .__91 + 16\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " b .__94\n" - ".__92:\n" - " .align 2, 0\n" - ".__91:\n" - " .word unk_debug_bss_1_2\n" - " .word unk_debug_bss_1_3\n" - " .word Str_841B254\n" - " .word _841B270\n" - " .word unk_debug_bss_1_4\n" - ".__66:\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r2, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r2, r0\n" - " beq .__116 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r2, r0\n" - " beq .__94 @cond_branch\n" - " ldr r1, .__96\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, .__96 + 4\n" - " lsl r1, r2, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " bl _call_via_r0\n" - ".__94:\n" - " bl Menu_EraseScreen\n" - " add r0, r6, #0\n" - " bl DestroyTask\n" - " b .__116\n" - ".__97:\n" - " .align 2, 0\n" - ".__96:\n" - " .word unk_debug_bss_1_2\n" - " .word _841B270\n" - ".__68:\n" - " ldr r2, .__100\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__98 @cond_branch\n" - " ldr r2, .__100 + 4\n" - " ldrh r0, [r2, #0xc]\n" - " add r0, r0, #0x64\n" - " b .__99\n" - ".__101:\n" - " .align 2, 0\n" - ".__100:\n" - " .word gMain\n" - " .word +0x2000000\n" - ".__98:\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__102 @cond_branch\n" - " ldr r1, .__104\n" - " ldrh r0, [r1, #0xc]\n" - " sub r0, r0, #0x64\n" - " b .__103\n" - ".__105:\n" - " .align 2, 0\n" - ".__104:\n" - " .word +0x2000000\n" - ".__102:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__106 @cond_branch\n" - " ldr r1, .__109\n" - " ldr r2, .__109 + 4\n" - " add r0, r2, #0\n" - " ldrh r2, [r1, #0xc]\n" - " add r0, r0, r2\n" - ".__103:\n" - " strh r0, [r1, #0xc]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bgt .__116 @cond_branch\n" - " ldr r0, .__109 + 8\n" - " strh r0, [r1, #0xc]\n" - " b .__116\n" - ".__110:\n" - " .align 2, 0\n" - ".__109:\n" - " .word +0x2000000\n" - " .word 0xfffffc18\n" - " .word 0x270f\n" - ".__106:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__111 @cond_branch\n" - " ldr r2, .__114\n" - " mov r1, #0xfa\n" - " lsl r1, r1, #0x2\n" - " add r0, r1, #0\n" - " ldrh r1, [r2, #0xc]\n" - " add r0, r0, r1\n" - ".__99:\n" - " strh r0, [r2, #0xc]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " ldr r1, .__114 + 4\n" - " cmp r0, r1\n" - " ble .__116 @cond_branch\n" - " strh r1, [r2, #0xc]\n" - " b .__116\n" - ".__115:\n" - " .align 2, 0\n" - ".__114:\n" - " .word +0x2000000\n" - " .word 0x270f\n" - ".__111:\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__116 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r6, #0\n" - " bl DestroyTask\n" - ".__116:\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_811B894() -{ - 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 r1, .__122\n" - " ldrh r2, [r1, #0x8]\n" - " mov r0, #0xc0\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r2\n" - " add r4, r1, #0\n" - " cmp r0, #0\n" - " beq .__117 @cond_branch\n" - " add r1, r1, #0x90\n" - " ldr r0, [r1]\n" - " add r0, r0, #0x1\n" - " str r0, [r1]\n" - " ldr r2, .__122 + 4\n" - " cmp r0, r2\n" - " ble .__118 @cond_branch\n" - " str r2, [r1]\n" - ".__118:\n" - " add r0, r4, #0\n" - " add r0, r0, #0x88\n" - " ldr r1, [r1]\n" - " ldr r0, [r0]\n" - " cmp r1, r0\n" - " beq .__119 @cond_branch\n" - " ldr r0, .__122 + 8\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, .__122 + 12\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - ".__119:\n" - " ldrb r1, [r4, #0x4]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0\n" - " bne .__126 @cond_branch\n" - " ldr r0, .__122 + 16\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " b .__121\n" - ".__123:\n" - " .align 2, 0\n" - ".__122:\n" - " .word +0x2000000\n" - " .word 0x270f\n" - " .word Str_841B2B0\n" - " .word unk_debug_bss_1_4\n" - " .word Str_841B2D3\n" - ".__117:\n" - " lsl r0, r2, #0x10\n" - " cmp r0, #0\n" - " beq .__127 @cond_branch\n" - " ldrb r1, [r4, #0x4]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__126 @cond_branch\n" - " mov r4, #0x3\n" - " and r4, r4, r2\n" - " cmp r4, #0\n" - " bne .__126 @cond_branch\n" - " ldr r0, .__163\n" - " mov r1, #0x4\n" - " mov r2, #0x2\n" - ".__121:\n" - " bl Menu_PrintText\n" - " ldr r0, .__163 + 4\n" - " strb r4, [r0]\n" - ".__126:\n" - " ldr r0, .__163 + 8\n" - " ldrh r1, [r0, #0x8]\n" - " add r4, r0, #0\n" - " cmp r1, #0\n" - " beq .__127 @cond_branch\n" - " b .__162\n" - ".__127:\n" - " mov r1, #0x12\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x3\n" - " beq .__129 @cond_branch\n" - " b .__162\n" - ".__129:\n" - " ldrb r1, [r4, #0x4]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq .__131 @cond_branch\n" - " b .__162\n" - ".__131:\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x2\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp]\n" - " mov r0, #0x0\n" - " mov r1, #0x3\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r9, r0\n" - " mov r0, #0x1\n" - " mov r1, #0x2\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " mov r0, #0x1\n" - " mov r1, #0x3\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov sl, r0\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " mov r0, #0x2\n" - " mov r1, #0x2\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " bl GetTagOfReelSymbolOnScreenAtPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r7, #0\n" - " bne .__134 @cond_branch\n" - " mov r1, r9\n" - " cmp r1, #0x1\n" - " bne .__134 @cond_branch\n" - " cmp r5, #0\n" - " beq .__159 @cond_branch\n" - ".__134:\n" - " ldr r1, [sp]\n" - " cmp r1, #0\n" - " bne .__137 @cond_branch\n" - " cmp r4, #0x1\n" - " bne .__137 @cond_branch\n" - " mov r1, r8\n" - " cmp r1, #0\n" - " beq .__159 @cond_branch\n" - ".__137:\n" - " cmp r6, #0\n" - " bne .__140 @cond_branch\n" - " mov r1, sl\n" - " cmp r1, #0x1\n" - " bne .__140 @cond_branch\n" - " cmp r0, #0\n" - " beq .__159 @cond_branch\n" - ".__140:\n" - " cmp r7, #0\n" - " bne .__143 @cond_branch\n" - " cmp r4, #0x1\n" - " bne .__143 @cond_branch\n" - " cmp r0, #0\n" - " beq .__159 @cond_branch\n" - ".__143:\n" - " cmp r6, #0\n" - " bne .__146 @cond_branch\n" - " cmp r4, #0x1\n" - " bne .__146 @cond_branch\n" - " cmp r5, #0\n" - " beq .__159 @cond_branch\n" - ".__146:\n" - " cmp r7, #0x1\n" - " bne .__149 @cond_branch\n" - " mov r1, r9\n" - " cmp r1, #0\n" - " bne .__149 @cond_branch\n" - " cmp r5, #0x1\n" - " beq .__159 @cond_branch\n" - ".__149:\n" - " ldr r1, [sp]\n" - " cmp r1, #0x1\n" - " bne .__152 @cond_branch\n" - " cmp r4, #0\n" - " bne .__152 @cond_branch\n" - " mov r1, r8\n" - " cmp r1, #0x1\n" - " beq .__159 @cond_branch\n" - ".__152:\n" - " cmp r6, #0x1\n" - " bne .__155 @cond_branch\n" - " mov r1, sl\n" - " cmp r1, #0\n" - " bne .__155 @cond_branch\n" - " cmp r0, #0x1\n" - " beq .__159 @cond_branch\n" - ".__155:\n" - " cmp r7, #0x1\n" - " bne .__158 @cond_branch\n" - " cmp r4, #0\n" - " bne .__158 @cond_branch\n" - " cmp r0, #0x1\n" - " beq .__159 @cond_branch\n" - ".__158:\n" - " cmp r6, #0x1\n" - " bne .__162 @cond_branch\n" - " cmp r4, #0\n" - " bne .__162 @cond_branch\n" - " cmp r5, #0x1\n" - " bne .__162 @cond_branch\n" - ".__159:\n" - " ldr r0, .__163 + 12\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " ldr r1, .__163 + 4\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - ".__162:\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" - ".__164:\n" - " .align 2, 0\n" - ".__163:\n" - " .word Str_841B2E4\n" - " .word unk_debug_bss_1_4\n" - " .word +0x2000000\n" - " .word Str_841B2BF\n" - "\n" - ); -} -#endif - static const u8 sReelSymbols[][21] = { { @@ -6373,7 +4150,8 @@ static const u8 sReelSymbols[][21] = SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_REPLAY - }, { + }, + { SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_CHERRY, SLOT_MACHINE_TAG_REPLAY, @@ -6395,7 +4173,8 @@ static const u8 sReelSymbols[][21] = SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_CHERRY - }, { + }, + { SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_7_BLUE, @@ -6417,7 +4196,7 @@ static const u8 sReelSymbols[][21] = SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_CHERRY - } + }, }; static const u8 gUnknown_083ECCF1[] = { @@ -7782,33 +5561,204 @@ static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/re #if DEBUG -const u8 Str_841B1C4[] = _("SETTEI"); -const u8 Str_841B1CB[] = _("MAWASITA"); -const u8 Str_841B1D4[] = _("MODOSI"); -const u8 Str_841B1DB[] = _("NOMARE"); -const u8 Str_841B1E2[] = _("MAE 7"); -const u8 Str_841B1E8[] = _("LR HENKOU"); -const u8 Str_841B1F3[] = _("START JIDOUSU"); -const u8 Str_841B202[] = _("SELECT SETTEI"); -const u8 Str_841B211[] = _("TYUHSEN"); -const u8 Str_841B219[] = _("CHERRY"); -const u8 Str_841B220[] = _("REPLAY"); -const u8 Str_841B227[] = _("HASUBO"); -const u8 Str_841B22E[] = _("RURIRI"); -const u8 Str_841B235[] = _("INAZU"); -const u8 Str_841B23B[] = _("REG"); -const u8 Str_841B23F[] = _("BIG"); -const u8 Str_841B243[] = _("BD"); -const u8 Str_841B246[] = _("R7"); -const u8 Str_841B249[] = _("B7"); -const u8 Str_841B24C[] = _("A COIN"); -const u8 Str_841B254[] = _("TYUHSEN"); -const u8 Str_841B25C[] = _("UD 100"); -const u8 Str_841B264[] = _("LR 1000"); -const u8 Str_841B26D[] = _("×"); - -// Is this MenuAction2? I'm not sure. -const struct {const u8 *text; void (*func)();} _841B270[] = +static void debug_sub_811B1C4(void) +{ + unk_debug_bss_1_3 |= 2; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 2) ? 0 : 2; +} + +static void debug_sub_811B1EC(void) +{ + unk_debug_bss_1_3 |= 1; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 1) ? 0 : 1; +} + +static void debug_sub_811B210(void) +{ + unk_debug_bss_1_3 |= 4; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 4) ? 0 : 4; +} + +static void debug_sub_811B238(void) +{ + unk_debug_bss_1_3 |= 8; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 8) ? 0 : 8; +} + +static void debug_sub_811B260(void) +{ + unk_debug_bss_1_3 |= 0x10; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x10) ? 0 : 0x10; +} + +static void debug_sub_811B288(void) +{ + unk_debug_bss_1_3 |= 0x40; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x40) ? 0 : 0x40; +} + +static void debug_sub_811B2B0(void) +{ + unk_debug_bss_1_3 |= 0x80; + unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x80) ? 0 : 0x80; +} + +static void debug_sub_811B2D8(void) +{ + unk_debug_bss_1_3 |= 0x20; +} + +static void debug_sub_811B2E8(void) +{ + u8 text[2]; + + ConvertIntToDecimalStringN(text, eSlotMachine->unk01 + 1, 2, 1); + Menu_PrintText(text, 6, 1); +} + +static const u8 Str_841B1C4[] = _("SETTEI"); +static const u8 Str_841B1CB[] = _("MAWASITA"); +static const u8 Str_841B1D4[] = _("MODOSI"); +static const u8 Str_841B1DB[] = _("NOMARE"); +static const u8 Str_841B1E2[] = _("MAE 7"); +static const u8 Str_841B1E8[] = _("LR HENKOU"); +static const u8 Str_841B1F3[] = _("START JIDOUSU"); +static const u8 Str_841B202[] = _("SELECT SETTEI"); +static const u8 Str_841B211[] = _("TYUHSEN"); +static const u8 Str_841B219[] = _("CHERRY"); +static const u8 Str_841B220[] = _("REPLAY"); +static const u8 Str_841B227[] = _("HASUBO"); +static const u8 Str_841B22E[] = _("RURIRI"); +static const u8 Str_841B235[] = _("INAZU"); +static const u8 Str_841B23B[] = _("REG"); +static const u8 Str_841B23F[] = _("BIG"); +static const u8 Str_841B243[] = _("BD"); +static const u8 Str_841B246[] = _("R7"); +static const u8 Str_841B249[] = _("B7"); +static const u8 Str_841B24C[] = _("A COIN"); +static const u8 Str_841B254[] = _("TYUHSEN"); +static const u8 Str_841B25C[] = _("UD 100"); +static const u8 Str_841B264[] = _("LR 1000"); +static const u8 Str_841B26D[] = _("×"); + +void debug_sub_811B310(void) +{ + u8 text[5]; + + Menu_PrintText(Str_841B1C4, 1, 1); + Menu_PrintText(Str_841B1CB, 1, 3); + Menu_PrintText(Str_841B1D4, 1, 5); + Menu_PrintText(Str_841B1DB, 1, 7); + Menu_PrintText(Str_841B1E2, 1, 9); + Menu_PrintText(Str_841B1E8, 1, 11); + Menu_PrintText(Str_841B1F3, 1, 13); + Menu_PrintText(Str_841B202, 1, 15); + Menu_PrintText(Str_841B24C, 1, 17); + Menu_PrintText(Str_841B211, 15, 1); + Menu_PrintText(Str_841B219, 15, 3); + Menu_PrintText(Str_841B220, 15, 5); + Menu_PrintText(Str_841B227, 15, 7); + Menu_PrintText(Str_841B22E, 15, 9); + Menu_PrintText(Str_841B235, 15, 11); + Menu_PrintText(Str_841B23B, 15, 13); + Menu_PrintText(Str_841B23F, 15, 15); + Menu_PrintText(Str_841B243, 15, 17); + if (eSlotMachine->unk03 == 0) + Menu_PrintText(Str_841B246, 10, 9); + else + Menu_PrintText(Str_841B249, 10, 9); + +#define PRINT_NUMBER(n, x, y) \ + ConvertIntToDecimalStringN(text, n, 2, 4); \ + Menu_PrintText(text, x, y); + + PRINT_NUMBER(eSlotMachine->unk68, 10, 3); + PRINT_NUMBER(eSlotMachine->unk6C, 10, 5); + PRINT_NUMBER(eSlotMachine->unk10, 10, 7); + PRINT_NUMBER(eSlotMachine->unk70, 20, 3); + PRINT_NUMBER(eSlotMachine->unk74, 20, 5); + PRINT_NUMBER(eSlotMachine->unk78, 20, 7); + PRINT_NUMBER(eSlotMachine->unk7C, 20, 9); + PRINT_NUMBER(eSlotMachine->unk80, 20, 11); + PRINT_NUMBER(eSlotMachine->unk84, 20, 13); + PRINT_NUMBER(eSlotMachine->unk88, 20, 15); + PRINT_NUMBER(eSlotMachine->unk8C, 20, 17); + +#undef PRINT_NUMBER + + if (unk_debug_bss_1_0 != 0) + { + u8 y = 0; + + switch (unk_debug_bss_1_0) + { + case 2: + y = 3; + break; + case 1: + y = 5; + break; + case 4: + y = 7; + break; + case 8: + y = 9; + break; + case 16: + y = 11; + break; + case 64: + y = 13; + break; + case 128: + y = 15; + break; + } + Menu_PrintText(Str_841B26D, 23, y); + } + debug_sub_811B2E8(); +} + +static void debug_sub_811B5B4(s32 *a, s32 b) +{ + *a += b; + if (*a > 9999) + *a = 9999; +} + +static void debug_sub_811B5D0(void) +{ + unk_debug_bss_1_0 = 0; + unk_debug_bss_1_2 = 0; + unk_debug_bss_1_3 = 0; + unk_debug_bss_1_4 = 0; + eSlotMachine->unk68 = 0; + eSlotMachine->unk6C = 0; + eSlotMachine->unk70 = 0; + eSlotMachine->unk74 = 0; + eSlotMachine->unk78 = 0; + eSlotMachine->unk7C = 0; + eSlotMachine->unk80 = 0; + eSlotMachine->unk84 = 0; + eSlotMachine->unk88 = 0; + eSlotMachine->unk8C = 0; + eSlotMachine->unk90 = 0; +} + +static void debug_sub_811B620(void) +{ + CreateTask(debug_sub_811B654, 0); +} + +static u8 debug_sub_811B634(void) +{ + if (FindTaskIdByFunc(debug_sub_811B654) == 0xFF) + return 1; + else + return 0; +} + +static const struct {const u8 *text; void (*func)();} _841B270[] = { {Str_841B219, debug_sub_811B1C4}, {Str_841B220, debug_sub_811B1EC}, @@ -7820,9 +5770,178 @@ const struct {const u8 *text; void (*func)();} _841B270[] = {Str_841B243, debug_sub_811B2D8}, }; -const u8 Str_841B2B0[] = _("·カウントエラーがおきました"); -const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました"); -const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました"); -const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました"); +static void debug_sub_811B654(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s8 selection; + + switch (task->data[0]) + { + case 0: + Menu_DrawStdWindowFrame(0, 0, 24, 19); + debug_sub_811B310(); + task->data[0]++; + break; + case 1: + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + break; + } + if (gMain.newKeys & 0x20) + { + eSlotMachine->unk01--; + if ((s8)eSlotMachine->unk01 < 0) // Why? It's unsigned + eSlotMachine->unk01 = 5; + debug_sub_811B2E8(); + break; + } + if (gMain.newKeys & 0x10) + { + eSlotMachine->unk01++; + if (eSlotMachine->unk01 > 5) + eSlotMachine->unk01 = 0; + debug_sub_811B2E8(); + break; + } + if (gMain.newKeys & A_BUTTON) + { + task->data[0] = 3; + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 9, 5); + Menu_PrintText(Str_841B25C, 1, 1); + Menu_PrintText(Str_841B264, 1, 3); + break; + } + if (gMain.newKeys & 4) + { + unk_debug_bss_1_2 = 0; + unk_debug_bss_1_3 = 0; + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 10, 19); + Menu_PrintText(Str_841B254, 1, 1); + Menu_PrintItems(2, 3, 8, (void *)_841B270); + InitMenu(0, 1, 3, 8, 0, 9); + task->data[0]++; + } + if (gMain.newKeys & 8) + { + unk_debug_bss_1_4 = 1; + Menu_EraseScreen(); + DestroyTask(taskId); + } + break; + case 2: + selection = Menu_ProcessInput(); + if (selection == -2) + break; + if (selection != -1) + { + unk_debug_bss_1_2 = 1; + _841B270[selection].func(); + } + Menu_EraseScreen(); + DestroyTask(taskId); + break; + case 3: + if (gMain.newAndRepeatedKeys & 0x80) + { + eSlotMachine->coins += 100; + if (eSlotMachine->coins > 9999) + eSlotMachine->coins = 9999; + break; + } + if (gMain.newAndRepeatedKeys & 0x40) + { + eSlotMachine->coins -= 100; + if (eSlotMachine->coins <= 0) + eSlotMachine->coins = 9999; + break; + } + if (gMain.newAndRepeatedKeys & 0x20) + { + eSlotMachine->coins -= 1000; + if (eSlotMachine->coins <= 0) + eSlotMachine->coins = 9999; + break; + } + if (gMain.newAndRepeatedKeys & 0x10) + { + eSlotMachine->coins += 1000; + if (eSlotMachine->coins > 9999) + eSlotMachine->coins = 9999; + break; + } + if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + } + break; + } +} + +static const u8 Str_841B2B0[] = _("·カウントエラーがおきました"); +static const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました"); +static const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました"); +static const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました"); + +static void debug_sub_811B894(void) +{ + if (eSlotMachine->matchedSymbols & 0x180) + { + eSlotMachine->unk90++; + if (eSlotMachine->unk90 > 9999) + eSlotMachine->unk90 = 9999; + if (eSlotMachine->unk90 != eSlotMachine->unk88) + { + Menu_PrintText(Str_841B2B0, 4, 15); + unk_debug_bss_1_4 = 0; + } + if (!(eSlotMachine->unk04 & 0x80)) + { + Menu_PrintText(Str_841B2D3, 4, 17); + unk_debug_bss_1_4 = 0; + } + } + else if (eSlotMachine->matchedSymbols != 0) + { + if ((eSlotMachine->unk04 & 0x80) && !(eSlotMachine->matchedSymbols & 3)) + { + Menu_PrintText(Str_841B2E4, 4, 2); + unk_debug_bss_1_4 = 0; + } + } + if (eSlotMachine->matchedSymbols == 0 && eSlotMachine->bet == 3 && !(eSlotMachine->unk04 & 0x80)) + { + u8 sym_0_1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); + u8 sym_0_2 = GetTagOfReelSymbolOnScreenAtPos(0, 2); + u8 sym_0_3 = GetTagOfReelSymbolOnScreenAtPos(0, 3); + + u8 sym_1_1 = GetTagOfReelSymbolOnScreenAtPos(1, 1); + u8 sym_1_2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + u8 sym_1_3 = GetTagOfReelSymbolOnScreenAtPos(1, 3); + + u8 sym_2_1 = GetTagOfReelSymbolOnScreenAtPos(2, 1); + u8 sym_2_2 = GetTagOfReelSymbolOnScreenAtPos(2, 2); + u8 sym_2_3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); + + if ((sym_0_1 == 0 && sym_1_1 == 1 && sym_2_1 == 0) + || (sym_0_2 == 0 && sym_1_2 == 1 && sym_2_2 == 0) + || (sym_0_3 == 0 && sym_1_3 == 1 && sym_2_3 == 0) + || (sym_0_1 == 0 && sym_1_2 == 1 && sym_2_3 == 0) + || (sym_0_3 == 0 && sym_1_2 == 1 && sym_2_1 == 0) + || (sym_0_1 == 1 && sym_1_1 == 0 && sym_2_1 == 1) + || (sym_0_2 == 1 && sym_1_2 == 0 && sym_2_2 == 1) + || (sym_0_3 == 1 && sym_1_3 == 0 && sym_2_3 == 1) + || (sym_0_1 == 1 && sym_1_2 == 0 && sym_2_3 == 1) + || (sym_0_3 == 1 && sym_1_2 == 0 && sym_2_1 == 1)) + { + Menu_PrintText(Str_841B2BF, 4, 0); + unk_debug_bss_1_4 = 0; + } + } +} #endif diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 75b600da0..f2d53eb7f 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle_tower.h" #include "start_menu.h" #include "event_data.h" #include "field_player_avatar.h" @@ -6,9 +7,11 @@ #include "fieldmap.h" #include "item_menu.h" #include "load_save.h" +#include "m4a.h" #include "main.h" #include "map_obj_lock.h" #include "menu.h" +#include "new_game.h" #include "option_menu.h" #include "palette.h" #include "pokedex.h" @@ -137,302 +140,105 @@ static void sub_8071B54(void); static void Task_8071B64(u8 taskId); #if DEBUG -__attribute__((naked)) -void debug_sub_8075C30() + +void debug_sub_8075D9C(void); + +u8 debug_sub_8075C30(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl debug_sub_8075D9C\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + debug_sub_8075D9C(); + return 1; } -__attribute__((naked)) -void debug_sub_8075C40() +extern const u8 gUnknown_Debug_839B6D8[]; + +void debug_sub_8075C40(u8 taskId) { - 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" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._5 @ gTasks\n" - " add r5, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r5, r1]\n" - " cmp r0, #0x1\n" - " beq ._1 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._2 @cond_branch\n" - " cmp r0, #0\n" - " beq ._3 @cond_branch\n" - " b ._18\n" - "._6:\n" - " .align 2, 0\n" - "._5:\n" - " .word gTasks+0x8\n" - "._2:\n" - " cmp r0, #0x2\n" - " beq ._7 @cond_branch\n" - " cmp r0, #0x3\n" - " beq ._8 @cond_branch\n" - " b ._18\n" - "._3:\n" - " bl m4aSoundVSyncOff\n" - " b ._12\n" - "._1:\n" - " ldr r1, ._13 @ 0x4000208\n" - " ldrh r0, [r1]\n" - " mov sl, r0\n" - " mov r0, #0x0\n" - " strh r0, [r1]\n" - " ldr r1, ._13 + 4 @ 0x4000108\n" - " strh r0, [r1]\n" - " mov r0, #0x83\n" - " lsl r0, r0, #0x10\n" - " str r0, [r1]\n" - " ldr r4, ._13 + 8 @ 0xc34f\n" - " mov r9, r4\n" - " ldr r2, ._13 + 12 @ 0x40000b0\n" - " ldr r0, ._13 + 16 @ gScanlineEffectRegBuffers\n" - " mov ip, r0\n" - " ldr r1, ._13 + 20 @ 0xc5ff\n" - " mov r8, r1\n" - " ldr r7, ._13 + 24 @ 0x7fff\n" - " mov r3, r9\n" - " add r3, r3, #0x1\n" - " ldr r6, ._13 + 28 @ 0x4000040\n" - " ldr r4, ._13 + 32 @ 0xa2600001\n" - "._11:\n" - " mov r0, ip\n" - " str r0, [r2]\n" - " str r6, [r2, #0x4]\n" - " str r4, [r2, #0x8]\n" - " ldr r0, [r2, #0x8]\n" - " ldrh r1, [r2, #0xa]\n" - " mov r0, r8\n" - " and r0, r0, r1\n" - " strh r0, [r2, #0xa]\n" - " ldrh r1, [r2, #0xa]\n" - " add r0, r7, #0\n" - " and r0, r0, r1\n" - " strh r0, [r2, #0xa]\n" - " ldrh r0, [r2, #0xa]\n" - " sub r3, r3, #0x1\n" - " cmp r3, #0\n" - " bne ._11 @cond_branch\n" - " mov r3, r9\n" - " add r3, r3, #0x1\n" - " ldr r0, ._13 + 36 @ 0x400010a\n" - " mov r2, #0x0\n" - " strh r2, [r0]\n" - " ldr r1, ._13 + 4 @ 0x4000108\n" - " ldrh r0, [r1]\n" - " ldr r4, ._13 + 40 @ _debugStartMenu_0\n" - " str r0, [r4]\n" - " strh r2, [r1]\n" - " ldr r0, ._13 @ 0x4000208\n" - " mov r1, sl\n" - " strh r1, [r0]\n" - " ldr r4, ._13 + 44 @ _debugStartMenu_1\n" - " str r3, [r4]\n" - " bl m4aSoundVSyncOn\n" - " b ._12\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word 0x4000208\n" - " .word 0x4000108\n" - " .word 0xc34f\n" - " .word 0x40000b0\n" - " .word gScanlineEffectRegBuffers\n" - " .word 0xc5ff\n" - " .word 0x7fff\n" - " .word 0x4000040\n" - " .word 0xa2600001\n" - " .word 0x400010a\n" - " .word _debugStartMenu_0\n" - " .word _debugStartMenu_1\n" - "._7:\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - " ldr r0, ._16 @ gStringVar1\n" - " ldr r1, ._16 + 4 @ _debugStartMenu_1\n" - " ldr r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._16 + 8 @ gStringVar2\n" - " ldr r1, ._16 + 12 @ _debugStartMenu_0\n" - " ldr r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl ConvertIntToDecimalStringN\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._16 + 16 @ gUnknown_Debug_839B6D8\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._12:\n" - " ldrh r0, [r5]\n" - " add r0, r0, #0x1\n" - " strh r0, [r5]\n" - " b ._18\n" - "._17:\n" - " .align 2, 0\n" - "._16:\n" - " .word gStringVar1\n" - " .word _debugStartMenu_1\n" - " .word gStringVar2\n" - " .word _debugStartMenu_0\n" - " .word gUnknown_Debug_839B6D8\n" - "._8:\n" - " ldr r0, ._19 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._18 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._18:\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" - "._20:\n" - " .align 2, 0\n" - "._19:\n" - " .word gMain\n" - "\n" - ); + s16 *data = gTasks[taskId].data; + u16 savedIme; + s32 i; + + switch (data[0]) + { + case 0: + m4aSoundVSyncOff(); + data[0]++; + break; + case 1: + savedIme = REG_IME; + REG_IME = 0; + REG_TM2CNT_L = 0; + REG_TM2CNT = 0x830000; + for (i = 0; i < 0xC350; i++) + { + DmaSet( + 0, + gScanlineEffectRegBuffers, + ®_WIN0H, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_16BIT | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_RELOAD) << 16) | 1); + DmaStop(0); + } + REG_TM2CNT_H = 0; + _debugStartMenu_0 = REG_TM2CNT_L; + REG_TM2CNT_L = 0; + REG_IME = savedIme; + _debugStartMenu_1 = i; + m4aSoundVSyncOn(); + data[0]++; + break; + case 2: + PlaySE(0x15); + ConvertIntToDecimalStringN(gStringVar1, _debugStartMenu_1, 1, 8); + ConvertIntToDecimalStringN(gStringVar2, _debugStartMenu_0, 1, 8); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gUnknown_Debug_839B6D8, 2, 15); + data[0]++; + break; + case 3: + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } } -__attribute__((naked)) -void debug_sub_8075D9C() +void debug_sub_8075D9C(void) { - asm( - " push {lr}\n" - " ldr r0, ._21 @ debug_sub_8075C40\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " pop {r0}\n" - " bx r0\n" - "._22:\n" - " .align 2, 0\n" - "._21:\n" - " .word debug_sub_8075C40+1\n" - "\n" - ); + CreateTask(debug_sub_8075C40, 10); + ScriptContext2_Enable(); } -__attribute__((naked)) -void debug_sub_8075DB4() +void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId) { - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " add r5, r1, #0\n" - " add r4, r2, #0\n" - " add r0, r4, #0\n" - " mov r1, #0x4d\n" - " bl __umodsi3\n" - " strb r0, [r6, #0x1]\n" - " add r1, r6, #0\n" - " add r1, r1, #0xc\n" - " add r0, r4, #0\n" - " bl write_word_to_mem\n" - " add r0, r6, #4\n" - " add r1, r5, #0\n" - " bl StringCopy8\n" - " mov r3, #0x7\n" - " mov r4, #0x0\n" - " ldr r0, ._25 @ gSaveBlock1\n" - " ldr r1, ._25 + 4 @ 0x2b28\n" - " add r5, r0, r1\n" - " add r2, r6, #0\n" - " add r2, r2, #0x10\n" - " add r1, r6, #0\n" - " add r1, r1, #0x1c\n" - "._23:\n" - " ldrh r0, [r5]\n" - " strh r0, [r2]\n" - " strh r3, [r1]\n" - " add r0, r3, #6\n" - " strh r0, [r1, #0xc]\n" - " add r3, r3, #0x1\n" - " add r5, r5, #0x2\n" - " add r2, r2, #0x2\n" - " add r1, r1, #0x2\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x5\n" - " ble ._23 @cond_branch\n" - " mov r4, #0x0\n" - "._24:\n" - " mov r0, #0x64\n" - " mul r0, r0, r4\n" - " ldr r1, ._25 + 8 @ gPlayerParty\n" - " add r0, r0, r1\n" - " mov r1, #0x2c\n" - " mul r1, r1, r4\n" - " add r1, r1, #0x34\n" - " add r1, r6, r1\n" - " bl sub_803AF78\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x2\n" - " ble ._24 @cond_branch\n" - " add r0, r6, #0\n" - " bl SetEReaderTrainerChecksum\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._26:\n" - " .align 2, 0\n" - "._25:\n" - " .word gSaveBlock1\n" - " .word 0x2b28\n" - " .word gPlayerParty\n" - "\n" - ); + s32 i; + s32 r3; + + ereaderTrainer->trainerClass = trainerId % 77; + write_word_to_mem(trainerId, ereaderTrainer->trainerId); + StringCopy8(ereaderTrainer->name, b); + r3 = 7; + for (i = 0; i < 6; i++) + { + ereaderTrainer->greeting[i] = gSaveBlock1.easyChats.unk2B28[i]; + ereaderTrainer->farewellPlayerLost[i] = r3; + ereaderTrainer->farewellPlayerWon[i] = r3 + 6; + r3++; + } + for (i = 0; i < 3; i++) + sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]); + SetEReaderTrainerChecksum(ereaderTrainer); } -__attribute__((naked)) -void unref_sub_8070F90() +void unref_sub_8070F90(void) { - asm( - " push {lr}\n" - " ldr r0, ._27 @ 0x801\n" - " bl FlagSet\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x4\n" - " bl FlagSet\n" - " ldr r0, ._27 + 4 @ 0x802\n" - " bl FlagSet\n" - " pop {r0}\n" - " bx r0\n" - "._28:\n" - " .align 2, 0\n" - "._27:\n" - " .word 0x801\n" - " .word 0x802\n" - "\n" - ); + FlagSet(FLAG_SYS_POKEDEX_GET); + FlagSet(FLAG_SYS_POKEMON_GET); + FlagSet(FLAG_SYS_POKENAV_GET); } + #endif static void BuildStartMenuActions(void) diff --git a/src/field/tv.c b/src/field/tv.c index ebf304a6e..6c24170ae 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -3050,7 +3050,7 @@ void DoTVShowTodaysSmartShopper(void) break; case 1: TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); + StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[0])); sub_80BF088(2, smartShopper->itemAmounts[0]); sTVShowState += (Random() % 4) + 1; break; @@ -3070,7 +3070,7 @@ void DoTVShowTodaysSmartShopper(void) sTVShowState = 10; break; case 6: - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name); + StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[1])); sub_80BF088(2, smartShopper->itemAmounts[1]); if (smartShopper->itemIds[2] != 0) sTVShowState = 7; @@ -3080,7 +3080,7 @@ void DoTVShowTodaysSmartShopper(void) sTVShowState = 9; break; case 7: - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name); + StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[2])); sub_80BF088(2, smartShopper->itemAmounts[2]); if (smartShopper->priceReduced == 1) sTVShowState = 8; @@ -3105,7 +3105,7 @@ void DoTVShowTodaysSmartShopper(void) break; case 11: TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); + StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[0])); if (smartShopper->priceReduced == 1) sTVShowState = 8; else @@ -3237,7 +3237,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) sTVShowState = 2; break; case 2: - StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name); + StringCopy(gStringVar2, ItemId_GetName(pokemonToday->ball)); sub_80BF088(2, pokemonToday->var12); if (pokemonToday->var12 < 4) sTVShowState = 3; diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 2f12b6bfa..0331abf3e 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -189,383 +189,179 @@ void sub_8096848(void) void sub_8096874(void) { - REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; } -#if DEBUG -__attribute__((naked)) -void sub_8096884(void) -{ - asm("\ - push {r4, lr}\n\ - ldr r0, ._223 @ gMain\n\ - ldr r1, ._223 + 4 @ 0x43c\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x9\n\ - bls ._221 @cond_branch\n\ - b ._222\n\ -._221:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._223 + 8 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._224:\n\ - .align 2, 0\n\ -._223:\n\ - .word gMain\n\ - .word 0x43c\n\ - .word ._225\n\ -._225:\n\ - .word ._226\n\ - .word ._227\n\ - .word ._228\n\ - .word ._229\n\ - .word ._230\n\ - .word ._231\n\ - .word ._232\n\ - .word ._233\n\ - .word ._234\n\ - .word ._235\n\ -._226:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x13\n\ - mov r4, #0x0\n\ - strh r4, [r0]\n\ - bl sub_8096804\n\ - ldr r0, ._237 @ unk_2038790\n\ - strb r4, [r0]\n\ - b ._250\n\ -._238:\n\ - .align 2, 0\n\ -._237:\n\ - .word unk_2038790\n\ -._227:\n\ - ldr r0, ._240 @ gWindowTemplate_81E6D00\n\ - bl Text_LoadWindowTemplate\n\ - b ._250\n\ -._241:\n\ - .align 2, 0\n\ -._240:\n\ - .word gWindowTemplate_81E6D00\n\ -._228:\n\ - ldr r0, ._243 @ gWindowTemplate_81E6D00\n\ - bl InitMenuWindow\n\ - bl Menu_EraseScreen\n\ - b ._250\n\ -._244:\n\ - .align 2, 0\n\ -._243:\n\ - .word gWindowTemplate_81E6D00\n\ -._229:\n\ - bl sub_80967DC\n\ - bl sub_8096848\n\ - b ._250\n\ -._230:\n\ - bl ResetPSSMonIconSprites\n\ - bl sub_809AA24\n\ - b ._250\n\ -._231:\n\ - bl sub_8097DE0\n\ - b ._250\n\ -._232:\n\ - bl sub_8097E70\n\ - b ._250\n\ -._233:\n\ - bl sub_8098400\n\ - b ._250\n\ -._234:\n\ - ldr r0, ._251 @ gPokemonStorage\n\ - ldrb r0, [r0]\n\ - bl sub_8099BF8\n\ - ldr r2, ._251 + 4 @ 0x2000000\n\ - ldr r1, ._251 + 8 @ 0x12bc\n\ - add r0, r2, r1\n\ - mov r1, #0xa\n\ - strh r1, [r0]\n\ - ldr r1, ._251 + 12 @ 0x12be\n\ - add r2, r2, r1\n\ - ldr r1, ._251 + 16 @ 0xdacb\n\ - strh r1, [r2]\n\ - bl sub_80F727C\n\ - bl sub_80F7404\n\ - b ._250\n\ -._252:\n\ - .align 2, 0\n\ -._251:\n\ - .word gPokemonStorage\n\ - .word 0x2000000\n\ - .word 0x12bc\n\ - .word 0x12be\n\ - .word 0xdacb\n\ -._235:\n\ - bl sub_8096874\n\ - ldr r0, ._253 @ sub_8096BF0\n\ - bl SetPSSCallback\n\ - ldr r0, ._253 + 4 @ sub_8096B38\n\ - bl SetMainCallback2\n\ - ldr r0, ._253 + 8 @ sub_8096AFC\n\ - bl SetVBlankCallback\n\ -._250:\n\ - ldr r1, ._253 + 12 @ gMain\n\ - ldr r0, ._253 + 16 @ 0x43c\n\ - add r1, r1, r0\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ -._222:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._254:\n\ - .align 2, 0\n\ -._253:\n\ - .word sub_8096BF0+1\n\ - .word sub_8096B38+1\n\ - .word sub_8096AFC+1\n\ - .word gMain\n\ - .word 0x43c"); -} -#else +extern u8 unk_2038790; + void sub_8096884(void) { switch (gMain.state) { - case 0: - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - sub_8096804(); - gMain.state++; - break; - case 1: - Text_LoadWindowTemplate(&gWindowTemplate_81E6D00); - gMain.state++; - break; - case 2: - InitMenuWindow(&gWindowTemplate_81E6D00); - Menu_EraseScreen(); - gMain.state++; - break; - case 3: - sub_80967DC(); - sub_8096848(); - gMain.state++; - break; - case 4: - ResetPSSMonIconSprites(); - sub_809AA24(); - gMain.state++; - break; - case 5: - sub_8097DE0(); - gMain.state++; - break; - case 6: - sub_8097E70(); - gMain.state++; - break; - case 7: - sub_8098400(); - gMain.state++; - break; - case 8: - sub_8099BF8(gPokemonStorage.currentBox); - gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a; - gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb; - sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc); - sub_80F7404(); - gMain.state++; - break; - case 9: - sub_8096874(); - SetPSSCallback(sub_8096BF0); - SetMainCallback2(sub_8096B38); - SetVBlankCallback(sub_8096AFC); - gMain.state++; - break; + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + sub_8096804(); +#if DEBUG + unk_2038790 = 0; +#endif + gMain.state++; + break; + case 1: + Text_LoadWindowTemplate(&gWindowTemplate_81E6D00); + gMain.state++; + break; + case 2: + InitMenuWindow(&gWindowTemplate_81E6D00); + Menu_EraseScreen(); + gMain.state++; + break; + case 3: + sub_80967DC(); + sub_8096848(); + gMain.state++; + break; + case 4: + ResetPSSMonIconSprites(); + sub_809AA24(); + gMain.state++; + break; + case 5: + sub_8097DE0(); + gMain.state++; + break; + case 6: + sub_8097E70(); + gMain.state++; + break; + case 7: + sub_8098400(); + gMain.state++; + break; + case 8: + sub_8099BF8(gPokemonStorage.currentBox); + gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a; + gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb; + sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc); + sub_80F7404(); + gMain.state++; + break; + case 9: + sub_8096874(); + SetPSSCallback(sub_8096BF0); + SetMainCallback2(sub_8096B38); + SetVBlankCallback(sub_8096AFC); + gMain.state++; + break; } } -#endif void sub_80969A0(void) { switch (gMain.state) { - case 0: - SetVBlankCallback(NULL); - REG_DISPCNT = 0x0000; - gPokemonStorageSystemPtr->unk_0005 = gUnknown_0203847D; - sub_8096804(); - if (gUnknown_0203847F == 1) - sub_809BBC0(); - if (gUnknown_0203847F == 0) - sub_809BD14(); - gMain.state++; - break; - case 1: - Text_LoadWindowTemplate(&gWindowTemplate_81E6D00); - gMain.state++; - break; - case 2: - InitMenuWindow(&gWindowTemplate_81E6D00); - Menu_EraseScreen(); - gMain.state++; - break; - case 3: - sub_80967DC(); - gMain.state++; - break; - case 4: - ResetPSSMonIconSprites(); - sub_809AA98(); - gMain.state++; - break; - case 5: - sub_8097DE0(); - gMain.state++; - break; - case 6: - sub_8097E70(); - gMain.state++; - break; - case 7: - sub_8098400(); - gMain.state++; - break; - case 8: - sub_8099BF8(gPokemonStorage.currentBox); - gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a; - gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb; - sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc); - sub_80F7404(); - gMain.state++; - break; - case 9: - BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); - SetVBlankCallback(sub_8096AFC); - gMain.state++; - break; - case 10: - sub_8096874(); - SetPSSCallback(sub_8096C68); - SetMainCallback2(sub_8096B38); - gMain.state++; - break; + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + gPokemonStorageSystemPtr->unk_0005 = gUnknown_0203847D; + sub_8096804(); + if (gUnknown_0203847F == 1) + sub_809BBC0(); + if (gUnknown_0203847F == 0) + sub_809BD14(); + gMain.state++; + break; + case 1: + Text_LoadWindowTemplate(&gWindowTemplate_81E6D00); + gMain.state++; + break; + case 2: + InitMenuWindow(&gWindowTemplate_81E6D00); + Menu_EraseScreen(); + gMain.state++; + break; + case 3: + sub_80967DC(); + gMain.state++; + break; + case 4: + ResetPSSMonIconSprites(); + sub_809AA98(); + gMain.state++; + break; + case 5: + sub_8097DE0(); + gMain.state++; + break; + case 6: + sub_8097E70(); + gMain.state++; + break; + case 7: + sub_8098400(); + gMain.state++; + break; + case 8: + sub_8099BF8(gPokemonStorage.currentBox); + gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a; + gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb; + sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc); + sub_80F7404(); + gMain.state++; + break; + case 9: + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); + SetVBlankCallback(sub_8096AFC); + gMain.state++; + break; + case 10: + sub_8096874(); + SetPSSCallback(sub_8096C68); + SetMainCallback2(sub_8096B38); + gMain.state++; + break; } } #if DEBUG -__attribute__((naked)) -void debug_sub_80A4300() -{ - asm("\ - push {lr}\n\ - ldr r1, ._296 @ gUnknown_0203847D\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - ldr r1, ._296 + 4 @ 0x2000000\n\ - mov r0, #0x0\n\ - strb r0, [r1, #0x5]\n\ - bl sub_8096884\n\ - ldr r0, ._296 + 8 @ gMain\n\ - ldr r1, [r0, #0x4]\n\ - ldr r0, ._296 + 12 @ sub_8096B38\n\ - cmp r1, r0\n\ - bne ._295 @cond_branch\n\ - ldr r1, ._296 + 16 @ unk_2038790\n\ - mov r0, #0x1\n\ - strb r0, [r1]\n\ -._295:\n\ - pop {r0}\n\ - bx r0\n\ -._297:\n\ - .align 2, 0\n\ -._296:\n\ - .word gUnknown_0203847D\n\ - .word 0x2000000\n\ - .word gMain\n\ - .word sub_8096B38+1\n\ - .word unk_2038790"); -} - -__attribute__((naked)) -void debug_sub_80A433C() -{ - asm("\ - push {lr}\n\ - ldr r2, ._298 @ unk_2038794\n\ - str r1, [r2]\n\ - ldr r1, ._298 + 4 @ unk_2038798\n\ - str r0, [r1]\n\ - ldr r0, ._298 + 8 @ debug_sub_80A4300\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._299:\n\ - .align 2, 0\n\ -._298:\n\ - .word unk_2038794\n\ - .word unk_2038798\n\ - .word debug_sub_80A4300+1"); -} - -__attribute__((naked)) -void debug_sub_80A435C() -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r5, ._303 @ 0x2000000\n\ - ldrb r4, [r5, #0x4]\n\ - cmp r4, #0\n\ - beq ._300 @cond_branch\n\ - cmp r4, #0x1\n\ - beq ._301 @cond_branch\n\ - b ._308\n\ -._304:\n\ - .align 2, 0\n\ -._303:\n\ - .word 0x2000000\n\ -._300:\n\ - ldr r0, ._306 @ unk_2038798\n\ - ldr r0, [r0]\n\ - bl unref_sub_809CB94\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - str r4, [sp]\n\ - mov r1, #0x0\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - ldrb r0, [r5, #0x4]\n\ - add r0, r0, #0x1\n\ - strb r0, [r5, #0x4]\n\ - b ._308\n\ -._307:\n\ - .align 2, 0\n\ -._306:\n\ - .word unk_2038798\n\ -._301:\n\ - bl UpdatePaletteFade\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._308 @cond_branch\n\ - ldr r0, ._309 @ unk_2038794\n\ - ldr r0, [r0]\n\ - bl _call_via_r0\n\ -._308:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._310:\n\ - .align 2, 0\n\ -._309:\n\ - .word unk_2038794"); + +void debug_sub_80A4300(void) +{ + gUnknown_0203847D = 0; + gPokemonStorageSystemPtr->unk_0005 = 0; + sub_8096884(); + if (gMain.callback2 == sub_8096B38) + unk_2038790 = 1; +} + +extern void (*unk_2038794)(void); +extern u32 unk_2038798; + +extern void unref_sub_809CB94(); + +void debug_sub_80A433C(u32 a, void (*b)(void)) +{ + unk_2038794 = b; + unk_2038798 = a; + SetMainCallback2(debug_sub_80A4300); +} + +void debug_sub_80A435C(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + unref_sub_809CB94(unk_2038798); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + unk_2038794(); + break; + } } + #endif void sub_8096AFC(void) @@ -592,12 +388,12 @@ void sub_8096B5C(void) { switch (gPokemonStorageSystemPtr->unk_0006) { - case 0: - ShowPokemonSummaryScreen(gPokemonStorageSystemPtr->unk_2690.pokemon, gPokemonStorageSystemPtr->unk_268d, gPokemonStorageSystemPtr->unk_268c, sub_80969A0, gPokemonStorageSystemPtr->unk_268e); - break; - case 1: - DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0); - break; + case 0: + ShowPokemonSummaryScreen(gPokemonStorageSystemPtr->unk_2690.pokemon, gPokemonStorageSystemPtr->unk_268d, gPokemonStorageSystemPtr->unk_268c, sub_80969A0, gPokemonStorageSystemPtr->unk_268e); + break; + case 1: + DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0); + break; } } @@ -611,24 +407,24 @@ void sub_8096BF0(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - BlendPalettes(0xffffffff, 16, 0); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - PlaySE(SE_PC_LOGON); - gPokemonStorageSystemPtr->unk_000c.tileTag = 14; - gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; - gPokemonStorageSystemPtr->unk_000c.unk04 = 0; - gPokemonStorageSystemPtr->unk_000c.unk06 = 0; - sub_80C5CD4(&gPokemonStorageSystemPtr->unk_000c); - BlendPalettes(0xffffffff, 0, 0); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 2: - if (sub_80C5DCC()) - SetPSSCallback(sub_8096C84); - break; + case 0: + BlendPalettes(0xffffffff, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + PlaySE(SE_PC_LOGON); + gPokemonStorageSystemPtr->unk_000c.tileTag = 14; + gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; + gPokemonStorageSystemPtr->unk_000c.unk04 = 0; + gPokemonStorageSystemPtr->unk_000c.unk06 = 0; + sub_80C5CD4(&gPokemonStorageSystemPtr->unk_000c); + BlendPalettes(0xffffffff, 0, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 2: + if (sub_80C5DCC()) + SetPSSCallback(sub_8096C84); + break; } } @@ -638,605 +434,176 @@ void sub_8096C68(void) SetPSSCallback(sub_8096C84); } -#if DEBUG -__attribute__((naked)) -void sub_8096C84(void) -{ - asm("\ - push {r4, lr}\n\ - ldr r0, ._347 @ 0x2000000\n\ - ldrb r0, [r0, #0x4]\n\ - cmp r0, #0x6\n\ - bls ._345 @cond_branch\n\ - b ._466\n\ -._345:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._347 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._348:\n\ - .align 2, 0\n\ -._347:\n\ - .word 0x2000000\n\ - .word ._349\n\ -._349:\n\ - .word ._350\n\ - .word ._351\n\ - .word ._352\n\ - .word ._353\n\ - .word ._354\n\ - .word ._355\n\ - .word ._356\n\ -._350:\n\ - bl sub_809CA40\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - sub r0, r0, #0x1\n\ - cmp r0, #0xf\n\ - bls ._357 @cond_branch\n\ - b ._466\n\ -._357:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._360 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._361:\n\ - .align 2, 0\n\ -._360:\n\ - .word ._359\n\ -._359:\n\ - .word ._362\n\ - .word ._466\n\ - .word ._466\n\ - .word ._365\n\ - .word ._366\n\ - .word ._367\n\ - .word ._368\n\ - .word ._369\n\ - .word ._370\n\ - .word ._371\n\ - .word ._372\n\ - .word ._373\n\ - .word ._374\n\ - .word ._375\n\ - .word ._376\n\ - .word ._377\n\ -._362:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r1, ._379 @ 0x2000000\n\ - mov r0, #0x1\n\ - strb r0, [r1, #0x4]\n\ - b ._466\n\ -._380:\n\ - .align 2, 0\n\ -._379:\n\ - .word 0x2000000\n\ -._366:\n\ - ldr r4, ._383 @ 0x2000000\n\ - ldrb r0, [r4, #0x5]\n\ - cmp r0, #0x2\n\ - beq ._381 @cond_branch\n\ - mov r0, #0x10\n\ - bl PrintStorageActionText\n\ - mov r0, #0x3\n\ - strb r0, [r4, #0x4]\n\ - b ._466\n\ -._384:\n\ - .align 2, 0\n\ -._383:\n\ - .word 0x2000000\n\ -._381:\n\ - bl sub_809B0D4\n\ - ldr r0, ._386 @ sub_8096FC8\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._387:\n\ - .align 2, 0\n\ -._386:\n\ - .word sub_8096FC8+1\n\ -._367:\n\ - ldr r4, ._394 @ 0x2000000\n\ - ldrb r0, [r4, #0x5]\n\ - cmp r0, #0x2\n\ - beq ._388 @cond_branch\n\ - b ._466\n\ -._388:\n\ - bl sub_809BF20\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._391 @cond_branch\n\ - ldr r1, ._394 + 4 @ 0x11f2\n\ - add r0, r4, r1\n\ - ldrh r0, [r0]\n\ - bl ItemIsMail\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._391 @cond_branch\n\ - b ._392\n\ -._391:\n\ - ldr r0, ._394 + 8 @ sub_8097004\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._395:\n\ - .align 2, 0\n\ -._394:\n\ - .word 0x2000000\n\ - .word 0x11f2\n\ - .word sub_8097004+1\n\ -._365:\n\ - ldr r0, ._399 @ unk_2038790\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._396 @cond_branch\n\ - b ._466\n\ -._396:\n\ - ldr r0, ._399 + 4 @ sub_8097BA0\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._400:\n\ - .align 2, 0\n\ -._399:\n\ - .word unk_2038790\n\ - .word sub_8097BA0+1\n\ -._377:\n\ - ldr r0, ._404 @ unk_2038790\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._401 @cond_branch\n\ - b ._466\n\ -._401:\n\ - ldr r0, ._404 + 4 @ sub_8097CC0\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._405:\n\ - .align 2, 0\n\ -._404:\n\ - .word unk_2038790\n\ - .word sub_8097CC0+1\n\ -._368:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._407 @ sub_809789C\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._408:\n\ - .align 2, 0\n\ -._407:\n\ - .word sub_809789C+1\n\ -._369:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._410 @ sub_8097078\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._411:\n\ - .align 2, 0\n\ -._410:\n\ - .word sub_8097078+1\n\ -._370:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r4, ._414 @ 0x2000000\n\ - ldr r0, ._414 + 4 @ gPokemonStorage\n\ - ldrb r0, [r0]\n\ - add r0, r0, #0x1\n\ - ldr r2, ._414 + 8 @ 0x8b2\n\ - add r1, r4, r2\n\ - strh r0, [r1]\n\ - cmp r0, #0xd\n\ - ble ._416 @cond_branch\n\ - mov r0, #0x0\n\ - b ._413\n\ -._415:\n\ - .align 2, 0\n\ -._414:\n\ - .word 0x2000000\n\ - .word gPokemonStorage\n\ - .word 0x8b2\n\ -._371:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r4, ._418 @ 0x2000000\n\ - ldr r0, ._418 + 4 @ gPokemonStorage\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x1\n\ - ldr r2, ._418 + 8 @ 0x8b2\n\ - add r1, r4, r2\n\ - strh r0, [r1]\n\ - cmp r0, #0\n\ - bge ._416 @cond_branch\n\ - mov r0, #0xd\n\ -._413:\n\ - strh r0, [r1]\n\ -._416:\n\ - ldrb r0, [r1]\n\ - bl sub_8099C70\n\ - mov r0, #0x2\n\ - strb r0, [r4, #0x4]\n\ - b ._466\n\ -._419:\n\ - .align 2, 0\n\ -._418:\n\ - .word 0x2000000\n\ - .word gPokemonStorage\n\ - .word 0x8b2\n\ -._372:\n\ - bl sub_809BE80\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._428 @cond_branch\n\ - ldr r4, ._423 @ 0x2000000\n\ - ldr r1, ._423 + 4 @ 0x11f2\n\ - add r0, r4, r1\n\ - ldrh r0, [r0]\n\ - bl ItemIsMail\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._421 @cond_branch\n\ -._392:\n\ - mov r0, #0x5\n\ - strb r0, [r4, #0x4]\n\ - b ._466\n\ -._424:\n\ - .align 2, 0\n\ -._423:\n\ - .word 0x2000000\n\ - .word 0x11f2\n\ -._421:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._426 @ sub_809746C\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._427:\n\ - .align 2, 0\n\ -._426:\n\ - .word sub_809746C+1\n\ -._374:\n\ - bl sub_809BE80\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._428 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._430 @ sub_80972A8\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._431:\n\ - .align 2, 0\n\ -._430:\n\ - .word sub_80972A8+1\n\ -._375:\n\ - bl sub_809BEBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._432 @cond_branch\n\ -._428:\n\ - ldr r1, ._434 @ 0x2000000\n\ - mov r0, #0x4\n\ - strb r0, [r1, #0x4]\n\ - b ._466\n\ -._435:\n\ - .align 2, 0\n\ -._434:\n\ - .word 0x2000000\n\ -._432:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._437 @ c3_0808DC50\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._438:\n\ - .align 2, 0\n\ -._437:\n\ - .word c3_0808DC50+1\n\ -._373:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._440 @ sub_8097390\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._441:\n\ - .align 2, 0\n\ -._440:\n\ - .word sub_8097390+1\n\ -._376:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._443 @ sub_80972FC\n\ - bl SetPSSCallback\n\ - b ._466\n\ -._444:\n\ - .align 2, 0\n\ -._443:\n\ - .word sub_80972FC+1\n\ -._351:\n\ - bl sub_809AC00\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._466 @cond_branch\n\ - bl sub_809BF48\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._446 @cond_branch\n\ - bl sub_80986E8\n\ - b ._447\n\ -._446:\n\ - bl sub_8098710\n\ -._447:\n\ - ldr r4, ._450 @ 0x2000000\n\ - ldr r2, ._450 + 4 @ 0x11f6\n\ - add r0, r4, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._448 @cond_branch\n\ - bl BoxSetMosaic\n\ -._448:\n\ - mov r0, #0x0\n\ - strb r0, [r4, #0x4]\n\ - b ._466\n\ -._451:\n\ - .align 2, 0\n\ -._450:\n\ - .word 0x2000000\n\ - .word 0x11f6\n\ -._352:\n\ - bl sub_8099D34\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._466 @cond_branch\n\ - ldr r1, ._456 @ gPokemonStorage\n\ - ldr r0, ._456 + 4 @ 0x2000000\n\ - ldr r2, ._456 + 8 @ 0x8b2\n\ - add r0, r0, r2\n\ - ldrh r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r0, ._456 + 12 @ gUnknown_0203847C\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._455 @cond_branch\n\ - bl sub_809BF20\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._455 @cond_branch\n\ - bl sub_809B440\n\ - bl BoxSetMosaic\n\ - b ._455\n\ -._457:\n\ - .align 2, 0\n\ -._456:\n\ - .word gPokemonStorage\n\ - .word 0x2000000\n\ - .word 0x8b2\n\ - .word gUnknown_0203847C\n\ -._353:\n\ - ldr r0, ._460 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0xf3\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._466 @cond_branch\n\ - bl sub_8098A5C\n\ -._455:\n\ - ldr r1, ._460 + 4 @ 0x2000000\n\ - mov r0, #0x0\n\ - strb r0, [r1, #0x4]\n\ - b ._466\n\ -._461:\n\ - .align 2, 0\n\ -._460:\n\ - .word gMain\n\ - .word 0x2000000\n\ -._354:\n\ - mov r0, #0x20\n\ - bl PlaySE\n\ - mov r0, #0xd\n\ - b ._462\n\ -._355:\n\ - mov r0, #0x20\n\ - bl PlaySE\n\ - mov r0, #0x16\n\ -._462:\n\ - bl PrintStorageActionText\n\ - ldr r1, ._464 @ 0x2000000\n\ - mov r0, #0x6\n\ - strb r0, [r1, #0x4]\n\ - b ._466\n\ -._465:\n\ - .align 2, 0\n\ -._464:\n\ - .word 0x2000000\n\ -._356:\n\ - ldr r0, ._467 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0xf3\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._466 @cond_branch\n\ - bl sub_8098A5C\n\ - ldr r0, ._467 + 4 @ sub_8096C84\n\ - bl SetPSSCallback\n\ -._466:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._468:\n\ - .align 2, 0\n\ -._467:\n\ - .word gMain\n\ - .word sub_8096C84+1"); -} -#else void sub_8096C84(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - switch (sub_809CA40()) + case 0: + switch (sub_809CA40()) + { + case 1: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_0004 = 1; + break; + case 5: + if (gPokemonStorageSystemPtr->unk_0005 != 2) { - case 1: - PlaySE(SE_SELECT); - gPokemonStorageSystemPtr->unk_0004 = 1; - break; - case 5: - if (gPokemonStorageSystemPtr->unk_0005 != 2) - { - PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); - gPokemonStorageSystemPtr->unk_0004 = 3; - } - else - { - sub_809B0D4(); - SetPSSCallback(sub_8096FC8); - } - break; - case 6: - if (gPokemonStorageSystemPtr->unk_0005 == 2) - { - if (sub_809BF20() && ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) - { - gPokemonStorageSystemPtr->unk_0004 = 5; - } - else - { - SetPSSCallback(sub_8097004); - } - } - break; - case 4: - SetPSSCallback(sub_8097BA0); - break; - case 16: - SetPSSCallback(sub_8097CC0); - break; - case 7: - PlaySE(SE_SELECT); - SetPSSCallback(sub_809789C); - break; - case 8: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097078); - break; - case 9: - PlaySE(SE_SELECT); - gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox + 1; - if (gPokemonStorageSystemPtr->unk_08b2 > 13) - gPokemonStorageSystemPtr->unk_08b2 = 0; - sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); - gPokemonStorageSystemPtr->unk_0004 = 2; - break; - case 10: - PlaySE(SE_SELECT); - gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox - 1; - if (gPokemonStorageSystemPtr->unk_08b2 < 0) - gPokemonStorageSystemPtr->unk_08b2 = 13; - sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); - gPokemonStorageSystemPtr->unk_0004 = 2; - break; - case 11: - if (!sub_809BE80()) - { - if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) - { - gPokemonStorageSystemPtr->unk_0004 = 5; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(sub_809746C); - } - } - else - { - gPokemonStorageSystemPtr->unk_0004 = 4; - } - break; - case 13: - if (sub_809BE80()) - { - gPokemonStorageSystemPtr->unk_0004 = 4; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(sub_80972A8); - } - break; - case 14: - if (!sub_809BEBC()) - { - gPokemonStorageSystemPtr->unk_0004 = 4; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(c3_0808DC50); - } - break; - case 12: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097390); - break; - case 15: - PlaySE(SE_SELECT); - SetPSSCallback(sub_80972FC); - break; + PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); + gPokemonStorageSystemPtr->unk_0004 = 3; + } + else + { + sub_809B0D4(); + SetPSSCallback(sub_8096FC8); } break; - case 1: - if (!sub_809AC00()) + case 6: + if (gPokemonStorageSystemPtr->unk_0005 == 2) { - if (sub_809BF48()) - sub_80986E8(); + if (sub_809BF20() && ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + gPokemonStorageSystemPtr->unk_0004 = 5; else - sub_8098710(); - if (gPokemonStorageSystemPtr->unk_11f6) - BoxSetMosaic(); - gPokemonStorageSystemPtr->unk_0004 = 0; + SetPSSCallback(sub_8097004); } break; - case 2: - if (!sub_8099D34()) + case 4: +#if DEBUG + if (unk_2038790 != 0) + break; +#endif + SetPSSCallback(sub_8097BA0); + break; + case 16: +#if DEBUG + if (unk_2038790 != 0) + break; +#endif + SetPSSCallback(sub_8097CC0); + break; + case 7: + PlaySE(SE_SELECT); + SetPSSCallback(sub_809789C); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097078); + break; + case 9: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox + 1; + if (gPokemonStorageSystemPtr->unk_08b2 > 13) + gPokemonStorageSystemPtr->unk_08b2 = 0; + sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); + gPokemonStorageSystemPtr->unk_0004 = 2; + break; + case 10: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox - 1; + if (gPokemonStorageSystemPtr->unk_08b2 < 0) + gPokemonStorageSystemPtr->unk_08b2 = 13; + sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); + gPokemonStorageSystemPtr->unk_0004 = 2; + break; + case 11: + if (!sub_809BE80()) { - gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2; - if (!gUnknown_0203847C && !sub_809BF20()) + if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) { - sub_809B440(); - BoxSetMosaic(); + gPokemonStorageSystemPtr->unk_0004 = 5; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_809746C); } - gPokemonStorageSystemPtr->unk_0004 = 0; + } + else + { + gPokemonStorageSystemPtr->unk_0004 = 4; } break; - case 3: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + case 13: + if (sub_809BE80()) { - sub_8098A5C(); - gPokemonStorageSystemPtr->unk_0004 = 0; + gPokemonStorageSystemPtr->unk_0004 = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_80972A8); } break; - case 4: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - gPokemonStorageSystemPtr->unk_0004 = 6; + case 14: + if (!sub_809BEBC()) + { + gPokemonStorageSystemPtr->unk_0004 = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(c3_0808DC50); + } break; - case 5: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - gPokemonStorageSystemPtr->unk_0004 = 6; + case 12: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097390); break; - case 6: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + case 15: + PlaySE(SE_SELECT); + SetPSSCallback(sub_80972FC); + break; + } + break; + case 1: + if (!sub_809AC00()) + { + if (sub_809BF48()) + sub_80986E8(); + else + sub_8098710(); + if (gPokemonStorageSystemPtr->unk_11f6) + BoxSetMosaic(); + gPokemonStorageSystemPtr->unk_0004 = 0; + } + break; + case 2: + if (!sub_8099D34()) + { + gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2; + if (!gUnknown_0203847C && !sub_809BF20()) { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); + sub_809B440(); + BoxSetMosaic(); } - break; + gPokemonStorageSystemPtr->unk_0004 = 0; + } + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0004 = 0; + } + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + gPokemonStorageSystemPtr->unk_0004 = 6; + break; + case 5: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + gPokemonStorageSystemPtr->unk_0004 = 6; + break; + case 6: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; } } -#endif void sub_8096FC8(void) { @@ -1280,456 +647,151 @@ void sub_8097004(void) } } -#if DEBUG -__attribute__((naked)) -void sub_8097078(void) -{ - asm("\ - push {r4, lr}\n\ - ldr r0, ._495 @ 0x2000000\n\ - ldrb r0, [r0, #0x4]\n\ - cmp r0, #0x5\n\ - bls ._493 @cond_branch\n\ - b ._597\n\ -._493:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._495 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._496:\n\ - .align 2, 0\n\ -._495:\n\ - .word 0x2000000\n\ - .word ._497\n\ -._497:\n\ - .word ._498\n\ - .word ._499\n\ - .word ._500\n\ - .word ._501\n\ - .word ._502\n\ - .word ._503\n\ -._498:\n\ - mov r0, #0x4\n\ - bl PrintStorageActionText\n\ - bl sub_809CE84\n\ - ldr r1, ._505 @ 0x2000000\n\ - mov r0, #0x1\n\ - strb r0, [r1, #0x4]\n\ - b ._597\n\ -._506:\n\ - .align 2, 0\n\ -._505:\n\ - .word 0x2000000\n\ -._499:\n\ - bl sub_809CF30\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x21\n\ - bls ._507 @cond_branch\n\ - b ._597\n\ -._507:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._510 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._511:\n\ - .align 2, 0\n\ -._510:\n\ - .word ._509\n\ -._509:\n\ - .word ._513\n\ - .word ._513\n\ - .word ._514\n\ - .word ._515\n\ - .word ._516\n\ - .word ._517\n\ - .word ._518\n\ - .word ._519\n\ - .word ._520\n\ - .word ._521\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._597\n\ - .word ._545\n\ -._513:\n\ - bl sub_8098A5C\n\ - ldr r0, ._547 @ sub_8096C84\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._548:\n\ - .align 2, 0\n\ -._547:\n\ - .word sub_8096C84+1\n\ -._516:\n\ - bl sub_809BE80\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._563 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_8098A5C\n\ - ldr r0, ._551 @ sub_80972A8\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._552:\n\ - .align 2, 0\n\ -._551:\n\ - .word sub_80972A8+1\n\ -._518:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_8098A5C\n\ - ldr r0, ._554 @ sub_80972FC\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._555:\n\ - .align 2, 0\n\ -._554:\n\ - .word sub_80972FC+1\n\ -._517:\n\ - bl sub_809BEBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._563 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_8098A5C\n\ - ldr r0, ._558 @ c3_0808DC50\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._559:\n\ - .align 2, 0\n\ -._558:\n\ - .word c3_0808DC50+1\n\ -._515:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_8098A5C\n\ - ldr r0, ._561 @ sub_8097390\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._562:\n\ - .align 2, 0\n\ -._561:\n\ - .word sub_8097390+1\n\ -._514:\n\ - bl sub_809BE80\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._563 @cond_branch\n\ - ldr r4, ._566 @ 0x2000000\n\ - ldr r1, ._566 + 4 @ 0x11f2\n\ - add r0, r4, r1\n\ - ldrh r0, [r0]\n\ - bl ItemIsMail\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._564 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_8098A5C\n\ - ldr r0, ._566 + 8 @ sub_809746C\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._567:\n\ - .align 2, 0\n\ -._566:\n\ - .word 0x2000000\n\ - .word 0x11f2\n\ - .word sub_809746C+1\n\ -._520:\n\ - bl sub_809BE80\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._568 @cond_branch\n\ -._563:\n\ - ldr r1, ._570 @ 0x2000000\n\ - mov r0, #0x2\n\ - strb r0, [r1, #0x4]\n\ - b ._597\n\ -._571:\n\ - .align 2, 0\n\ -._570:\n\ - .word 0x2000000\n\ -._568:\n\ - ldr r4, ._574 @ 0x2000000\n\ - ldr r1, ._574 + 4 @ 0x11f9\n\ - add r0, r4, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._572 @cond_branch\n\ - mov r0, #0x4\n\ - strb r0, [r4, #0x4]\n\ - b ._597\n\ -._575:\n\ - .align 2, 0\n\ -._574:\n\ - .word 0x2000000\n\ - .word 0x11f9\n\ -._572:\n\ - ldr r1, ._578 @ 0x11f2\n\ - add r0, r4, r1\n\ - ldrh r0, [r0]\n\ - bl ItemIsMail\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._576 @cond_branch\n\ -._564:\n\ - mov r0, #0x3\n\ - strb r0, [r4, #0x4]\n\ - b ._597\n\ -._579:\n\ - .align 2, 0\n\ -._578:\n\ - .word 0x11f2\n\ -._576:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._581 @ sub_8097594\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._582:\n\ - .align 2, 0\n\ -._581:\n\ - .word sub_8097594+1\n\ -._519:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._584 @ sub_8097788\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._585:\n\ - .align 2, 0\n\ -._584:\n\ - .word sub_8097788+1\n\ -._521:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._587 @ sub_80977E4\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._588:\n\ - .align 2, 0\n\ -._587:\n\ - .word sub_80977E4+1\n\ -._545:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_8098A5C\n\ - ldr r0, ._590 @ debug_sub_80A435C\n\ - bl SetPSSCallback\n\ - b ._597\n\ -._591:\n\ - .align 2, 0\n\ -._590:\n\ - .word debug_sub_80A435C+1\n\ -._500:\n\ - mov r0, #0x20\n\ - bl PlaySE\n\ - mov r0, #0xd\n\ - b ._593\n\ -._502:\n\ - mov r0, #0x20\n\ - bl PlaySE\n\ - mov r0, #0x11\n\ - b ._593\n\ -._501:\n\ - mov r0, #0x20\n\ - bl PlaySE\n\ - mov r0, #0x16\n\ -._593:\n\ - bl PrintStorageActionText\n\ - ldr r1, ._595 @ 0x2000000\n\ - mov r0, #0x5\n\ - strb r0, [r1, #0x4]\n\ - b ._597\n\ -._596:\n\ - .align 2, 0\n\ -._595:\n\ - .word 0x2000000\n\ -._503:\n\ - ldr r0, ._598 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0xf3\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._597 @cond_branch\n\ - bl sub_8098A5C\n\ - ldr r0, ._598 + 4 @ sub_8096C84\n\ - bl SetPSSCallback\n\ -._597:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._599:\n\ - .align 2, 0\n\ -._598:\n\ - .word gMain\n\ - .word sub_8096C84+1"); -} -#else void sub_8097078(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - PrintStorageActionText(PC_TEXT_IS_SELECTED); - sub_809CE84(); - gPokemonStorageSystemPtr->unk_0004 = 1; + case 0: + PrintStorageActionText(PC_TEXT_IS_SELECTED); + sub_809CE84(); + gPokemonStorageSystemPtr->unk_0004 = 1; + break; + case 1: + switch (sub_809CF30()) + { + case -1: + case 0: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); break; - case 1: - switch (sub_809CF30()) + case 3: + if (sub_809BE80()) { - case -1: - case 0: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 3: - if (sub_809BE80()) - { - gPokemonStorageSystemPtr->unk_0004 = 2; - } - else - { - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_80972A8); - } - break; - case 5: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_80972FC); - break; - case 4: - if (!sub_809BEBC()) - { - gPokemonStorageSystemPtr->unk_0004 = 2; - } - else - { - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(c3_0808DC50); - } - break; - case 2: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_8097390); - break; - case 1: - if (sub_809BE80()) - { - gPokemonStorageSystemPtr->unk_0004 = 2; - } - else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) - { - gPokemonStorageSystemPtr->unk_0004 = 3; - } - else - { - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_809746C); - } - break; - case 7: - if (sub_809BE80()) - { - gPokemonStorageSystemPtr->unk_0004 = 2; - } - else if (gPokemonStorageSystemPtr->unk_11f9) - { - gPokemonStorageSystemPtr->unk_0004 = 4; - } - else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) - { - gPokemonStorageSystemPtr->unk_0004 = 3; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097594); - } - break; - case 6: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097788); - break; - case 8: - PlaySE(SE_SELECT); - SetPSSCallback(sub_80977E4); - break; + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_80972A8); } break; - case 2: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - gPokemonStorageSystemPtr->unk_0004 = 5; + case 5: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_80972FC); break; case 4: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); - gPokemonStorageSystemPtr->unk_0004 = 5; + if (!sub_809BEBC()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(c3_0808DC50); + } break; - case 3: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - gPokemonStorageSystemPtr->unk_0004 = 5; + case 2: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097390); break; - case 5: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + case 1: + if (sub_809BE80()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + { + gPokemonStorageSystemPtr->unk_0004 = 3; + } + else { + PlaySE(SE_SELECT); sub_8098A5C(); - SetPSSCallback(sub_8096C84); + SetPSSCallback(sub_809746C); } break; + case 7: + if (sub_809BE80()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else if (gPokemonStorageSystemPtr->unk_11f9) + { + gPokemonStorageSystemPtr->unk_0004 = 4; + } + else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + { + gPokemonStorageSystemPtr->unk_0004 = 3; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097594); + } + break; + case 6: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097788); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(sub_80977E4); + break; +#if DEBUG + case 32: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(debug_sub_80A435C); + break; +#endif + } + break; + case 2: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + gPokemonStorageSystemPtr->unk_0004 = 5; + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); + gPokemonStorageSystemPtr->unk_0004 = 5; + break; + case 3: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + gPokemonStorageSystemPtr->unk_0004 = 5; + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; } } -#endif void sub_80972A8(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - sub_809B100(0); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (!sub_809B130()) - { - if (gUnknown_0203847C) - SetPSSCallback(sub_8097858); - else - SetPSSCallback(sub_8096C84); - } - break; + case 0: + sub_809B100(0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + if (gUnknown_0203847C) + SetPSSCallback(sub_8097858); + else + SetPSSCallback(sub_8096C84); + } + break; } } @@ -1737,19 +799,19 @@ void sub_80972FC(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - sub_809B100(1); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (!sub_809B130()) - { - if (gUnknown_0203847C) - SetPSSCallback(sub_8097858); - else - SetPSSCallback(sub_8096C84); - } - break; + case 0: + sub_809B100(1); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + if (gUnknown_0203847C) + SetPSSCallback(sub_8097858); + else + SetPSSCallback(sub_8096C84); + } + break; } } @@ -1757,17 +819,17 @@ void c3_0808DC50(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - sub_809B100(2); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (!sub_809B130()) - { - BoxSetMosaic(); - SetPSSCallback(sub_8096C84); - } - break; + case 0: + sub_809B100(2); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + BoxSetMosaic(); + SetPSSCallback(sub_8096C84); + } + break; } } @@ -1775,50 +837,50 @@ void sub_8097390(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - if (CalculatePlayerPartyCount() == 6) - { - PrintStorageActionText(PC_TEXT_PARTY_FULL); - gPokemonStorageSystemPtr->unk_0004 = 1; - } - else - { - sub_809B0E0(); - sub_809B100(0); - gPokemonStorageSystemPtr->unk_0004 = 2; - } - break; - case 1: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - case 2: - if (!sub_809B130()) - { - sub_809880C(); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 3: - if (!sub_8098830()) - { - sub_809B100(1); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 4: - if (!sub_809B130()) - { - sub_80987DC(); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 5: - SetPSSCallback(sub_8097004); - break; + case 0: + if (CalculatePlayerPartyCount() == 6) + { + PrintStorageActionText(PC_TEXT_PARTY_FULL); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + else + { + sub_809B0E0(); + sub_809B100(0); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + if (!sub_809B130()) + { + sub_809880C(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 3: + if (!sub_8098830()) + { + sub_809B100(1); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 4: + if (!sub_809B130()) + { + sub_80987DC(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 5: + SetPSSCallback(sub_8097004); + break; } } @@ -1828,60 +890,60 @@ void sub_809746C(void) switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3); - sub_809634C(gUnknown_0203847E); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - r4 = sub_8096368(); - if (r4 == 200); - else if (r4 == 201) + case 0: + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3); + sub_809634C(gUnknown_0203847E); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + r4 = sub_8096368(); + if (r4 == 200); + else if (r4 == 201) + { + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + SetPSSCallback(sub_8096C84); + } + else + { + if (sub_809B62C(r4)) { sub_8098A5C(); sub_809635C(); sub_8096310(); - SetPSSCallback(sub_8096C84); + gPokemonStorageSystemPtr->unk_0004 = 2; } else { - if (sub_809B62C(r4)) - { - sub_8098A5C(); - sub_809635C(); - sub_8096310(); - gPokemonStorageSystemPtr->unk_0004 = 2; - } - else - { - PrintStorageActionText(PC_TEXT_BOX_IS_FULL); - gPokemonStorageSystemPtr->unk_0004 = 4; - } - gUnknown_0203847E = r4; - } - break; - case 2: - party_compaction(); - sub_8099310(); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 3: - if (sub_8099374() == 0) - { - sub_809B6BC(); - BoxSetMosaic(); - sub_80987DC(); - SetPSSCallback(sub_8096C84); - } - break; - case 4: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - gPokemonStorageSystemPtr->unk_0004 = 1; + PrintStorageActionText(PC_TEXT_BOX_IS_FULL); + gPokemonStorageSystemPtr->unk_0004 = 4; } - break; + gUnknown_0203847E = r4; + } + break; + case 2: + party_compaction(); + sub_8099310(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 3: + if (sub_8099374() == 0) + { + sub_809B6BC(); + BoxSetMosaic(); + sub_80987DC(); + SetPSSCallback(sub_8096C84); + } + break; + case 4: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + break; } } @@ -1889,129 +951,129 @@ void sub_8097594(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - PrintStorageActionText(PC_TEXT_RELEASE_POKE); - sub_8098A38(1); - gPokemonStorageSystemPtr->unk_0004++; - // fallthrough - case 1: - switch (Menu_ProcessInputNoWrap()) - { - case -1: - case 1: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 0: - sub_8098A5C(); - sub_809B7D4(); - sub_809B6DC(); - gPokemonStorageSystemPtr->unk_0004++; - break; - } - break; - case 2: - sub_809B960(); - if (!sub_809B734()) - { - while (1) - { - s8 r0 = sub_809B960(); - if (r0 == 1) - { - gPokemonStorageSystemPtr->unk_0004++; - break; - } - if (r0 == 0) - { - gPokemonStorageSystemPtr->unk_0004 = 8; - break; - } - } - } - break; - case 3: - sub_809B760(); - sub_809801C(); - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 4: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_BYE_BYE); + case 0: + PrintStorageActionText(PC_TEXT_RELEASE_POKE); + sub_8098A38(1); + gPokemonStorageSystemPtr->unk_0004++; + // fallthrough + case 1: + switch (Menu_ProcessInputNoWrap()) + { + case -1: + case 1: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 0: + sub_8098A5C(); + sub_809B7D4(); + sub_809B6DC(); gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 5: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + break; + } + break; + case 2: + sub_809B960(); + if (!sub_809B734()) + { + while (1) { - sub_8098A5C(); - if (gUnknown_0203847C) + s8 r0 = sub_809B960(); + if (r0 == 1) { - party_compaction(); - sub_8099310(); gPokemonStorageSystemPtr->unk_0004++; + break; } - else + if (r0 == 0) { - gPokemonStorageSystemPtr->unk_0004 = 7; + gPokemonStorageSystemPtr->unk_0004 = 8; + break; } } - break; - case 6: - if (sub_8099374() == 0) - { - sub_809B440(); - BoxSetMosaic(); - sub_80987DC(); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 7: - SetPSSCallback(sub_8096C84); - break; - case 8: - PrintStorageActionText(PC_TEXT_WAS_RELEASED); + } + break; + case 3: + sub_809B760(); + sub_809801C(); + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 4: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_BYE_BYE); gPokemonStorageSystemPtr->unk_0004++; - break; - case 9: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_SURPRISE); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 10: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - sub_8098A5C(); - sub_8099958(); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 11: - if (!sub_8099990()) - { - sub_809B7AC(); - PrintStorageActionText(PC_TEXT_CAME_BACK); - gPokemonStorageSystemPtr->unk_0004++; - } - break; - case 12: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + } + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + if (gUnknown_0203847C) { - PrintStorageActionText(PC_TEXT_WORRIED); + party_compaction(); + sub_8099310(); gPokemonStorageSystemPtr->unk_0004++; } - break; - case 13: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + else { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); + gPokemonStorageSystemPtr->unk_0004 = 7; } - break; + } + break; + case 6: + if (sub_8099374() == 0) + { + sub_809B440(); + BoxSetMosaic(); + sub_80987DC(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 7: + SetPSSCallback(sub_8096C84); + break; + case 8: + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 9: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_SURPRISE); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 10: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + sub_8099958(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 11: + if (!sub_8099990()) + { + sub_809B7AC(); + PrintStorageActionText(PC_TEXT_CAME_BACK); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 12: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_WORRIED); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 13: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; } } @@ -2019,19 +1081,19 @@ void sub_8097788(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - sub_809BC18(); - BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (!UpdatePaletteFade()) - { - gUnknown_0203847F = 0; - gPokemonStorageSystemPtr->unk_0006 = 0; - SetMainCallback2(sub_8096B5C); - } - break; + case 0: + sub_809BC18(); + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + { + gUnknown_0203847F = 0; + gPokemonStorageSystemPtr->unk_0006 = 0; + SetMainCallback2(sub_8096B5C); + } + break; } } @@ -2039,22 +1101,22 @@ void sub_80977E4(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - PrintStorageActionText(PC_TEXT_MARK_POKE); - gPokemonStorageSystemPtr->unk_12bc.markings = gPokemonStorageSystemPtr->unk_11f7; - sub_80F7418(gPokemonStorageSystemPtr->unk_11f7, 0xb0, 0x10); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (!sub_80F7500()) - { - sub_80F7470(); - sub_8098A5C(); - sub_809BDD8(gPokemonStorageSystemPtr->unk_12bc.markings); - sub_809801C(); - SetPSSCallback(sub_8096C84); - } - break; + case 0: + PrintStorageActionText(PC_TEXT_MARK_POKE); + gPokemonStorageSystemPtr->unk_12bc.markings = gPokemonStorageSystemPtr->unk_11f7; + sub_80F7418(gPokemonStorageSystemPtr->unk_11f7, 0xb0, 0x10); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_80F7500()) + { + sub_80F7470(); + sub_8098A5C(); + sub_809BDD8(gPokemonStorageSystemPtr->unk_12bc.markings); + sub_809801C(); + SetPSSCallback(sub_8096C84); + } + break; } } @@ -2062,18 +1124,18 @@ void sub_8097858(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - party_compaction(); - sub_8099310(); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (sub_8099374() == 0) - { - sub_80987DC(); - SetPSSCallback(sub_8096C84); - } - break; + case 0: + party_compaction(); + sub_8099310(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (sub_8099374() == 0) + { + sub_80987DC(); + SetPSSCallback(sub_8096C84); + } + break; } } @@ -2081,36 +1143,36 @@ void sub_809789C(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); - sub_809CE84(); - gPokemonStorageSystemPtr->unk_0004++; + case 0: + PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); + sub_809CE84(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + switch (sub_809CF30()) + { + case -1: + case 0: + sub_809A860(TRUE); + sub_8098A5C(); + SetPSSCallback(sub_8096C84); break; - case 1: - switch (sub_809CF30()) - { - case -1: - case 0: - sub_809A860(TRUE); - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 11: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097B44); - break; - case 10: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_8097974); - break; - case 9: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_8097A64); - break; - } + case 11: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097B44); break; + case 10: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097974); + break; + case 9: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097A64); + break; + } + break; } } @@ -2118,55 +1180,55 @@ void sub_8097974(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - sub_8098A80(); - PrintStorageActionText(PC_TEXT_PICK_A_THEME); + case 0: + sub_8098A80(); + PrintStorageActionText(PC_TEXT_PICK_A_THEME); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + gPokemonStorageSystemPtr->unk_0d5e = sub_809CF30(); + switch (gPokemonStorageSystemPtr->unk_0d5e) + { + case -1: + sub_809A860(TRUE); + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 12 ... 15: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_0d5e -= 12; + sub_8098AA8(gPokemonStorageSystemPtr->unk_0d5e); + PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); gPokemonStorageSystemPtr->unk_0004++; break; - case 1: - gPokemonStorageSystemPtr->unk_0d5e = sub_809CF30(); - switch (gPokemonStorageSystemPtr->unk_0d5e) - { - case -1: - sub_809A860(TRUE); - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 12 ... 15: - PlaySE(SE_SELECT); - gPokemonStorageSystemPtr->unk_0d5e -= 12; - sub_8098AA8(gPokemonStorageSystemPtr->unk_0d5e); - PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); - gPokemonStorageSystemPtr->unk_0004++; - break; - } + } + break; + case 2: + gPokemonStorageSystemPtr->unk_0d60 = sub_809CF30(); + switch (gPokemonStorageSystemPtr->unk_0d60) + { + case -1: + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0004 = 0; break; - case 2: - gPokemonStorageSystemPtr->unk_0d60 = sub_809CF30(); - switch (gPokemonStorageSystemPtr->unk_0d60) - { - case -1: - sub_8098A5C(); - gPokemonStorageSystemPtr->unk_0004 = 0; - break; - case -2: - break; - default: - PlaySE(SE_SELECT); - sub_8098A5C(); - gPokemonStorageSystemPtr->unk_0d60 -= 16; - sub_8099DCC(gPokemonStorageSystemPtr->unk_0d60); - gPokemonStorageSystemPtr->unk_0004++; - break; - } + case -2: break; - case 3: - if (!sub_8099E08()) - { - sub_809A860(TRUE); - SetPSSCallback(sub_8096C84); - } + default: + PlaySE(SE_SELECT); + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0d60 -= 16; + sub_8099DCC(gPokemonStorageSystemPtr->unk_0d60); + gPokemonStorageSystemPtr->unk_0004++; break; + } + break; + case 3: + if (!sub_8099E08()) + { + sub_809A860(TRUE); + SetPSSCallback(sub_8096C84); + } + break; } } @@ -2174,45 +1236,45 @@ void sub_8097A64(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); - sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3); - sub_809634C(gPokemonStorage.currentBox); - gPokemonStorageSystemPtr->unk_0004++; + case 0: + PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); + sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3); + sub_809634C(gPokemonStorage.currentBox); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + gPokemonStorageSystemPtr->unk_08b2 = sub_8096368(); + switch (gPokemonStorageSystemPtr->unk_08b2) + { + case 200: break; - case 1: - gPokemonStorageSystemPtr->unk_08b2 = sub_8096368(); - switch (gPokemonStorageSystemPtr->unk_08b2) + default: + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + if (gPokemonStorageSystemPtr->unk_08b2 == 201 || gPokemonStorageSystemPtr->unk_08b2 == gPokemonStorage.currentBox) { - case 200: - break; - default: - sub_8098A5C(); - sub_809635C(); - sub_8096310(); - if (gPokemonStorageSystemPtr->unk_08b2 == 201 || gPokemonStorageSystemPtr->unk_08b2 == gPokemonStorage.currentBox) - { - sub_809A860(TRUE); - SetPSSCallback(sub_8096C84); - } - else - { - gPokemonStorageSystemPtr->unk_0004++; - } - break; + sub_809A860(TRUE); + SetPSSCallback(sub_8096C84); } - break; - case 2: - sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 3: - if (!sub_8099D34()) + else { - gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2; - SetPSSCallback(sub_8096C84); + gPokemonStorageSystemPtr->unk_0004++; } break; + } + break; + case 2: + sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 3: + if (!sub_8099D34()) + { + gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2; + SetPSSCallback(sub_8096C84); + } + break; } } @@ -2220,19 +1282,19 @@ void sub_8097B44(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - sub_809BB90(); - BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); - gPokemonStorageSystemPtr->unk_0004++; - break; - case 1: - if (!UpdatePaletteFade()) - { - gUnknown_0203847F = 1; - gPokemonStorageSystemPtr->unk_0006 = 1; - SetMainCallback2(sub_8096B5C); - } - break; + case 0: + sub_809BB90(); + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + { + gUnknown_0203847F = 1; + gPokemonStorageSystemPtr->unk_0006 = 1; + SetMainCallback2(sub_8096B5C); + } + break; } } @@ -2240,110 +1302,117 @@ void sub_8097BA0(void) { switch (gPokemonStorageSystemPtr->unk_0004) { - case 0: - if (sub_809BF20()) - { - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - gPokemonStorageSystemPtr->unk_0004 = 1; - } - else - { - PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_EXIT_BOX); - sub_8098A38(0); - gPokemonStorageSystemPtr->unk_0004 = 2; - } - break; + case 0: + if (sub_809BF20()) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + else + { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_EXIT_BOX); + sub_8098A38(0); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + switch (Menu_ProcessInputNoWrap()) + { case 1: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - case 2: - switch (Menu_ProcessInputNoWrap()) - { - case 1: - case -1: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 0: - PlaySE(SE_PC_OFF); - sub_8098A5C(); - gPokemonStorageSystemPtr->unk_0004++; - break; - } + case -1: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); break; - case 3: - gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e; - gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; - gPokemonStorageSystemPtr->unk_000c.unk04 = 20; - gPokemonStorageSystemPtr->unk_000c.unk06 = 0; - sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c); + case 0: + PlaySE(SE_PC_OFF); + sub_8098A5C(); gPokemonStorageSystemPtr->unk_0004++; break; - case 4: - if (sub_80C5F98()) - { - gPlayerPartyCount = CalculatePlayerPartyCount(); - SetMainCallback2(sub_80961A8); - } - break; + } + break; + case 3: + gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e; + gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; + gPokemonStorageSystemPtr->unk_000c.unk04 = 20; + gPokemonStorageSystemPtr->unk_000c.unk06 = 0; + sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 4: + if (sub_80C5F98()) + { + gPlayerPartyCount = CalculatePlayerPartyCount(); + SetMainCallback2(sub_80961A8); + } + break; } } -void sub_8097CC0(void) { - switch (gPokemonStorageSystemPtr->unk_0004) { +void sub_8097CC0(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + if (sub_809BF20()) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + else + { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_CONTINUE_BOX); + sub_8098A38(0); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + switch (Menu_ProcessInputNoWrap()) + { case 0: - if (sub_809BF20()) { - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - gPokemonStorageSystemPtr->unk_0004 = 1; - } - else { - PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_CONTINUE_BOX); - sub_8098A38(0); - gPokemonStorageSystemPtr->unk_0004 = 2; - } + sub_8098A5C(); + SetPSSCallback(sub_8096C84); break; + case -1: case 1: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - case 2: - switch (Menu_ProcessInputNoWrap()) { - case 0: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case -1: - case 1: - PlaySE(SE_PC_OFF); - sub_8098A5C(); - gPokemonStorageSystemPtr->unk_0004++; - break; - } - break; - case 3: - gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e; - gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; - gPokemonStorageSystemPtr->unk_000c.unk04 = 20; - gPokemonStorageSystemPtr->unk_000c.unk06 = 0; - sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c); + PlaySE(SE_PC_OFF); + sub_8098A5C(); gPokemonStorageSystemPtr->unk_0004++; break; - case 4: - if (sub_80C5F98()) { - gPlayerPartyCount = CalculatePlayerPartyCount(); - SetMainCallback2(sub_80961A8); - } - break; + } + break; + case 3: + gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e; + gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; + gPokemonStorageSystemPtr->unk_000c.unk04 = 20; + gPokemonStorageSystemPtr->unk_000c.unk06 = 0; + sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 4: + if (sub_80C5F98()) + { + gPlayerPartyCount = CalculatePlayerPartyCount(); + SetMainCallback2(sub_80961A8); + } + break; } } @@ -2826,28 +1895,29 @@ bool8 sub_8098830(void) { switch (gPokemonStorageSystemPtr->unk_08ae) { - case 0: - if (!sub_8098520()) - { - sub_809B068(); - gPokemonStorageSystemPtr->unk_08ae++; - } - break; - case 1: - if (!sub_809AC00()) - { - if (gPokemonStorageSystemPtr->unk_11f6) - BoxSetMosaic(); - gPokemonStorageSystemPtr->unk_08ae++; - } - break; - case 2: - return FALSE; + case 0: + if (!sub_8098520()) + { + sub_809B068(); + gPokemonStorageSystemPtr->unk_08ae++; + } + break; + case 1: + if (!sub_809AC00()) + { + if (gPokemonStorageSystemPtr->unk_11f6) + BoxSetMosaic(); + gPokemonStorageSystemPtr->unk_08ae++; + } + break; + case 2: + return FALSE; } return TRUE; } -const struct StorageAction gPCStorageActionTexts[] = { +const struct StorageAction gPCStorageActionTexts[] = +{ {PCText_ExitBox, 0}, {PCText_WhatYouDo, 0}, {PCText_PickATheme, 0}, @@ -2873,41 +1943,37 @@ const struct StorageAction gPCStorageActionTexts[] = { {PCText_PleaseRemoveMail, 0} }; -void PrintStorageActionText(u8 index) { +void PrintStorageActionText(u8 index) +{ u8 *ptr; Menu_DrawStdWindowFrame(10, 16, 29, 19); switch (gPCStorageActionTexts[index].format) { - - case PC_TEXT_FMT_UNK_02: - ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); - ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa); - break; - - case PC_TEXT_FMT_UNK_05: - ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); - ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_26e4); - break; - - case PC_TEXT_FMT_MON_NAME: - // {var} + " is selected." - ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_11fa); - ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); - break; - - case PC_TEXT_FMT_MON_NAME_2: - // {var} + " was released." - ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_26e4); + case PC_TEXT_FMT_UNK_02: + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa); + break; + case PC_TEXT_FMT_UNK_05: + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_26e4); + break; + case PC_TEXT_FMT_MON_NAME: + // {var} + " is selected." + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_11fa); + ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); + break; + case PC_TEXT_FMT_MON_NAME_2: + // {var} + " was released." + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_26e4); #if ENGLISH - ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); #elif GERMAN - ptr = de_sub_8073174(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = de_sub_8073174(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); #endif - break; - - case PC_TEXT_FMT_UNK_03: + break; + case PC_TEXT_FMT_UNK_03: { const u8 *stringLength; const u8 *text; @@ -2919,10 +1985,8 @@ void PrintStorageActionText(u8 index) { ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa); ptr = StringCopy(ptr, stringLength); } - break; - - case PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK: - // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1) + break; + case PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK: { const u8 *stringLength; const u8 *text; @@ -2934,12 +1998,11 @@ void PrintStorageActionText(u8 index) { ptr = StringCopy(ptr - 1, gPokemonStorageSystemPtr->unk_26e4); ptr = StringCopy(ptr, stringLength); } - break; - - case PC_TEXT_FMT_NORMAL: - default: - ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); - break; + break; + case PC_TEXT_FMT_NORMAL: + default: + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + break; } while (ptr < gPokemonStorageSystemPtr->unk_26a6) @@ -3029,30 +2092,30 @@ void sub_8098AA8(u8 a0) sub_809CDCC(); switch (a0) { - case 0: - sub_809CDEC(16); - sub_809CDEC(17); - sub_809CDEC(18); - sub_809CDEC(19); - break; - case 1: - sub_809CDEC(20); - sub_809CDEC(21); - sub_809CDEC(22); - sub_809CDEC(23); - break; - case 2: - sub_809CDEC(24); - sub_809CDEC(25); - sub_809CDEC(26); - sub_809CDEC(27); - break; - case 3: - sub_809CDEC(28); - sub_809CDEC(29); - sub_809CDEC(30); - sub_809CDEC(31); - break; + case 0: + sub_809CDEC(16); + sub_809CDEC(17); + sub_809CDEC(18); + sub_809CDEC(19); + break; + case 1: + sub_809CDEC(20); + sub_809CDEC(21); + sub_809CDEC(22); + sub_809CDEC(23); + break; + case 2: + sub_809CDEC(24); + sub_809CDEC(25); + sub_809CDEC(26); + sub_809CDEC(27); + break; + case 3: + sub_809CDEC(28); + sub_809CDEC(29); + sub_809CDEC(30); + sub_809CDEC(31); + break; } sub_809CE84(); } diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 19fddc0f7..2f9f79a54 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -2101,7 +2101,7 @@ void sub_809C04C(void *pokemon, u8 a1) buf[1] = 0x06; // size buf[2] = 0x04; buf = gPokemonStorageSystemPtr->unk_127a + 8; - buf = StringCopy(buf, ItemId_GetItem(gPokemonStorageSystemPtr->unk_11f2)->name); + buf = StringCopy(buf, ItemId_GetName(gPokemonStorageSystemPtr->unk_11f2)); buf[0] = EXT_CTRL_CODE_BEGIN; buf[1] = 0x07; // UNKNOWN_7; buf += 2; diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 9c621780a..0acf465f6 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -41,11 +41,11 @@ static void sub_80A0090(struct Pokemon *); static void sub_80A015C(struct Pokemon *); static void sub_809DE44(void); static void sub_809EB40(u8); -/*static*/ void sub_809EBC4(void); -/*static*/ void sub_809E044(void); +static void sub_809EBC4(void); +static void sub_809E044(void); static void sub_80A1D84(struct Pokemon *); -/*static*/ void sub_80A18C4(void); -/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void); +static void sub_80A18C4(void); +static bool8 LoadPokemonSummaryScreenGraphics(void); static bool8 MonKnowsMultipleMoves(struct Pokemon *); static void PrintSummaryWindowHeaderText(void); static void sub_80A1DCC(struct Pokemon *); @@ -63,8 +63,8 @@ static void PrintHeldItemName(u16, u8, u8); static void PrintNumRibbons(struct Pokemon *); static void DrawExperienceProgressBar(struct Pokemon *, u8, u8); static void sub_809E13C(u8 taskId); -/*static*/ void sub_80A1950(void); -/*static*/ void sub_809DE64(void); +static void sub_80A1950(void); +static void sub_809DE64(void); static void SummaryScreenHandleAButton(u8); static void SummaryScreenHandleUpDownInput(u8, s8); static bool8 sub_809F7D0(u8); @@ -571,51 +571,17 @@ static const u8 sUnknown_083C15BC[] = { -1, 15, 0, 10, }; -#if DEBUG -__attribute__((naked)) -void sub_809D844(void) -{ - asm("\ - push {lr}\n\ - add sp, sp, #0xfffffffc\n\ - bl RunTasks\n\ - bl AnimateSprites\n\ - bl BuildOamBuffer\n\ - bl UpdatePaletteFade\n\ - ldr r0, ._2 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1 @cond_branch\n\ - ldr r0, ._2 + 4 @ gLink\n\ - ldr r1, ._2 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x3\n\ - str r1, [sp]\n\ - mov r1, #0x14\n\ - mov r2, #0x1\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1:\n\ - add sp, sp, #0x4\n\ - pop {r0}\n\ - bx r0\n\ -._3:\n\ - .align 2, 0\n\ -._2:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void sub_809D844(void) { RunTasks(); AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); -} +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 20, 1, 2, 3); #endif +} void sub_809D85C(void) { @@ -647,13 +613,9 @@ void ShowPokemonSummaryScreen(struct Pokemon *party, u8 monIndex, u8 maxMonIndex pssData.disableMoveOrderEditing = FALSE; if (mode >= PSS_MODE_PC_NORMAL) - { pssData.usingPC = TRUE; - } else - { pssData.usingPC = FALSE; - } switch (mode) { @@ -725,491 +687,6 @@ void sub_809DA1C(void) } } -#if DEBUG -__attribute__((naked)) -bool8 sub_809DA84(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - add sp, sp, #0xfffffff8\n\ - ldr r1, ._52 @ gMain\n\ - ldr r2, ._52 + 4 @ 0x43c\n\ - add r0, r1, r2\n\ - ldrb r0, [r0]\n\ - mov ip, r1\n\ - cmp r0, #0x16\n\ - bls ._50 @cond_branch\n\ - b ._51\n\ -._50:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._52 + 8 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._53:\n\ - .align 2, 0\n\ -._52:\n\ - .word gMain\n\ - .word 0x43c\n\ - .word ._54\n\ -._54:\n\ - .word ._55\n\ - .word ._56\n\ - .word ._57\n\ - .word ._58\n\ - .word ._59\n\ - .word ._60\n\ - .word ._61\n\ - .word ._62\n\ - .word ._63\n\ - .word ._64\n\ - .word ._65\n\ - .word ._66\n\ - .word ._67\n\ - .word ._68\n\ - .word ._69\n\ - .word ._70\n\ - .word ._71\n\ - .word ._72\n\ - .word ._73\n\ - .word ._74\n\ - .word ._75\n\ - .word ._76\n\ - .word ._77\n\ -._55:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl ResetSpriteData\n\ - b ._146\n\ -._56:\n\ - bl ScanlineEffect_Stop\n\ - ldr r1, ._80 @ gMain\n\ - ldr r2, ._80 + 4 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._153\n\ -._81:\n\ - .align 2, 0\n\ -._80:\n\ - .word gMain\n\ - .word 0x43c\n\ -._57:\n\ - bl FreeAllSpritePalettes\n\ - b ._146\n\ -._58:\n\ - mov r2, #0xc0\n\ - lsl r2, r2, #0x13\n\ - mov r3, #0x80\n\ - lsl r3, r3, #0x9\n\ - mov r5, #0x0\n\ - ldr r1, ._85 @ 0x40000d4\n\ - mov r4, #0x80\n\ - lsl r4, r4, #0x5\n\ - ldr r6, ._85 + 4 @ 0x85000400\n\ - mov r7, #0x85\n\ - lsl r7, r7, #0x18\n\ -._83:\n\ - str r5, [sp, #0x4]\n\ - add r0, sp, #0x4\n\ - str r0, [r1]\n\ - str r2, [r1, #0x4]\n\ - str r6, [r1, #0x8]\n\ - ldr r0, [r1, #0x8]\n\ - add r2, r2, r4\n\ - sub r3, r3, r4\n\ - cmp r3, r4\n\ - bhi ._83 @cond_branch\n\ - str r5, [sp, #0x4]\n\ - add r0, sp, #0x4\n\ - str r0, [r1]\n\ - str r2, [r1, #0x4]\n\ - lsr r0, r3, #0x2\n\ - orr r0, r0, r7\n\ - str r0, [r1, #0x8]\n\ - ldr r0, [r1, #0x8]\n\ - ldr r1, ._85 + 8 @ 0x43c\n\ - add r1, r1, ip\n\ - b ._153\n\ -._86:\n\ - .align 2, 0\n\ -._85:\n\ - .word 0x40000d4\n\ - .word 0x85000400\n\ - .word 0x43c\n\ -._59:\n\ - bl sub_809DE64\n\ - ldr r1, ._88 @ gMain\n\ - ldr r2, ._88 + 4 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._153\n\ -._89:\n\ - .align 2, 0\n\ -._88:\n\ - .word gMain\n\ - .word 0x43c\n\ -._60:\n\ - ldr r0, ._91 @ gWindowTemplate_81E6E6C\n\ - bl Text_LoadWindowTemplate\n\ - b ._146\n\ -._92:\n\ - .align 2, 0\n\ -._91:\n\ - .word gWindowTemplate_81E6E6C\n\ -._61:\n\ - ldr r0, ._94 @ gWindowTemplate_81E6E6C\n\ - bl MultistepInitMenuWindowBegin\n\ - ldr r1, ._94 + 4 @ gMain\n\ - ldr r2, ._94 + 8 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._153\n\ -._95:\n\ - .align 2, 0\n\ -._94:\n\ - .word gWindowTemplate_81E6E6C\n\ - .word gMain\n\ - .word 0x43c\n\ -._62:\n\ - bl MultistepInitMenuWindowContinue\n\ - cmp r0, #0\n\ - bne ._96 @cond_branch\n\ - b ._157\n\ -._96:\n\ - b ._146\n\ -._63:\n\ - bl sub_809DA1C\n\ - ldr r1, ._100 @ gMain\n\ - ldr r2, ._100 + 4 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._153\n\ -._101:\n\ - .align 2, 0\n\ -._100:\n\ - .word gMain\n\ - .word 0x43c\n\ -._64:\n\ - ldr r1, ._103 @ gSummaryScreenTextTiles\n\ - ldr r2, ._103 + 4 @ 0x600d000\n\ - ldr r0, ._103 + 8 @ 0x40000d4\n\ - str r1, [r0]\n\ - str r2, [r0, #0x4]\n\ - ldr r1, ._103 + 12 @ 0x800000a0\n\ - str r1, [r0, #0x8]\n\ - ldr r1, [r0, #0x8]\n\ - ldr r1, ._103 + 16 @ sSummaryScreenButtonTiles\n\ - ldr r2, ._103 + 20 @ 0x600d140\n\ - str r1, [r0]\n\ - str r2, [r0, #0x4]\n\ - ldr r1, ._103 + 24 @ 0x80000080\n\ - str r1, [r0, #0x8]\n\ - ldr r0, [r0, #0x8]\n\ - ldr r0, ._103 + 28 @ \n\ - add r0, r0, #0x74\n\ - mov r1, #0x0\n\ - strb r1, [r0]\n\ - ldr r1, ._103 + 32 @ \n\ - add r1, r1, ip\n\ - b ._153\n\ -._104:\n\ - .align 2, 0\n\ -._103:\n\ - .word gSummaryScreenTextTiles\n\ - .word 0x600d000\n\ - .word 0x40000d4\n\ - .word 0x800000a0\n\ - .word sSummaryScreenButtonTiles\n\ - .word 0x600d140\n\ - .word 0x80000080\n\ - .word +0x2018000\n\ - .word 0x43c\n\ -._65:\n\ - bl LoadPokemonSummaryScreenGraphics\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._105 @cond_branch\n\ - b ._157\n\ -._105:\n\ - ldr r0, ._108 @ \n\ - add r0, r0, #0x74\n\ - mov r1, #0x0\n\ - strb r1, [r0]\n\ - b ._146\n\ -._109:\n\ - .align 2, 0\n\ -._108:\n\ - .word +0x2018000\n\ -._66:\n\ - bl sub_80A18C4\n\ - ldr r1, ._111 @ gMain\n\ - ldr r2, ._111 + 4 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._153\n\ -._112:\n\ - .align 2, 0\n\ -._111:\n\ - .word gMain\n\ - .word 0x43c\n\ -._67:\n\ - ldr r4, ._115 @ \n\ - add r0, r4, #0\n\ - bl sub_809F678\n\ - add r0, r4, #0\n\ - bl GetMonStatusAndPokerus\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._113 @cond_branch\n\ - mov r0, #0x0\n\ - bl sub_80A12D0\n\ - b ._114\n\ -._116:\n\ - .align 2, 0\n\ -._115:\n\ - .word +0x2018010\n\ -._113:\n\ - mov r0, #0xa\n\ - bl sub_80A12D0\n\ -._114:\n\ - ldr r0, ._118 @ \n\ - bl DrawPokerusSurvivorDot\n\ - b ._146\n\ -._119:\n\ - .align 2, 0\n\ -._118:\n\ - .word +0x2018010\n\ -._68:\n\ - bl sub_80A1950\n\ - ldr r0, ._121 @ \n\ - bl sub_80A1D84\n\ - ldr r1, ._121 + 4 @ \n\ - ldr r2, ._121 + 8 @ \n\ - add r1, r1, r2\n\ - b ._153\n\ -._122:\n\ - .align 2, 0\n\ -._121:\n\ - .word +0x2018010\n\ - .word gMain\n\ - .word 0x43c\n\ -._69:\n\ - ldr r4, ._124 @ \n\ - add r0, r4, #0\n\ - bl sub_80A1DE8\n\ - add r4, r4, #0x64\n\ - mov r0, #0x0\n\ - strb r0, [r4]\n\ - b ._146\n\ -._125:\n\ - .align 2, 0\n\ -._124:\n\ - .word +0x2018010\n\ -._70:\n\ - ldr r4, ._129 @ \n\ - add r5, r4, #0\n\ - add r5, r5, #0x64\n\ - add r0, r4, #0\n\ - add r1, r5, #0\n\ - bl sub_809F6B4\n\ - sub r4, r4, #0x10\n\ - strb r0, [r4, #0xc]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._126 @cond_branch\n\ - b ._157\n\ -._126:\n\ - mov r0, #0x0\n\ - strb r0, [r5]\n\ - ldr r1, ._129 + 4 @ \n\ - ldr r2, ._129 + 8 @ \n\ - add r1, r1, r2\n\ - b ._153\n\ -._130:\n\ - .align 2, 0\n\ -._129:\n\ - .word +0x2018010\n\ - .word gMain\n\ - .word 0x43c\n\ -._71:\n\ - bl sub_809E044\n\ - bl DrawSummaryScreenNavigationDots\n\ - b ._146\n\ -._72:\n\ - ldr r1, ._134 @ \n\ - ldrb r0, [r1, #0xb]\n\ - cmp r0, #0x1\n\ - bhi ._132 @cond_branch\n\ - ldr r0, ._134 + 4 @ \n\ - ldrb r1, [r1, #0xb]\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - ldr r0, [r1]\n\ - bl _call_via_r0\n\ -._132:\n\ - ldr r1, ._134 + 8 @ \n\ - ldr r2, ._134 + 12 @ \n\ - add r1, r1, r2\n\ - b ._153\n\ -._135:\n\ - .align 2, 0\n\ -._134:\n\ - .word +0x2018000\n\ - .word sUnknown_083C1580\n\ - .word gMain\n\ - .word 0x43c\n\ -._73:\n\ - ldr r0, ._137 @ \n\ - bl sub_809FAC8\n\ - b ._146\n\ -._138:\n\ - .align 2, 0\n\ -._137:\n\ - .word +0x2018010\n\ -._74:\n\ - ldr r2, ._140 @ sUnknown_083C1598\n\ - ldr r0, ._140 + 4 @ \n\ - ldrb r1, [r0, #0xb]\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r2\n\ - add r0, r0, #0x10\n\ - ldr r1, [r1]\n\ - bl _call_via_r1\n\ - ldr r1, ._140 + 8 @ \n\ - ldr r2, ._140 + 12 @ \n\ - add r1, r1, r2\n\ - b ._153\n\ -._141:\n\ - .align 2, 0\n\ -._140:\n\ - .word sUnknown_083C1598\n\ - .word +0x2018000\n\ - .word gMain\n\ - .word 0x43c\n\ -._75:\n\ - ldr r0, ._144 @ \n\ - mov r1, #0x2d\n\ - bl GetMonData\n\ - add r1, r0, #0\n\ - cmp r1, #0\n\ - beq ._142 @cond_branch\n\ - ldr r1, ._144 + 4 @ \n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x1\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ - b ._146\n\ -._145:\n\ - .align 2, 0\n\ -._144:\n\ - .word +0x2018010\n\ - .word gBattle_BG3_X\n\ -._142:\n\ - ldr r0, ._147 @ gBattle_BG3_X\n\ - strh r1, [r0]\n\ - b ._146\n\ -._148:\n\ - .align 2, 0\n\ -._147:\n\ - .word gBattle_BG3_X\n\ -._76:\n\ - bl sub_809EBC4\n\ - ldr r0, ._151 @ \n\ - add r0, r0, #0x79\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._149 @cond_branch\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - bl sub_80A1488\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - bl sub_80A1654\n\ - b ._150\n\ -._152:\n\ - .align 2, 0\n\ -._151:\n\ - .word +0x2018000\n\ -._149:\n\ - mov r0, #0xa\n\ - mov r1, #0x0\n\ - bl sub_80A1488\n\ - mov r0, #0xa\n\ - mov r1, #0x0\n\ - bl sub_80A1654\n\ -._150:\n\ - bl PrintSummaryWindowHeaderText\n\ - ldr r1, ._154 @ gMain\n\ - ldr r2, ._154 + 4 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._153\n\ -._155:\n\ - .align 2, 0\n\ -._154:\n\ - .word gMain\n\ - .word 0x43c\n\ -._77:\n\ - bl sub_8055870\n\ - cmp r0, #0x1\n\ - beq ._157 @cond_branch\n\ -._146:\n\ - ldr r1, ._158 @ gMain\n\ - ldr r0, ._158 + 4 @ 0x43c\n\ - add r1, r1, r0\n\ -._153:\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - b ._157\n\ -._159:\n\ - .align 2, 0\n\ -._158:\n\ - .word gMain\n\ - .word 0x43c\n\ -._51:\n\ - ldr r0, ._162 @ sub_809D85C\n\ - bl SetVBlankCallback\n\ - mov r0, #0x1\n\ - str r0, [sp]\n\ - mov r0, #0xff\n\ - mov r1, #0x0\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginHardwarePaletteFade\n\ - ldr r0, ._162 + 4 @ sub_809D844\n\ - bl SetMainCallback2\n\ - ldr r2, ._162 + 8 @ gPaletteFade\n\ - ldrb r1, [r2, #0x8]\n\ - mov r0, #0x7f\n\ - and r0, r0, r1\n\ - strb r0, [r2, #0x8]\n\ - ldr r0, ._162 + 12 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._160 @cond_branch\n\ - ldr r0, ._162 + 16 @ 0x600dde0\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x8\n\ - ldr r2, ._162 + 20 @ 0x600f000\n\ - mov r3, #0x3\n\ - bl debug_sub_8008218\n\ -._160:\n\ - mov r0, #0x1\n\ - b ._161\n\ -._163:\n\ - .align 2, 0\n\ -._162:\n\ - .word sub_809D85C+1\n\ - .word sub_809D844+1\n\ - .word gPaletteFade\n\ - .word gLinkOpen\n\ - .word 0x600dde0\n\ - .word 0x600f000\n\ -._157:\n\ - mov r0, #0x0\n\ -._161:\n\ - add sp, sp, #0x8\n\ - pop {r4, r5, r6, r7}\n\ - pop {r1}\n\ - bx r1"); -} -#else bool8 sub_809DA84(void) { switch (gMain.state) @@ -1245,9 +722,7 @@ bool8 sub_809DA84(void) break; case 7: if (MultistepInitMenuWindowContinue()) - { gMain.state++; - } break; case 8: sub_809DA1C(); @@ -1273,14 +748,9 @@ bool8 sub_809DA84(void) case 12: sub_809F678(&pssData.loadedMon); if (!GetMonStatusAndPokerus(&pssData.loadedMon)) - { sub_80A12D0(0); - } else - { sub_80A12D0(10); - } - DrawPokerusSurvivorDot(&pssData.loadedMon); gMain.state++; break; @@ -1308,10 +778,7 @@ bool8 sub_809DA84(void) break; case 17: if (pssData.page <= PSS_PAGE_SKILLS) - { sUnknown_083C1580[pssData.page](); - } - gMain.state++; break; case 18: @@ -1324,14 +791,9 @@ bool8 sub_809DA84(void) break; case 20: if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) - { gBattle_BG3_X = 256; - } else - { gBattle_BG3_X = 0; - } - gMain.state++; break; case 21: @@ -1346,28 +808,27 @@ bool8 sub_809DA84(void) sub_80A1488(10, 0); sub_80A1654(10, 0); } - PrintSummaryWindowHeaderText(); gMain.state++; break; case 22: if (sub_8055870() != TRUE) - { gMain.state++; - } break; default: SetVBlankCallback(sub_809D85C); BeginHardwarePaletteFade(0xFF, 0, 16, 0, 1); SetMainCallback2(sub_809D844); gPaletteFade.bufferTransferDisabled = 0; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0xDDE0), 0x8000, (void *)(VRAM + 0xF000), 3); +#endif return TRUE; - break; } return FALSE; } -#endif static void sub_809DE44(void) { @@ -1375,7 +836,7 @@ static void sub_809DE44(void) ; } -/*static*/ void sub_809DE64(void) +static void sub_809DE64(void) { REG_BG0CNT = 0x1E08; REG_BG1CNT = 0x4801; @@ -1402,7 +863,7 @@ static void sub_809DE44(void) REG_DISPCNT = 0x1F40; } -/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void) +static bool8 LoadPokemonSummaryScreenGraphics(void) { switch (pssData.loadGfxState) { @@ -1452,7 +913,7 @@ static void sub_809DE44(void) return FALSE; } -/*static*/ void sub_809E044(void) +static void sub_809E044(void) { LoadPalette(gUnknownPalette_81E6692 + 14, 129, 2); LoadPalette(gUnknownPalette_81E6692 + 15, 136, 2); @@ -1517,14 +978,9 @@ static void SummaryScreenHandleKeyInput(u8 taskId) else if (gMain.newKeys & A_BUTTON) { if (pssData.page >= PSS_PAGE_BATTLE_MOVES) - { SummaryScreenHandleAButton(taskId); - } - if (pssData.page == PSS_PAGE_INFO) - { SummaryScreenExit(taskId); - } } else if (gMain.newKeys & B_BUTTON) { @@ -1550,10 +1006,7 @@ static void sub_809E260(u8 taskId) else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1) { if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) - { Menu_EraseWindowRect(0, 14, 9, 18); - } - SummaryScreenHandleLeftRightInput(taskId, -1); } else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2) @@ -1561,10 +1014,7 @@ static void sub_809E260(u8 taskId) if (pssData.page != pssData.lastPage) { if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) - { Menu_EraseWindowRect(0, 14, 9, 18); - } - SummaryScreenHandleLeftRightInput(taskId, 1); } } @@ -1645,9 +1095,7 @@ static bool8 MonKnowsMultipleMoves(struct Pokemon *mon) for (i = 1; i < 4; i++) { if (GetMonMove(mon, i)) - { return TRUE; - } } return FALSE; @@ -1758,13 +1206,9 @@ static void sub_809E83C(u8 taskId, s8 b) if (pssData.selectedMoveIndex != pssData.switchMoveIndex) { if (pssData.usingPC == FALSE) - { sub_809E5C4(); - } else - { sub_809E6D8(); - } pssData.selectedMoveIndex = pssData.switchMoveIndex; sub_809F678(&pssData.loadedMon); @@ -2031,7 +1475,7 @@ static void sub_809EB40(u8 taskId) } } -/*static*/ void sub_809EBC4(void) +static void sub_809EBC4(void) { if (pssData.page != PSS_PAGE_INFO) { @@ -2060,36 +1504,24 @@ void sub_809EC38(u8 taskId) if (pssData.bgToggle == 0) { if (pssData.page != PSS_PAGE_INFO) - { gBattle_BG2_X = 0x100; - } if (pssData.page == PSS_PAGE_SKILLS) - { REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0x800; - } if (pssData.page == PSS_PAGE_BATTLE_MOVES) - { REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0xA00; - } } else { if (pssData.page != PSS_PAGE_INFO) - { gBattle_BG1_X = 0x100; - } if (pssData.page == PSS_PAGE_SKILLS) - { REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0x800; - } if (pssData.page == PSS_PAGE_BATTLE_MOVES) - { REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xA00; - } } taskData[0]++; @@ -2131,19 +1563,12 @@ void sub_809EC38(u8 taskId) else { if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT)) - { pssData.headerActionTextId = 6; - } else if (pssData.page == PSS_PAGE_INFO) - { pssData.headerActionTextId = 7; - } else - { pssData.headerActionTextId = 0; - } } - taskData[0]++; break; case 3: @@ -2158,26 +1583,21 @@ void sub_809EC38(u8 taskId) break; case 5: if (sub_8055870() != TRUE) - { gTasks[taskId].func = gUnknown_03005CF0; - } break; } } void sub_809EE74(u8 taskId) { - int var1; - u8 minus2; s16 *taskData = gTasks[taskId].data; switch (taskData[0]) { case 0: - var1 = pssData.bgToggle; - if (var1 == 0) + if (pssData.bgToggle == 0) { - gBattle_BG2_X = pssData.bgToggle; + gBattle_BG2_X = 0; taskData[0]++; } else @@ -2219,27 +1639,20 @@ void sub_809EE74(u8 taskId) case 2: if (pssData.bgToggle == 0) { - int var2 = gBattle_BG2_X + 0x20; - gBattle_BG2_X = var2; - if ((var2 << 16) == 0x1000000) - { + gBattle_BG2_X += 32; + if (gBattle_BG2_X == 0x100) taskData[0]++; - } } else { - int var2 = gBattle_BG1_X + 0x20; - gBattle_BG1_X = var2; - if ((var2 << 16) == 0x1000000) - { + gBattle_BG1_X += 32; + if (gBattle_BG1_X == 0x100) taskData[0]++; - } } break; case 3: pssData.headerTextId = pssData.page + 1; - minus2 = pssData.mode - 2; - if (minus2 < 2) + if (pssData.mode == 2 || pssData.mode == 3) { pssData.headerActionTextId = 0; sub_80A029C(&pssData.loadedMon); @@ -2249,19 +1662,12 @@ void sub_809EE74(u8 taskId) else { if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT)) - { pssData.headerActionTextId = 6; - } else if (pssData.page == PSS_PAGE_INFO) - { pssData.headerActionTextId = 7; - } else - { pssData.headerActionTextId = 0; - } } - taskData[0]++; break; case 4: @@ -2276,9 +1682,7 @@ void sub_809EE74(u8 taskId) break; case 6: if (sub_8055870() != TRUE) - { gTasks[taskId].func = gUnknown_03005CF0; - } break; } } @@ -2305,9 +1709,10 @@ static void SummaryScreenHandleLeftRightInput(u8 taskId, s8 direction) { if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - if (direction == -1 && pssData.page == pssData.firstPage) return; - if (direction == 1 && pssData.page == pssData.lastPage) return; - + if (direction == -1 && pssData.page == pssData.firstPage) + return; + if (direction == 1 && pssData.page == pssData.lastPage) + return; if (FindTaskIdByFunc(sub_80A1334) == 0xFF && FindTaskIdByFunc(sub_80A1500) == 0xFF) { PlaySE(SE_SELECT); @@ -2580,11 +1985,8 @@ bool8 sub_809F310(struct Pokemon *mon) if (GetMonData(mon, MON_DATA_SPECIES)) { if (pssData.page != PSS_PAGE_INFO || !GetMonData(mon, MON_DATA_IS_EGG)) - { return TRUE; - } } - return FALSE; } @@ -2594,14 +1996,9 @@ s8 sub_809F344(u8 partyIndex) { partyIndex++; if (partyIndex == PARTY_SIZE) - { return -1; - } - if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE) - { return sDoubleBattlePartyOrder[partyIndex]; - } } } @@ -2610,15 +2007,10 @@ s8 sub_809F388(u8 partyIndex) while (1) { if (partyIndex == 0) - { return -1; - } - partyIndex--; if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE) - { return sDoubleBattlePartyOrder[partyIndex]; - } } } @@ -2637,18 +2029,11 @@ s8 sub_809F3CC(s8 direction) } if ((direction == -1 && monIndex == 0) || (direction == 1 && monIndex == 5)) - { return -1; - } - if (direction != 1) - { return sub_809F388(monIndex); - } else if (monIndex != 5) - { return sub_809F344(monIndex); - } return -1; } @@ -2677,10 +2062,7 @@ void sub_809F43C(u8 taskId) case 4: sub_809F678(&pssData.loadedMon); if (GetMonStatusAndPokerus(&pssData.loadedMon)) - { sub_80A12D0(2); - } - DrawPokerusSurvivorDot(&pssData.loadedMon); gMain.state++; break; @@ -2689,14 +2071,9 @@ void sub_809F43C(u8 taskId) { pssData.loadGfxState = 0; if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) - { gBattle_BG3_X = 256; - } else - { gBattle_BG3_X = 0; - } - gMain.state++; } break; @@ -2848,10 +2225,7 @@ static bool8 sub_809F7D0(u8 taskId) sub_809F678(&mon); move = GetMonMove(&mon, pssData.selectedMoveIndex); if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN) - { return FALSE; - } - return TRUE; } @@ -2884,9 +2258,7 @@ void sub_809F814(u8 taskId) if (pssData.page != PSS_PAGE_BATTLE_MOVES) { if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) - { Menu_EraseWindowRect(0, 14, 9, 18); - } gTasks[taskId].func = sub_809E260; @@ -2900,9 +2272,7 @@ void sub_809F814(u8 taskId) if (pssData.page != pssData.lastPage) { if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) - { Menu_EraseWindowRect(0, 14, 9, 18); - } gTasks[taskId].func = sub_809E260; @@ -3055,9 +2425,7 @@ static void sub_809FBE4(void) u8 i; for (i = 0; i < 28; i++) - { sub_80A1918(i, 1); - } Menu_EraseWindowRect(11, 4, 29, 18); } @@ -3079,9 +2447,7 @@ static void sub_809FC34(struct Pokemon *mon) u8 ability; for (i = 0; i < 5; i++) - { sub_80A1918(i, 1); - } Menu_EraseWindowRect(11, 9, 28, 12); if (GetMonData(mon, MON_DATA_IS_EGG)) @@ -3101,21 +2467,13 @@ static void sub_809FC34(struct Pokemon *mon) friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); if (friendship < 6) - { Menu_PrintText(gOtherText_EggAbout, 11, 9); - } else if (friendship < 11) - { Menu_PrintText(gOtherText_EggSoon, 11, 9); - } else if (friendship < 41) - { Menu_PrintText(gOtherText_EggSomeTime, 11, 9); - } else - { Menu_PrintText(gOtherText_EggLongTime, 11, 9); - } PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14); } @@ -3130,13 +2488,9 @@ static void sub_809FC34(struct Pokemon *mon) buffer = StringCopy(buffer, gOtherText_OriginalTrainer); if (GetMonData(mon, MON_DATA_OT_GENDER) == MALE) - { buffer = sub_80A1E58(buffer, 9); - } else - { buffer = sub_80A1E58(buffer, 10); - } buffer = StringCopy(buffer, gStringVar2); buffer[0] = EXT_CTRL_CODE_BEGIN; @@ -3150,9 +2504,7 @@ static void sub_809FC34(struct Pokemon *mon) species = GetMonData(mon, MON_DATA_SPECIES); sub_80A198C(gBaseStats[species].type1, 120, 48, 0); if (gBaseStats[species].type1 != gBaseStats[species].type2) - { sub_80A198C(gBaseStats[species].type2, 160, 48, 1); - } ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY)); sub_80A1FF8(gAbilityNames[ability], 13, 11, 9); @@ -3197,9 +2549,7 @@ static void sub_809FF64(struct Pokemon *mon) u8 *buffer; for (i = 0; i < 5; i++) - { sub_80A1918(i, 1); - } heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); PrintHeldItemName(heldItem, 11, 4); @@ -3289,13 +2639,9 @@ static void sub_80A015C(struct Pokemon *mon) else { if (pssData.page == PSS_PAGE_BATTLE_MOVES) - { sub_80A198C(gBattleMoves[move].type, 87, ((2 * i) + 4) * 8, i); - } else - { sub_80A198C(gContestMoves[move].contestCategory + 18, 87, ((2 * i) + 4) * 8, i); - } sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4); GetStringCenterAlignXOffset(1, 24, (2 * i) + 4); @@ -3351,9 +2697,7 @@ static void sub_80A0390(void) u8 i; for (i = 0; i < MAX_MON_MOVES; i++) - { Menu_EraseWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); - } } u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex) @@ -3367,13 +2711,9 @@ u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex) else { if (pssData.moveToLearn != 0) - { move = pssData.moveToLearn; - } else - { move = 0xFFFF; - } } return move; @@ -3400,61 +2740,56 @@ static void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex) Menu_EraseWindowRect(11, 15, 28, 18); if (pssData.page == PSS_PAGE_BATTLE_MOVES) - { sub_80A046C(move); - } else - { sub_80A0498(move); - } sub_80A03F0(mon, selectedMoveIndex); } static void sub_80A046C(u16 move) { - if (move == 0xFFFF) return; - - Menu_PrintText(gMoveDescriptions[move - 1], 11, 15); + if (move != 0xFFFF) + Menu_PrintText(gMoveDescriptions[move - 1], 11, 15); } static void sub_80A0498(u16 move) { - if (move == 0xFFFF) return; - - Menu_PrintText(gContestEffectStrings[gContestMoves[move].effect], 11, 15); + if (move != 0xFFFF) + Menu_PrintText(gContestEffectStrings[gContestMoves[move].effect], 11, 15); } static void sub_80A04CC(u16 move) { u8 *buffer; - if (move == 0xFFFF) return; - - if (gBattleMoves[move].power <= 1) - { - buffer = gStringVar1; - buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); - Menu_PrintText(gStringVar1, 7, 15); - } - else + if (move != 0xFFFF) { - buffer = gStringVar1; - buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); - Menu_PrintText(gStringVar1, 7, 15); - } + if (gBattleMoves[move].power <= 1) + { + buffer = gStringVar1; + buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + Menu_PrintText(gStringVar1, 7, 15); + } + else + { + buffer = gStringVar1; + buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); + Menu_PrintText(gStringVar1, 7, 15); + } - if (gBattleMoves[move].accuracy == 0) - { - buffer = gStringVar1; - buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); - Menu_PrintText(gStringVar1, 7, 17); - } - else - { - buffer = gStringVar1; - buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); - Menu_PrintText(gStringVar1, 7, 17); + if (gBattleMoves[move].accuracy == 0) + { + buffer = gStringVar1; + buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + Menu_PrintText(gStringVar1, 7, 17); + } + else + { + buffer = gStringVar1; + buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); + Menu_PrintText(gStringVar1, 7, 17); + } } } @@ -3470,9 +2805,7 @@ static void sub_80A057C(u16 move) appeal = gContestEffects[gContestMoves[move].effect].appeal; if (appeal != 0xFF) - { appeal = appeal / 10; - } for (i = 0; i < 8; i++) { @@ -3480,9 +2813,7 @@ static void sub_80A057C(u16 move) int and = 3; int offset = 0x3CC / 2; if (appeal != 0xFF && i < appeal) - { tile = 0x103A; - } *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile; } @@ -3706,12 +3037,8 @@ static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, #if ENGLISH ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14); - if (nature != NATURE_BOLD && nature != NATURE_GENTLE) - { ptr = StringCopy(ptr, gOtherText_Terminator4); - } - ptr = StringCopy(ptr, gOtherText_Nature); #elif GERMAN ptr = StringCopy(gStringVar4, gOtherText_Nature); @@ -3926,20 +3253,14 @@ static void PrintNumRibbons(struct Pokemon *mon) static void PrintHeldItemName(u16 itemId, u8 left, u8 top) { if (itemId == ITEM_ENIGMA_BERRY - && sub_80F9344() == TRUE - && IsLinkDoubleBattle() == TRUE - && (pssData.monIndex == 1 || pssData.monIndex == 4 || pssData.monIndex == 5)) - { - StringCopy(gStringVar1, ItemId_GetItem(itemId)->name); - } + && sub_80F9344() == TRUE + && IsLinkDoubleBattle() == TRUE + && (pssData.monIndex == 1 || pssData.monIndex == 4 || pssData.monIndex == 5)) + StringCopy(gStringVar1, ItemId_GetName(itemId)); else if (itemId == 0) - { StringCopy(gStringVar1, gOtherText_None); - } else - { CopyItemName(itemId, gStringVar1); - } Menu_PrintText(sUnknown_083C15B4, left, top); } @@ -3995,13 +3316,9 @@ static void DrawExperienceProgressBar(struct Pokemon *mon, u8 left, u8 top) u16 baseTile = 0x2062; if (numExpProgressBarTicks > 7) - { tile = 0x206A; // full exp. bar block - } else - { tile = (numExpProgressBarTicks % 8) + baseTile; - } vramAddr[i] = tile; @@ -4657,13 +3974,9 @@ static void sub_80A12D0(s8 a) gTasks[newTaskId].data[0] = a; if (a < 0) - { gTasks[newTaskId].data[1] = 10; - } else - { gTasks[newTaskId].data[1] = 0; - } gTasks[newTaskId].data[2] = 1; } @@ -4915,26 +4228,18 @@ static void sub_80A1488(s8 a, u8 b) u8 taskId; if (pssData.page == PSS_PAGE_BATTLE_MOVES) - { Menu_EraseWindowRect(0, 14, 9, 19); - } taskId = FindTaskIdByFunc(sub_80A1334); if (taskId == 0xFF) - { taskId = CreateTask(sub_80A1334, 0); - } - gTasks[taskId].data[0] = (s8)a; + gTasks[taskId].data[0] = a; - if ((s8)a < 0) - { + if (a < 0) gTasks[taskId].data[1] = 10; - } else - { gTasks[taskId].data[1] = 0; - } gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = b; @@ -5117,26 +4422,18 @@ static void sub_80A1654(s8 a, u8 b) u8 taskId; if (pssData.page == PSS_PAGE_CONTEST_MOVES) - { Menu_EraseWindowRect(0, 14, 9, 19); - } taskId = FindTaskIdByFunc(sub_80A1500); if (taskId == 0xFF) - { taskId = CreateTask(sub_80A1500, 0); - } - gTasks[taskId].data[0] = (s8)a; + gTasks[taskId].data[0] = a; - if ((s8)a < 0) - { + if (a < 0) gTasks[taskId].data[1] = 10; - } else - { gTasks[taskId].data[1] = 0; - } gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = b; @@ -5374,13 +4671,9 @@ u8 sub_80A1808(struct Pokemon *mon) gSprites[spriteId].callback = sub_80A1888; if (!IsPokeSpriteNotFlipped(species)) - { - gSprites[spriteId].hFlip = 1; - } + gSprites[spriteId].hFlip = TRUE; else - { - gSprites[spriteId].hFlip = 0; - } + gSprites[spriteId].hFlip = FALSE; return spriteId; } @@ -5392,20 +4685,16 @@ static void sub_80A1888(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) - { PlayCry1(sprite->data[0], 0); - } } } -/*static*/ void sub_80A18C4(void) +static void sub_80A18C4(void) { u8 i; for (i = 0; i < 30; i++) - { ewram1A000[i] = 0xFF; - } } static void sub_80A18E4(u8 a) @@ -5422,16 +4711,14 @@ static void sub_80A1918(u8 a, u8 invisible) gSprites[ewram1A000[a]].invisible = invisible; } -/*static*/ void sub_80A1950(void) +static void sub_80A1950(void) { u8 i; for (i = 0; i < 5; i++) { if (ewram1A000[i] == 0xFF) - { ewram1A000[i] = CreateSprite(&sSpriteTemplate_83C11C0, 0, 0, 2); - } sub_80A1918(i, 1); } @@ -5457,9 +4744,7 @@ static void sub_80A1A30(u8 a) if (pssData.page >= PSS_PAGE_BATTLE_MOVES) { if (a == 9) - { subPriority = 1; - } for (i = 0; i < 10; i++) { @@ -5467,17 +4752,11 @@ static void sub_80A1A30(u8 a) ewram1A000[a + i] = CreateSprite(&sSpriteTemplate_83C1280, x, 40, subPriority); if (i == 0) - { StartSpriteAnim(&gSprites[ewram1A000[a]], 4); - } else if (i == 9) - { StartSpriteAnim(&gSprites[ewram1A000[a + i]], 5); - } else - { StartSpriteAnim(&gSprites[ewram1A000[a + i]], 6); - } gSprites[ewram1A000[a + i]].callback = sub_80A1BC0; gSprites[ewram1A000[a + i]].data[0] = a; @@ -5491,9 +4770,7 @@ static void sub_80A1B1C(u8 a) u8 i; for (i = 0; i < 10; i++) - { sub_80A18E4(a + i); - } } static void sub_80A1B40(u8 a) @@ -5504,28 +4781,21 @@ static void sub_80A1B40(u8 a) StartSpriteAnim(&gSprites[ewram1A000[9]], a + 4); for (i = 0; i < 8; i++) - { StartSpriteAnim(&gSprites[ewram1A000[10 + i]], a + 6); - } StartSpriteAnim(&gSprites[ewram1A000[18]], a + 5); } static void sub_80A1BC0(struct Sprite *sprite) { - u8 animNum = sprite->animNum - 4; - if (animNum < 3) + if (sprite->animNum == 4 || sprite->animNum == 5 || sprite->animNum == 6) { sprite->data[1] = (sprite->data[1] + 1) & 0x1F; if (sprite->data[1] > 24) - { - sprite->invisible = 1; - } + sprite->invisible = TRUE; else - { - sprite->invisible = 0; - } + sprite->invisible = FALSE; } else { @@ -5534,69 +4804,23 @@ static void sub_80A1BC0(struct Sprite *sprite) } if (sprite->data[0] == 9) - { sprite->pos2.y = pssData.selectedMoveIndex * 16; - } else - { sprite->pos2.y = pssData.switchMoveIndex * 16; - } } -__attribute__((naked)) +#define shared1A009 ((u8 *)(gSharedMem + 0x1A009)) + void sub_80A1C30(u8 a) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 25\n\ - lsrs r3, r0, 24\n\ - adds r4, r3, 0\n\ - adds r0, r3, 0\n\ - adds r0, 0xA\n\ - cmp r3, r0\n\ - bge _080A1C82\n\ - ldr r5, _080A1C88 @ =gSprites\n\ - movs r7, 0x5\n\ - negs r7, r7\n\ - ldr r6, _080A1C8C @ =gSharedMem + 0x1A009\n\ -_080A1C50:\n\ - adds r2, r3, r6\n\ - ldrb r1, [r2]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r5\n\ - movs r1, 0\n\ - strh r1, [r0, 0x30]\n\ - ldrb r0, [r2]\n\ - lsls r1, r0, 4\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r5\n\ - adds r1, 0x3E\n\ - ldrb r2, [r1]\n\ - adds r0, r7, 0\n\ - ands r0, r2\n\ - strb r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - adds r0, r4, 0\n\ - adds r0, 0xA\n\ - cmp r3, r0\n\ - blt _080A1C50\n\ -_080A1C82:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080A1C88: .4byte gSprites\n\ -_080A1C8C: .4byte gSharedMem + 0x1A009\n\ - .syntax divided\n"); + u8 r3; + + a *= 10; + for (r3 = a; r3 < a + 10; r3++) + { + gSprites[shared1A009[r3]].data[1] = 0; + gSprites[shared1A009[r3]].invisible = FALSE; + } } u8 pokemon_ailments_get_primary(u32 status) @@ -5620,21 +4844,15 @@ u8 GetMonStatusAndPokerus(struct Pokemon *mon) u8 statusAilment; if (GetMonData(mon, MON_DATA_HP) == 0) - { return 7; - } statusAilment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)); if (statusAilment == 0) { if (!CheckPartyPokerus(mon, 0)) - { return 0; - } else - { return 6; - } } return statusAilment; @@ -5655,9 +4873,7 @@ void sub_80A1D18(void) statusAndPkrs2 = statusAndPkrs - 1; if (ewram1A000[29] == 0xFF) - { ewram1A000[29] = CreateSprite(&sSpriteTemplate_83C1304, 64, 152, 0); - } } else { @@ -5763,10 +4979,9 @@ static u8 *sub_80A1E58(u8 *text, u8 id) if (id != 0xFF) { const u8 *ptr = sUnknown_083C15BC; + while (*ptr != 0xFF && *ptr != id) - { ptr += 4; - } text[0] = EXT_CTRL_CODE_BEGIN; text[1] = 4; @@ -5836,9 +5051,7 @@ u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level) dest++; if (level == 0) - { level = 5; - } ConvertIntToDecimalString(buffer, level); dest = sub_80A1E9C(dest, buffer, 14); @@ -5857,7 +5070,5 @@ static void sub_80A2078(int taskId) static void sub_80A20A8(u8 taskId) { if (sub_8055870() != TRUE) - { gTasks[taskId].func = gUnknown_03005CF0; - } } diff --git a/src/roulette.c b/src/roulette.c index 9197fe6be..5e7517d79 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -133,7 +133,7 @@ struct StructgUnknown_083F8D90 }; #if DEBUG -u8 gUnknown_Debug_03005FB8; +void *gUnknown_Debug_03005FB8; #endif #define static @@ -304,6 +304,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83FA434; extern void (*gFieldCallback)(void); extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_SE3; extern const u16 gUnknown_083FA60E[0x2][0x2]; extern const struct SpriteTemplate gSpriteTemplate_83FA50C; extern const struct SpriteTemplate gSpriteTemplate_83FA5C0[]; @@ -317,7 +318,7 @@ extern const s8 gUnknown_083FA64C[0x8][0x2]; #if DEBUG EWRAM_DATA u8 unk_203955C[4] = { 0 }; -EWRAM_DATA u8 unk_2039560[4] = { 0 }; +EWRAM_DATA u8 unk_2039560 = 0; #endif @@ -403,309 +404,15 @@ void sub_8115238(void) RtcCalcLocalTime(); } -#if DEBUG -__attribute__((naked)) -void sub_8115384(void) -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._35 @ gUnknown_Debug_03005FB8\n\ - ldr r0, ._35 + 4 @ 0x2019000\n\ - str r0, [r1]\n\ - ldr r1, ._35 + 8 @ gMain\n\ - ldr r2, ._35 + 12 @ 0x43c\n\ - add r0, r1, r2\n\ - ldrb r0, [r0]\n\ - add r2, r1, #0\n\ - cmp r0, #0x7\n\ - bls ._33 @cond_branch\n\ - b ._64\n\ -._33:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._35 + 16 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._36:\n\ - .align 2, 0\n\ -._35:\n\ - .word gUnknown_Debug_03005FB8\n\ - .word 0x2019000\n\ - .word gMain\n\ - .word 0x43c\n\ - .word ._37\n\ -._37:\n\ - .word ._38\n\ - .word ._39\n\ - .word ._40\n\ - .word ._41\n\ - .word ._42\n\ - .word ._43\n\ - .word ._44\n\ - .word ._45\n\ -._38:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl ScanlineEffect_Stop\n\ - bl ClearVideoCallbacks\n\ - bl sub_80F9368\n\ - ldr r1, ._47 @ 0x400000c\n\ - ldr r3, ._47 + 4 @ 0x4686\n\ - add r0, r3, #0\n\ - strh r0, [r1]\n\ - sub r1, r1, #0x2\n\ - ldr r2, ._47 + 8 @ 0x4401\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ - add r1, r1, #0x46\n\ - mov r3, #0x90\n\ - lsl r3, r3, #0x6\n\ - add r0, r3, #0\n\ - strh r0, [r1]\n\ - add r1, r1, #0x2\n\ - ldr r2, ._47 + 12 @ 0x60a\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ - ldr r0, ._47 + 16 @ gUnknown_08E8096C\n\ - mov r1, #0xc0\n\ - lsl r1, r1, #0x13\n\ - bl LZ77UnCompVram\n\ - ldr r0, ._47 + 20 @ gRouletteWheelTiles\n\ - ldr r1, ._47 + 24 @ 0x6004000\n\ - bl LZ77UnCompVram\n\ - ldr r1, ._47 + 28 @ gMain\n\ - ldr r3, ._47 + 32 @ 0x43c\n\ - add r1, r1, r3\n\ - b ._61\n\ -._48:\n\ - .align 2, 0\n\ -._47:\n\ - .word 0x400000c\n\ - .word 0x4686\n\ - .word 0x4401\n\ - .word 0x60a\n\ - .word gUnknown_08E8096C\n\ - .word gRouletteWheelTiles\n\ - .word 0x6004000\n\ - .word gMain\n\ - .word 0x43c\n\ -._39:\n\ - bl ResetPaletteFade\n\ - bl ResetSpriteData\n\ - bl ResetTasks\n\ - ldr r1, ._50 @ gMain\n\ - ldr r0, ._50 + 4 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._61\n\ -._51:\n\ - .align 2, 0\n\ -._50:\n\ - .word gMain\n\ - .word 0x43c\n\ -._40:\n\ - ldr r0, ._53 @ gWindowTemplate_81E6C3C\n\ - bl Text_LoadWindowTemplate\n\ - ldr r0, ._53 + 4 @ gWindowTemplate_81E6CE4\n\ - bl InitMenuWindow\n\ - ldr r0, ._53 + 8 @ gUnknown_083F86BC\n\ - mov r2, #0xe0\n\ - lsl r2, r2, #0x1\n\ - mov r1, #0x0\n\ - bl LoadPalette\n\ - ldr r1, ._53 + 12 @ gMain\n\ - ldr r2, ._53 + 16 @ 0x43c\n\ - add r1, r1, r2\n\ - b ._61\n\ -._54:\n\ - .align 2, 0\n\ -._53:\n\ - .word gWindowTemplate_81E6C3C\n\ - .word gWindowTemplate_81E6CE4\n\ - .word gUnknown_083F86BC\n\ - .word gMain\n\ - .word 0x43c\n\ -._41:\n\ - bl sub_8115238\n\ - bl ClearBGTilemapBuffers\n\ - ldr r0, ._56 @ gUnknown_083F88BC\n\ - ldr r1, ._56 + 4 @ 0x2018800\n\ - bl LZ77UnCompWram\n\ - ldr r0, ._56 + 8 @ gUnknown_083F8A60\n\ - ldr r1, ._56 + 12 @ 0x6003000\n\ - bl LZ77UnCompVram\n\ - ldr r1, ._56 + 16 @ gMain\n\ - ldr r3, ._56 + 20 @ 0x43c\n\ - add r1, r1, r3\n\ - b ._61\n\ -._57:\n\ - .align 2, 0\n\ -._56:\n\ - .word gUnknown_083F88BC\n\ - .word 0x2018800\n\ - .word gUnknown_083F8A60\n\ - .word 0x6003000\n\ - .word gMain\n\ - .word 0x43c\n\ -._42:\n\ - mov r0, #0x0\n\ - bl sub_8117838\n\ - bl sub_811857C\n\ - bl sub_81184D8\n\ - bl sub_8117F2C\n\ - bl sub_8117900\n\ - bl sub_8117BBC\n\ - bl sub_8117DF4\n\ - ldr r1, ._59 @ gMain\n\ - ldr r0, ._59 + 4 @ 0x43c\n\ - add r1, r1, r0\n\ - b ._61\n\ -._60:\n\ - .align 2, 0\n\ -._59:\n\ - .word gMain\n\ - .word 0x43c\n\ -._43:\n\ - bl AnimateSprites\n\ - bl BuildOamBuffer\n\ - ldr r0, ._62 @ gSaveBlock1\n\ - ldr r1, ._62 + 4 @ 0x494\n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - bl sub_81180F4\n\ - mov r0, #0x6\n\ - bl sub_81182F8\n\ - mov r0, #0x0\n\ - bl sub_811829C\n\ - mov r0, #0x0\n\ - bl sub_8117158\n\ - mov r0, #0x0\n\ - mov r1, #0xe\n\ - mov r2, #0x1d\n\ - mov r3, #0x13\n\ - bl Menu_DrawStdWindowFrame\n\ - ldr r0, ._62 + 8 @ gUnknown_081C4157\n\ - mov r1, #0x1\n\ - mov r2, #0xf\n\ - bl Menu_PrintText\n\ - ldr r1, ._62 + 12 @ gSpriteCoordOffsetX\n\ - mov r2, #0x3c\n\ - neg r2, r2\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ - ldr r1, ._62 + 16 @ gSpriteCoordOffsetY\n\ - mov r0, #0x0\n\ - strh r0, [r1]\n\ - ldr r1, ._62 + 20 @ gMain\n\ - ldr r3, ._62 + 24 @ 0x43c\n\ - add r1, r1, r3\n\ - b ._61\n\ -._63:\n\ - .align 2, 0\n\ -._62:\n\ - .word gSaveBlock1\n\ - .word 0x494\n\ - .word gUnknown_081C4157\n\ - .word gSpriteCoordOffsetX\n\ - .word gSpriteCoordOffsetY\n\ - .word gMain\n\ - .word 0x43c\n\ -._44:\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x13\n\ - ldr r3, ._65 @ 0x1741\n\ - add r0, r3, #0\n\ - strh r0, [r1]\n\ - ldr r0, ._65 + 4 @ 0x43c\n\ - add r1, r2, r0\n\ -._61:\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - b ._64\n\ -._66:\n\ - .align 2, 0\n\ -._65:\n\ - .word 0x1741\n\ - .word 0x43c\n\ -._45:\n\ - ldr r3, ._67 @ 0x4000208\n\ - ldrh r2, [r3]\n\ - mov r0, #0x0\n\ - strh r0, [r3]\n\ - ldr r4, ._67 + 4 @ 0x4000200\n\ - ldrh r0, [r4]\n\ - mov r1, #0x1\n\ - orr r0, r0, r1\n\ - strh r0, [r4]\n\ - strh r2, [r3]\n\ - ldr r2, ._67 + 8 @ 0x4000004\n\ - ldrh r0, [r2]\n\ - mov r1, #0x8\n\ - orr r0, r0, r1\n\ - strh r0, [r2]\n\ - ldr r0, ._67 + 12 @ sub_8115124\n\ - bl SetVBlankCallback\n\ - mov r0, #0x1\n\ - str r0, [sp]\n\ - mov r0, #0xff\n\ - mov r1, #0x0\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginHardwarePaletteFade\n\ - ldr r0, ._67 + 16 @ sub_81156BC\n\ - mov r1, #0x0\n\ - bl CreateTask\n\ - ldr r4, ._67 + 20 @ 0x2019000\n\ - add r1, r4, #0\n\ - add r1, r1, #0xa4\n\ - strb r0, [r1]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._67 + 24 @ gTasks\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r2\n\ - mov r0, #0x6\n\ - strh r0, [r1, #0x14]\n\ - ldr r0, ._67 + 28 @ gSaveBlock1\n\ - ldr r2, ._67 + 32 @ 0x494\n\ - add r0, r0, r2\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, #0x22]\n\ - ldr r0, ._67 + 36 @ sub_8115634\n\ - mov r1, #0x1\n\ - bl CreateTask\n\ - add r4, r4, #0xa5\n\ - strb r0, [r4]\n\ - ldr r0, ._67 + 40 @ sub_81150FC\n\ - bl SetMainCallback2\n\ -._64:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._68:\n\ - .align 2, 0\n\ -._67:\n\ - .word 0x4000208\n\ - .word 0x4000200\n\ - .word 0x4000004\n\ - .word sub_8115124+1\n\ - .word sub_81156BC+1\n\ - .word 0x2019000\n\ - .word gTasks\n\ - .word gSaveBlock1\n\ - .word 0x494\n\ - .word sub_8115634+1\n\ - .word sub_81150FC+1"); -} -#else void sub_8115384(void) { u32 temp_IME; u8 taskid; + +#if DEBUG + gUnknown_Debug_03005FB8 = eRoulette; +#endif + switch (gMain.state) { case 0x0: @@ -783,125 +490,13 @@ void sub_8115384(void) break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_8115634(u8 unused) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - ldr r0, ._75 @ 0x2019000\n\ - add r3, r0, #0\n\ - add r3, r3, #0x21\n\ - ldrb r1, [r3]\n\ - add r2, r1, #1\n\ - strb r2, [r3]\n\ - add r2, r0, #0\n\ - add r2, r2, #0x23\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - add r6, r0, #0\n\ - ldrb r2, [r2]\n\ - cmp r1, r2\n\ - bne ._70 @cond_branch\n\ - mov r0, #0x0\n\ - strb r0, [r3]\n\ - add r2, r6, #0\n\ - add r2, r2, #0x22\n\ - ldrb r1, [r2]\n\ - ldrh r0, [r6, #0x24]\n\ - sub r0, r0, r1\n\ - strh r0, [r6, #0x24]\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - bge ._70 @cond_branch\n\ - ldrb r1, [r2]\n\ - mov r2, #0xb4\n\ - lsl r2, r2, #0x1\n\ - add r0, r2, #0\n\ - sub r0, r0, r1\n\ - strh r0, [r6, #0x24]\n\ -._70:\n\ - add r4, r6, #0\n\ - ldrh r0, [r4, #0x24]\n\ - bl Sin2\n\ - lsl r0, r0, #0x10\n\ - lsr r5, r0, #0x10\n\ - ldrh r0, [r4, #0x24]\n\ - bl Cos2\n\ - lsl r0, r0, #0x10\n\ - lsr r1, r0, #0x10\n\ - lsl r0, r5, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0\n\ - bge ._71 @cond_branch\n\ - add r0, r0, #0xf\n\ -._71:\n\ - lsl r0, r0, #0xc\n\ - lsr r5, r0, #0x10\n\ - lsl r0, r1, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0\n\ - bge ._72 @cond_branch\n\ - add r0, r0, #0xf\n\ -._72:\n\ - asr r0, r0, #0x4\n\ - strh r0, [r6, #0x32]\n\ - strh r0, [r6, #0x2c]\n\ - strh r5, [r6, #0x2e]\n\ - lsl r0, r5, #0x10\n\ - asr r0, r0, #0x10\n\ - neg r0, r0\n\ - strh r0, [r6, #0x30]\n\ - ldr r0, ._75 + 4 @ unk_203955C\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._74 @cond_branch\n\ - ldr r0, ._75 + 8 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._74 @cond_branch\n\ - ldr r2, ._75 + 12 @ gTasks\n\ - add r0, r6, #0\n\ - add r0, r0, #0xa4\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldr r1, ._75 + 16 @ sub_81157AC\n\ - str r1, [r0]\n\ - ldr r0, ._75 + 20 @ gMPlay_SE1\n\ - bl m4aMPlayStop\n\ - ldr r0, ._75 + 24 @ gMPlay_SE2\n\ - bl m4aMPlayStop\n\ - ldr r0, ._75 + 28 @ gMPlay_SE3\n\ - bl m4aMPlayStop\n\ -._74:\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._76:\n\ - .align 2, 0\n\ -._75:\n\ - .word 0x2019000\n\ - .word unk_203955C\n\ - .word gMain\n\ - .word gTasks\n\ - .word sub_81157AC+1\n\ - .word gMPlay_SE1\n\ - .word gMPlay_SE2\n\ - .word gMPlay_SE3"); -} -#else void sub_8115634(u8 unused) { s16 sin; s16 cos; s32 cos32; + if (eRoulette->var21++ == eRoulette->var23) { eRoulette->var21 = 0x0; @@ -916,8 +511,16 @@ void sub_8115634(u8 unused) eRoulette->var2C.a = cos32; eRoulette->var2C.b = sin; eRoulette->var2C.c = -sin; -} +#if DEBUG + if (unk_203955C[0] != 0 && (gMain.newKeys & 8)) + { + gTasks[eRoulette->varA4].func = sub_81157AC; + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + m4aMPlayStop(&gMPlay_SE3); + } #endif +} void sub_81156BC(u8 taskid) { @@ -984,6 +587,7 @@ void sub_81157D0(u8 r0) temp1 = ((r0 - 1) / 5 * 3 + 0x7); sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD); sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a20, temp0, temp1, 0x3, 0x3); + break; } } @@ -1008,7 +612,8 @@ void sub_811597C(u8 taskid) void sub_81159BC(u8 taskid) { s16 i; - if(eRoulette->var08 & 0x20) + + if (eRoulette->var08 & 0x20) { for (i = 0xB; (i < 0xE); i++) if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0) @@ -1380,9 +985,9 @@ void sub_8116474(u8 taskid) { if (gTasks[taskid].data[0x1]-- > 0x0) { - if(gTasks[taskid].data[0x1] > 0x2) + if (gTasks[taskid].data[0x1] > 0x2) gSpriteCoordOffsetX -= 0x2; - if((eRoulette->var26 -= 0x4) == 0x68) + if ((eRoulette->var26 -= 0x4) == 0x68) gSprites[eRoulette->var3C[0x19]].callback = &sub_81184CC; } else @@ -1400,7 +1005,7 @@ void sub_8116514(u8 taskid) { if (gTasks[taskid].data[0x1]-- > 0x1) { - switch(gTasks[taskid].data[0x1] % 0x10) + switch (gTasks[taskid].data[0x1] % 0x10) { case 0x8: sub_8117AA8(0x0, 0xFF); @@ -1420,14 +1025,14 @@ void sub_8116514(u8 taskid) void sub_811659C(u8 taskid) { - switch(gTasks[taskid].data[0x5]) + switch (gTasks[taskid].data[0x5]) { case 0x1: case 0x2: if (IsFanfareTaskInactive()) { u32 wins = GetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS); - if(wins < ++gTasks[taskid].data[0xB]) + if (wins < ++gTasks[taskid].data[0xB]) SetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS, gTasks[taskid].data[0xB]); sub_8116C34(taskid, &sub_811677C, 0xFFFF, 0x3); } @@ -1444,7 +1049,7 @@ void sub_811659C(u8 taskid) void sub_8116638(u8 taskid) { - switch(gTasks[taskid].data[0x5]) + switch (gTasks[taskid].data[0x5]) { case 0x1: case 0x2: @@ -1474,7 +1079,7 @@ void sub_8116638(u8 taskid) void sub_81166E8(u8 taskid) { s32 r0 = gTasks[taskid].data[0x7]; - switch(r0) + switch (r0) { case 0x0: gTasks[taskid].data[0xD]++; @@ -1598,73 +1203,11 @@ void sub_8116AB0(u8 taskid) gTasks[taskid].func = &sub_8116B40; } -#if DEBUG -__attribute__((naked)) -void sub_8116B40(u8 taskid) // end roulette ? -{ - asm("\ - push {r4, r5, r6, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - bl UpdatePaletteFade\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - cmp r5, #0\n\ - bne ._380 @cond_branch\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - ldr r0, ._381 @ 0x2019000\n\ - mov r2, #0xbe\n\ - lsl r2, r2, #0x1\n\ - mov r1, #0x0\n\ - bl memset\n\ - ldr r1, ._381 + 4 @ gSpriteCoordOffsetX\n\ - ldr r0, ._381 + 8 @ gSpriteCoordOffsetY\n\ - mov r4, #0x0\n\ - strh r5, [r0]\n\ - strh r5, [r1]\n\ - bl sub_80F9368\n\ - bl FreeAllSpritePalettes\n\ - bl ResetPaletteFade\n\ - bl ResetSpriteData\n\ - bl ClearBGTilemapBuffers\n\ - ldr r0, ._381 + 12 @ 0x4000050\n\ - strh r5, [r0]\n\ - add r0, r0, #0x2\n\ - strh r5, [r0]\n\ - add r0, r0, #0x2\n\ - strh r5, [r0]\n\ - ldr r1, ._381 + 16 @ gFieldCallback\n\ - ldr r0, ._381 + 20 @ sub_8080990\n\ - str r0, [r1]\n\ - ldr r0, ._381 + 24 @ c2_exit_to_overworld_2_switch\n\ - bl SetMainCallback2\n\ - add r0, r6, #0\n\ - bl DestroyTask\n\ - ldr r0, ._381 + 28 @ unk_203955C\n\ - strb r4, [r0]\n\ -._380:\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._382:\n\ - .align 2, 0\n\ -._381:\n\ - .word 0x2019000\n\ - .word gSpriteCoordOffsetX\n\ - .word gSpriteCoordOffsetY\n\ - .word 0x4000050\n\ - .word gFieldCallback\n\ - .word sub_8080990+1\n\ - .word c2_exit_to_overworld_2_switch+1\n\ - .word unk_203955C"); -} -#else -void sub_8116B40(u8 taskid) // end roulette ? +void sub_8116B40(u8 taskId) // end roulette ? { if (UpdatePaletteFade() == 0) { - SetVBlankCallback(0x0); + SetVBlankCallback(NULL); memset(eRoulette, 0x0, 0x17C); gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0; sub_80F9368(); @@ -1677,14 +1220,16 @@ void sub_8116B40(u8 taskid) // end roulette ? REG_BLDY = 0x0; gFieldCallback = &sub_8080990; SetMainCallback2(&c2_exit_to_overworld_2_switch); - DestroyTask(taskid); + DestroyTask(taskId); +#if DEBUG + unk_203955C[0] = 0; +#endif } } -#endif void sub_8116BC0(u8 taskid) { - if(eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA) + if (eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA) { gTasks[taskid].func = eRoulette->varAC; if (eRoulette->varAA > 0) @@ -1700,7 +1245,7 @@ void sub_8116BC0(u8 taskid) void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3) { eRoulette->varB4 = gTasks[taskid].func; - if(r1 == NULL) + if (r1 == NULL) r1 = eRoulette->varB4; eRoulette->varAC = r1; eRoulette->varA8 = r2; @@ -1780,7 +1325,7 @@ u8 sub_8116E5C(u8 r0, u8 r1) u8 t = r0; if (--r0 < 0x13) { - switch(r1) + switch (r1) { case 0x0: return 0x3; @@ -1810,7 +1355,7 @@ void sub_8116EF8(u8 r0) u8 var2; u16 var3; u8 i; - switch(r0) + switch (r0) { case 0x5: case 0xA: @@ -1889,7 +1434,7 @@ void sub_8117158(u8 r0) eRoulette->var2A = 0x1; sub_8117AA8(0x0, 0x0); sub_8124E2C(gBGTilemapBuffers[1], (u16 *)ewram18800, 0xE, 0x7, 0x10, 0xD); - switch(r0) + switch (r0) { case 0x0: return; @@ -2077,392 +1622,98 @@ void Task_Roulette_0(u8 taskid) #if DEBUG -__attribute__((naked)) -void debug_sub_812CDE4() +void debug_sub_812CDE4(u8 taskId) { - asm("\ - push {r4, r5, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r3, r0, #0x18\n\ - add r4, r3, #0\n\ - ldr r0, ._575 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._572 @cond_branch\n\ - ldr r1, ._575 + 4 @ gTasks\n\ - lsl r0, r3, #0x2\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x3\n\ - add r2, r0, r1\n\ - ldrh r0, [r2, #0x22]\n\ - add r0, r0, #0x1\n\ - strh r0, [r2, #0x22]\n\ - lsl r0, r0, #0x10\n\ - ldr r1, ._575 + 8 @ 0x27100000\n\ - cmp r0, r1\n\ - bne ._573 @cond_branch\n\ - mov r0, #0x0\n\ - strh r0, [r2, #0x22]\n\ -._573:\n\ - ldr r0, ._575 + 12 @ gStringVar1\n\ - mov r3, #0x22\n\ - ldsh r1, [r2, r3]\n\ - b ._584\n\ -._576:\n\ - .align 2, 0\n\ -._575:\n\ - .word gMain\n\ - .word gTasks\n\ - .word 0x27100000\n\ - .word gStringVar1\n\ -._572:\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._577 @cond_branch\n\ - ldr r1, ._580 @ gTasks\n\ - lsl r0, r3, #0x2\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x3\n\ - add r2, r0, r1\n\ - ldrh r0, [r2, #0x22]\n\ - sub r0, r0, #0x1\n\ - strh r0, [r2, #0x22]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - cmp r0, r1\n\ - bne ._578 @cond_branch\n\ - ldr r0, ._580 + 4 @ 0x270f\n\ - strh r0, [r2, #0x22]\n\ -._578:\n\ - ldr r0, ._580 + 8 @ gStringVar1\n\ - mov r3, #0x22\n\ - ldsh r1, [r2, r3]\n\ - b ._584\n\ -._581:\n\ - .align 2, 0\n\ -._580:\n\ - .word gTasks\n\ - .word 0x270f\n\ - .word gStringVar1\n\ -._577:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._582 @cond_branch\n\ - ldr r1, ._585 @ gTasks\n\ - lsl r0, r3, #0x2\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x3\n\ - add r2, r0, r1\n\ - ldrh r3, [r2, #0x22]\n\ - add r0, r3, #0\n\ - add r0, r0, #0xa\n\ - strh r0, [r2, #0x22]\n\ - lsl r0, r0, #0x10\n\ - ldr r1, ._585 + 4 @ 0x270f0000\n\ - cmp r0, r1\n\ - ble ._583 @cond_branch\n\ - ldr r1, ._585 + 8 @ 0xffffd8fb\n\ - add r0, r3, r1\n\ - strh r0, [r2, #0x22]\n\ -._583:\n\ - ldr r0, ._585 + 12 @ gStringVar1\n\ - mov r3, #0x22\n\ - ldsh r1, [r2, r3]\n\ - b ._584\n\ -._586:\n\ - .align 2, 0\n\ -._585:\n\ - .word gTasks\n\ - .word 0x270f0000\n\ - .word 0xffffd8fb\n\ - .word gStringVar1\n\ -._582:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._587 @cond_branch\n\ - ldr r0, ._590 @ gTasks\n\ - lsl r1, r3, #0x2\n\ - add r1, r1, r3\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r0\n\ - ldrh r2, [r1, #0x22]\n\ - add r0, r2, #0\n\ - sub r0, r0, #0xa\n\ - strh r0, [r1, #0x22]\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - bge ._588 @cond_branch\n\ - ldr r3, ._590 + 4 @ 0x2705\n\ - add r0, r2, r3\n\ - strh r0, [r1, #0x22]\n\ -._588:\n\ - ldr r0, ._590 + 8 @ gStringVar1\n\ - mov r2, #0x22\n\ - ldsh r1, [r1, r2]\n\ -._584:\n\ - mov r2, #0x1\n\ - mov r3, #0x4\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r4, ._590 + 12 @ gStringVar4\n\ - ldr r1, ._590 + 16 @ gOtherText_Coins\n\ - add r0, r4, #0\n\ - bl StringExpandPlaceholders\n\ - add r0, r4, #0\n\ - mov r1, #0x9\n\ - mov r2, #0x1\n\ - bl MenuPrint_RightAligned\n\ - b ._596\n\ -._591:\n\ - .align 2, 0\n\ -._590:\n\ - .word gTasks\n\ - .word 0x2705\n\ - .word gStringVar1\n\ - .word gStringVar4\n\ - .word gOtherText_Coins\n\ -._587:\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._592 @cond_branch\n\ - ldr r0, ._594 @ gSaveBlock1\n\ - ldr r2, ._594 + 4 @ gTasks\n\ - lsl r1, r3, #0x2\n\ - add r1, r1, r3\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r2\n\ - ldrh r2, [r1, #0x22]\n\ - ldr r3, ._594 + 8 @ 0x494\n\ - add r0, r0, r3\n\ - mov r5, #0x0\n\ - strh r2, [r0]\n\ - ldr r0, ._594 + 12 @ Task_Roulette_0\n\ - str r0, [r1]\n\ - ldr r0, ._594 + 16 @ gStringVar1\n\ - mov r2, #0x22\n\ - ldsh r1, [r1, r2]\n\ - mov r2, #0x1\n\ - mov r3, #0x4\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r4, ._594 + 20 @ gStringVar4\n\ - ldr r1, ._594 + 24 @ gOtherText_Coins\n\ - add r0, r4, #0\n\ - bl StringExpandPlaceholders\n\ - add r0, r4, #0\n\ - mov r1, #0x9\n\ - mov r2, #0x1\n\ - bl MenuPrint_RightAligned\n\ - ldr r0, ._594 + 28 @ unk_2039560\n\ - strb r5, [r0]\n\ - b ._596\n\ -._595:\n\ - .align 2, 0\n\ -._594:\n\ - .word gSaveBlock1\n\ - .word gTasks\n\ - .word 0x494\n\ - .word Task_Roulette_0+1\n\ - .word gStringVar1\n\ - .word gStringVar4\n\ - .word gOtherText_Coins\n\ - .word unk_2039560\n\ -._592:\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._596 @cond_branch\n\ - ldr r0, ._597 @ gSaveBlock1\n\ - ldr r2, ._597 + 4 @ gTasks\n\ - lsl r1, r4, #0x2\n\ - add r1, r1, r4\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r2\n\ - ldrh r2, [r1, #0x22]\n\ - ldr r3, ._597 + 8 @ 0x494\n\ - add r0, r0, r3\n\ - strh r2, [r0]\n\ - ldr r0, ._597 + 12 @ Task_Roulette_0\n\ - str r0, [r1]\n\ - ldr r0, ._597 + 16 @ gStringVar1\n\ - mov r2, #0x22\n\ - ldsh r1, [r1, r2]\n\ - mov r2, #0x1\n\ - mov r3, #0x4\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r4, ._597 + 20 @ gStringVar4\n\ - ldr r1, ._597 + 24 @ gOtherText_Coins\n\ - add r0, r4, #0\n\ - bl StringExpandPlaceholders\n\ - add r0, r4, #0\n\ - mov r1, #0x9\n\ - mov r2, #0x1\n\ - bl MenuPrint_RightAligned\n\ - ldr r1, ._597 + 28 @ unk_2039560\n\ - mov r0, #0x1\n\ - strb r0, [r1]\n\ -._596:\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._598:\n\ - .align 2, 0\n\ -._597:\n\ - .word gSaveBlock1\n\ - .word gTasks\n\ - .word 0x494\n\ - .word Task_Roulette_0+1\n\ - .word gStringVar1\n\ - .word gStringVar4\n\ - .word gOtherText_Coins\n\ - .word unk_2039560"); + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[13]++; + if (gTasks[taskId].data[13] == 10000) + gTasks[taskId].data[13] = 0; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuPrint_RightAligned(gStringVar4, 9, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[13]--; + if (gTasks[taskId].data[13] == -1) + gTasks[taskId].data[13] = 9999; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuPrint_RightAligned(gStringVar4, 9, 1); + } + else if (gMain.newKeys & 0x100) + { + gTasks[taskId].data[13] += 10; + if (gTasks[taskId].data[13] > 9999) + gTasks[taskId].data[13] -= 9999; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuPrint_RightAligned(gStringVar4, 9, 1); + } + else if (gMain.newKeys & 0x200) + { + gTasks[taskId].data[13] -= 10; + if (gTasks[taskId].data[13] < 0) + gTasks[taskId].data[13] += 9999; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuPrint_RightAligned(gStringVar4, 9, 1); + } + else if (gMain.newKeys & 8) + { + gSaveBlock1.coins = gTasks[taskId].data[13]; + gTasks[taskId].func = Task_Roulette_0; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuPrint_RightAligned(gStringVar4, 9, 1); + unk_2039560 = 0; + } + else if (gMain.newKeys & 4) + { + gSaveBlock1.coins = gTasks[taskId].data[13]; + gTasks[taskId].func = Task_Roulette_0; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuPrint_RightAligned(gStringVar4, 9, 1); + unk_2039560 = 1; + } } -__attribute__((naked)) -void debug_sub_812CFE8() +extern const u8 gUnknown_Debug_0842510D[]; + +void debug_sub_812CFE8(u8 taskId) { - asm("\ - push {r4, r5, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._600 @ gTasks\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r5, r1, r2\n\ - ldr r0, ._600 + 4 @ gSaveBlock1\n\ - ldr r1, ._600 + 8 @ 0x494\n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - strh r0, [r5, #0x22]\n\ - bl Random\n\ - mov r1, #0x1\n\ - and r1, r1, r0\n\ - cmp r1, #0\n\ - beq ._599 @cond_branch\n\ - ldr r0, ._600 + 12 @ gSpecialVar_0x8004\n\ - ldrh r1, [r0]\n\ - mov r2, #0x80\n\ - orr r1, r1, r2\n\ - strh r1, [r0]\n\ -._599:\n\ - ldr r0, ._600 + 16 @ gStringVar1\n\ - mov r2, #0x22\n\ - ldsh r1, [r5, r2]\n\ - mov r2, #0x1\n\ - mov r3, #0x4\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r4, ._600 + 20 @ gStringVar4\n\ - ldr r1, ._600 + 24 @ gOtherText_Coins\n\ - add r0, r4, #0\n\ - bl StringExpandPlaceholders\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - mov r2, #0x9\n\ - mov r3, #0x3\n\ - bl Menu_DrawStdWindowFrame\n\ - add r0, r4, #0\n\ - mov r1, #0x9\n\ - mov r2, #0x1\n\ - bl MenuPrint_RightAligned\n\ - mov r0, #0x0\n\ - mov r1, #0xe\n\ - mov r2, #0x1d\n\ - mov r3, #0x13\n\ - bl Menu_DrawStdWindowFrame\n\ - ldr r0, ._600 + 28 @ gUnknown_Debug_0842510D\n\ - mov r1, #0x1\n\ - mov r2, #0xf\n\ - bl Menu_PrintText\n\ - ldr r0, ._600 + 32 @ debug_sub_812CDE4\n\ - str r0, [r5]\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._601:\n\ - .align 2, 0\n\ -._600:\n\ - .word gTasks\n\ - .word gSaveBlock1\n\ - .word 0x494\n\ - .word gSpecialVar_0x8004\n\ - .word gStringVar1\n\ - .word gStringVar4\n\ - .word gOtherText_Coins\n\ - .word gUnknown_Debug_0842510D\n\ - .word debug_sub_812CDE4+1"); + gTasks[taskId].data[13] = gSaveBlock1.coins; + if (Random() & 1) + gSpecialVar_0x8004 |= 0x80; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + Menu_DrawStdWindowFrame(0, 0, 9, 3); + MenuPrint_RightAligned(gStringVar4, 9, 1); + Menu_DrawStdWindowFrame(0, 14, 29, 19); + Menu_PrintText(gUnknown_Debug_0842510D, 1, 15); + gTasks[taskId].func = debug_sub_812CDE4; } #endif -#if DEBUG -__attribute__((naked)) -void PlayRoulette(void) -{ - asm("\ - push {lr}\n\ - bl ScriptContext2_Enable\n\ - ldr r1, ._604 @ unk_2039560\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - ldr r0, ._604 + 4 @ unk_203955C\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._602 @cond_branch\n\ - ldr r0, ._604 + 8 @ debug_sub_812CFE8\n\ - mov r1, #0x0\n\ - bl CreateTask\n\ - b ._603\n\ -._605:\n\ - .align 2, 0\n\ -._604:\n\ - .word unk_2039560\n\ - .word unk_203955C\n\ - .word debug_sub_812CFE8+1\n\ -._602:\n\ - ldr r0, ._606 @ Task_Roulette_0\n\ - mov r1, #0x0\n\ - bl CreateTask\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._606 + 4 @ gTasks\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r2\n\ - ldr r0, ._606 + 8 @ gSaveBlock1\n\ - ldr r2, ._606 + 12 @ 0x494\n\ - add r0, r0, r2\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, #0x22]\n\ -._603:\n\ - pop {r0}\n\ - bx r0\n\ -._607:\n\ - .align 2, 0\n\ -._606:\n\ - .word Task_Roulette_0+1\n\ - .word gTasks\n\ - .word gSaveBlock1\n\ - .word 0x494"); -} -#else void PlayRoulette(void) { u8 taskid; + ScriptContext2_Enable(); - taskid = CreateTask(&Task_Roulette_0, 0x0); +#if DEBUG + unk_2039560 = 0; + if (unk_203955C[0] != 0) + { + CreateTask(debug_sub_812CFE8, 0); + return; + } +#endif + taskid = CreateTask(Task_Roulette_0, 0); gTasks[taskid].data[0xD] = gSaveBlock1.coins; } -#endif void sub_8117838(u8 r0) { @@ -2548,7 +1799,7 @@ void unref_sub_8117A74(void) //destroy all sprites at 0x1D void sub_8117AA8(u8 r0, u8 r1) { u8 i; - switch(r0) + switch (r0) { case 0x1: for (i = 0x0; i < 0x13; i++) @@ -2564,7 +1815,7 @@ void sub_8117AA8(u8 r0, u8 r1) else gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE; } - for ( ; i < 0x13; i++) + for (; i < 0x13; i++) gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE; break; } @@ -2577,7 +1828,7 @@ void sub_8117BBC(void) { eRoulette->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA); gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE; - gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1; + gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1; gSprites[eRoulette->var3C[0x31 + i]].callback = &sub_81184CC; gSprites[eRoulette->var3C[0x31 + i]].oam.priority = 0x1; StartSpriteAnim(&gSprites[eRoulette->var3C[0x31 + i]], 0x8); @@ -2731,7 +1982,7 @@ u8 sub_81181E8(u8 r0) // u8 t = {0, 1, 2, 3, 4}; if (r0 >= 20) r0 = 0; - switch(gUnknown_083F8C00[r0].var01_0) + switch (gUnknown_083F8C00[r0].var01_0) { case 0x3: r0 = r0 / 5 - 1; @@ -2766,7 +2017,7 @@ void sub_81182F8(u8 r0) u8 t = 0x0; if (eRoulette->var19 == 0x1) t = 0x2; - switch(r0) + switch (r0) { case 0x6: for (i = 0x0; i < 0x3; i++) @@ -3006,7 +2257,7 @@ void sub_81189A8(struct Sprite *sprite) float f0, f1, f2; struct StructgUnknown_083F8DF4 *p; sub_8118724(sprite); - switch(sprite->data[0x3]) + switch (sprite->data[0x3]) { case 0: if (sprite->data[0x0] != 0x1) @@ -3072,7 +2323,7 @@ void sub_8118BD8(struct Sprite *sprite) if (sprite->data[0x2]++ < 45) { sprite->pos2.y--; - if(sprite->data[0x2] == 45) + if (sprite->data[0x2] == 45) { if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1) sprite->pos2.y++; @@ -3106,7 +2357,7 @@ void sub_8118BD8(struct Sprite *sprite) void sub_8118CAC(struct Sprite *sprite) { sub_8118724(sprite); - switch(sprite->data[0x3]) + switch (sprite->data[0x3]) { case 90: if (sprite->data[0x0] != 0x1) @@ -3128,7 +2379,7 @@ void sub_8118CAC(struct Sprite *sprite) void sub_8118CEC(struct Sprite *sprite) { sub_8118724(sprite); - switch(eRoulette->var03_0) + switch (eRoulette->var03_0) { default: case 0x0: @@ -3171,96 +2422,30 @@ void sub_8118D2C(struct Sprite *sprite) } #if DEBUG -__attribute__((naked)) -void debug_sub_812E698() + +void debug_sub_812E698(struct Sprite *sprite) { - asm("\ - push {r4, r5, r6, r7, lr}\n\ - add r7, r0, #0\n\ - bl sub_8118724\n\ - mov r0, #0x0\n\ - strh r0, [r7, #0x32]\n\ - add r0, r7, #0\n\ - bl sub_81186B8\n\ - mov r0, #0x38\n\ - bl m4aSongNumStart\n\ - bl Random\n\ - mov r1, #0x1\n\ - and r1, r1, r0\n\ - cmp r1, #0\n\ - beq ._837 @cond_branch\n\ - ldr r4, ._839 @ 0x2019000\n\ - add r1, r4, #0\n\ - add r1, r1, #0x8c\n\ - ldr r0, ._839 + 4 @ 0x0\n\ - str r0, [r1]\n\ - add r0, r4, #0\n\ - add r0, r0, #0x7e\n\ - ldrb r0, [r0]\n\ - add r0, r0, #0x1\n\ - mov r1, #0xc\n\ - bl __modsi3\n\ - add r1, r4, #0\n\ - add r1, r1, #0x7f\n\ - strb r0, [r1]\n\ - add r1, r4, #0\n\ - ldr r4, ._839 + 8 @ gUnknown_083F8DF4\n\ - b ._838\n\ -._840:\n\ - .align 2, 0\n\ -._839:\n\ - .word 0x2019000\n\ - .word 0x0\n\ - .word gUnknown_083F8DF4\n\ -._837:\n\ - ldr r6, ._841 @ 0x2019000\n\ - add r5, r6, #0\n\ - add r5, r5, #0x8c\n\ - ldr r4, ._841 + 4 @ gUnknown_083F8DF4\n\ - ldrb r0, [r6, #0x4]\n\ - lsl r0, r0, #0x1e\n\ - lsr r0, r0, #0x19\n\ - add r1, r4, #0\n\ - add r1, r1, #0x1c\n\ - add r0, r0, r1\n\ - ldr r1, [r0]\n\ - add r0, r1, #0\n\ - bl __addsf3\n\ - str r0, [r5]\n\ - add r0, r6, #0\n\ - add r0, r0, #0x7e\n\ - ldrb r0, [r0]\n\ - add r1, r6, #0\n\ - add r1, r1, #0x7f\n\ - strb r0, [r1]\n\ - add r1, r6, #0\n\ -._838:\n\ - mov r0, #0x1\n\ - strh r0, [r7, #0x2e]\n\ - ldrb r0, [r1, #0x4]\n\ - lsl r0, r0, #0x1e\n\ - lsr r0, r0, #0x19\n\ - add r0, r0, r4\n\ - ldrb r0, [r0, #0x2]\n\ - strh r0, [r7, #0x32]\n\ - add r1, r1, #0x98\n\ - ldr r0, ._841 + 8 @ 0x3dae147b\n\ - str r0, [r1]\n\ - ldr r0, ._841 + 12 @ sub_8118D2C\n\ - str r0, [r7, #0x1c]\n\ - mov r0, #0x5\n\ - strh r0, [r7, #0x30]\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._842:\n\ - .align 2, 0\n\ -._841:\n\ - .word 0x2019000\n\ - .word gUnknown_083F8DF4\n\ - .word 0x3dae147b\n\ - .word sub_8118D2C+1"); + sub_8118724(sprite); + sprite->data[2] = 0; + sub_81186B8(sprite); + m4aSongNumStart(0x38); + if (Random() & 1) + { + eRoulette->var8C = 0; + eRoulette->var7F = (eRoulette->var7E + 1) % 12; + } + else + { + eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C * 2; + eRoulette->var7F = eRoulette->var7E; + } + sprite->data[0] = 1; + sprite->data[2] = gUnknown_083F8DF4[eRoulette->var04_0].var02; + eRoulette->var98 = 0.085; + sprite->callback = sub_8118D2C; + sprite->data[1] = 5; } + #endif void sub_8118DE4(struct Sprite *sprite) @@ -3345,7 +2530,7 @@ void sub_8118F8C(struct Sprite *sprite) / ((float)(s16)(p[eRoulette->var04_0].var04 + 0x1)); sprite->data[0x1] = 0x4; #if DEBUG - if (unk_2039560[0]) + if (unk_2039560 != 0) sprite->callback = debug_sub_812E698; else #endif @@ -3852,17 +3037,16 @@ void sub_811952C(struct Sprite *sprite) void sub_8119780(struct Sprite *sprite) { - if (sprite->data[0x1]++ >= sprite->data[0x3]) + if (sprite->data[1]++ >= sprite->data[3]) { - if ((sprite->pos1.x -= 0x2) < -0x10) + sprite->pos1.x -= 2; + if (sprite->pos1.x < -16) { if (!eRoulette->var03_6) - { eRoulette->var03_6 = TRUE; - } DestroySprite(sprite); - eRoulette->var01 = 0x0; - eRoulette->var34 = gUnknown_083FA61E[0x0]; + eRoulette->var01 = 0; + eRoulette->var34 = gUnknown_083FA61E[0]; } } } @@ -3871,18 +3055,19 @@ void sub_81197D8(struct Sprite *sprite) { u16 t[0x3][0x4]; s32 p, z; - memcpy(t, &gUnknown_083FA632, 0x18); - if (sprite->data[0x1]++ < sprite->data[0x3]) + + memcpy(t, &gUnknown_083FA632, 24); + if (sprite->data[1]++ < sprite->data[3]) { - if(sprite->data[0x1] & 0x1) + if (sprite->data[1] & 1) { - gSpriteCoordOffsetY = t[sprite->data[0x2] / 0x2][sprite->data[0x7]]; - p = z = sprite->data[0x7] + 0x1; + gSpriteCoordOffsetY = t[sprite->data[2] / 2][sprite->data[7]]; + p = z = sprite->data[7] + 1; if (z < 0) - p += 0x3; - sprite->data[0x7] = z - ((p >> 2) * 4); + p += 3; + sprite->data[7] = z - ((p >> 2) * 4); } - sprite->invisible ^= 0x1; + sprite->invisible ^= 1; } else { @@ -3915,7 +3100,7 @@ void sub_8119898(struct Sprite *sprite) void sub_8119964(struct Sprite *sprite) { - if(sprite->data[0x7] == 0x0) + if (sprite->data[0x7] == 0x0) { register u32 t asm("r2"); u32 z ; @@ -4047,7 +3232,7 @@ void sub_8119BCC(struct Sprite *sprite) else { m4aSongNumStartOrChange(0x5E); - if(eRoulette->var38->data[0x0] == 0x0) + if (eRoulette->var38->data[0x0] == 0x0) PlayCry1(SPECIES_TAILLOW, 0x3F); else PlayCry1(SPECIES_TAILLOW, -0x3F); diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 6eccca047..bf634a49f 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -201,7 +201,6 @@ u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); void MenuCursor_SetPos814A880(u8 a1, u8 a2); u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); s8 GetFirstFreePokeblockSlot(void); -bool8 sub_810CA34(struct Pokeblock *pokeblock); #ifdef GERMAN extern void de_sub_8073110(); #endif @@ -278,8 +277,8 @@ bool8 Blender_PrintBlendingResults(void); static void sub_80510E8(void); static void sub_8050E30(void); static void sub_805197C(u16 a0, u16 a1); -/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); -/*static*/ void sub_8052BD0(u8 taskID); +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +static void sub_8052BD0(u8 taskID); static void sub_8052AF8(void); static void sub_804F8C8(u8 taskID); static void sub_804F9F4(u8 taskID); @@ -3123,7 +3122,7 @@ bool8 Blender_PrintBlendingResults(void) return FALSE; } -/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) { u8 text[12]; u8 flavourLvl, feel; @@ -3546,7 +3545,7 @@ void ShowBerryBlenderRecordWindow(void) } } -/*static*/ void sub_8052BD0(u8 taskID) +static void sub_8052BD0(u8 taskID) { if (gTasks[taskID].data[0] == 0) { diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 57cb17c58..8c3f9885d 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -21,9 +21,12 @@ #include "constants/map_objects.h" #include "constants/weather.h" +extern u8 (*gMenuCallback)(void); + // Static type declarations -struct CableCarEwramStruct1 { +struct CableCarEwramStruct1 +{ u8 unk_0000; u8 unk_0001; u8 unk_0002; @@ -55,7 +58,8 @@ struct CableCarEwramStruct1 { u16 unk_08fc[0x20][0x20]; }; // size 0x10FC -struct CableCarEwramStruct2 { +struct CableCarEwramStruct2 +{ /* 0x000 */ u16 mtChimneyTilemap[0xb4]; /* 0x168 */ u16 treeTilemap[0x1e0]; /* 0x528 */ u16 mountainTilemap[0x258]; @@ -97,8 +101,8 @@ static void sub_81248AC(u8); #if DEBUG -u8 debug_sub_8138D74(void); -u8 debug_sub_8138D8C(void); +void debug_sub_8138D74(void); +void debug_sub_8138D8C(void); u8 debug_sub_8138C14(void); u8 debug_sub_8138C34(void); u8 debug_sub_810CD9C(void); @@ -111,8 +115,8 @@ const u8 Str_842DBFC[] = _("View a MAIL"); const struct MenuAction gUnkDebug4Menu[] = { - {Str_842DBD0, debug_sub_8138D74}, - {Str_842DBDC, debug_sub_8138D8C}, + {Str_842DBD0, (u8 (*)(void))debug_sub_8138D74}, // why do these two functions have a different prototype? + {Str_842DBDC, (u8 (*)(void))debug_sub_8138D8C}, {Str_842DBE8, debug_sub_8138C14}, {Str_842DBF2, debug_sub_8138C34}, {Str_842DBFC, debug_sub_810CD9C}, @@ -170,184 +174,90 @@ static const struct OamData gOamData_8401D38 = { .priority = 2 }; -static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { +static const struct SpriteTemplate gSpriteTemplate_8401D40[] = +{ { - 1, - 1, - &gOamData_8401D28, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - sub_8123CB8 - }, { - 2, - 1, - &gOamData_8401D30, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - sub_8123CB8 - }, { - 3, - 1, - &gOamData_8401D38, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - nullsub_76 + .tileTag = 1, + .paletteTag = 1, + .oam = &gOamData_8401D28, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8123CB8, + }, + { + .tileTag = 2, + .paletteTag = 1, + .oam = &gOamData_8401D30, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8123CB8, + }, + { + .tileTag = 3, + .paletteTag = 1, + .oam = &gOamData_8401D38, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_76, } }; -// .text - #if DEBUG -__attribute__((naked)) +extern u8 unk_203955C; + +extern const u8 MauvilleCity_GameCorner_EventScript_1C407E[]; +extern const u8 MauvilleCity_GameCorner_EventScript_1C40AC[]; + u8 debug_sub_8138C14(void) { - asm("\n\ - push {lr}\n\ - ldr r0, ._1 @ unk_203955C\n\ - mov r1, #0x1\n\ - strb r1, [r0]\n\ - ldr r0, ._1 + 4 @ MauvilleCity_GameCorner_EventScript_1C407E\n\ - bl ScriptContext1_SetupScript\n\ - bl CloseMenu\n\ - mov r0, #0x1\n\ - pop {r1}\n\ - bx r1\n\ -._2:\n\ - .align 2, 0\n\ -._1:\n\ - .word unk_203955C\n\ - .word MauvilleCity_GameCorner_EventScript_1C407E"); + unk_203955C = 1; + ScriptContext1_SetupScript(MauvilleCity_GameCorner_EventScript_1C407E); + CloseMenu(); + return 1; } -__attribute__((naked)) u8 debug_sub_8138C34(void) { - asm("\n\ - push {lr}\n\ - ldr r0, ._3 @ unk_203955C\n\ - mov r1, #0x1\n\ - strb r1, [r0]\n\ - ldr r0, ._3 + 4 @ MauvilleCity_GameCorner_EventScript_1C40AC\n\ - bl ScriptContext1_SetupScript\n\ - bl CloseMenu\n\ - mov r0, #0x1\n\ - pop {r1}\n\ - bx r1\n\ -._4:\n\ - .align 2, 0\n\ -._3:\n\ - .word unk_203955C\n\ - .word MauvilleCity_GameCorner_EventScript_1C40AC"); + unk_203955C = 1; + ScriptContext1_SetupScript(MauvilleCity_GameCorner_EventScript_1C40AC); + CloseMenu(); + return 1; } -__attribute__((naked)) u8 debug_sub_8138C54(void) { - asm("\n\ - push {r4, lr}\n\ - ldr r4, ._10 @ gMain\n\ - ldrh r0, [r4, #0x2e]\n\ - cmp r0, #0x40\n\ - bne ._5 @cond_branch\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - bl Menu_MoveCursor\n\ -._5:\n\ - ldrh r0, [r4, #0x2e]\n\ - cmp r0, #0x80\n\ - bne ._6 @cond_branch\n\ - mov r0, #0x1\n\ - bl Menu_MoveCursor\n\ -._6:\n\ - ldrh r1, [r4, #0x2e]\n\ - cmp r1, #0x1\n\ - beq ._7 @cond_branch\n\ - ldr r0, ._10 + 4 @ 0x101\n\ - cmp r1, r0\n\ - bne ._8 @cond_branch\n\ - ldr r1, ._10 + 8 @ gSpecialVar_0x8004\n\ - mov r0, #0x1\n\ - strh r0, [r1]\n\ -._7:\n\ - ldr r4, ._10 + 12 @ gUnkDebug4Menu\n\ - bl Menu_GetCursorPos\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x15\n\ - add r4, r4, #0x4\n\ - add r0, r0, r4\n\ - ldr r0, [r0]\n\ - bl _call_via_r0\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - b ._13\n\ -._11:\n\ - .align 2, 0\n\ -._10:\n\ - .word gMain\n\ - .word 0x101\n\ - .word gSpecialVar_0x8004\n\ - .word gUnkDebug4Menu\n\ -._8:\n\ - cmp r1, #0x2\n\ - beq ._12 @cond_branch\n\ - mov r0, #0x0\n\ - b ._13\n\ -._12:\n\ - bl CloseMenu\n\ - mov r0, #0x1\n\ -._13:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1"); + if (gMain.newKeys == DPAD_UP) + Menu_MoveCursor(-1); + if (gMain.newKeys == DPAD_DOWN) + Menu_MoveCursor(1); + if (gMain.newKeys == A_BUTTON) + return gUnkDebug4Menu[Menu_GetCursorPos()].func(); + if (gMain.newKeys == (R_BUTTON | A_BUTTON)) + { + gSpecialVar_0x8004 = 1; + return gUnkDebug4Menu[Menu_GetCursorPos()].func(); + } + if (gMain.newKeys == B_BUTTON) + { + CloseMenu(); + return 1; + } + return 0; } -__attribute__((naked)) u8 debug_sub_8138CC4(void) { - asm("\n\ - push {lr}\n\ - add sp, sp, #0xfffffff8\n\ - ldr r1, ._14 @ gSpecialVar_0x8004\n\ - mov r0, #0x0\n\ - strh r0, [r1]\n\ - bl Menu_EraseScreen\n\ - mov r0, #0x13\n\ - mov r1, #0x0\n\ - mov r2, #0x1d\n\ - mov r3, #0xc\n\ - bl Menu_DrawStdWindowFrame\n\ - ldr r3, ._14 + 4 @ gUnkDebug4Menu\n\ - mov r0, #0x14\n\ - mov r1, #0x1\n\ - mov r2, #0x5\n\ - bl Menu_PrintItems\n\ - mov r0, #0x0\n\ - str r0, [sp]\n\ - mov r0, #0x8\n\ - str r0, [sp, #0x4]\n\ - mov r0, #0x0\n\ - mov r1, #0x14\n\ - mov r2, #0x1\n\ - mov r3, #0x5\n\ - bl InitMenu\n\ - ldr r1, ._14 + 8 @ gMenuCallback\n\ - ldr r0, ._14 + 12 @ debug_sub_8138C54\n\ - str r0, [r1]\n\ - mov r0, #0x0\n\ - add sp, sp, #0x8\n\ - pop {r1}\n\ - bx r1\n\ -._15:\n\ - .align 2, 0\n\ -._14:\n\ - .word gSpecialVar_0x8004\n\ - .word gUnkDebug4Menu\n\ - .word gMenuCallback\n\ - .word debug_sub_8138C54+1"); + gSpecialVar_0x8004 = 0; + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(19, 0, 29, 12); + Menu_PrintItems(20, 1, 5, gUnkDebug4Menu); + InitMenu(0, 20, 1, 5, 0, 8); + gMenuCallback = debug_sub_8138C54; + return 0; } #endif @@ -370,40 +280,18 @@ void CableCar(void) #if DEBUG -__attribute__((naked)) -u8 debug_sub_8138D74(void) +void debug_sub_8138D74(void) { - asm("\n\ - push {lr}\n\ - ldr r1, ._21 @ gSpecialVar_0x8004\n\ - mov r0, #0x0\n\ - strh r0, [r1]\n\ - bl CloseMenu\n\ - bl CableCar\n\ - pop {r0}\n\ - bx r0\n\ -._22:\n\ - .align 2, 0\n\ -._21:\n\ - .word gSpecialVar_0x8004"); + gSpecialVar_0x8004 = 0; + CloseMenu(); + CableCar(); } -__attribute__((naked)) -u8 debug_sub_8138D8C(void) +void debug_sub_8138D8C(void) { - asm("\n\ - push {lr}\n\ - ldr r1, ._23 @ gSpecialVar_0x8004\n\ - mov r0, #0x1\n\ - strh r0, [r1]\n\ - bl CloseMenu\n\ - bl CableCar\n\ - pop {r0}\n\ - bx r0\n\ -._24:\n\ - .align 2, 0\n\ -._23:\n\ - .word gSpecialVar_0x8004"); + gSpecialVar_0x8004 = 1; + CloseMenu(); + CableCar(); } #endif diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c index 2af990290..5317bc334 100644 --- a/src/scene/cute_sketch.c +++ b/src/scene/cute_sketch.c @@ -29,350 +29,6 @@ void sub_80FD1C8(u16); u16 sub_80FD39C(u16*); u16 sub_80FD68C(u16*, u16*, u16*); -#if DEBUG - -__attribute__((naked)) -void debug_sub_8110CCC(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, #0x0\n\ - mov r1, #0x0\n\ - ldr r2, ._5 @ gUnknown_083E79C0\n\ - ldr r6, ._5 + 4 @ \n\ -._7:\n\ - lsl r0, r1, #0x3\n\ - add r4, r0, r2\n\ - ldrh r0, [r6, #0x1c]\n\ - ldrh r3, [r4, #0x4]\n\ - cmp r0, r3\n\ - bne ._1 @cond_branch\n\ - ldrh r0, [r4, #0x6]\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._4 @cond_branch\n\ - ldrb r0, [r6, #0x1f]\n\ - ldr r1, [r4]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - bl StringLength\n\ - mov r1, #0xc\n\ - sub r1, r1, r0\n\ - lsl r1, r1, #0x10\n\ - lsr r5, r1, #0x10\n\ - cmp r1, #0\n\ - bge ._3 @cond_branch\n\ - mov r5, #0x0\n\ -._3:\n\ - mov r7, #0x1\n\ - mov r0, #0x10\n\ - mov r1, #0xe\n\ - mov r2, #0x1d\n\ - mov r3, #0x13\n\ - bl Menu_DrawStdWindowFrame\n\ - add r0, r6, #0\n\ - add r0, r0, #0x8\n\ - mov r1, #0x11\n\ - mov r2, #0xf\n\ - bl Menu_PrintText\n\ - ldrb r0, [r6, #0x1f]\n\ - ldr r1, [r4]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - add r1, r5, #0\n\ - add r1, r1, #0x11\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - mov r2, #0x11\n\ - bl Menu_PrintText\n\ - b ._4\n\ -._6:\n\ - .align 2, 0\n\ -._5:\n\ - .word gUnknown_083E79C0\n\ - .word +0x2000000\n\ -._1:\n\ - add r0, r1, #1\n\ - lsl r0, r0, #0x10\n\ - lsr r1, r0, #0x10\n\ - cmp r1, #0\n\ - beq ._7 @cond_branch\n\ -._4:\n\ - cmp r7, #0\n\ - bne ._8 @cond_branch\n\ - mov r0, #0x10\n\ - mov r1, #0x10\n\ - mov r2, #0x1d\n\ - mov r3, #0x13\n\ - bl Menu_DrawStdWindowFrame\n\ - ldr r0, ._9 @ \n\ - mov r1, #0x11\n\ - mov r2, #0x11\n\ - bl Menu_PrintText\n\ - mov r0, #0x10\n\ - mov r1, #0xe\n\ - mov r2, #0x1d\n\ - mov r3, #0xf\n\ - bl Menu_EraseWindowRect\n\ -._8:\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._10:\n\ - .align 2, 0\n\ -._9:\n\ - .word +0x2000008"); -} - -__attribute__((naked)) -void debug_sub_8110D84(void) -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._13 @ \n\ - ldrh r0, [r0, #0x4]\n\ - cmp r0, #0x7\n\ - bls ._11 @cond_branch\n\ - b ._65\n\ -._11:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._13 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._14:\n\ - .align 2, 0\n\ -._13:\n\ - .word +0x2000000\n\ - .word ._15\n\ -._15:\n\ - .word ._16\n\ - .word ._17\n\ - .word ._18\n\ - .word ._19\n\ - .word ._20\n\ - .word ._21\n\ - .word ._22\n\ - .word ._23\n\ -._16:\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, ._25 @ \n\ - ldrh r0, [r1, #0x4]\n\ - add r0, r0, #0x1\n\ - b ._62\n\ -._26:\n\ - .align 2, 0\n\ -._25:\n\ - .word +0x2000000\n\ -._17:\n\ - bl UpdatePaletteFade\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._27 @cond_branch\n\ - b ._65\n\ -._27:\n\ - ldr r1, ._30 @ \n\ - ldrh r0, [r1, #0x4]\n\ - add r0, r0, #0x1\n\ - b ._62\n\ -._31:\n\ - .align 2, 0\n\ -._30:\n\ - .word +0x2000000\n\ -._18:\n\ - bl sub_80FAB60\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x3\n\ - beq ._32 @cond_branch\n\ - cmp r0, #0x3\n\ - bgt ._33 @cond_branch\n\ - b ._65\n\ -._33:\n\ - cmp r0, #0x4\n\ - beq ._35 @cond_branch\n\ - cmp r0, #0x5\n\ - beq ._36 @cond_branch\n\ - b ._65\n\ -._35:\n\ - ldr r4, ._41 @ \n\ - ldrb r0, [r4, #0x1e]\n\ - cmp r0, #0\n\ - bne ._38 @cond_branch\n\ - b ._65\n\ -._38:\n\ - mov r0, #0x5\n\ - bl m4aSongNumStart\n\ - ldr r1, ._41 + 4 @ \n\ - add r0, r4, r1\n\ - mov r1, #0x1\n\ - strb r1, [r0]\n\ - ldr r0, ._41 + 8 @ \n\ - bl sub_80FC244\n\ - b ._65\n\ -._42:\n\ - .align 2, 0\n\ -._41:\n\ - .word +0x2000000\n\ - .word 0xa6e\n\ - .word sub_80FC69C+1\n\ -._36:\n\ - mov r0, #0x5\n\ - bl m4aSongNumStart\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, ._44 @ \n\ - ldrh r0, [r1, #0x4]\n\ - add r0, r0, #0x1\n\ - b ._62\n\ -._45:\n\ - .align 2, 0\n\ -._44:\n\ - .word +0x2000000\n\ -._19:\n\ - bl UpdatePaletteFade\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._65 @cond_branch\n\ - ldr r0, ._48 @ sub_805469C\n\ - bl SetMainCallback2\n\ - b ._65\n\ -._49:\n\ - .align 2, 0\n\ -._48:\n\ - .word sub_805469C+1\n\ -._20:\n\ - bl sub_80FAB60\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._50 @cond_branch\n\ -._32:\n\ - bl debug_sub_8110CCC\n\ - b ._65\n\ -._50:\n\ - ldr r0, ._54 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._65 @cond_branch\n\ - bl sub_80FBCA0\n\ - bl sub_80FAEC4\n\ - ldr r1, ._54 + 4 @ \n\ - ldrh r0, [r1, #0x4]\n\ - add r0, r0, #0x1\n\ - b ._62\n\ -._55:\n\ - .align 2, 0\n\ -._54:\n\ - .word gMain\n\ - .word +0x2000000\n\ -._21:\n\ - bl sub_80FAFC0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._65 @cond_branch\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - bl CreateRegionMapCursor\n\ - ldr r1, ._58 @ \n\ - ldrh r0, [r1, #0x4]\n\ - add r0, r0, #0x1\n\ - b ._62\n\ -._59:\n\ - .align 2, 0\n\ -._58:\n\ - .word +0x2000000\n\ -._22:\n\ - bl sub_80FAB60\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._60 @cond_branch\n\ - bl debug_sub_8110CCC\n\ -._60:\n\ - ldr r0, ._63 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._65 @cond_branch\n\ - bl sub_80FBCA0\n\ - bl sub_80FAEC4\n\ - ldr r1, ._63 + 4 @ \n\ - ldrh r0, [r1, #0x4]\n\ - add r0, r0, #0x1\n\ - b ._62\n\ -._64:\n\ - .align 2, 0\n\ -._63:\n\ - .word gMain\n\ - .word +0x2000000\n\ -._23:\n\ - bl sub_80FAFC0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._65 @cond_branch\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - bl CreateRegionMapCursor\n\ - ldr r1, ._66 @ \n\ - mov r0, #0x3\n\ -._62:\n\ - strh r0, [r1, #0x4]\n\ -._65:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._67:\n\ - .align 2, 0\n\ -._66:\n\ - .word +0x2000000"); -} - -__attribute__((naked)) -void debug_sub_8110F28(void) -{ - asm("\ - push {lr}\n\ - bl CB2_InitFlyRegionMap\n\ - ldr r0, ._69 @ gMain\n\ - ldr r1, [r0, #0x4]\n\ - ldr r0, ._69 + 4 @ CB2_FlyRegionMap\n\ - cmp r1, r0\n\ - bne ._68 @cond_branch\n\ - bl sub_80FBF94\n\ - ldr r0, ._69 + 8 @ debug_sub_8110D84\n\ - bl sub_80FC244\n\ - bl debug_sub_8110CCC\n\ -._68:\n\ - pop {r0}\n\ - bx r0\n\ -._70:\n\ - .align 2, 0\n\ -._69:\n\ - .word gMain\n\ - .word CB2_FlyRegionMap+1\n\ - .word debug_sub_8110D84+1"); -} - -#endif - void sub_80FC7A0(struct Unk03005E20* info) { gUnknown_03005DEC = info->var_4; |