summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-06-16 18:28:59 -0500
committercamthesaxman <cameronghall@cox.net>2017-06-16 18:28:59 -0500
commit6dca429862b60ce2e332893839698c880a8bd5e7 (patch)
treebb6e5a78274e5dfc3ac019141ac548335ace363f
parent0de38858f641934699ce934e2bdb3dc1495baec9 (diff)
decompile sub_8122854 - sub_81229B8
-rw-r--r--asm/choose_party.s252
-rw-r--r--src/choose_party.c116
2 files changed, 113 insertions, 255 deletions
diff --git a/asm/choose_party.s b/asm/choose_party.s
index 0846a25f4..322b1b34a 100644
--- a/asm/choose_party.s
+++ b/asm/choose_party.s
@@ -6,258 +6,6 @@
.text
- thumb_func_start sub_8122854
-sub_8122854: @ 8122854
- push {r4,lr}
- ldr r1, _08122874 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x4
- bhi _081228E0
- lsls r0, 2
- ldr r1, _08122878 @ =_0812287C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08122874: .4byte 0x0201b000
-_08122878: .4byte _0812287C
- .align 2, 0
-_0812287C:
- .4byte _08122890
- .4byte _081228A4
- .4byte _081228AA
- .4byte _081228BE
- .4byte _081228D8
-_08122890:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl sub_81228E8
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _081228CA
-_081228A4:
- bl LoadHeldItemIconGraphics
- b _081228C2
-_081228AA:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl sub_8122950
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _081228CA
-_081228BE:
- bl sub_81229B8
-_081228C2:
- ldr r1, _081228D4 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
-_081228CA:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081228E0
- .align 2, 0
-_081228D4: .4byte 0x0201b000
-_081228D8:
- bl sub_806B908
- movs r0, 0x1
- b _081228E2
-_081228E0:
- movs r0, 0
-_081228E2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8122854
-
- thumb_func_start sub_81228E8
-sub_81228E8: @ 81228E8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
-_081228F0:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08122948 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08122912
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x3
- adds r3, r4, 0
- bl CreatePartyMenuMonIcon
-_08122912:
- ldr r0, _0812294C @ =gUnknown_02023A00
- lsls r1, r5, 5
- adds r3, r1, r0
- ldrh r0, [r3]
- cmp r0, 0
- beq _08122936
- adds r4, r5, 0x3
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x3
- bl CreateMonIcon_806D99C
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_806D50C
-_08122936:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _081228F0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08122948: .4byte gPlayerParty
-_0812294C: .4byte gUnknown_02023A00
- thumb_func_end sub_81228E8
-
- thumb_func_start sub_8122950
-sub_8122950: @ 8122950
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
-_08122958:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _081229B0 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08122984
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl CreateHeldItemIcon_806DCD4
-_08122984:
- ldr r0, _081229B4 @ =gUnknown_02023A00
- lsls r1, r5, 5
- adds r2, r1, r0
- ldrh r0, [r2]
- cmp r0, 0
- beq _0812299E
- adds r1, r5, 0x3
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r2, 0x2]
- adds r0, r6, 0
- bl CreateHeldItemIcon_806DCD4
-_0812299E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08122958
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081229B0: .4byte gPlayerParty
-_081229B4: .4byte gUnknown_02023A00
- thumb_func_end sub_8122950
-
- thumb_func_start sub_81229B8
-sub_81229B8: @ 81229B8
- push {r4-r7,lr}
- movs r5, 0
- movs r7, 0x64
- ldr r6, _08122A00 @ =gPlayerParty
-_081229C0:
- adds r0, r5, 0
- muls r0, r7
- adds r4, r0, r6
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08122A36
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl PartyMenuPrintHP
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08122A04
- cmp r0, 0x6
- beq _08122A04
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- movs r1, 0x3
- bl PartyMenuPutStatusTilemap
- b _08122A12
- .align 2, 0
-_08122A00: .4byte gPlayerParty
-_08122A04:
- adds r2, r5, 0
- muls r2, r7
- adds r2, r6
- adds r0, r5, 0
- movs r1, 0x3
- bl PartyMenuPrintLevel
-_08122A12:
- adds r4, r5, 0
- muls r4, r7
- adds r4, r6
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl PartyMenuPutNicknameTilemap
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl PrintPartyMenuMonNickname
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl PartyMenuDrawHPBar
-_08122A36:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _081229C0
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81229B8
-
thumb_func_start sub_8122A48
sub_8122A48: @ 8122A48
push {r4-r6,lr}
diff --git a/src/choose_party.c b/src/choose_party.c
index b3c4d77d2..b08812573 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -10,10 +10,25 @@
#include "task.h"
#include "text.h"
+struct UnknownPokemonStruct2
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 heldItem;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 level;
+ /*0x10*/ u16 hp;
+ /*0x12*/ u16 maxhp;
+ /*0x14*/ u32 status;
+ /*0x18*/ u32 personality;
+ /*0x1C*/ u8 gender;
+ /*0x1D*/ u8 language;
+};
+
extern u8 gSelectedOrderFromParty[];
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_020384F0;
+extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
extern u8 gUnknown_0202E8F6;
extern struct Pokemon gUnknown_030042FC[];
@@ -44,6 +59,18 @@ extern void sub_806AF4C();
extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int);
extern void sub_806C890();
extern void sub_806D5A4();
+extern void sub_806B908(void);
+extern void CreateMonIcon_806D99C(int, u8, int, struct UnknownPokemonStruct2 *);
+extern void sub_806D50C(int, u8);
+extern void CreatePartyMenuMonIcon();
+extern void CreateHeldItemIcon_806DCD4(int, u8, int);
+extern u8 GetMonStatusAndPokerus();
+extern void PartyMenuPrintHP();
+extern void PartyMenuPutStatusTilemap(int, int, u8);
+extern void PartyMenuPrintLevel();
+extern void PartyMenuPutNicknameTilemap();
+extern void PrintPartyMenuMonNickname();
+extern void PartyMenuDrawHPBar();
void sub_8121E58(void);
bool8 sub_8122030(struct Pokemon *);
@@ -52,6 +79,9 @@ void sub_8122450(u8);
void sub_81224A8(u8);
void sub_8122728(u8);
void sub_8122838(u8);
+void sub_81228E8(u8);
+void sub_8122950(u8);
+void sub_81229B8(void);
void sub_8121E10(void)
{
@@ -75,9 +105,6 @@ void sub_8121E58(void)
gSelectedOrderFromParty[i] = 0;
}
-//0x99 << 2 = 0x264
-//0x98 << 2 = 0x260
-
bool8 sub_8121E78(void)
{
u8 i;
@@ -581,3 +608,86 @@ void sub_8122838(u8 taskId)
PlaySE(SE_SELECT);
sub_81227FC(taskId);
}
+
+bool8 sub_8122854(void)
+{
+ switch (ewram1B000_alt.unk264)
+ {
+ case 0:
+ sub_81228E8(ewram1B000_alt.unk260);
+ ewram1B000_alt.unk264++;
+ break;
+ case 1:
+ LoadHeldItemIconGraphics();
+ ewram1B000_alt.unk264++;
+ break;
+ case 2:
+ sub_8122950(ewram1B000_alt.unk260);
+ ewram1B000_alt.unk264++;
+ break;
+ case 3:
+ sub_81229B8();
+ ewram1B000_alt.unk264++;
+ break;
+ case 4:
+ sub_806B908();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81228E8(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0)
+ CreatePartyMenuMonIcon(a, i, 3, &gPlayerParty[i]);
+ if (gUnknown_02023A00[i].species != 0)
+ {
+ CreateMonIcon_806D99C(a, i + 3, 3, &gUnknown_02023A00[i]);
+ sub_806D50C(a, i + 3);
+ }
+ }
+}
+
+void sub_8122950(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0)
+ {
+ u16 item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+
+ CreateHeldItemIcon_806DCD4(a, i, item);
+ }
+ if (gUnknown_02023A00[i].species != 0)
+ CreateHeldItemIcon_806DCD4(a, i + 3, gUnknown_02023A00[i].heldItem);
+ }
+}
+
+void sub_81229B8(void)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0)
+ {
+ u8 status;
+
+ PartyMenuPrintHP(i, 3, &gPlayerParty[i]);
+ status = GetMonStatusAndPokerus(&gPlayerParty[i]);
+ if (status != 0 && status != 6)
+ PartyMenuPutStatusTilemap(i, 3, status - 1);
+ else
+ PartyMenuPrintLevel(i, 3, &gPlayerParty[i]);
+ PartyMenuPutNicknameTilemap(i, 3, &gPlayerParty[i]);
+ PrintPartyMenuMonNickname(i, 3, &gPlayerParty[i]);
+ PartyMenuDrawHPBar(i, 3, &gPlayerParty[i]);
+ }
+ }
+}