summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-15 21:59:56 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-15 21:59:56 -0500
commit40d8fee1d0badb81120cad7a5aabfd8f5b0031d8 (patch)
tree923d75ae25f981311ccf3b63a3a29d8291fc7ebe
parent102515325993caef0d57082cd7d8db69335b665b (diff)
through sub_809BF48
-rw-r--r--asm/pokemon_storage_system.s216
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--src/pokemon/pokemon_storage_system_4.c68
3 files changed, 60 insertions, 225 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index dc3c9a339..e2090bee9 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,222 +5,6 @@
.text
- thumb_func_start sub_809BDD8
-sub_809BDD8: @ 809BDD8
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- ldr r1, _0809BE04 @ =gPokemonStorageSystemPtr
- ldr r2, [r1]
- ldr r3, _0809BE08 @ =0x000011f7
- adds r1, r2, r3
- strb r0, [r1]
- ldr r0, _0809BE0C @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BE14
- ldr r1, _0809BE10 @ =0x000025b4
- adds r0, r2, r1
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
- b _0809BE68
- .align 2, 0
-_0809BE04: .4byte gPokemonStorageSystemPtr
-_0809BE08: .4byte 0x000011f7
-_0809BE0C: .4byte gUnknown_020384E6
-_0809BE10: .4byte 0x000025b4
-_0809BE14:
- ldr r4, _0809BE70 @ =gUnknown_020384E4
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x1
- bne _0809BE34
- ldr r0, _0809BE74 @ =gUnknown_020384E5
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809BE78 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
-_0809BE34:
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- bne _0809BE68
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r1, _0809BE74 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809BE7C @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetBoxMonData
-_0809BE68:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809BE70: .4byte gUnknown_020384E4
-_0809BE74: .4byte gUnknown_020384E5
-_0809BE78: .4byte gPlayerParty
-_0809BE7C: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_809BDD8
-
- thumb_func_start sub_809BE80
-sub_809BE80: @ 809BE80
- push {lr}
- ldr r0, _0809BEA8 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BEB4
- ldr r0, _0809BEAC @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809BEB4
- ldr r0, _0809BEB0 @ =gUnknown_020384E5
- ldrb r0, [r0]
- bl CountAlivePartyMonsExceptOne
- lsls r0, 24
- cmp r0, 0
- bne _0809BEB4
- movs r0, 0x1
- b _0809BEB6
- .align 2, 0
-_0809BEA8: .4byte gUnknown_020384E4
-_0809BEAC: .4byte gUnknown_020384E6
-_0809BEB0: .4byte gUnknown_020384E5
-_0809BEB4:
- movs r0, 0
-_0809BEB6:
- pop {r1}
- bx r1
- thumb_func_end sub_809BE80
-
- thumb_func_start sub_809BEBC
-sub_809BEBC: @ 809BEBC
- push {lr}
- ldr r0, _0809BF00 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BF18
- ldr r0, _0809BF04 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BEFC
- ldr r0, _0809BF08 @ =gUnknown_020384E5
- ldrb r0, [r0]
- bl CountAlivePartyMonsExceptOne
- lsls r0, 24
- cmp r0, 0
- bne _0809BEFC
- ldr r0, _0809BF0C @ =gPokemonStorageSystemPtr
- ldr r1, [r0]
- ldr r2, _0809BF10 @ =0x000011f9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809BF18
- ldr r2, _0809BF14 @ =0x000025b4
- adds r0, r1, r2
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0809BF18
-_0809BEFC:
- movs r0, 0x1
- b _0809BF1A
- .align 2, 0
-_0809BF00: .4byte gUnknown_020384E6
-_0809BF04: .4byte gUnknown_020384E4
-_0809BF08: .4byte gUnknown_020384E5
-_0809BF0C: .4byte gPokemonStorageSystemPtr
-_0809BF10: .4byte 0x000011f9
-_0809BF14: .4byte 0x000025b4
-_0809BF18:
- movs r0, 0
-_0809BF1A:
- pop {r1}
- bx r1
- thumb_func_end sub_809BEBC
-
- thumb_func_start sub_809BF20
-sub_809BF20: @ 809BF20
- ldr r0, _0809BF28 @ =gUnknown_020384E6
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809BF28: .4byte gUnknown_020384E6
- thumb_func_end sub_809BF20
-
- thumb_func_start sub_809BF2C
-sub_809BF2C: @ 809BF2C
- push {lr}
- movs r1, 0
- ldr r0, _0809BF44 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2
- bne _0809BF3E
- movs r1, 0x1
-_0809BF3E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809BF44: .4byte gUnknown_020384E4
- thumb_func_end sub_809BF2C
-
- thumb_func_start sub_809BF48
-sub_809BF48: @ 809BF48
- push {lr}
- movs r1, 0
- ldr r0, _0809BF6C @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- bne _0809BF66
- ldr r0, _0809BF70 @ =gUnknown_020384E5
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BF66
- movs r1, 0x1
-_0809BF66:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809BF6C: .4byte gUnknown_020384E4
-_0809BF70: .4byte gUnknown_020384E5
- thumb_func_end sub_809BF48
-
thumb_func_start sub_809BF74
sub_809BF74: @ 809BF74
push {r4,lr}
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index f8d288ff0..8dd51259c 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -220,6 +220,7 @@ extern u8 *const gUnknown_083B6DB8;
u8 StorageSystemGetPartySize(void);
s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId);
+u8 CountAlivePartyMonsExceptOne(u8 toSkip);
u8 CountPokemonInBoxN(u8 boxId);
void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3);
void sub_809634C(u8 curBox);
diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c
index 40de7d634..96e237d4f 100644
--- a/src/pokemon/pokemon_storage_system_4.c
+++ b/src/pokemon/pokemon_storage_system_4.c
@@ -25,7 +25,7 @@ struct WallpaperTable {
EWRAM_DATA struct Pokemon gUnknown_02038480 = {};
EWRAM_DATA s8 gUnknown_020384E4 = 0;
EWRAM_DATA s8 gUnknown_020384E5 = 0;
-EWRAM_DATA u8 gUnknown_020384E6 = 0;
+EWRAM_DATA bool8 gUnknown_020384E6 = FALSE;
EWRAM_DATA u8 gUnknown_020384E7 = 0;
EWRAM_DATA u8 gUnknown_020384E8 = 0;
EWRAM_DATA u8 gUnknown_020384E9 = 0;
@@ -1141,7 +1141,7 @@ void sub_809AA24(void)
else
gUnknown_020384E4 = 1;
gUnknown_020384E5 = 0;
- gUnknown_020384E6 = 0;
+ gUnknown_020384E6 = FALSE;
gUnknown_020384E7 = 0;
gUnknown_020384E8 = 0;
gUnknown_020384E9 = 0;
@@ -1315,7 +1315,7 @@ void sub_809AF18(u8 a0, u8 a1)
{
sub_809AD3C(a0, a1);
sub_809AD94();
- if (gUnknown_020384E6 == 0)
+ if (!gUnknown_020384E6)
StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 1);
if (a0 == 1 && gUnknown_020384E4 != 1)
{
@@ -1337,7 +1337,7 @@ void sub_809AFB8(void)
{
gUnknown_020384E4 = gPokemonStorageSystemPtr->unk_11e0;
gUnknown_020384E5 = gPokemonStorageSystemPtr->unk_11e1;
- if (gUnknown_020384E6 == 0)
+ if (!gUnknown_020384E6)
StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0);
sub_809BF74();
switch (gUnknown_020384E4)
@@ -1359,7 +1359,7 @@ void sub_809AFB8(void)
void sub_809B068(void)
{
u8 partyCount;
- if (gUnknown_020384E6 == 0)
+ if (!gUnknown_020384E6)
partyCount = 0;
else
{
@@ -1534,7 +1534,7 @@ void sub_809B384(void)
default:
return;
}
- gUnknown_020384E6 = 1;
+ gUnknown_020384E6 = TRUE;
}
void sub_809B3E0(void)
@@ -1554,7 +1554,7 @@ void sub_809B3E0(void)
default:
return;
}
- gUnknown_020384E6 = 0;
+ gUnknown_020384E6 = FALSE;
}
void sub_809B440(void)
@@ -1616,7 +1616,7 @@ bool8 sub_809B62C(u8 boxId)
{
diegohint2(boxId, monIdx);
sub_8099480();
- gUnknown_020384E6 = 0;
+ gUnknown_020384E6 = FALSE;
}
else
{
@@ -1664,7 +1664,7 @@ void sub_809B760(void)
{
sub_8099920();
if (gUnknown_020384E6)
- gUnknown_020384E6 = 0;
+ gUnknown_020384E6 = FALSE;
else
{
u8 boxId;
@@ -1861,3 +1861,53 @@ s16 party_compaction(void)
ZeroMonData(gPlayerParty + last);
return retVal;
}
+
+void sub_809BDD8(u8 markings)
+{
+ gPokemonStorageSystemPtr->unk_11f7 = markings;
+ if (gUnknown_020384E6)
+ SetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_MARKINGS, &markings);
+ else
+ {
+ if (gUnknown_020384E4 == 1)
+ SetMonData(gPlayerParty + gUnknown_020384E5, MON_DATA_MARKINGS, &markings);
+ if (gUnknown_020384E4 == 0)
+ SetBoxMonData(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, MON_DATA_MARKINGS, &markings);
+ }
+}
+
+bool8 sub_809BE80(void)
+{
+ if (gUnknown_020384E4 == 1 && !gUnknown_020384E6 && CountAlivePartyMonsExceptOne(gUnknown_020384E5) == 0)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_809BEBC(void)
+{
+ if (gUnknown_020384E6)
+ {
+ if (gUnknown_020384E4 == 1 && CountAlivePartyMonsExceptOne(gUnknown_020384E5) == 0)
+ {
+ if (gPokemonStorageSystemPtr->unk_11f9 || GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_HP) == 0)
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_809BF20(void)
+{
+ return gUnknown_020384E6;
+}
+
+bool8 sub_809BF2C(void)
+{
+ return gUnknown_020384E4 == 2 ? TRUE : FALSE;
+}
+
+bool8 sub_809BF48(void)
+{
+ return (gUnknown_020384E4 == 3 && gUnknown_020384E5 == 1) ? TRUE : FALSE;
+}