summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_2.c3264
-rw-r--r--src/battle/battle_4.c166
-rw-r--r--src/battle/battle_controller_opponent.c550
-rw-r--r--src/battle/battle_controller_player.c891
-rw-r--r--src/battle/battle_controller_safari.c6
-rw-r--r--src/battle/battle_records.c80
-rw-r--r--src/data/battle_tower/trainers.h2800
-rw-r--r--src/data/battle_tower/trainers_de.h2800
-rw-r--r--src/debug/start_menu_debug.c12
-rw-r--r--src/engine/cable_club.c550
-rw-r--r--src/engine/link.c159
-rw-r--r--src/engine/mystery_event_menu.c546
-rw-r--r--src/engine/reset_rtc_screen.c398
-rw-r--r--src/engine/save_failed_screen.c213
-rw-r--r--src/engine/trainer_card.c8
-rw-r--r--src/field/battle_tower.c239
-rw-r--r--src/field/berry.c601
-rw-r--r--src/field/choose_party.c121
-rw-r--r--src/field/event_object_movement.c794
-rw-r--r--src/field/field_player_avatar.c221
-rw-r--r--src/field/field_weather.c251
-rw-r--r--src/field/fldeff_cut.c141
-rw-r--r--src/field/fldeff_flash.c30
-rw-r--r--src/field/fldeff_secretpower.c128
-rw-r--r--src/field/item.c27
-rw-r--r--src/field/item_menu.c558
-rw-r--r--src/field/mauville_man.c103
-rw-r--r--src/field/overworld.c2
-rw-r--r--src/field/party_menu.c1531
-rw-r--r--src/field/pokeblock.c6
-rw-r--r--src/field/region_map.c202
-rw-r--r--src/field/secret_base.c511
-rw-r--r--src/field/shop.c52
-rw-r--r--src/field/slot_machine.c3741
-rw-r--r--src/field/start_menu.c370
-rw-r--r--src/field/tv.c10
-rw-r--r--src/pokemon/pokemon_storage_system_2.c2935
-rw-r--r--src/pokemon/pokemon_storage_system_4.c2
-rw-r--r--src/pokemon/pokemon_summary_screen.c957
-rw-r--r--src/roulette.c1145
-rw-r--r--src/scene/berry_blender.c9
-rw-r--r--src/scene/cable_car.c276
-rw-r--r--src/scene/cute_sketch.c344
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,
+ &REG_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;