diff options
-rw-r--r-- | asm/pokemon_storage_system.s | 203 | ||||
-rw-r--r-- | src/pokemon/pokemon_storage_system.c | 108 |
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) { |