summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_storage_system.s203
-rw-r--r--src/pokemon/pokemon_storage_system.c108
2 files changed, 106 insertions, 205 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 311b3552a..c282ebecd 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,209 +5,6 @@
.text
- thumb_func_start sub_809789C
-sub_809789C: @ 809789C
- push {r4,lr}
- ldr r4, _080978AC @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080978B0
- cmp r0, 0x1
- beq _080978C2
- b _08097968
- .align 2, 0
-_080978AC: .4byte gSharedMem
-_080978B0:
- movs r0, 0x1
- bl PrintStorageActionText
- bl sub_809CE84
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097968
-_080978C2:
- bl sub_809CF30
- adds r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bhi _08097968
- lsls r0, 2
- ldr r1, _080978DC @ =_080978E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080978DC: .4byte _080978E0
- .align 2, 0
-_080978E0:
- .4byte _08097914
- .4byte _08097914
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097958
- .4byte _08097940
- .4byte _0809792C
-_08097914:
- movs r0, 0x1
- bl sub_809A860
- bl sub_8098A5C
- ldr r0, _08097928 @ =sub_8096C84
- bl SetPSSCallback
- b _08097968
- .align 2, 0
-_08097928: .4byte sub_8096C84
-_0809792C:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0809793C @ =sub_8097B44
- bl SetPSSCallback
- b _08097968
- .align 2, 0
-_0809793C: .4byte sub_8097B44
-_08097940:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _08097954 @ =sub_8097974
- bl SetPSSCallback
- b _08097968
- .align 2, 0
-_08097954: .4byte sub_8097974
-_08097958:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _08097970 @ =sub_8097A64
- bl SetPSSCallback
-_08097968:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097970: .4byte sub_8097A64
- thumb_func_end sub_809789C
-
- thumb_func_start sub_8097974
-sub_8097974: @ 8097974
- push {r4,r5,lr}
- ldr r5, _08097988 @ =gSharedMem
- ldrb r0, [r5, 0x4]
- cmp r0, 0x1
- beq _080979A2
- cmp r0, 0x1
- bgt _0809798C
- cmp r0, 0
- beq _08097996
- b _08097A5A
- .align 2, 0
-_08097988: .4byte gSharedMem
-_0809798C:
- cmp r0, 0x2
- beq _080979FC
- cmp r0, 0x3
- beq _08097A44
- b _08097A5A
-_08097996:
- bl sub_8098A80
- movs r0, 0x2
- bl PrintStorageActionText
- b _08097A3C
-_080979A2:
- bl sub_809CF30
- ldr r1, _080979CC @ =0x00000d5e
- adds r4, r5, r1
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080979D4
- movs r0, 0x1
- bl sub_809A860
- bl sub_8098A5C
- ldr r0, _080979D0 @ =sub_8096C84
- bl SetPSSCallback
- b _08097A5A
- .align 2, 0
-_080979CC: .4byte 0x00000d5e
-_080979D0: .4byte sub_8096C84
-_080979D4:
- cmp r0, r1
- blt _08097A5A
- cmp r0, 0xF
- bgt _08097A5A
- cmp r0, 0xC
- blt _08097A5A
- movs r0, 0x5
- bl PlaySE
- ldrh r0, [r4]
- subs r0, 0xC
- strh r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8098AA8
- movs r0, 0x3
- bl PrintStorageActionText
- b _08097A3C
-_080979FC:
- bl sub_809CF30
- movs r1, 0xD6
- lsls r1, 4
- adds r4, r5, r1
- strh r0, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _08097A5A
- adds r0, 0x1
- cmp r1, r0
- bne _08097A24
- bl sub_8098A5C
- movs r0, 0
- strb r0, [r5, 0x4]
- b _08097A5A
-_08097A24:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldrh r0, [r4]
- subs r0, 0x10
- strh r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8099DCC
-_08097A3C:
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _08097A5A
-_08097A44:
- bl sub_8099E08
- lsls r0, 24
- cmp r0, 0
- bne _08097A5A
- movs r0, 0x1
- bl sub_809A860
- ldr r0, _08097A60 @ =sub_8096C84
- bl SetPSSCallback
-_08097A5A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097A60: .4byte sub_8096C84
- thumb_func_end sub_8097974
-
thumb_func_start sub_8097A64
sub_8097A64: @ 8097A64
push {r4,r5,lr}
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index 8b0893c73..0f2350df2 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -96,7 +96,10 @@ struct PokemonStorageSystemData {
u8 filler_08b0[2];
s16 unk_08b2;
u16 unk_08b4;
- u8 filler_08b6[0x93c];
+ u8 filler_08b6[0x4a8];
+ s16 unk_0d5e;
+ s16 unk_0d60;
+ u8 filler_0d62[0x490];
u16 unk_11f2;
u8 filler_11f4[2];
u8 unk_11f6;
@@ -145,12 +148,16 @@ void sub_8097788(void);
void sub_80977E4(void);
void sub_8097858(void);
void sub_809789C(void);
+void sub_8097974(void);
+void sub_8097A64(void);
+void sub_8097B44(void);
void sub_8097BA0(void);
void sub_8097CC0(void);
void sub_8097DE0(void);
void sub_8097E44(void);
void sub_8097E70(void);
void BoxSetMosaic(void);
+void sub_809801C(void);
void sub_8098400(void);
void add_to_c3_somehow(void);
bool8 sub_80985CC(void);
@@ -159,11 +166,12 @@ void sub_8098710(void);
void sub_8098734(void);
void sub_80987DC(void);
void sub_809880C(void);
-void sub_809801C(void);
bool8 sub_8098830(void);
void PrintStorageActionText(u8 index);
void sub_8098A38(u8);
void sub_8098A5C(void);
+void sub_8098A80(void);
+void sub_8098AA8(u8 a0);
void sub_8098B48(void);
void sub_8099310(void);
bool8 sub_8099374(void);
@@ -172,6 +180,9 @@ bool8 sub_8099990(void);
void sub_8099BF8(u8 a0);
void sub_8099C70(u8 whichBox);
bool8 sub_8099D34(void);
+void sub_8099DCC(u8 a0);
+bool8 sub_8099E08(void);
+void sub_809A860(u8 a0);
struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4);
void sub_809AA24(void);
void sub_809AA98(void);
@@ -1843,6 +1854,99 @@ void sub_8097858(void)
}
}
+void sub_809789C(void)
+{
+ switch (ePokemonStorageSystem.unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_WHAT_YOU_DO);
+ sub_809CE84();
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ case 1:
+ switch (sub_809CF30())
+ {
+ case -1:
+ case 0:
+ sub_809A860(1);
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 11:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_8097B44);
+ break;
+ case 10:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_8097974);
+ break;
+ case 9:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_8097A64);
+ break;
+ }
+ break;
+ }
+}
+
+void sub_8097974(void)
+{
+ switch (ePokemonStorageSystem.unk_0004)
+ {
+ case 0:
+ sub_8098A80();
+ PrintStorageActionText(PC_TEXT_PICK_A_THEME);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ case 1:
+ ePokemonStorageSystem.unk_0d5e = sub_809CF30();
+ switch (ePokemonStorageSystem.unk_0d5e)
+ {
+ case -1:
+ sub_809A860(1);
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 12 ... 15:
+ PlaySE(SE_SELECT);
+ ePokemonStorageSystem.unk_0d5e -= 12;
+ sub_8098AA8(ePokemonStorageSystem.unk_0d5e);
+ PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ }
+ break;
+ case 2:
+ ePokemonStorageSystem.unk_0d60 = sub_809CF30();
+ switch (ePokemonStorageSystem.unk_0d60)
+ {
+ case -1:
+ sub_8098A5C();
+ ePokemonStorageSystem.unk_0004 = 0;
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ ePokemonStorageSystem.unk_0d60 -= 16;
+ sub_8099DCC(ePokemonStorageSystem.unk_0d60);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_8099E08())
+ {
+ sub_809A860(1);
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
asm(".section .text.8098898");
void PrintStorageActionText(u8 index) {