summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-14 21:25:25 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-14 21:25:25 -0500
commit1288b752480e5d301c9ea9cff6d1efc737d6c5cc (patch)
tree01021680c556417adbfc96850b65d27a629e52f5
parentd8091a8fadb1089cbc090772bbb2fbcbab633357 (diff)
through sub_809AB8C
-rw-r--r--asm/pokemon_storage_system.s162
-rw-r--r--src/pokemon/pokemon_storage_system_4.c58
2 files changed, 56 insertions, 164 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 220266cd8..b98fe24ec 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,168 +5,6 @@
.text
- thumb_func_start sub_809AACC
-sub_809AACC: @ 809AACC
- push {r4-r6,lr}
- adds r4, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r0, 0x4
- bhi _0809AB84
- lsls r0, 2
- ldr r1, _0809AAE8 @ =_0809AAEC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809AAE8: .4byte _0809AAEC
- .align 2, 0
-_0809AAEC:
- .4byte _0809AB00
- .4byte _0809AB2E
- .4byte _0809AB56
- .4byte _0809AB5E
- .4byte _0809AB7C
-_0809AB00:
- adds r0, r5, 0
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, 0x64
- strh r1, [r4]
- adds r0, r5, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, 0x20
- strh r1, [r6]
- b _0809AB84
-_0809AB2E:
- cmp r5, 0
- bne _0809AB3A
- movs r0, 0x68
- strh r0, [r4]
- movs r0, 0x34
- b _0809AB82
-_0809AB3A:
- cmp r5, 0x6
- bne _0809AB46
- movs r0, 0x98
- strh r0, [r4]
- movs r0, 0x84
- b _0809AB82
-_0809AB46:
- movs r0, 0x98
- strh r0, [r4]
- subs r1, r5, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x4
- b _0809AB82
-_0809AB56:
- movs r0, 0xA2
- strh r0, [r4]
- movs r0, 0xC
- b _0809AB82
-_0809AB5E:
- ldr r0, _0809AB78 @ =gUnknown_020384E6
- ldrb r0, [r0]
- movs r1, 0xE
- cmp r0, 0
- beq _0809AB6A
- movs r1, 0x8
-_0809AB6A:
- strh r1, [r6]
- movs r0, 0x58
- muls r0, r5
- adds r0, 0x78
- strh r0, [r4]
- b _0809AB84
- .align 2, 0
-_0809AB78: .4byte gUnknown_020384E6
-_0809AB7C:
- movs r0, 0xA0
- strh r0, [r4]
- movs r0, 0x60
-_0809AB82:
- strh r0, [r6]
-_0809AB84:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_809AACC
-
- thumb_func_start sub_809AB8C
-sub_809AB8C: @ 809AB8C
- push {lr}
- ldr r0, _0809ABB4 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _0809ABC0
- cmp r0, 0x1
- bne _0809ABF8
- ldr r0, _0809ABB8 @ =gUnknown_020384E5
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809ABBC @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- b _0809ABEA
- .align 2, 0
-_0809ABB4: .4byte gUnknown_020384E4
-_0809ABB8: .4byte gUnknown_020384E5
-_0809ABBC: .4byte gPlayerParty
-_0809ABC0:
- 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, _0809ABF0 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809ABF4 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0xB
- bl GetBoxMonData
-_0809ABEA:
- lsls r0, 16
- lsrs r0, 16
- b _0809ABFA
- .align 2, 0
-_0809ABF0: .4byte gUnknown_020384E5
-_0809ABF4: .4byte gPokemonStorage + 0x4
-_0809ABF8:
- movs r0, 0
-_0809ABFA:
- pop {r1}
- bx r1
- thumb_func_end sub_809AB8C
-
thumb_func_start sub_809AC00
sub_809AC00: @ 809AC00
push {r4-r6,lr}
diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c
index 63d94b5a1..6d44b8ae8 100644
--- a/src/pokemon/pokemon_storage_system_4.c
+++ b/src/pokemon/pokemon_storage_system_4.c
@@ -1,6 +1,7 @@
// Includes
#include "global.h"
+#include "constants/species.h"
#include "palette.h"
#include "text.h"
#include "menu.h"
@@ -18,8 +19,8 @@ struct WallpaperTable {
// Static RAM declarations
EWRAM_DATA struct Pokemon gUnknown_02038480 = {};
-EWRAM_DATA u8 gUnknown_020384E4 = 0;
-EWRAM_DATA u8 gUnknown_020384E5 = 0;
+EWRAM_DATA s8 gUnknown_020384E4 = 0;
+EWRAM_DATA s8 gUnknown_020384E5 = 0;
EWRAM_DATA u8 gUnknown_020384E6 = 0;
EWRAM_DATA u8 gUnknown_020384E7 = 0;
EWRAM_DATA u8 gUnknown_020384E8 = 0;
@@ -1131,3 +1132,56 @@ void sub_809AA98(void)
if (gUnknown_020384E6)
sub_8098BF0();
}
+
+void sub_809AACC(u8 a0, u8 a1, u16 *a2, u16 *a3)
+{
+ switch (a0)
+ {
+ case 0:
+ *a2 = (a1 % 6) * 24 + 100;
+ *a3 = (a1 / 6) * 24 + 32;
+ break;
+ case 1:
+ if (a1 == 0)
+ {
+ *a2 = 0x68;
+ *a3 = 0x34;
+ }
+ else if (a1 == 6)
+ {
+ *a2 = 0x98;
+ *a3 = 0x84;
+ }
+ else
+ {
+ *a2 = 0x98;
+ *a3 = (a1 - 1) * 24 + 4;
+ }
+ break;
+ case 2:
+ *a2 = 0xa2;
+ *a3 = 0x0c;
+ break;
+ case 3:
+ *a3 = gUnknown_020384E6 ? 8 : 14;
+ *a2 = a1 * 0x58 + 0x78;
+ break;
+ case 4:
+ *a2 = 0xa0;
+ *a3 = 0x60;
+ break;
+ }
+}
+
+u16 sub_809AB8C(void)
+{
+ switch (gUnknown_020384E4)
+ {
+ case 1:
+ return GetMonData(gPlayerParty + gUnknown_020384E5, MON_DATA_SPECIES);
+ case 0:
+ return GetBoxMonData(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, MON_DATA_SPECIES);
+ default:
+ return SPECIES_NONE;
+ }
+}