summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/party_menu.s215
-rw-r--r--include/party_menu.h5
-rw-r--r--src/choose_party.c2
-rw-r--r--src/party_menu.c83
4 files changed, 81 insertions, 224 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 4dff83e42..4689389ec 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -6479,219 +6479,4 @@ _0806E0CC:
_0806E0E8: .4byte gPlayerParty
thumb_func_end PrintPartyMenuMonNicknames
- thumb_func_start GetMonNickname
-GetMonNickname: @ 806E0EC
- push {r4,lr}
- adds r4, r1, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonNickname
-
- thumb_func_start PartyMenuPutStatusTilemap
-PartyMenuPutStatusTilemap: @ 806E104
- push {r4,r5,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r4, _0806E15C @ =gUnknown_08376738
- lsrs r0, 22
- lsls r3, r1, 1
- adds r3, r1
- lsls r3, 3
- adds r0, r3
- adds r0, r4
- ldrb r1, [r0]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r0, 0x1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 19
- adds r1, r0
- lsls r1, 1
- ldr r0, _0806E160 @ =0x0600f000
- adds r4, r1, r0
- lsls r2, 26
- lsrs r2, 24
- movs r3, 0
- movs r0, 0xC6
- lsls r0, 1
- adds r2, r0
- ldr r0, _0806E164 @ =0xffffb000
- adds r5, r0, 0
-_0806E142:
- lsls r0, r3, 1
- adds r0, r4
- adds r1, r2, r3
- orrs r1, r5
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _0806E142
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806E15C: .4byte gUnknown_08376738
-_0806E160: .4byte 0x0600f000
-_0806E164: .4byte 0xffffb000
- thumb_func_end PartyMenuPutStatusTilemap
-
- thumb_func_start PartyMenuClearLevelStatusTilemap
-PartyMenuClearLevelStatusTilemap: @ 806E168
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806E17E
- movs r3, 0x2
- b _0806E186
-_0806E17E:
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r3, r0, 24
-_0806E186:
- ldr r1, _0806E1C8 @ =gUnknown_08376738
- lsls r2, r4, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r2, r0
- adds r2, r1
- ldrb r1, [r2]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r2, 0x1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 19
- adds r1, r0
- lsls r1, 1
- ldr r0, _0806E1CC @ =0x0600f000
- adds r1, r0
- movs r3, 0
- movs r2, 0
-_0806E1B0:
- lsls r0, r3, 1
- adds r0, r1
- strh r2, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _0806E1B0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806E1C8: .4byte gUnknown_08376738
-_0806E1CC: .4byte 0x0600f000
- thumb_func_end PartyMenuClearLevelStatusTilemap
-
- thumb_func_start PartyMenuWriteTilemap
-PartyMenuWriteTilemap: @ 806E1D0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 19
- adds r1, r2
- lsls r1, 1
- ldr r2, _0806E1F0 @ =0x0600f000
- adds r1, r2
- movs r2, 0x86
- lsls r2, 1
- adds r0, r2
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0806E1F0: .4byte 0x0600f000
- thumb_func_end PartyMenuWriteTilemap
-
- thumb_func_start PartyMenuDoPrintLevel
-PartyMenuDoPrintLevel: @ 806E1F4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r3, _0806E278 @ =gUnknown_08376738
- lsls r2, r4, 2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r2, r0
- adds r2, r3
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x40
- bl PartyMenuWriteTilemap
- ldr r6, _0806E27C @ =gStringVar1
- movs r0, 0xFC
- strb r0, [r6]
- movs r0, 0x12
- strb r0, [r6, 0x1]
- movs r0, 0x8
- strb r0, [r6, 0x2]
- adds r0, r6, 0x3
- adds r1, r5, 0
- bl ConvertIntToDecimalString
- movs r0, 0
- str r0, [sp]
- ldr r5, _0806E280 @ =gUnknown_02039460
- ldr r2, _0806E284 @ =0x01000020
- mov r0, sp
- adds r1, r5, 0
- bl CpuFastSet
- ldr r0, _0806E288 @ =gWindowConfig_81E6CAC
- ldr r2, _0806E28C @ =0xffffff00
- adds r1, r5, r2
- adds r2, r6, 0
- bl sub_8004E3C
- lsls r4, 10
- ldr r0, _0806E290 @ =0x06014200
- adds r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x20
- bl CpuFastSet
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806E278: .4byte gUnknown_08376738
-_0806E27C: .4byte gStringVar1
-_0806E280: .4byte gUnknown_02039460
-_0806E284: .4byte 0x01000020
-_0806E288: .4byte gWindowConfig_81E6CAC
-_0806E28C: .4byte 0xffffff00
-_0806E290: .4byte 0x06014200
- thumb_func_end PartyMenuDoPrintLevel
-
.align 2, 0 @ Don't pad with nop.
diff --git a/include/party_menu.h b/include/party_menu.h
index 5d4474a56..6a251cb65 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -104,8 +104,9 @@ void SetHeldItemIconVisibility();
void TryPrintPartyMenuMonNickname();
void PrintPartyMenuMonNicknames(void);
void PrintPartyMenuMonNicknames(void);
-void GetMonNickname(struct Pokemon *mon, u8 *nickname);
-void PartyMenuClearLevelStatusTilemap();
+u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer);
+void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status);
+void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level);
void PartyMenuPrintLevel(u8 monIndex, u8 b, struct Pokemon *pokemon);
void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon);
void PartyMenuPrintMonsLevelOrStatus(void);
diff --git a/src/choose_party.c b/src/choose_party.c
index ed96bf3a7..223c97f69 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -68,12 +68,10 @@ extern void CreatePartyMenuMonIcon();
extern void CreateHeldItemIcon_806DCD4(int, u8, int);
extern u8 GetMonStatusAndPokerus();
extern void PartyMenuPrintHP();
-extern void PartyMenuPutStatusTilemap(u8, int, u8);
extern void PrintPartyMenuMonNickname();
extern bool8 sub_80F9344(void);
extern void sub_806D4AC();
extern void sub_806D3B4();
-extern void PartyMenuDoPrintLevel(u8, u8, u8);
extern void box_print(u8, int, const u8 *);
extern void sub_806BCE8(void);
diff --git a/src/party_menu.c b/src/party_menu.c
index 467820111..541c04fdc 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -91,8 +91,6 @@ extern const struct UnknownStruct5 gUnknown_08376BB4[][6];
extern u8 gUnknown_02039460[];
extern u8 gTileBuffer[];
-extern void PartyMenuWriteTilemap(u8, u8 b, u8 c);
-
static void sub_806E884(u8 taskId);
static void sub_8070D90(u8 taskId);
@@ -120,10 +118,85 @@ void sub_806AEDC(void)
#define WINDOW_RIGHT (29)
#endif
-extern void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status);
-extern void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level);
+u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer)
+{
+ GetMonData(pokemon, MON_DATA_NICKNAME, stringBuffer);
+ return StringGetEnd10(stringBuffer);
+}
+
+void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status)
+{
+ u8 i;
+ u8 x = gUnknown_08376738[b][monIndex].x - 1;
+ u8 y = gUnknown_08376738[b][monIndex].y + 1;
+ u16 *vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32);
+ u8 var1 = status * 4;
+
+ for (i = 0; i < 4; i++)
+ {
+ vramPtr[i] = (0x18C + var1 + i) | -0x5000;
+ }
+}
+
+static void PartyMenuClearLevelStatusTilemap(u8 monIndex)
+{
+ u8 isLinkDoubleBattle;
+ u8 b;
+ u8 x;
+ u8 y;
+ u16 *vramPtr;
+ u8 i;
+
+ isLinkDoubleBattle = IsLinkDoubleBattle();
+ if (isLinkDoubleBattle == TRUE)
+ {
+ b = 2;
+ }
+ else
+ {
+ b = IsDoubleBattle();
+ }
+
+ x = gUnknown_08376738[b][monIndex].x - 1;
+ y = gUnknown_08376738[b][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)
+{
+ u16 *vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32);
+ *vramPtr = a + 0x10C;
+}
+
+void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level)
+{
+ u8 *stringVar;
+ u32 var1;
+ u8 x = gUnknown_08376738[b][monIndex].x;
+ u8 y = gUnknown_08376738[b][monIndex].y;
+
+ PartyMenuWriteTilemap(0x40, x - 1, y + 1);
+
+ stringVar = gStringVar1;
+ stringVar[0] = 0xFC;
+ stringVar[1] = 0x12;
+ stringVar[2] = 0x8;
+
+ ConvertIntToDecimalString(&stringVar[3], level);
+
+ var1 = 0;
+ CpuFastSet(&var1, gUnknown_02039460, 0x1000020);
+ sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
+ CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x200 + (monIndex * 0x400)), 32);
+}
+
void PartyMenuPrintLevel(u8 monIndex, u8 b, struct Pokemon *pokemon)
{
u16 level = GetMonData(pokemon, MON_DATA_LEVEL);
@@ -214,7 +287,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
var = 0;
CpuFastSet(&var, gUnknown_02039460, 0x1000040);
- sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100, gStringVar1);
+ sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x300 + (monIndex * 0x400)), 64);
}