summaryrefslogtreecommitdiff
path: root/src/party_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/party_menu.c')
-rw-r--r--src/party_menu.c2604
1 files changed, 2569 insertions, 35 deletions
diff --git a/src/party_menu.c b/src/party_menu.c
index 0f7e95612..b84b139bc 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -14,6 +14,7 @@
#include "mail_data.h"
#include "main.h"
#include "menu.h"
+#include "menu_helpers.h"
#include "palette.h"
#include "pokemon.h"
#include "pokemon_icon.h"
@@ -29,12 +30,7 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
-#include "sprite.h"
-#include "palette.h"
-#include "event_data.h"
-#include "main.h"
-#include "battle_interface.h"
-#include "species.h"
+#include "util.h"
struct Unk201C000
{
@@ -62,7 +58,7 @@ struct UnknownStruct5
u16 *unk4;
};
-struct GenderIconCoords
+struct Coords8
{
u8 x;
u8 y;
@@ -90,9 +86,18 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
+struct PartyMenuFunctionsStruct
+{
+ /*0x0*/TaskFunc func1;
+ /*0x4*/TaskFunc func2;
+ /*0x8*/u8 unk8;
+};
+
#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000))
#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000))
+extern u16 gBattleTypeFlags;
+
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F6;
extern u16 gUnknown_0202E8F8;
@@ -102,10 +107,19 @@ extern u8 gPlayerPartyCount;
extern s32 gBattleMoveDamage;
extern u16 gMoveToLearn;
-extern struct GenderIconCoords const gUnknown_08376738[12][6];
-extern struct GenderIconCoords const gUnknown_08376678[12][6];
+extern struct PartyMenuFunctionsStruct const gUnknown_08376C74[];
+extern u8 gUnknown_083769D8[];
+extern u8 gUnknown_08376A25[];
+extern u8 gUnknown_08376A5E[];
+extern u16 gUnknown_08E9A300[];
+extern const u16 gUnknown_08376CD4[];
+extern const u16 gUnknown_08376CEC[];
+extern u16 *const gUnknown_08376918[2][PARTY_SIZE];
+extern struct Coords8 const gUnknown_08376738[12][6];
+extern struct Coords8 const gUnknown_08376678[12][6];
extern struct PartyMenuWindowCoords const gUnknown_08376948[2][6];
extern struct PartyMenuWindowCoords const gUnknown_08376978[2][6];
+extern struct Coords8 const gUnknown_083768B8[3][8];
extern u8 *const gUnknown_08376624[];
extern const u8 gUnknown_083769C0[];
//extern const u16 gUnknown_083769A8[][6];
@@ -144,22 +158,8 @@ static void sub_8070D90(u8 taskId);
static void sub_806D5B8(u8 taskId);
static void sub_806D014(u8 taskId);
static void sub_806D118(u8 taskId);
-
-/*
-void sub_806AEDC(void)
-{
- const struct UnknownStruct5 *r5;
- s32 i;
-
- AnimateSprites();
- BuildOamBuffer();
- r5 = gUnknown_08376BB4[gUnknown_0202E8FA];
- for (i = 0; i < 6; i++)
- sub_800142C(r5[i].unk0 * 8, r5[i].unk1 * 8, r5[i].unk4, 0, (i << 5) | 0x200);
- RunTasks();
- UpdatePaletteFade();
-}
-*/
+static void sub_806B460(void);
+static void sub_806B548(void);
#if ENGLISH
#define WINDOW_LEFT (3)
@@ -175,14 +175,2548 @@ extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s
extern void sub_809D62C(struct Sprite *sprite);
extern void UpdateMonIconFrame_806DA0C(struct Sprite *sprite);
extern void UpdateMonIconFrame_806DA38(struct Sprite *sprite);
-extern void sub_806BB3C(s16 a, u8 b);
-extern void sub_806BA94(s16 a, u8 b, u8 c, u8 d);
-extern void sub_806B9A4(s16 a, u8 b, u8 c);
extern void SpriteCB_sub_806D37C(struct Sprite *sprite);
-extern void sub_806BA34(s16 a, u8 b);
-extern void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d);
extern void sub_806CD44(u8 taskId);
+extern u8 sub_806CA00(u8 taskId);
+extern void sub_806BA34(s16 a, u16 b);
+extern void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c);
+extern void sub_806C490(u8 spriteId, u8 menuIndex, s8 directionPressed);
+extern void sub_806C1E4(u8 spriteId, u8 menuIndex, s8 directionPressed);
+extern void sub_806C310(u8 spriteId, u8 menuIndex, s8 directionPressed);
+extern void sub_806C658(u8 taskId, s8 directionPressed);
+extern void sub_806CA18(u8 taskId, u8 b);
+extern void sub_806B9A4(s16 a, u16 b, u8 c);
+extern void sub_806BA94(s16 a, u16 b, u8 c, u8 d);
+
+
+#ifdef NONMATCHING
+void sub_806AEDC(void)
+{
+ const struct UnknownStruct5 *var1;
+ s32 i;
+
+ AnimateSprites();
+ BuildOamBuffer();
+
+ var1 = gUnknown_08376BB4[gUnknown_0202E8FA];
+ for (i = 0; i < 6; i++)
+ {
+ sub_800142C(var1[i].unk0 * 8, var1[i].unk1 * 8, var1[i].unk4, 0, (i << 5) | 0x200);
+ }
+
+ RunTasks();
+ UpdatePaletteFade();
+}
+#else
+__attribute__((naked))
+void sub_806AEDC(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, _0806AF2C @ =gUnknown_0202E8FA\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 4\n\
+ ldr r1, _0806AF30 @ =gUnknown_08376BB4\n\
+ adds r5, r0, r1\n\
+ movs r6, 0\n\
+_0806AEF8:\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 3\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r1, 3\n\
+ ldr r2, [r5, 0x4]\n\
+ lsls r3, r6, 5\n\
+ movs r4, 0x80\n\
+ lsls r4, 2\n\
+ orrs r3, r4\n\
+ str r3, [sp]\n\
+ movs r3, 0\n\
+ bl sub_800142C\n\
+ adds r5, 0x8\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x5\n\
+ ble _0806AEF8\n\
+ bl RunTasks\n\
+ bl UpdatePaletteFade\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806AF2C: .4byte gUnknown_0202E8FA\n\
+_0806AF30: .4byte gUnknown_08376BB4\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_806AF34(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_806B548();
+}
+
+void sub_806AF4C(u8 a, u8 battleFlags, TaskFunc func, u8 d)
+{
+ if (battleFlags != 0xFF)
+ {
+ gBattleTypeFlags = battleFlags;
+ }
+
+ ewram1B000.unk258 = a;
+ ewram1B000.taskFunc = func;
+ ewram1B000.unk259 = d;
+}
+
+void sub_806AF8C(u8 a, u8 battleFlags, TaskFunc func, u8 d)
+{
+ sub_806AF4C(a, battleFlags, func, d);
+ SetMainCallback2(sub_806B460);
+}
+
+void OpenPartyMenu(u8 a, u8 battleFlags)
+{
+ sub_806AF8C(a, battleFlags, gUnknown_08376C74[a].func1, gUnknown_08376C74[a].unk8);
+}
+
+__attribute__((naked))
+bool8 sub_806AFD0(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r1, _0806AFF0 @ =0x0201b000\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r0, r1, r2\n\
+ movs r2, 0\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r4, r1, 0\n\
+ cmp r0, 0x9\n\
+ bls _0806AFE6\n\
+ b _0806B11A\n\
+_0806AFE6:\n\
+ lsls r0, 2\n\
+ ldr r1, _0806AFF4 @ =_0806AFF8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806AFF0: .4byte 0x0201b000\n\
+_0806AFF4: .4byte _0806AFF8\n\
+ .align 2, 0\n\
+_0806AFF8:\n\
+ .4byte _0806B020\n\
+ .4byte _0806B060\n\
+ .4byte _0806B066\n\
+ .4byte _0806B07A\n\
+ .4byte _0806B0A4\n\
+ .4byte _0806B0AA\n\
+ .4byte _0806B0BC\n\
+ .4byte _0806B0C2\n\
+ .4byte _0806B0D4\n\
+ .4byte _0806B0EC\n\
+_0806B020:\n\
+ ldr r0, _0806B048 @ =0x00000266\n\
+ adds r5, r4, r0\n\
+ movs r1, 0\n\
+ ldrsh r3, [r5, r1]\n\
+ ldr r0, _0806B04C @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bge _0806B054\n\
+ movs r2, 0x98\n\
+ lsls r2, 2\n\
+ adds r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ ldrb r1, [r5]\n\
+ movs r2, 0x64\n\
+ muls r2, r3\n\
+ ldr r3, _0806B050 @ =gPlayerParty\n\
+ adds r2, r3\n\
+ bl TryCreatePartyMenuMonIcon\n\
+ b _0806B114\n\
+ .align 2, 0\n\
+_0806B048: .4byte 0x00000266\n\
+_0806B04C: .4byte gPlayerPartyCount\n\
+_0806B050: .4byte gPlayerParty\n\
+_0806B054:\n\
+ movs r0, 0\n\
+ strh r0, [r5]\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r4, r0\n\
+ b _0806B0E0\n\
+_0806B060:\n\
+ bl LoadHeldItemIconGraphics\n\
+ b _0806B0D8\n\
+_0806B066:\n\
+ movs r1, 0x98\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ bl CreateHeldItemIcons_806DC34\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r1, r4, r2\n\
+ b _0806B0E0\n\
+_0806B07A:\n\
+ movs r1, 0x98\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ ldr r2, _0806B0A0 @ =0x00000266\n\
+ adds r5, r4, r2\n\
+ ldrb r1, [r5]\n\
+ bl sub_806BD58\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B114\n\
+ movs r0, 0\n\
+ strh r0, [r5]\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r4, r0\n\
+ b _0806B0E0\n\
+ .align 2, 0\n\
+_0806B0A0: .4byte 0x00000266\n\
+_0806B0A4:\n\
+ bl PartyMenuPrintMonsLevelOrStatus\n\
+ b _0806B0D8\n\
+_0806B0AA:\n\
+ bl PrintPartyMenuMonNicknames\n\
+ ldr r1, _0806B0B8 @ =0x0201b000\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r0\n\
+ b _0806B0E0\n\
+ .align 2, 0\n\
+_0806B0B8: .4byte 0x0201b000\n\
+_0806B0BC:\n\
+ bl PartyMenuTryPrintMonsHP\n\
+ b _0806B0D8\n\
+_0806B0C2:\n\
+ bl nullsub_13\n\
+ ldr r1, _0806B0D0 @ =0x0201b000\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r0\n\
+ b _0806B0E0\n\
+ .align 2, 0\n\
+_0806B0D0: .4byte 0x0201b000\n\
+_0806B0D4:\n\
+ bl PartyMenuDrawHPBars\n\
+_0806B0D8:\n\
+ ldr r1, _0806B0E8 @ =0x0201b000\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r1, r2\n\
+_0806B0E0:\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+ b _0806B11A\n\
+ .align 2, 0\n\
+_0806B0E8: .4byte 0x0201b000\n\
+_0806B0EC:\n\
+ ldr r0, _0806B110 @ =0x00000266\n\
+ adds r5, r4, r0\n\
+ ldrb r0, [r5]\n\
+ bl sub_806B58C\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B114\n\
+ movs r1, 0\n\
+ strh r1, [r5]\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ movs r0, 0x1\n\
+ b _0806B11C\n\
+ .align 2, 0\n\
+_0806B110: .4byte 0x00000266\n\
+_0806B114:\n\
+ ldrh r0, [r5]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5]\n\
+_0806B11A:\n\
+ movs r0, 0\n\
+_0806B11C:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_806B124(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ ldr r0, _0806B144 @ =gMain\n\
+ ldr r1, _0806B148 @ =0x0000043c\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bls _0806B13A\n\
+ b _0806B450\n\
+_0806B13A:\n\
+ lsls r0, 2\n\
+ ldr r1, _0806B14C @ =_0806B150\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806B144: .4byte gMain\n\
+_0806B148: .4byte 0x0000043c\n\
+_0806B14C: .4byte _0806B150\n\
+ .align 2, 0\n\
+_0806B150:\n\
+ .4byte _0806B198\n\
+ .4byte _0806B240\n\
+ .4byte _0806B246\n\
+ .4byte _0806B27C\n\
+ .4byte _0806B282\n\
+ .4byte _0806B2AC\n\
+ .4byte _0806B2B2\n\
+ .4byte _0806B2D0\n\
+ .4byte _0806B2EC\n\
+ .4byte _0806B318\n\
+ .4byte _0806B344\n\
+ .4byte _0806B37C\n\
+ .4byte _0806B382\n\
+ .4byte _0806B3C0\n\
+ .4byte _0806B3CC\n\
+ .4byte _0806B3E4\n\
+ .4byte _0806B40C\n\
+ .4byte _0806B440\n\
+_0806B198:\n\
+ movs r0, 0\n\
+ bl SetVBlankCallback\n\
+ movs r3, 0xC0\n\
+ lsls r3, 19\n\
+ movs r4, 0xC0\n\
+ lsls r4, 9\n\
+ add r2, sp, 0x8\n\
+ mov r8, r2\n\
+ add r2, sp, 0x4\n\
+ movs r6, 0\n\
+ ldr r1, _0806B22C @ =0x040000d4\n\
+ movs r5, 0x80\n\
+ lsls r5, 5\n\
+ ldr r7, _0806B230 @ =0x81000800\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ mov r12, r0\n\
+_0806B1BC:\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\
+ adds r3, r5\n\
+ subs r4, r5\n\
+ cmp r4, r5\n\
+ bhi _0806B1BC\n\
+ strh r6, [r2]\n\
+ add r2, sp, 0x4\n\
+ str r2, [r1]\n\
+ str r3, [r1, 0x4]\n\
+ lsrs r0, r4, 1\n\
+ mov r3, r12\n\
+ orrs r0, r3\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ movs r0, 0xE0\n\
+ lsls r0, 19\n\
+ movs r3, 0x80\n\
+ lsls r3, 3\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x8]\n\
+ ldr r2, _0806B22C @ =0x040000d4\n\
+ mov r1, r8\n\
+ str r1, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ lsrs r0, r3, 2\n\
+ movs r1, 0x85\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r1, 0xA0\n\
+ lsls r1, 19\n\
+ add r0, sp, 0x4\n\
+ strh r4, [r0]\n\
+ str r0, [r2]\n\
+ str r1, [r2, 0x4]\n\
+ lsrs r3, 1\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ orrs r3, r0\n\
+ str r3, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ ldr r2, _0806B234 @ =gPaletteFade\n\
+ ldrb r0, [r2, 0x8]\n\
+ movs r1, 0x80\n\
+ orrs r0, r1\n\
+ strb r0, [r2, 0x8]\n\
+ ldr r1, _0806B238 @ =gMain\n\
+ ldr r2, _0806B23C @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B22C: .4byte 0x040000d4\n\
+_0806B230: .4byte 0x81000800\n\
+_0806B234: .4byte gPaletteFade\n\
+_0806B238: .4byte gMain\n\
+_0806B23C: .4byte 0x0000043c\n\
+_0806B240:\n\
+ bl remove_some_task\n\
+ b _0806B426\n\
+_0806B246:\n\
+ bl sub_806B4A8\n\
+ ldr r1, _0806B26C @ =0x0201b000\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r0, r1, r2\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ ldr r3, _0806B270 @ =0x00000266\n\
+ adds r0, r1, r3\n\
+ strh r2, [r0]\n\
+ movs r0, 0x9A\n\
+ lsls r0, 2\n\
+ adds r1, r0\n\
+ strh r2, [r1]\n\
+ ldr r1, _0806B274 @ =gMain\n\
+ ldr r2, _0806B278 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B26C: .4byte 0x0201b000\n\
+_0806B270: .4byte 0x00000266\n\
+_0806B274: .4byte gMain\n\
+_0806B278: .4byte 0x0000043c\n\
+_0806B27C:\n\
+ bl ResetSpriteData\n\
+ b _0806B426\n\
+_0806B282:\n\
+ ldr r0, _0806B2A0 @ =0x0201b000\n\
+ movs r1, 0x96\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ beq _0806B298\n\
+ cmp r0, 0x5\n\
+ beq _0806B298\n\
+ bl ResetTasks\n\
+_0806B298:\n\
+ ldr r1, _0806B2A4 @ =gMain\n\
+ ldr r2, _0806B2A8 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B2A0: .4byte 0x0201b000\n\
+_0806B2A4: .4byte gMain\n\
+_0806B2A8: .4byte 0x0000043c\n\
+_0806B2AC:\n\
+ bl FreeAllSpritePalettes\n\
+ b _0806B426\n\
+_0806B2B2:\n\
+ ldr r4, _0806B2CC @ =0x0201b000\n\
+ movs r1, 0x97\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0\n\
+ bl CreateTask\n\
+ movs r2, 0x98\n\
+ lsls r2, 2\n\
+ adds r1, r4, r2\n\
+ strb r0, [r1]\n\
+ b _0806B426\n\
+ .align 2, 0\n\
+_0806B2CC: .4byte 0x0201b000\n\
+_0806B2D0:\n\
+ ldr r0, _0806B2E0 @ =gWindowConfig_81E6C90\n\
+ bl SetUpWindowConfig\n\
+ ldr r1, _0806B2E4 @ =gMain\n\
+ ldr r0, _0806B2E8 @ =0x0000043c\n\
+ adds r1, r0\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B2E0: .4byte gWindowConfig_81E6C90\n\
+_0806B2E4: .4byte gMain\n\
+_0806B2E8: .4byte 0x0000043c\n\
+_0806B2EC:\n\
+ ldr r4, _0806B308 @ =gUnknown_03004210\n\
+ ldr r1, _0806B30C @ =gWindowConfig_81E6C90\n\
+ adds r0, r4, 0\n\
+ bl InitWindowFromConfig\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl MultistepInitWindowTileData\n\
+ ldr r1, _0806B310 @ =gMain\n\
+ ldr r2, _0806B314 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B308: .4byte gUnknown_03004210\n\
+_0806B30C: .4byte gWindowConfig_81E6C90\n\
+_0806B310: .4byte gMain\n\
+_0806B314: .4byte 0x0000043c\n\
+_0806B318:\n\
+ bl MultistepLoadFont\n\
+ cmp r0, 0\n\
+ bne _0806B322\n\
+ b _0806B450\n\
+_0806B322:\n\
+ ldr r0, _0806B338 @ =0x0201b000\n\
+ movs r3, 0x99\n\
+ lsls r3, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x1\n\
+ strh r1, [r0]\n\
+ ldr r1, _0806B33C @ =gMain\n\
+ ldr r0, _0806B340 @ =0x0000043c\n\
+ adds r1, r0\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B338: .4byte 0x0201b000\n\
+_0806B33C: .4byte gMain\n\
+_0806B340: .4byte 0x0000043c\n\
+_0806B344:\n\
+ ldr r0, _0806B368 @ =0x0201b000\n\
+ movs r1, 0x99\n\
+ lsls r1, 2\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ bl LoadPartyMenuGraphics\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B374\n\
+ movs r0, 0\n\
+ strh r0, [r4]\n\
+ ldr r1, _0806B36C @ =gMain\n\
+ ldr r2, _0806B370 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B368: .4byte 0x0201b000\n\
+_0806B36C: .4byte gMain\n\
+_0806B370: .4byte 0x0000043c\n\
+_0806B374:\n\
+ ldrh r0, [r4]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4]\n\
+ b _0806B450\n\
+_0806B37C:\n\
+ bl sub_809D51C\n\
+ b _0806B426\n\
+_0806B382:\n\
+ ldr r2, _0806B3B0 @ =gUnknown_08376C74\n\
+ ldr r0, _0806B3B4 @ =0x0201b000\n\
+ movs r1, 0x96\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r2, 0x4\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B450\n\
+ ldr r1, _0806B3B8 @ =gMain\n\
+ ldr r2, _0806B3BC @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B3B0: .4byte gUnknown_08376C74\n\
+_0806B3B4: .4byte 0x0201b000\n\
+_0806B3B8: .4byte gMain\n\
+_0806B3BC: .4byte 0x0000043c\n\
+_0806B3C0:\n\
+ ldr r0, _0806B3C8 @ =gWindowConfig_81E6CC8\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b _0806B426\n\
+ .align 2, 0\n\
+_0806B3C8: .4byte gWindowConfig_81E6CC8\n\
+_0806B3CC:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, 0\n\
+ beq _0806B450\n\
+ ldr r1, _0806B3DC @ =gMain\n\
+ ldr r0, _0806B3E0 @ =0x0000043c\n\
+ adds r1, r0\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B3DC: .4byte gMain\n\
+_0806B3E0: .4byte 0x0000043c\n\
+_0806B3E4:\n\
+ ldr r0, _0806B3FC @ =0x0201b000\n\
+ ldr r1, _0806B400 @ =0x00000259\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ movs r1, 0\n\
+ bl sub_806D538\n\
+ ldr r1, _0806B404 @ =gMain\n\
+ ldr r2, _0806B408 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B3FC: .4byte 0x0201b000\n\
+_0806B400: .4byte 0x00000259\n\
+_0806B404: .4byte gMain\n\
+_0806B408: .4byte 0x0000043c\n\
+_0806B40C:\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r2, _0806B434 @ =gPaletteFade\n\
+ ldrb r1, [r2, 0x8]\n\
+ movs r0, 0x7F\n\
+ ands r0, r1\n\
+ strb r0, [r2, 0x8]\n\
+_0806B426:\n\
+ ldr r1, _0806B438 @ =gMain\n\
+ ldr r3, _0806B43C @ =0x0000043c\n\
+ adds r1, r3\n\
+_0806B42C:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _0806B450\n\
+ .align 2, 0\n\
+_0806B434: .4byte gPaletteFade\n\
+_0806B438: .4byte gMain\n\
+_0806B43C: .4byte 0x0000043c\n\
+_0806B440:\n\
+ ldr r0, _0806B44C @ =sub_806AF34\n\
+ bl SetVBlankCallback\n\
+ movs r0, 0x1\n\
+ b _0806B452\n\
+ .align 2, 0\n\
+_0806B44C: .4byte sub_806AF34\n\
+_0806B450:\n\
+ movs r0, 0\n\
+_0806B452:\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+void sub_806B460(void)
+{
+ while (sub_806B124() != TRUE)
+ {
+ if (sub_80F9344() == TRUE)
+ {
+ return;
+ }
+ }
+
+ if (ewram1B000.unk258 != 5)
+ {
+ sub_806BF74(ewram1B000.unk260, 0);
+ }
+
+ SetMainCallback2(sub_806AEDC);
+}
+
+void sub_806B4A8(void)
+{
+ SetHBlankCallback(NULL);
+ REG_DISPCNT = 8000;
+ REG_BG0CNT = 0x1E05;
+ REG_BG1CNT = 0x703;
+ REG_BG2CNT = 0xF08;
+ REG_BG3CNT = 0x602;
+ REG_BLDCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG3VOFS = -1;
+}
+
+bool8 IsLinkDoubleBattle()
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK_DOUBLE) == BATTLE_TYPE_LINK_DOUBLE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+void sub_806B548(void)
+{
+ if (ewram1B000.unk261)
+ {
+ u32 src = (u32)&gBGTilemapBuffers[2];
+ u32 dest = BG_VRAM + 0x3000;
+
+ REG_DMA3SAD = src;
+ REG_DMA3DAD = dest;
+ REG_DMA3CNT = ((DMA_ENABLE) << 16) | 0x400;
+
+ if (ewram1B000.unk261 == 2)
+ {
+ ewram1B000.unk261 = 0;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_806B548(void)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ ldr r0, _0806B574 @ =0x0201b000\n\
+ ldr r1, _0806B578 @ =0x00000261\n\
+ adds r4, r0, r1\n\
+ ldrb r3, [r4]\n\
+ cmp r3, 0\n\
+ beq _0806B56E\n\
+ ldr r1, _0806B57C @ =gBGTilemapBuffers + 0x1000\n\
+ ldr r2, _0806B580 @ =0x06003000\n\
+ ldr r0, _0806B584 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _0806B588 @ =0x80000400\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ cmp r3, 0x2\n\
+ bne _0806B56E\n\
+ movs r0, 0\n\
+ strb r0, [r4]\n\
+_0806B56E:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806B574: .4byte 0x0201b000\n\
+_0806B578: .4byte 0x00000261\n\
+_0806B57C: .4byte gBGTilemapBuffers + 0x1000\n\
+_0806B580: .4byte 0x06003000\n\
+_0806B584: .4byte 0x040000d4\n\
+_0806B588: .4byte 0x80000400\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+__attribute__((naked))
+u8 sub_806B58C(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0\n\
+ bne _0806B5A8\n\
+ ldr r0, _0806B5A4 @ =gUnknown_0202E8FA\n\
+ strb r2, [r0]\n\
+ b _0806B5C8\n\
+ .align 2, 0\n\
+_0806B5A4: .4byte gUnknown_0202E8FA\n\
+_0806B5A8:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B5C0\n\
+ ldr r1, _0806B5BC @ =gUnknown_0202E8FA\n\
+ movs r0, 0x2\n\
+ b _0806B5C4\n\
+ .align 2, 0\n\
+_0806B5BC: .4byte gUnknown_0202E8FA\n\
+_0806B5C0:\n\
+ ldr r1, _0806B5E4 @ =gUnknown_0202E8FA\n\
+ movs r0, 0x1\n\
+_0806B5C4:\n\
+ strb r0, [r1]\n\
+ adds r0, r1, 0\n\
+_0806B5C8:\n\
+ ldrb r0, [r0]\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ ldr r0, _0806B5E8 @ =gUnknown_083769A8\n\
+ adds r4, r1, r0\n\
+ cmp r5, 0x8\n\
+ bls _0806B5DA\n\
+ b _0806B900\n\
+_0806B5DA:\n\
+ lsls r0, r5, 2\n\
+ ldr r1, _0806B5EC @ =_0806B5F0\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806B5E4: .4byte gUnknown_0202E8FA\n\
+_0806B5E8: .4byte gUnknown_083769A8\n\
+_0806B5EC: .4byte _0806B5F0\n\
+ .align 2, 0\n\
+_0806B5F0:\n\
+ .4byte _0806B614\n\
+ .4byte _0806B628\n\
+ .4byte _0806B638\n\
+ .4byte _0806B694\n\
+ .4byte _0806B71A\n\
+ .4byte _0806B7A2\n\
+ .4byte _0806B832\n\
+ .4byte _0806B8C6\n\
+ .4byte _0806B8E8\n\
+_0806B614:\n\
+ ldr r0, _0806B624 @ =gBGTilemapBuffers + 0x1000\n\
+ movs r2, 0x80\n\
+ lsls r2, 4\n\
+ movs r1, 0\n\
+ bl memset\n\
+ b _0806B900\n\
+ .align 2, 0\n\
+_0806B624: .4byte gBGTilemapBuffers + 0x1000\n\
+_0806B628:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r4, 0x1]\n\
+ movs r2, 0x3\n\
+ bl sub_806B9A4\n\
+ adds r0, r4, 0\n\
+ movs r1, 0\n\
+ b _0806B8A8\n\
+_0806B638:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B666\n\
+ ldr r0, _0806B65C @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bls _0806B660\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B65C: .4byte gPlayerPartyCount\n\
+_0806B660:\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ b _0806B8BC\n\
+_0806B666:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B684\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r2, 0x4\n\
+ bl sub_806B9A4\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ movs r2, 0x4\n\
+ b _0806B8AA\n\
+_0806B684:\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r2, 0x3\n\
+ bl sub_806B9A4\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ b _0806B8A8\n\
+_0806B694:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B6C2\n\
+ ldr r0, _0806B6B8 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ bls _0806B6BC\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x4\n\
+ movs r1, 0x2\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B6B8: .4byte gPlayerPartyCount\n\
+_0806B6BC:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ b _0806B8BC\n\
+_0806B6C2:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B6F6\n\
+ ldr r0, _0806B6EC @ =gPlayerParty + 2 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B6F0\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x4\n\
+ movs r1, 0x2\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B6EC: .4byte gPlayerParty + 2 * 0x64\n\
+_0806B6F0:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ b _0806B8BC\n\
+_0806B6F6:\n\
+ ldr r0, _0806B710 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ bls _0806B714\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x4\n\
+ movs r1, 0x2\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B710: .4byte gPlayerPartyCount\n\
+_0806B714:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ b _0806B8BC\n\
+_0806B71A:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B74A\n\
+ ldr r0, _0806B740 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ bls _0806B744\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x6\n\
+ movs r1, 0x3\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B740: .4byte gPlayerPartyCount\n\
+_0806B744:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ b _0806B8BC\n\
+_0806B74A:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B77E\n\
+ ldr r0, _0806B774 @ =gPlayerParty + 3 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B778\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x6\n\
+ movs r1, 0x3\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B774: .4byte gPlayerParty + 3 * 0x64\n\
+_0806B778:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ b _0806B8BC\n\
+_0806B77E:\n\
+ ldr r0, _0806B798 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ bls _0806B79C\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x6\n\
+ movs r1, 0x3\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B798: .4byte gPlayerPartyCount\n\
+_0806B79C:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ b _0806B8BC\n\
+_0806B7A2:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B7D2\n\
+ ldr r0, _0806B7C8 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bls _0806B7CC\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x8\n\
+ movs r1, 0x4\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B7C8: .4byte gPlayerPartyCount\n\
+_0806B7CC:\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ b _0806B8BC\n\
+_0806B7D2:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B80A\n\
+ ldr r0, _0806B800 @ =gPlayerParty + 4 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B804\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x8\n\
+ movs r1, 0x4\n\
+ movs r2, 0x4\n\
+ b _0806B8AA\n\
+ .align 2, 0\n\
+_0806B800: .4byte gPlayerParty + 4 * 0x64\n\
+_0806B804:\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ b _0806B884\n\
+_0806B80A:\n\
+ ldr r0, _0806B828 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bls _0806B82C\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x8\n\
+ movs r1, 0x4\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B828: .4byte gPlayerPartyCount\n\
+_0806B82C:\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ b _0806B8BC\n\
+_0806B832:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B84C\n\
+ ldr r0, _0806B848 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bhi _0806B896\n\
+ b _0806B8B8\n\
+ .align 2, 0\n\
+_0806B848: .4byte gPlayerPartyCount\n\
+_0806B84C:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B88E\n\
+ ldr r0, _0806B87C @ =gPlayerParty + 5 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B880\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xA\n\
+ movs r1, 0x5\n\
+ movs r2, 0x4\n\
+ b _0806B8AA\n\
+ .align 2, 0\n\
+_0806B87C: .4byte gPlayerParty + 5 * 0x64\n\
+_0806B880:\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+_0806B884:\n\
+ movs r2, 0x1\n\
+ movs r3, 0x4\n\
+ bl sub_806BA94\n\
+ b _0806B900\n\
+_0806B88E:\n\
+ ldr r0, _0806B8B4 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bls _0806B8B8\n\
+_0806B896:\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xA\n\
+ movs r1, 0x5\n\
+_0806B8A8:\n\
+ movs r2, 0x3\n\
+_0806B8AA:\n\
+ movs r3, 0\n\
+ bl sub_806BF24\n\
+ b _0806B900\n\
+ .align 2, 0\n\
+_0806B8B4: .4byte gPlayerPartyCount\n\
+_0806B8B8:\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+_0806B8BC:\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ b _0806B900\n\
+_0806B8C6:\n\
+ ldr r0, _0806B8E4 @ =0x0201b000\n\
+ movs r1, 0x96\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bne _0806B8DA\n\
+ movs r0, 0x1\n\
+ bl sub_806BB9C\n\
+_0806B8DA:\n\
+ movs r0, 0x1\n\
+ bl sub_806BBEC\n\
+ b _0806B900\n\
+ .align 2, 0\n\
+_0806B8E4: .4byte 0x0201b000\n\
+_0806B8E8:\n\
+ ldr r0, _0806B8F8 @ =0x0201b000\n\
+ ldr r1, _0806B8FC @ =0x00000261\n\
+ adds r0, r1\n\
+ movs r1, 0x2\n\
+ strb r1, [r0]\n\
+ movs r0, 0x1\n\
+ b _0806B902\n\
+ .align 2, 0\n\
+_0806B8F8: .4byte 0x0201b000\n\
+_0806B8FC: .4byte 0x00000261\n\
+_0806B900:\n\
+ movs r0, 0\n\
+_0806B902:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+void sub_806B908(void)
+{
+ memset(&gBGTilemapBuffers[2], 0, 0x800);
+ gUnknown_0202E8FA = 3;
+ sub_806B9A4(gUnknown_083769C0[12], gUnknown_083769C0[13], 3);
+
+ if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES))
+ sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 0, 3);
+ else
+ sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 1, 3);
+
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES))
+ sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 0, 3);
+ else
+ sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 1, 3);
+
+ ewram1B000.unk261 = 2;
+}
+#else
+__attribute__((naked))
+void sub_806B908(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000\n\
+ movs r2, 0x80\n\
+ lsls r2, 4\n\
+ movs r1, 0\n\
+ bl memset\n\
+ ldr r1, _0806B94C @ =gUnknown_0202E8FA\n\
+ movs r0, 0x3\n\
+ strb r0, [r1]\n\
+ ldr r0, _0806B950 @ =gUnknown_083769A8\n\
+ adds r4, r0, 0\n\
+ adds r4, 0x24\n\
+ ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r4, 0x1]\n\
+ movs r2, 0x3\n\
+ bl sub_806B9A4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B958\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ b _0806B964\n\
+ .align 2, 0\n\
+_0806B948: .4byte gBGTilemapBuffers + 0x1000\n\
+_0806B94C: .4byte gUnknown_0202E8FA\n\
+_0806B950: .4byte gUnknown_083769A8\n\
+_0806B954: .4byte gPlayerParty + 1 * 0x64\n\
+_0806B958:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+_0806B964:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B980\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ b _0806B98C\n\
+_0806B980:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+_0806B98C:\n\
+ ldr r0, _0806B99C @ =0x0201b000\n\
+ ldr r1, _0806B9A0 @ =0x00000261\n\
+ adds r0, r1\n\
+ movs r1, 0x2\n\
+ strb r1, [r0]\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806B99C: .4byte 0x0201b000\n\
+_0806B9A0: .4byte 0x00000261\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_806B9A4(s16 a, u16 b, u8 c)
+{
+ u8 i;
+ u16 var1 = b * 32;
+
+ for (i = 0; i <= 6; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ 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];
+ }
+ }
+ }
+ }
+}
+
+void sub_806BA34(s16 a, u16 b)
+{
+ u8 i;
+ u16 var1 = b * 32;
+
+ for (i = 0; i <= 6; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ for (; j <= 10 && a + j <= 0x1F; j++)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
+ }
+ }
+ }
+ }
+}
+
+void sub_806BA94(s16 a, u16 b, u8 c, u8 d)
+{
+ u8 i;
+ u8 *arr;
+ u16 var1;
+
+ arr = gUnknown_08376A5E;
+ if (c == 0)
+ {
+ arr = gUnknown_08376A25;
+ }
+
+ var1 = b * 32;
+
+
+ for (i = 0; i < 3; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ while (j <= 0x12 && a + j <= 0x1F)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (d << 12) | arr[i * 19 + j];
+ }
+
+ j++;
+ }
+ }
+ }
+}
+
+void sub_806BB3C(s16 a, u16 b)
+{
+ u8 i;
+ u16 var1 = (b * 32);
+
+ for (i = 0; i < 3; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ for (; j <= 0x12 && a + j <= 0x1F; j++)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
+ }
+ }
+ }
+ }
+}
+
+void sub_806BB9C(u8 a)
+{
+ u8 i;
+ u16 *vramPtr;
+ const u16 arr[12];
+
+ memcpy(&arr, gUnknown_08376CD4, 12 * 2);
+
+ vramPtr = (u16 *)(BG_VRAM + 0x3C30);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ vramPtr[i] = arr[i] + (a << 12);
+ vramPtr[i + 0x20] = arr[i + PARTY_SIZE] + (a << 12);
+ }
+}
+
+void sub_806BBEC(u8 a)
+{
+ u8 i;
+ u16 *vramPtr;
+ const u16 arr[12];
+
+ memcpy(&arr, gUnknown_08376CEC, 12 * 2);
+
+ vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ vramPtr[i] = arr[i] + (a << 12);
+ vramPtr[i + 0x20] = arr[i + PARTY_SIZE] + (a << 12);
+ }
+}
+
+#ifdef NONMATCHING
+// The original THUMB is preserving r8 for seemingly no reason. Unsure how to match.
+void sub_806BC3C(u8 monIndex, u8 b)
+{
+ u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex];
+ u8 i;
+ u16 var1;
+
+ for (i = 0, var1 = (b / 7) * 32; i <= PARTY_SIZE; i++)
+ {
+ u32 offset = i + var1;
+ vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C;
+ vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C;
+ }
+}
+#else
+__attribute__((naked))
+void sub_806BC3C(u8 monIndex, u8 b)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ adds r4, r0, 0\n\
+ adds r5, r1, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ ldr r6, _0806BCB0 @ =gUnknown_08376918\n\
+ bl IsDoubleBattle\n\
+ lsls r4, 2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r4, r1\n\
+ adds r4, r6\n\
+ ldr r7, [r4]\n\
+ movs r6, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x7\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 19\n\
+ ldr r5, _0806BCB4 @ =gUnknown_08E9A300\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r3, r0, 0\n\
+_0806BC7C:\n\
+ adds r1, r6, r4\n\
+ lsls r2, r6, 1\n\
+ adds r2, r7\n\
+ lsls r0, r1, 1\n\
+ adds r0, r5\n\
+ ldrh r0, [r0]\n\
+ adds r0, r3, r0\n\
+ strh r0, [r2]\n\
+ adds r2, 0x40\n\
+ adds r1, 0x20\n\
+ lsls r1, 1\n\
+ adds r1, r5\n\
+ ldrh r1, [r1]\n\
+ adds r0, r3, r1\n\
+ strh r0, [r2]\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0x6\n\
+ bls _0806BC7C\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806BCB0: .4byte gUnknown_08376918\n\
+_0806BCB4: .4byte gUnknown_08E9A300\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void unref_sub_806BCB8(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ sub_806BC3C(i, a);
+ }
+}
+
+void sub_806BCE8()
+{
+ u8 i;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ u8 gender = GetMonGender(&gPlayerParty[i]);
+ switch (gender)
+ {
+ case MON_MALE:
+ sub_806BC3C(i, 0x54);
+ break;
+ case MON_FEMALE:
+ sub_806BC3C(i, 0x62);
+ break;
+ default:
+ sub_806BC3C(i, 0x46);
+ break;
+ }
+ }
+ else
+ {
+ sub_806BC3C(i, 0x46);
+ }
+ }
+}
+
+u8 sub_806BD58(u8 taskId, u8 b)
+{
+ u8 spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ sub_806CA18(taskId, spriteId);
+ return 1;
+}
+
+#ifdef NONMATCHING
+u16 sub_806BD80(u8 taskId)
+{
+ s8 menuDirectionPressed = 0x0;
+
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case DPAD_UP:
+ menuDirectionPressed = 0xFF;
+ break;
+ case DPAD_DOWN:
+ menuDirectionPressed = 0x1;
+ break;
+ case DPAD_LEFT:
+ menuDirectionPressed = 0xFE;
+ break;
+ case DPAD_RIGHT:
+ menuDirectionPressed = 0x2;
+ break;
+ }
+
+ if (menuDirectionPressed == 0)
+ {
+ u8 var1 = sub_80F92BC();
+ switch (var1)
+ {
+ case 1:
+ menuDirectionPressed = 0xFF;
+ break;
+ case 2:
+ menuDirectionPressed = 0x1;
+ break;
+ }
+
+ if (menuDirectionPressed == 0)
+ {
+ if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data0 == 7)
+ {
+ // Selected "CANCEL"
+ return B_BUTTON;
+ }
+ else
+ {
+ return gMain.newKeys & (A_BUTTON | B_BUTTON);
+ }
+ }
+ }
+
+ sub_806BF74(taskId, menuDirectionPressed);
+ return gMain.newAndRepeatedKeys;
+}
+#else
+__attribute__((naked))
+u16 sub_806BD80(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _0806BD9C @ =gMain\n\
+ ldrh r0, [r0, 0x30]\n\
+ cmp r0, 0x20\n\
+ beq _0806BDB2\n\
+ cmp r0, 0x20\n\
+ bgt _0806BDA0\n\
+ cmp r0, 0x10\n\
+ beq _0806BDB6\n\
+ b _0806BDB8\n\
+ .align 2, 0\n\
+_0806BD9C: .4byte gMain\n\
+_0806BDA0:\n\
+ cmp r0, 0x40\n\
+ beq _0806BDAA\n\
+ cmp r0, 0x80\n\
+ beq _0806BDAE\n\
+ b _0806BDB8\n\
+_0806BDAA:\n\
+ movs r4, 0xFF\n\
+ b _0806BDB8\n\
+_0806BDAE:\n\
+ movs r4, 0x1\n\
+ b _0806BDB8\n\
+_0806BDB2:\n\
+ movs r4, 0xFE\n\
+ b _0806BDB8\n\
+_0806BDB6:\n\
+ movs r4, 0x2\n\
+_0806BDB8:\n\
+ lsls r0, r4, 24\n\
+ cmp r0, 0\n\
+ bne _0806BDDC\n\
+ bl sub_80F92BC\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _0806BDD0\n\
+ cmp r0, 0x2\n\
+ beq _0806BDD4\n\
+ b _0806BDD6\n\
+_0806BDD0:\n\
+ movs r4, 0xFF\n\
+ b _0806BDD6\n\
+_0806BDD4:\n\
+ movs r4, 0x1\n\
+_0806BDD6:\n\
+ lsls r0, r4, 24\n\
+ cmp r0, 0\n\
+ beq _0806BDF0\n\
+_0806BDDC:\n\
+ asrs r1, r0, 24\n\
+ adds r0, r5, 0\n\
+ bl sub_806BF74\n\
+ ldr r0, _0806BDEC @ =gMain\n\
+ ldrh r0, [r0, 0x30]\n\
+ b _0806BE2C\n\
+ .align 2, 0\n\
+_0806BDEC: .4byte gMain\n\
+_0806BDF0:\n\
+ ldr r0, _0806BE1C @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0806BE24\n\
+ ldr r4, _0806BE20 @ =gSprites\n\
+ adds r0, r5, 0\n\
+ bl sub_806CA00\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 4\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ movs r2, 0x2E\n\
+ ldrsh r0, [r1, r2]\n\
+ cmp r0, 0x7\n\
+ bne _0806BE24\n\
+ movs r0, 0x2\n\
+ b _0806BE2C\n\
+ .align 2, 0\n\
+_0806BE1C: .4byte gMain\n\
+_0806BE20: .4byte gSprites\n\
+_0806BE24:\n\
+ ldr r0, _0806BE34 @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+_0806BE2C:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_0806BE34: .4byte gMain\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+u16 sub_806BE38(u8 taskId)
+{
+ u8 menuDirectionPressed = 0x0;
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case DPAD_UP:
+ menuDirectionPressed = 0xFF;
+ break;
+ case DPAD_DOWN:
+ menuDirectionPressed = 0x1;
+ break;
+ case DPAD_LEFT:
+ menuDirectionPressed = 0xFE;
+ break;
+ case DPAD_RIGHT:
+ menuDirectionPressed = 0x2;
+ break;
+ }
+
+ if (menuDirectionPressed == 0)
+ {
+ u8 var1 = sub_80F92BC();
+ switch (var1)
+ {
+ case 1:
+ menuDirectionPressed = 0xFF;
+ break;
+ case 2:
+ menuDirectionPressed = 0x1;
+ break;
+ }
+ }
+
+ if (gMain.newKeys & START_BUTTON)
+ {
+ sub_806C890(taskId);
+ return START_BUTTON;
+ }
+ else
+ {
+ s8 signedMenuDirection = menuDirectionPressed;
+ if (signedMenuDirection)
+ {
+ sub_806C658(taskId, signedMenuDirection);
+ return gMain.newAndRepeatedKeys;
+ }
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gSprites[sub_806CA00(taskId)].data0 == 7)
+ {
+ return B_BUTTON;
+ }
+ }
+ }
+ }
+
+ return gMain.newKeys & (A_BUTTON | B_BUTTON);
+}
+
+void task_pc_turn_off(const u8 *a, u8 b)
+{
+ if (a[0])
+ sub_806BA94(a[0], a[1], 0, b);
+ else
+ sub_806B9A4(a[0], a[1], b);
+}
+
+void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d)
+{
+ if (GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES) && GetMonData(&gPlayerParty[monIndex], MON_DATA_HP) == 0)
+ c = PARTY_SIZE - 1;
+
+ if (d == 1)
+ c += 4;
+
+ task_pc_turn_off(a, c);
+}
+
+void sub_806BF74(u8 taskId, s8 directionPressed)
+{
+ bool8 isLinkDoubleBattle;
+ u8 spriteId = sub_806CA00(taskId);
+ u8 menuIndex = gSprites[spriteId].data0;
+
+ UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
+
+ isLinkDoubleBattle = IsLinkDoubleBattle();
+ if (isLinkDoubleBattle == 1)
+ {
+ if (menuIndex == 0 || menuIndex == 2 || menuIndex == 3)
+ sub_806BF24(&gUnknown_083769C0[menuIndex * 2], menuIndex, 3, 0);
+ if (menuIndex == 1 || menuIndex == 4 || menuIndex == 5)
+ sub_806BF24(&gUnknown_083769C0[menuIndex * 2], menuIndex, 4, 0);
+ if (menuIndex == 7)
+ sub_806BBEC(1);
+
+ sub_806C490(spriteId, menuIndex, directionPressed);
+
+ if (gSprites[spriteId].data0 == 0 || gSprites[spriteId].data0 == 2 || gSprites[spriteId].data0 == 3)
+ sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1);
+ if (gSprites[spriteId].data0 == 1 || gSprites[spriteId].data0 == 4 || gSprites[spriteId].data0 == 5)
+ sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 4, 1);
+ if (gSprites[spriteId].data0 == 7)
+ sub_806BBEC(2);
+
+ ewram1B000.unk261 = 2;
+
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[2][gSprites[spriteId].data0].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[2][gSprites[spriteId].data0].y;
+ }
+ else
+ {
+ u8 isDoubleBattle = IsDoubleBattle();
+
+ if (menuIndex <= PARTY_SIZE - 1)
+ {
+ sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0);
+ }
+ else
+ {
+ sub_806BBEC(1);
+ }
+
+ if (!isDoubleBattle)
+ {
+ sub_806C1E4(spriteId, menuIndex, directionPressed);
+ }
+ else
+ {
+ sub_806C310(spriteId, menuIndex, directionPressed);
+ }
+
+ if (gSprites[spriteId].data0 <= PARTY_SIZE - 1)
+ {
+ sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1);
+ }
+ else
+ {
+ sub_806BBEC(2);
+ }
+
+ ewram1B000.unk261 = 2;
+
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].y;
+ }
+
+ UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data0, 1);
+
+ if (menuIndex != gSprites[spriteId].data0)
+ {
+ PlaySE(5);
+ }
+}
+
+void sub_806C1E4(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ u8 var1;
+ s8 menuMovement = directionPressed + 2;
+
+ switch (menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ if (menuIndex == 0) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = gPlayerPartyCount - 1;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == gPlayerPartyCount - 1) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (gPlayerPartyCount > 1 && menuIndex == 0)
+ {
+ if (gSprites[spriteId].data1 == 0)
+ gSprites[spriteId].data1 = 1;
+
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ }
+ break;
+ case 0:
+ var1 = menuIndex - 1;
+ if (var1 <= 4) {
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data1 = menuIndex;
+ }
+ break;
+ }
+}
+
+void sub_806C310(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ u8 var3;
+ s8 menuMovement = directionPressed + 2;
+
+ switch(menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else if (menuIndex == gPlayerPartyCount - 1) {
+ gSprites[spriteId].data0 = 7;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ if (menuIndex == 0) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = gPlayerPartyCount - 1;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (menuIndex == 0) {
+ if (gPlayerPartyCount > 2) {
+ u16 var1 = gSprites[spriteId].data1 - 2;
+ if (var1 > 1)
+ gSprites[spriteId].data0 = 2;
+ else
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ }
+ }
+ else if (menuIndex == 1) {
+ if (gPlayerPartyCount > 4) {
+ u16 var1 = gSprites[spriteId].data1 - 4;
+ if (var1 <= 1)
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ else
+ gSprites[spriteId].data0 = 4;
+ }
+ }
+ break;
+ case 0:
+ var3 = menuIndex - 2;
+ if (var3 <= 1) {
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data1 = menuIndex;
+ } else {
+ u8 var2 = menuIndex - 4;
+ if (var2 <= 1) {
+ gSprites[spriteId].data0 = 1;
+ gSprites[spriteId].data1 = menuIndex;
+ }
+ }
+ break;
+ }
+}
+
+/*void sub_806C490(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ s8 menuMovement;
+ s16 var1;
+ u8 var2;
+
+ menuMovement = directionPressed + 2;
+ switch (menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else if (menuIndex == PARTY_SIZE - 1) {
+ gSprites[spriteId].data0 = 7;
+ } else {
+ // Put if statment here
+ while (menuIndex++ != PARTY_SIZE - 1) {
+ if (GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES))
+ {
+ gSprites[spriteId].data0 = menuIndex;
+ gSprites[spriteId].data1 = 0;
+ return;
+ }
+ }
+
+ gSprites[spriteId].data0 = 7;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ while (menuIndex-- != 0) {
+ if (GetMonData(gPlayerParty[menuIndex], MON_DATA_SPECIES))
+ {
+ gSprites[spriteId].data0 = menuIndex;
+ gSprites[spriteId].data1 = 0;
+ return;
+ }
+ }
+
+ gSprites[spriteId].data0 = 7;
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (menuIndex == 0) {
+ var1 = gSprites[spriteId].data1 - 2;
+ if (var1 > 1) {
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 2;
+ } else if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 3;
+ }
+ } else {
+ gSprites[spriteId].data0 = 1;
+ }
+ } else if (menuIndex == 1) {
+ var1 = gSprites[spriteId].data1 - 4;
+ if (var1 <= 1) {
+ gSprites[spriteId].data0 = var1;
+ } else {
+ if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 4;
+ } else if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 5;
+ }
+ }
+ }
+ break;
+ case 0:
+ var2 = menuIndex - 2;
+ if (var2 <= 1) {
+ gSprites[spriteId].data0 = 0;
+ } else {
+ var2 = menuIndex - 4;
+ if (var2 <= 1) {
+ gSprites[spriteId].data0 = 1;
+ }
+ }
+
+ gSprites[spriteId].data1 = menuIndex;
+ break;
+ }
+}*/
+__attribute__((naked))
+void sub_806C490(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r4, r1, 24\n\
+ lsls r2, 24\n\
+ movs r0, 0x80\n\
+ lsls r0, 18\n\
+ adds r2, r0\n\
+ asrs r0, r2, 24\n\
+ cmp r0, 0x4\n\
+ bls _0806C4AA\n\
+ b _0806C64E\n\
+_0806C4AA:\n\
+ lsls r0, 2\n\
+ ldr r1, _0806C4B4 @ =_0806C4B8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806C4B4: .4byte _0806C4B8\n\
+ .align 2, 0\n\
+_0806C4B8:\n\
+ .4byte _0806C618\n\
+ .4byte _0806C524\n\
+ .4byte _0806C4CC\n\
+ .4byte _0806C4E0\n\
+ .4byte _0806C57C\n\
+_0806C4CC:\n\
+ ldr r0, _0806C4DC @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0\n\
+ strh r0, [r1, 0x30]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C4DC: .4byte gSprites\n\
+_0806C4E0:\n\
+ cmp r4, 0x7\n\
+ bne _0806C4FC\n\
+ ldr r2, _0806C4F8 @ =gSprites\n\
+ lsls r3, r5, 4\n\
+ adds r0, r3, r5\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x2E]\n\
+ adds r1, r2, 0\n\
+ adds r6, r3, 0\n\
+ b _0806C566\n\
+ .align 2, 0\n\
+_0806C4F8: .4byte gSprites\n\
+_0806C4FC:\n\
+ lsls r6, r5, 4\n\
+ b _0806C518\n\
+_0806C500:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r0, 0x64\n\
+ muls r0, r4\n\
+ ldr r1, _0806C520 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0806C528\n\
+_0806C518:\n\
+ cmp r4, 0x5\n\
+ bne _0806C500\n\
+ b _0806C558\n\
+ .align 2, 0\n\
+_0806C520: .4byte gPlayerParty\n\
+_0806C524:\n\
+ lsls r6, r5, 4\n\
+ b _0806C554\n\
+_0806C528:\n\
+ ldr r1, _0806C534 @ =gSprites\n\
+ adds r0, r6, r5\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ strh r4, [r0, 0x2E]\n\
+ b _0806C566\n\
+ .align 2, 0\n\
+_0806C534: .4byte gSprites\n\
+_0806C538:\n\
+ subs r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x6\n\
+ beq _0806C554\n\
+ movs r0, 0x64\n\
+ muls r0, r4\n\
+ ldr r1, _0806C574 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0806C528\n\
+_0806C554:\n\
+ cmp r4, 0\n\
+ bne _0806C538\n\
+_0806C558:\n\
+ ldr r0, _0806C578 @ =gSprites\n\
+ adds r1, r6, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r2, 0x7\n\
+ strh r2, [r1, 0x2E]\n\
+ adds r1, r0, 0\n\
+_0806C566:\n\
+ adds r0, r6, r5\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x30]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C574: .4byte gPlayerParty\n\
+_0806C578: .4byte gSprites\n\
+_0806C57C:\n\
+ cmp r4, 0\n\
+ bne _0806C5C8\n\
+ ldr r0, _0806C5AC @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r4, r1, r0\n\
+ ldrh r1, [r4, 0x30]\n\
+ subs r0, r1, 0x2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bls _0806C5E2\n\
+ ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C5B4\n\
+ movs r0, 0x2\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C5AC: .4byte gSprites\n\
+_0806C5B0: .4byte gPlayerParty + 2 * 0x64\n\
+_0806C5B4:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C64E\n\
+ movs r0, 0x3\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+_0806C5C8:\n\
+ cmp r4, 0x1\n\
+ bne _0806C64E\n\
+ ldr r0, _0806C5E8 @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r4, r1, r0\n\
+ ldrh r1, [r4, 0x30]\n\
+ subs r0, r1, 0x4\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0806C5EC\n\
+_0806C5E2:\n\
+ strh r1, [r4, 0x2E]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C5E8: .4byte gSprites\n\
+_0806C5EC:\n\
+ ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C604\n\
+ movs r0, 0x4\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C600: .4byte gPlayerParty + 4 * 0x64\n\
+_0806C604:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C64E\n\
+ movs r0, 0x5\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+_0806C618:\n\
+ subs r0, r4, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _0806C634\n\
+ ldr r0, _0806C630 @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0\n\
+ b _0806C64A\n\
+ .align 2, 0\n\
+_0806C630: .4byte gSprites\n\
+_0806C634:\n\
+ subs r0, r4, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _0806C64E\n\
+ ldr r0, _0806C654 @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0x1\n\
+_0806C64A:\n\
+ strh r0, [r1, 0x2E]\n\
+ strh r4, [r1, 0x30]\n\
+_0806C64E:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806C654: .4byte gSprites\n\
+ .syntax divided\n");
+}
+
+
+// directionPressed = -2 for left, 2 for right, 1 for down, -1 for up
+void sub_806C658(u8 taskId, s8 directionPressed)
+{
+ u16 newMenuIndex;
+ u8 newMenuIndex2;
+ u8 newMenuIndex3;
+ s8 menuMovement;
+ u8 spriteId = sub_806CA00(taskId);
+ u8 menuIndex = gSprites[spriteId].data0;
+
+ 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:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ if (menuIndex == 0) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == PARTY_SIZE) {
+ gSprites[spriteId].data0 = gPlayerPartyCount - 1;
+ } else {
+ gSprites[spriteId].data0 += directionPressed;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == gPlayerPartyCount - 1) {
+ gSprites[spriteId].data0 = 6;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else {
+ gSprites[spriteId].data0 += directionPressed;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (gPlayerPartyCount > 1 && menuIndex == 0)
+ {
+ if (gSprites[spriteId].data1 == 0) {
+ gSprites[spriteId].data1 = 1;
+ }
+
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ }
+ break;
+ case 0:
+ newMenuIndex3 = menuIndex - 1;
+ if (newMenuIndex3 <= 4)
+ {
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data1 = menuIndex;
+ }
+ break;
+ }
+
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[0][gSprites[spriteId].data0].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[0][gSprites[spriteId].data0].y;
+
+
+ newMenuIndex = gSprites[spriteId].data0;
+ if (gSprites[spriteId].data0 <= PARTY_SIZE - 1)
+ {
+ sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data0 * 2], newMenuIndex, 3, 1);
+ }
+ else if (gSprites[spriteId].data0 == PARTY_SIZE)
+ {
+ sub_806BB9C(2);
+ }
+ else
+ {
+ sub_806BBEC(2);
+ }
+
+ ewram1B000.unk261 = 2;
+
+ newMenuIndex2 = gSprites[spriteId].data0;
+ UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1);
+
+ if (menuIndex != gSprites[spriteId].data0)
+ {
+ PlaySE(5);
+ }
+}
+
+void sub_806C890(u8 taskId)
+{
+ u8 spriteId = sub_806CA00(taskId);
+
+ u8 monIndex = gSprites[spriteId].data0;
+ if (monIndex != 6)
+ {
+ UpdateMonIconFrame_806DA44(taskId, monIndex, 0);
+
+ if (monIndex < PARTY_SIZE)
+ {
+ sub_806BF24(&gUnknown_083769A8[monIndex * 2], monIndex, 3, 0);
+ }
+ else
+ {
+ sub_806BBEC(1);
+ }
+
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data0 = 6;
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[0][6].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[0][6].y;
+
+ sub_806BB9C(2);
+
+ ewram1B000.unk261 = 2;
+ PlaySE(5);
+ }
+}
+
+void sub_806C92C(u8 spriteId)
+{
+ u8 monIndex1 = gSprites[spriteId].data0;
+ u8 monIndex2 = gSprites[spriteId].data1;
+
+ if (!IsDoubleBattle())
+ {
+ if (monIndex1 < 1) {
+ if (monIndex2 < 1) {
+ monIndex2 = 1;
+ }
+ } else {
+ if (monIndex2 >= 1) {
+ monIndex2 = 0;
+ }
+ }
+ } else {
+ if (monIndex1 < 2) {
+ if (monIndex2 < 2) {
+ monIndex2 = 2;
+ }
+ } else {
+ if (monIndex2 >= 2) {
+ monIndex2 = 0;
+ }
+ }
+ }
+
+ gSprites[spriteId].data1 = monIndex2;
+}
+
+void sub_806C994(u8 taskId, u8 b)
+{
+ u8 spriteId = sub_806CA00(taskId);
+
+ gSprites[spriteId].data0 = b;
+ sub_806C92C(spriteId);
+}
+
+void sub_806C9C4(u8 taskId, u8 spriteId)
+{
+ u8 spriteId2 = sub_806CA00(taskId);
+
+ gSprites[spriteId].pos1.x = gSprites[spriteId2].pos1.x;
+ gSprites[spriteId].pos1.y = gSprites[spriteId2].pos1.y;
+ gSprites[spriteId].data0 = gSprites[spriteId2].data0;
+}
+
+u8 sub_806CA00(u8 taskId)
+{
+ return gTasks[taskId].data[3] >> 8;
+}
+
+void sub_806CA18(u8 taskId, u8 b)
+{
+ u8 var1 = gTasks[taskId].data[3];
+ gTasks[taskId].data[3] = var1 | (b << 8);
+}
+
+u8 sub_806CA38(u8 taskId)
+{
+ u8 spriteId = sub_806CA00(taskId);
+ return gSprites[spriteId].data0;
+}
+
+void sub_806CA60(u8 taskId)
+{
+ gTasks[taskId].func = TaskDummy;
+ ewram01000.unk0 = taskId;
+
+ CreateTask(sub_806CB74, 0);
+ ewram01000.unk1 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+
+ sub_806C9C4(taskId, ewram01000.unk1);
+ ewram01000.unk2 = sub_806CA00(taskId);
+
+ sub_806D538(ewram1B000_alt.unk272, 0);
+
+ sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data0 * 2], gSprites[ewram01000.unk1].data0, 6, 0);
+ ewram1B000.unk261 = 2;
+}
void sub_806CAFC(u8 a, s16 b)
{
@@ -1282,7 +3816,7 @@ void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- u8 isLinkDoubleBattle = IsLinkDoubleBattle();
+ bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
if (isLinkDoubleBattle == TRUE)
{
PrintPartyMenuMonNickname(monIndex, 2, pokemon);
@@ -1326,7 +3860,7 @@ void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status)
static void PartyMenuClearLevelStatusTilemap(u8 monIndex)
{
- u8 isLinkDoubleBattle;
+ bool8 isLinkDoubleBattle;
u8 b;
u8 x;
u8 y;
@@ -1392,7 +3926,7 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon)
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
u8 statusAndPkrs;
- u8 isLinkDoubleBattle;
+ bool8 isLinkDoubleBattle;
u8 b;
statusAndPkrs = GetMonStatusAndPokerus(pokemon);
@@ -1490,7 +4024,7 @@ void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 isLinkDoubleBattle = IsLinkDoubleBattle();
+ bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
if (isLinkDoubleBattle == TRUE)
{
PartyMenuPrintHP(monIndex, 2, pokemon);
@@ -1565,7 +4099,7 @@ void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 isDoubleBattle = IsLinkDoubleBattle();
+ bool8 isDoubleBattle = IsLinkDoubleBattle();
if (isDoubleBattle == TRUE)
{
PartyMenuDrawHPBar(monIndex, 2, pokemon);