diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-12 15:39:41 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-12 15:39:41 -0400 |
commit | 68c48a0cc3431c60a48378885e48631bef3db8ec (patch) | |
tree | dc8964c41f1222f994ea2505daed6655ff03c4ea | |
parent | 748b4eafacb3a04bd4de64a0be30eab1a6704d7e (diff) |
through Cb_ReleaseMon
-rw-r--r-- | asm/pokemon_storage_system.s | 1235 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 5 | ||||
-rw-r--r-- | src/pokemon_storage_system_3.c | 581 |
3 files changed, 655 insertions, 1166 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index eb0349dea..a19d52dc4 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -5,1069 +5,8 @@ .text - thumb_func_start Cb_ShowPartyPokemon -Cb_ShowPartyPokemon: @ 808D7BC - push {r4,lr} - ldr r4, _0808D7D0 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808D7D4 - cmp r0, 0x1 - beq _0808D7E2 - b _0808D7F2 - .align 2, 0 -_0808D7D0: .4byte sPSSData -_0808D7D4: - bl sub_808FAD4 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808D7F2 -_0808D7E2: - bl sub_808FAF8 - lsls r0, 24 - cmp r0, 0 - bne _0808D7F2 - ldr r0, _0808D7F8 @ =Cb_MainPSS - bl SetPSSCallback -_0808D7F2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D7F8: .4byte Cb_MainPSS - thumb_func_end Cb_ShowPartyPokemon - - thumb_func_start Cb_HidePartyPokemon -Cb_HidePartyPokemon: @ 808D7FC - push {r4,lr} - ldr r4, _0808D814 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808D82A - cmp r0, 0x1 - bgt _0808D818 - cmp r0, 0 - beq _0808D81E - b _0808D86A - .align 2, 0 -_0808D814: .4byte sPSSData -_0808D818: - cmp r0, 0x2 - beq _0808D84A - b _0808D86A -_0808D81E: - movs r0, 0x5 - bl PlaySE - bl sub_808F810 - b _0808D840 -_0808D82A: - bl sub_808F850 - lsls r0, 24 - cmp r0, 0 - bne _0808D86A - bl sub_8092B70 - lsls r0, 24 - lsrs r0, 24 - bl sub_8092B3C -_0808D840: - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808D86A -_0808D84A: - bl sub_80924A8 - lsls r0, 24 - cmp r0, 0 - bne _0808D86A - ldr r0, [r4] - ldr r1, _0808D870 @ =0x00000ce6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808D864 - bl BoxSetMosaic -_0808D864: - ldr r0, _0808D874 @ =Cb_MainPSS - bl SetPSSCallback -_0808D86A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D870: .4byte 0x00000ce6 -_0808D874: .4byte Cb_MainPSS - thumb_func_end Cb_HidePartyPokemon - - thumb_func_start Cb_OnSelectedMon -Cb_OnSelectedMon: @ 808D878 - push {r4,lr} - ldr r0, _0808D890 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0808D886 - b _0808DB86 -_0808D886: - lsls r0, 2 - ldr r1, _0808D894 @ =_0808D898 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D890: .4byte sPSSData -_0808D894: .4byte _0808D898 - .align 2, 0 -_0808D898: - .4byte _0808D8B4 - .4byte _0808D918 - .4byte _0808D934 - .4byte _0808DB40 - .4byte _0808DB54 - .4byte _0808DB4A - .4byte _0808DB70 -_0808D8B4: - bl sub_808F258 - lsls r0, 24 - cmp r0, 0 - beq _0808D8C0 - b _0808DB86 -_0808D8C0: - movs r0, 0x5 - bl PlaySE - ldr r4, _0808D8D8 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - beq _0808D8DC - movs r0, 0x4 - bl PrintStorageActionText - b _0808D906 - .align 2, 0 -_0808D8D8: .4byte sPSSData -_0808D8DC: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - bne _0808D8F2 - ldr r0, [r4] - ldr r1, _0808D8FC @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _0808D900 -_0808D8F2: - movs r0, 0x17 - bl PrintStorageActionText - b _0808D906 - .align 2, 0 -_0808D8FC: .4byte 0x00000ce2 -_0808D900: - movs r0, 0x18 - bl PrintStorageActionText -_0808D906: - bl sub_8094E88 - ldr r0, _0808D914 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808D914: .4byte sPSSData -_0808D918: - bl sub_8094F90 - lsls r0, 24 - cmp r0, 0 - beq _0808D924 - b _0808DB86 -_0808D924: - ldr r0, _0808D930 @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808D930: .4byte sPSSData -_0808D934: - bl sub_8094F94 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x12 - bls _0808D944 - b _0808DB86 -_0808D944: - lsls r0, 2 - ldr r1, _0808D950 @ =_0808D954 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D950: .4byte _0808D954 - .align 2, 0 -_0808D954: - .4byte _0808D9A0 - .4byte _0808D9A0 - .4byte _0808DA20 - .4byte _0808DA08 - .4byte _0808D9B0 - .4byte _0808D9E8 - .4byte _0808D9D0 - .4byte _0808DAC0 - .4byte _0808DA5C - .4byte _0808DAD4 - .4byte _0808DB86 - .4byte _0808DB86 - .4byte _0808DB86 - .4byte _0808DAE8 - .4byte _0808DAFC - .4byte _0808DB28 - .4byte _0808DB1C - .4byte _0808DB10 - .4byte _0808DB34 -_0808D9A0: - bl ClearBottomWindow - ldr r0, _0808D9AC @ =Cb_MainPSS - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808D9AC: .4byte Cb_MainPSS -_0808D9B0: - bl CanMovePartyMon - lsls r0, 24 - cmp r0, 0 - bne _0808DA66 - movs r0, 0x5 - bl PlaySE - bl ClearBottomWindow - ldr r0, _0808D9CC @ =Cb_MoveMon - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808D9CC: .4byte Cb_MoveMon -_0808D9D0: - movs r0, 0x5 - bl PlaySE - bl ClearBottomWindow - ldr r0, _0808D9E4 @ =Cb_PlaceMon - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808D9E4: .4byte Cb_PlaceMon -_0808D9E8: - bl CanShiftMon - lsls r0, 24 - cmp r0, 0 - beq _0808DA66 - movs r0, 0x5 - bl PlaySE - bl ClearBottomWindow - ldr r0, _0808DA04 @ =Cb_ShiftMon - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DA04: .4byte Cb_ShiftMon -_0808DA08: - movs r0, 0x5 - bl PlaySE - bl ClearBottomWindow - ldr r0, _0808DA1C @ =Cb_WithdrawMon - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DA1C: .4byte Cb_WithdrawMon -_0808DA20: - bl CanMovePartyMon - lsls r0, 24 - cmp r0, 0 - bne _0808DA66 - ldr r4, _0808DA50 @ =sPSSData - ldr r0, [r4] - ldr r2, _0808DA54 @ =0x00000ce2 - adds r0, r2 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - bne _0808DAA0 - movs r0, 0x5 - bl PlaySE - bl ClearBottomWindow - ldr r0, _0808DA58 @ =Cb_DepositMenu - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DA50: .4byte sPSSData -_0808DA54: .4byte 0x00000ce2 -_0808DA58: .4byte Cb_DepositMenu -_0808DA5C: - bl CanMovePartyMon - lsls r0, 24 - cmp r0, 0 - beq _0808DA74 -_0808DA66: - ldr r0, _0808DA70 @ =sPSSData - ldr r1, [r0] - movs r0, 0x3 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DA70: .4byte sPSSData -_0808DA74: - ldr r4, _0808DA88 @ =sPSSData - ldr r1, [r4] - ldr r2, _0808DA8C @ =0x00000ce9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808DA90 - movs r0, 0x5 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DA88: .4byte sPSSData -_0808DA8C: .4byte 0x00000ce9 -_0808DA90: - ldr r2, _0808DAA8 @ =0x00000ce2 - adds r0, r1, r2 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808DAAC -_0808DAA0: - ldr r1, [r4] - movs r0, 0x4 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DAA8: .4byte 0x00000ce2 -_0808DAAC: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DABC @ =sub_808DECC - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DABC: .4byte sub_808DECC -_0808DAC0: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DAD0 @ =sub_808EAF0 - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DAD0: .4byte sub_808EAF0 -_0808DAD4: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DAE4 @ =sub_808E0BC - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DAE4: .4byte sub_808E0BC -_0808DAE8: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DAF8 @ =Cb_TakeItemForMoving - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DAF8: .4byte Cb_TakeItemForMoving -_0808DAFC: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DB0C @ =Cb_GiveMovingItemToMon - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DB0C: .4byte Cb_GiveMovingItemToMon -_0808DB10: - ldr r0, _0808DB18 @ =sub_808E2B0 - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DB18: .4byte sub_808E2B0 -_0808DB1C: - ldr r0, _0808DB24 @ =Cb_SwitchSelectedItem - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DB24: .4byte Cb_SwitchSelectedItem -_0808DB28: - ldr r0, _0808DB30 @ =sub_808EB50 - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DB30: .4byte sub_808EB50 -_0808DB34: - ldr r0, _0808DB3C @ =sub_808E4B0 - bl SetPSSCallback - b _0808DB86 - .align 2, 0 -_0808DB3C: .4byte sub_808E4B0 -_0808DB40: - movs r0, 0x1A - bl PlaySE - movs r0, 0xD - b _0808DB5C -_0808DB4A: - movs r0, 0x1A - bl PlaySE - movs r0, 0x11 - b _0808DB5C -_0808DB54: - movs r0, 0x1A - bl PlaySE - movs r0, 0x16 -_0808DB5C: - bl PrintStorageActionText - ldr r0, _0808DB6C @ =sPSSData - ldr r1, [r0] - movs r0, 0x6 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DB6C: .4byte sPSSData -_0808DB70: - ldr r0, _0808DB8C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808DB86 - bl ClearBottomWindow - ldr r0, _0808DB90 @ =Cb_MainPSS - bl SetPSSCallback -_0808DB86: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DB8C: .4byte gMain -_0808DB90: .4byte Cb_MainPSS - thumb_func_end Cb_OnSelectedMon - - thumb_func_start Cb_MoveMon -Cb_MoveMon: @ 808DB94 - push {r4,lr} - ldr r4, _0808DBA8 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808DBAC - cmp r0, 0x1 - beq _0808DBBC - b _0808DBE6 - .align 2, 0 -_0808DBA8: .4byte sPSSData -_0808DBAC: - movs r0, 0 - bl sub_8092B7C - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DBE6 -_0808DBBC: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DBE6 - ldr r0, _0808DBD8 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808DBE0 - ldr r0, _0808DBDC @ =sub_808E688 - bl SetPSSCallback - b _0808DBE6 - .align 2, 0 -_0808DBD8: .4byte sInPartyMenu -_0808DBDC: .4byte sub_808E688 -_0808DBE0: - ldr r0, _0808DBEC @ =Cb_MainPSS - bl SetPSSCallback -_0808DBE6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DBEC: .4byte Cb_MainPSS - thumb_func_end Cb_MoveMon - - thumb_func_start Cb_PlaceMon -Cb_PlaceMon: @ 808DBF0 - push {r4,lr} - ldr r4, _0808DC04 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808DC08 - cmp r0, 0x1 - beq _0808DC1E - b _0808DC46 - .align 2, 0 -_0808DC04: .4byte sPSSData -_0808DC08: - movs r0, 0x1 - bl sub_808FE54 - movs r0, 0x1 - bl sub_8092B7C - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DC46 -_0808DC1E: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DC46 - ldr r0, _0808DC38 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808DC40 - ldr r0, _0808DC3C @ =sub_808E688 - bl SetPSSCallback - b _0808DC46 - .align 2, 0 -_0808DC38: .4byte sInPartyMenu -_0808DC3C: .4byte sub_808E688 -_0808DC40: - ldr r0, _0808DC4C @ =Cb_MainPSS - bl SetPSSCallback -_0808DC46: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DC4C: .4byte Cb_MainPSS - thumb_func_end Cb_PlaceMon - - thumb_func_start Cb_ShiftMon -Cb_ShiftMon: @ 808DC50 - push {r4,lr} - ldr r4, _0808DC64 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808DC68 - cmp r0, 0x1 - beq _0808DC7E - b _0808DC92 - .align 2, 0 -_0808DC64: .4byte sPSSData -_0808DC68: - movs r0, 0 - bl sub_808FE54 - movs r0, 0x2 - bl sub_8092B7C - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DC92 -_0808DC7E: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DC92 - bl BoxSetMosaic - ldr r0, _0808DC98 @ =Cb_MainPSS - bl SetPSSCallback -_0808DC92: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DC98: .4byte Cb_MainPSS - thumb_func_end Cb_ShiftMon - - thumb_func_start Cb_WithdrawMon -Cb_WithdrawMon: @ 808DC9C - push {lr} - ldr r0, _0808DCB4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0808DD7E - lsls r0, 2 - ldr r1, _0808DCB8 @ =_0808DCBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808DCB4: .4byte sPSSData -_0808DCB8: .4byte _0808DCBC - .align 2, 0 -_0808DCBC: - .4byte _0808DCD4 - .4byte _0808DD0C - .4byte _0808DD2C - .4byte _0808DD42 - .4byte _0808DD5A - .4byte _0808DD78 -_0808DCD4: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0808DCF4 - movs r0, 0xE - bl PrintStorageActionText - ldr r0, _0808DCF0 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808DD7E - .align 2, 0 -_0808DCF0: .4byte sPSSData -_0808DCF4: - bl sub_8092B5C - movs r0, 0 - bl sub_8092B7C - ldr r0, _0808DD08 @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808DD7E - .align 2, 0 -_0808DD08: .4byte sPSSData -_0808DD0C: - ldr r0, _0808DD24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808DD7E - bl ClearBottomWindow - ldr r0, _0808DD28 @ =Cb_MainPSS - bl SetPSSCallback - b _0808DD7E - .align 2, 0 -_0808DD24: .4byte gMain -_0808DD28: .4byte Cb_MainPSS -_0808DD2C: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DD7E - movs r0, 0x1 - bl sub_8091184 - bl sub_808FAD4 - b _0808DD68 -_0808DD42: - bl sub_808FAF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DD7E - movs r0, 0x1 - bl sub_808FE54 - movs r0, 0x1 - bl sub_8092B7C - b _0808DD68 -_0808DD5A: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DD7E - bl sub_808FAA8 -_0808DD68: - ldr r0, _0808DD74 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DD7E - .align 2, 0 -_0808DD74: .4byte sPSSData -_0808DD78: - ldr r0, _0808DD84 @ =Cb_HidePartyPokemon - bl SetPSSCallback -_0808DD7E: - pop {r0} - bx r0 - .align 2, 0 -_0808DD84: .4byte Cb_HidePartyPokemon - thumb_func_end Cb_WithdrawMon - - thumb_func_start Cb_DepositMenu -Cb_DepositMenu: @ 808DD88 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0808DDA4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x4 - bls _0808DD98 - b _0808DEBA -_0808DD98: - lsls r0, 2 - ldr r1, _0808DDA8 @ =_0808DDAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808DDA4: .4byte sPSSData -_0808DDA8: .4byte _0808DDAC - .align 2, 0 -_0808DDAC: - .4byte _0808DDC0 - .4byte _0808DDFC - .4byte _0808DE64 - .4byte _0808DE7C - .4byte _0808DEA0 -_0808DDC0: - movs r0, 0x6 - bl PrintStorageActionText - ldr r4, _0808DDEC @ =sPSSData - ldr r0, [r4] - ldr r1, _0808DDF0 @ =0x00001e58 - adds r0, r1 - ldr r2, _0808DDF4 @ =0x0000dac7 - movs r1, 0 - str r1, [sp] - movs r1, 0xA - movs r3, 0x3 - bl sub_808C854 - ldr r0, _0808DDF8 @ =gUnknown_20397B6 - ldrb r0, [r0] - bl sub_808C940 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - b _0808DEB8 - .align 2, 0 -_0808DDEC: .4byte sPSSData -_0808DDF0: .4byte 0x00001e58 -_0808DDF4: .4byte 0x0000dac7 -_0808DDF8: .4byte gUnknown_20397B6 -_0808DDFC: - bl HandleBoxChooseSelectionInput - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r0, 0xC8 - beq _0808DEBA - cmp r0, 0xC9 - bne _0808DE1C - bl ClearBottomWindow - bl sub_808C950 - bl sub_808C8FC - b _0808DE92 -_0808DE1C: - adds r0, r4, 0 - bl sub_80930E4 - lsls r0, 24 - cmp r0, 0 - beq _0808DE50 - ldr r0, _0808DE48 @ =gUnknown_20397B6 - strb r4, [r0] - movs r0, 0x2 - bl sub_808FE54 - bl ClearBottomWindow - bl sub_808C950 - bl sub_808C8FC - ldr r0, _0808DE4C @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - b _0808DEB8 - .align 2, 0 -_0808DE48: .4byte gUnknown_20397B6 -_0808DE4C: .4byte sPSSData -_0808DE50: - movs r0, 0x8 - bl PrintStorageActionText - ldr r0, _0808DE60 @ =sPSSData - ldr r1, [r0] - movs r0, 0x4 - b _0808DEB8 - .align 2, 0 -_0808DE60: .4byte sPSSData -_0808DE64: - bl CompactPartySlots - bl sub_80909F4 - ldr r0, _0808DE78 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _0808DEB8 - .align 2, 0 -_0808DE78: .4byte sPSSData -_0808DE7C: - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _0808DEBA - bl sub_8093174 - bl BoxSetMosaic - bl sub_808FAA8 -_0808DE92: - ldr r0, _0808DE9C @ =Cb_MainPSS - bl SetPSSCallback - b _0808DEBA - .align 2, 0 -_0808DE9C: .4byte Cb_MainPSS -_0808DEA0: - ldr r0, _0808DEC4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808DEBA - movs r0, 0x6 - bl PrintStorageActionText - ldr r0, _0808DEC8 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 -_0808DEB8: - strb r0, [r1] -_0808DEBA: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DEC4: .4byte gMain -_0808DEC8: .4byte sPSSData - thumb_func_end Cb_DepositMenu - - thumb_func_start sub_808DECC -sub_808DECC: @ 808DECC - push {lr} - ldr r0, _0808DEE4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xD - bls _0808DEDA - b _0808E0AE -_0808DEDA: - lsls r0, 2 - ldr r1, _0808DEE8 @ =_0808DEEC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808DEE4: .4byte sPSSData -_0808DEE8: .4byte _0808DEEC - .align 2, 0 -_0808DEEC: - .4byte _0808DF24 - .4byte _0808DF3A - .4byte _0808DF72 - .4byte _0808DF98 - .4byte _0808DFA4 - .4byte _0808DFBC - .4byte _0808DFF8 - .4byte _0808E010 - .4byte _0808E01C - .4byte _0808E020 - .4byte _0808E034 - .4byte _0808E050 - .4byte _0808E062 - .4byte _0808E098 -_0808DF24: - movs r0, 0x9 - bl PrintStorageActionText - movs r0, 0x1 - bl sub_808FCE8 - ldr r0, _0808DF54 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0808DF3A: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0808DF64 - cmp r1, 0 - bgt _0808DF58 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0808DF5E - b _0808E0AE - .align 2, 0 -_0808DF54: .4byte sPSSData -_0808DF58: - cmp r1, 0x1 - beq _0808DF5E - b _0808E0AE -_0808DF5E: - bl ClearBottomWindow - b _0808E010 -_0808DF64: - bl ClearBottomWindow - bl sub_809328C - bl sub_8093194 - b _0808E074 -_0808DF72: - bl sub_8093420 - bl sub_80931EC - lsls r0, 24 - cmp r0, 0 - beq _0808DF82 - b _0808E0AE -_0808DF82: - b _0808DF8A -_0808DF84: - cmp r0, 0 - bne _0808DF8A - b _0808E088 -_0808DF8A: - bl sub_8093420 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _0808DF84 - b _0808E074 -_0808DF98: - bl sub_8093218 - bl sub_808F1D0 - movs r0, 0xA - b _0808E070 -_0808DFA4: - ldr r0, _0808DFB8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - bne _0808DFB2 - b _0808E0AE -_0808DFB2: - movs r0, 0xB - b _0808E070 - .align 2, 0 -_0808DFB8: .4byte gMain -_0808DFBC: - ldr r0, _0808DFE0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - bl ClearBottomWindow - ldr r0, _0808DFE4 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808DFE8 - bl CompactPartySlots - bl sub_80909F4 - b _0808E074 - .align 2, 0 -_0808DFE0: .4byte gMain -_0808DFE4: .4byte sInPartyMenu -_0808DFE8: - ldr r0, _0808DFF4 @ =sPSSData - ldr r1, [r0] - movs r0, 0x7 - strb r0, [r1] - b _0808E0AE - .align 2, 0 -_0808DFF4: .4byte sPSSData -_0808DFF8: - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _0808E0AE - bl sub_8092F54 - bl BoxSetMosaic - bl sub_808FAA8 - b _0808E074 -_0808E010: - ldr r0, _0808E018 @ =Cb_MainPSS - bl SetPSSCallback - b _0808E0AE - .align 2, 0 -_0808E018: .4byte Cb_MainPSS -_0808E01C: - movs r0, 0xA - b _0808E070 -_0808E020: - ldr r0, _0808E030 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - movs r0, 0x15 - b _0808E070 - .align 2, 0 -_0808E030: .4byte gMain -_0808E034: - ldr r0, _0808E04C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - bl ClearBottomWindow - bl sub_8091114 - b _0808E074 - .align 2, 0 -_0808E04C: .4byte gMain -_0808E050: - bl sub_8091150 - lsls r0, 24 - cmp r0, 0 - bne _0808E0AE - bl sub_8093264 - movs r0, 0x13 - b _0808E070 -_0808E062: - ldr r0, _0808E080 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - movs r0, 0x14 -_0808E070: - bl PrintStorageActionText -_0808E074: - ldr r0, _0808E084 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E0AE - .align 2, 0 -_0808E080: .4byte gMain -_0808E084: .4byte sPSSData -_0808E088: - ldr r0, _0808E094 @ =sPSSData - ldr r1, [r0] - movs r0, 0x8 - strb r0, [r1] - b _0808E0AE - .align 2, 0 -_0808E094: .4byte sPSSData -_0808E098: - ldr r0, _0808E0B4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - bl ClearBottomWindow - ldr r0, _0808E0B8 @ =Cb_MainPSS - bl SetPSSCallback -_0808E0AE: - pop {r0} - bx r0 - .align 2, 0 -_0808E0B4: .4byte gMain -_0808E0B8: .4byte Cb_MainPSS - thumb_func_end sub_808DECC - - thumb_func_start sub_808E0BC -sub_808E0BC: @ 808E0BC + thumb_func_start Cb_ShowMarkMenu +Cb_ShowMarkMenu: @ 808E0BC push {r4,lr} ldr r4, _0808E0D0 @ =sPSSData ldr r0, [r4] @@ -1115,7 +54,7 @@ _0808E108: adds r0, r1 ldrb r0, [r0] bl sub_8093878 - bl sub_808F1D0 + bl RefreshCursorMonData ldr r0, _0808E13C @ =Cb_MainPSS bl SetPSSCallback _0808E130: @@ -1125,7 +64,7 @@ _0808E130: .align 2, 0 _0808E138: .4byte 0x00000da4 _0808E13C: .4byte Cb_MainPSS - thumb_func_end sub_808E0BC + thumb_func_end Cb_ShowMarkMenu thumb_func_start Cb_TakeItemForMoving Cb_TakeItemForMoving: @ 808E140 @@ -1300,8 +239,8 @@ _0808E2A4: _0808E2AC: .4byte Cb_MainPSS thumb_func_end Cb_GiveMovingItemToMon - thumb_func_start sub_808E2B0 -sub_808E2B0: @ 808E2B0 + thumb_func_start Cb_ItemToBag +Cb_ItemToBag: @ 808E2B0 push {r4,r5,lr} ldr r1, _0808E2CC @ =sPSSData ldr r0, [r1] @@ -1425,7 +364,7 @@ _0808E3BA: .align 2, 0 _0808E3C0: .4byte gMain _0808E3C4: .4byte Cb_MainPSS - thumb_func_end sub_808E2B0 + thumb_func_end Cb_ItemToBag thumb_func_start Cb_SwitchSelectedItem Cb_SwitchSelectedItem: @ 808E3C8 @@ -1534,8 +473,8 @@ _0808E4A4: _0808E4AC: .4byte Cb_MainPSS thumb_func_end Cb_SwitchSelectedItem - thumb_func_start sub_808E4B0 -sub_808E4B0: @ 808E4B0 + thumb_func_start Cb_ShowItemInfo +Cb_ShowItemInfo: @ 808E4B0 push {lr} ldr r0, _0808E4C8 @ =sPSSData ldr r0, [r0] @@ -1617,7 +556,7 @@ _0808E55C: bx r0 .align 2, 0 _0808E560: .4byte Cb_MainPSS - thumb_func_end sub_808E4B0 + thumb_func_end Cb_ShowItemInfo thumb_func_start sub_808E564 sub_808E564: @ 808E564 @@ -1651,7 +590,7 @@ _0808E59C: movs r0, 0x1B bl PrintStorageActionText movs r0, 0 - bl sub_808FCE8 + bl ShowYesNoWindow ldr r0, _0808E5B8 @ =sPSSData ldr r1, [r0] movs r0, 0x1 @@ -1758,8 +697,8 @@ _0808E67C: _0808E684: .4byte Cb_MainPSS thumb_func_end sub_808E564 - thumb_func_start sub_808E688 -sub_808E688: @ 808E688 + thumb_func_start Cb_HandleMovingMonFromParty +Cb_HandleMovingMonFromParty: @ 808E688 push {r4,lr} ldr r4, _0808E69C @ =sPSSData ldr r0, [r4] @@ -1793,7 +732,7 @@ _0808E6C6: bx r0 .align 2, 0 _0808E6CC: .4byte Cb_MainPSS - thumb_func_end sub_808E688 + thumb_func_end Cb_HandleMovingMonFromParty thumb_func_start sub_808E6D0 sub_808E6D0: @ 808E6D0 @@ -1879,7 +818,7 @@ _0808E760: _0808E766: movs r0, 0x1 bl PrintStorageActionText - bl sub_8094E88 + bl AddMenu ldr r1, [r4] ldrb r0, [r1] adds r0, 0x1 @@ -2289,8 +1228,8 @@ _0808EAE8: .4byte sWhichToReshow _0808EAEC: .4byte Cb_ChangeScreen thumb_func_end sub_808EA90 - thumb_func_start sub_808EAF0 -sub_808EAF0: @ 808EAF0 + thumb_func_start Cb_ShowMonSummary +Cb_ShowMonSummary: @ 808EAF0 push {r4,r5,lr} sub sp, 0x4 ldr r5, _0808EB04 @ =sPSSData @@ -2337,10 +1276,10 @@ _0808EB40: .align 2, 0 _0808EB48: .4byte sWhichToReshow _0808EB4C: .4byte Cb_ChangeScreen - thumb_func_end sub_808EAF0 + thumb_func_end Cb_ShowMonSummary - thumb_func_start sub_808EB50 -sub_808EB50: @ 808EB50 + thumb_func_start Cb_GiveItemFromBag +Cb_GiveItemFromBag: @ 808EB50 push {r4,lr} sub sp, 0x4 ldr r4, _0808EB64 @ =sPSSData @@ -2387,7 +1326,7 @@ _0808EB9E: .align 2, 0 _0808EBA8: .4byte sWhichToReshow _0808EBAC: .4byte Cb_ChangeScreen - thumb_func_end sub_808EB50 + thumb_func_end Cb_GiveItemFromBag thumb_func_start Cb_OnCloseBoxPressed Cb_OnCloseBoxPressed: @ 808EBB0 @@ -2431,7 +1370,7 @@ _0808EBE4: .align 2, 0 _0808EC04: .4byte sPSSData _0808EC08: - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 beq _0808EC20 @@ -2446,7 +1385,7 @@ _0808EC20: movs r0, 0 bl PrintStorageActionText movs r0, 0 - bl sub_808FCE8 + bl ShowYesNoWindow ldr r0, _0808EC3C @ =sPSSData ldr r1, [r0] movs r0, 0x2 @@ -2573,7 +1512,7 @@ _0808ED18: .align 2, 0 _0808ED38: .4byte sPSSData _0808ED3C: - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 beq _0808ED54 @@ -2588,7 +1527,7 @@ _0808ED54: movs r0, 0x12 bl PrintStorageActionText movs r0, 0 - bl sub_808FCE8 + bl ShowYesNoWindow ldr r0, _0808ED70 @ =sPSSData ldr r1, [r0] movs r0, 0x2 @@ -2688,7 +1627,7 @@ Cb_ChangeScreen: @ 808EE18 ldrb r0, [r0, 0x1] cmp r0, 0x3 bne _0808EE4C - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3006,7 +1945,7 @@ _0808F0CE: bl sub_808F2BC bl sub_808F0F4 bl sub_808F164 - bl sub_808F1D0 + bl RefreshCursorMonData pop {r0} bx r0 .align 2, 0 @@ -3121,8 +2060,8 @@ _0808F1C8: .4byte 0x00000d94 _0808F1CC: .4byte gSprites thumb_func_end sub_808F164 - thumb_func_start sub_808F1D0 -sub_808F1D0: @ 808F1D0 + thumb_func_start RefreshCursorMonData +RefreshCursorMonData: @ 808F1D0 push {lr} ldr r0, _0808F1FC @ =sPSSData ldr r1, [r0] @@ -3142,12 +2081,12 @@ sub_808F1D0: @ 808F1D0 bx r0 .align 2, 0 _0808F1FC: .4byte sPSSData - thumb_func_end sub_808F1D0 + thumb_func_end RefreshCursorMonData thumb_func_start BoxSetMosaic BoxSetMosaic: @ 808F200 push {lr} - bl sub_808F1D0 + bl RefreshCursorMonData ldr r3, _0808F24C @ =sPSSData ldr r0, [r3] ldr r1, _0808F250 @ =0x00002238 @@ -3894,8 +2833,8 @@ _0808F804: _0808F80C: .4byte sInPartyMenu thumb_func_end sub_808F794 - thumb_func_start sub_808F810 -sub_808F810: @ 808F810 + thumb_func_start SetUpHidePartyMenu +SetUpHidePartyMenu: @ 808F810 push {r4,lr} ldr r4, _0808F844 @ =sPSSData ldr r1, [r4] @@ -3925,10 +2864,10 @@ _0808F83C: _0808F844: .4byte sPSSData _0808F848: .4byte 0x000002c2 _0808F84C: .4byte 0x000002c5 - thumb_func_end sub_808F810 + thumb_func_end SetUpHidePartyMenu - thumb_func_start sub_808F850 -sub_808F850: @ 808F850 + thumb_func_start HidePartyMenu +HidePartyMenu: @ 808F850 push {r4,r5,lr} sub sp, 0x8 ldr r5, _0808F8C8 @ =sPSSData @@ -4013,7 +2952,7 @@ _0808F8FE: bx r1 .align 2, 0 _0808F908: .4byte sInPartyMenu - thumb_func_end sub_808F850 + thumb_func_end HidePartyMenu thumb_func_start sub_808F90C sub_808F90C: @ 808F90C @@ -4255,8 +3194,8 @@ sub_808FAA8: @ 808FAA8 bx r0 thumb_func_end sub_808FAA8 - thumb_func_start sub_808FAD4 -sub_808FAD4: @ 808FAD4 + thumb_func_start SetUpDoShowPartyMenu +SetUpDoShowPartyMenu: @ 808FAD4 push {lr} ldr r0, _0808FAF0 @ =sPSSData ldr r0, [r0] @@ -4272,10 +3211,10 @@ sub_808FAD4: @ 808FAD4 .align 2, 0 _0808FAF0: .4byte sPSSData _0808FAF4: .4byte 0x000002c6 - thumb_func_end sub_808FAD4 + thumb_func_end SetUpDoShowPartyMenu - thumb_func_start sub_808FAF8 -sub_808FAF8: @ 808FAF8 + thumb_func_start DoShowPartyMenu +DoShowPartyMenu: @ 808FAF8 push {r4,r5,lr} ldr r4, _0808FB14 @ =sPSSData ldr r0, [r4] @@ -4333,7 +3272,7 @@ _0808FB62: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_808FAF8 + thumb_func_end DoShowPartyMenu thumb_func_start sub_808FB68 sub_808FB68: @ 808FB68 @@ -4418,7 +3357,7 @@ _0808FC0C: _0808FC14: .4byte sPSSData _0808FC18: .4byte 0x000021d0 _0808FC1C: - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 beq _0808FC40 @@ -4510,8 +3449,8 @@ _0808FCE0: .4byte 0x000021db _0808FCE4: .4byte gUnknown_83CEA88 thumb_func_end PrintStorageActionText - thumb_func_start sub_808FCE8 -sub_808FCE8: @ 808FCE8 + thumb_func_start ShowYesNoWindow +ShowYesNoWindow: @ 808FCE8 push {r4,lr} sub sp, 0xC adds r4, r0, 0 @@ -4537,7 +3476,7 @@ sub_808FCE8: @ 808FCE8 bx r0 .align 2, 0 _0808FD1C: .4byte gUnknown_83CEB80 - thumb_func_end sub_808FCE8 + thumb_func_end ShowYesNoWindow thumb_func_start ClearBottomWindow ClearBottomWindow: @ 808FD20 @@ -4563,7 +3502,7 @@ sub_808FD34: @ 808FD34 bl sub_8094DEC movs r0, 0x15 bl sub_8094DEC - bl sub_8094E88 + bl AddMenu pop {r0} bx r0 thumb_func_end sub_808FD34 @@ -4628,7 +3567,7 @@ _0808FDCE: movs r0, 0x25 bl sub_8094DEC _0808FDE6: - bl sub_8094E88 + bl AddMenu pop {r4,r5} pop {r0} bx r0 @@ -7236,8 +6175,8 @@ _08091180: bx r1 thumb_func_end sub_8091150 - thumb_func_start sub_8091184 -sub_8091184: @ 8091184 + thumb_func_start SetMovingMonPriority +SetMovingMonPriority: @ 8091184 lsls r0, 24 lsrs r0, 24 ldr r1, _080911A8 @ =sPSSData @@ -7258,7 +6197,7 @@ sub_8091184: @ 8091184 .align 2, 0 _080911A8: .4byte sPSSData _080911AC: .4byte 0x00000a68 - thumb_func_end sub_8091184 + thumb_func_end SetMovingMonPriority thumb_func_start sub_80911B0 sub_80911B0: @ 80911B0 @@ -10151,7 +9090,7 @@ _0809282C: .4byte sPSSData _08092830: .4byte 0x000021ef _08092834: .4byte sIsMonBeingMoved _08092838: - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 bne _08092852 @@ -10324,7 +9263,7 @@ _08092970: cmp r0, 0 beq _080929A0 movs r0, 0x2 - bl sub_8091184 + bl SetMovingMonPriority _080929A0: pop {r4-r6} pop {r0} @@ -10375,7 +9314,7 @@ _080929FC: .4byte sBoxCursorPosition _08092A00: .4byte 0x000021ef _08092A04: .4byte sIsMonBeingMoved _08092A08: - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 bne _08092A22 @@ -10422,7 +9361,7 @@ _08092A52: strb r1, [r0] _08092A62: movs r0, 0x1 - bl sub_8091184 + bl SetMovingMonPriority b _08092AD0 .align 2, 0 _08092A6C: .4byte sPSSData @@ -10472,7 +9411,7 @@ _08092A74: ands r0, r2 strb r0, [r1] movs r0, 0x2 - bl sub_8091184 + bl SetMovingMonPriority _08092AD0: pop {r4} pop {r0} @@ -10572,8 +9511,8 @@ sub_8092B70: @ 8092B70 _08092B78: .4byte gUnknown_2039826 thumb_func_end sub_8092B70 - thumb_func_start sub_8092B7C -sub_8092B7C: @ 8092B7C + thumb_func_start InitMonPlaceChange +InitMonPlaceChange: @ 8092B7C lsls r0, 24 ldr r1, _08092B9C @ =sPSSData ldr r1, [r1] @@ -10594,7 +9533,7 @@ _08092B9C: .4byte sPSSData _08092BA0: .4byte 0x00000d88 _08092BA4: .4byte gUnknown_83D346C _08092BA8: .4byte 0x00000d8c - thumb_func_end sub_8092B7C + thumb_func_end InitMonPlaceChange thumb_func_start sub_8092BAC sub_8092BAC: @ 8092BAC @@ -10634,8 +9573,8 @@ _08092BF0: .4byte sub_8092E10 _08092BF4: .4byte 0x00000d8c thumb_func_end sub_8092BAC - thumb_func_start sub_8092BF8 -sub_8092BF8: @ 8092BF8 + thumb_func_start DoMonPlaceChange +DoMonPlaceChange: @ 8092BF8 push {lr} ldr r0, _08092C10 @ =sPSSData ldr r0, [r0] @@ -10650,7 +9589,7 @@ sub_8092BF8: @ 8092BF8 .align 2, 0 _08092C10: .4byte sPSSData _08092C14: .4byte 0x00000d88 - thumb_func_end sub_8092BF8 + thumb_func_end DoMonPlaceChange thumb_func_start sub_8092C18 sub_8092C18: @ 8092C18 @@ -11275,8 +10214,8 @@ _080930DC: .4byte sMovingMonOrigBoxId _080930E0: .4byte sMovingMonOrigBoxPos thumb_func_end diegohint1 - thumb_func_start sub_80930E4 -sub_80930E4: @ 80930E4 + thumb_func_start TryStorePartyMonInBox +TryStorePartyMonInBox: @ 80930E4 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 @@ -11342,7 +10281,7 @@ _08093164: .align 2, 0 _0809316C: .4byte sBoxCursorPosition _08093170: .4byte sPSSData - thumb_func_end sub_80930E4 + thumb_func_end TryStorePartyMonInBox thumb_func_start sub_8093174 sub_8093174: @ 8093174 @@ -11430,8 +10369,8 @@ _08093210: _08093214: .4byte sPSSData thumb_func_end sub_80931EC - thumb_func_start sub_8093218 -sub_8093218: @ 8093218 + thumb_func_start ReleaseMon +ReleaseMon: @ 8093218 push {lr} bl sub_80910CC ldr r1, _0809322C @ =sIsMonBeingMoved @@ -11469,7 +10408,7 @@ _08093256: bx r0 .align 2, 0 _08093260: .4byte sBoxCursorPosition - thumb_func_end sub_8093218 + thumb_func_end ReleaseMon thumb_func_start sub_8093264 sub_8093264: @ 8093264 @@ -11494,8 +10433,8 @@ _08093284: .4byte sIsMonBeingMoved _08093288: .4byte sPSSData thumb_func_end sub_8093264 - thumb_func_start sub_809328C -sub_809328C: @ 809328C + thumb_func_start InitCanReleaseMonVars +InitCanReleaseMonVars: @ 809328C push {r4-r6,lr} ldr r0, _080932C0 @ =sIsMonBeingMoved ldrb r0, [r0] @@ -11672,10 +10611,10 @@ _08093410: .4byte 0x00002169 _08093414: .4byte 0x00002168 _08093418: .4byte sPSSData _0809341C: .4byte 0x00002170 - thumb_func_end sub_809328C + thumb_func_end InitCanReleaseMonVars - thumb_func_start sub_8093420 -sub_8093420: @ 8093420 + thumb_func_start RunCanReleaseMon +RunCanReleaseMon: @ 8093420 push {r4-r7,lr} mov r7, r8 push {r7} @@ -11936,7 +10875,7 @@ _08093620: .4byte 0x0000216a _08093624: .4byte 0x0000216b _08093628: .4byte sPSSData _0809362C: .4byte 0x00002168 - thumb_func_end sub_8093420 + thumb_func_end RunCanReleaseMon thumb_func_start sub_8093630 sub_8093630: @ 8093630 @@ -14473,7 +13412,7 @@ sub_8094A0C: @ 8094A0C lsls r0, 1 cmp r1, r0 beq _08094A9E - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 bne _08094A70 @@ -15049,8 +13988,8 @@ _08094E84: bx r1 thumb_func_end sub_8094E50 - thumb_func_start sub_8094E88 -sub_8094E88: @ 8094E88 + thumb_func_start AddMenu +AddMenu: @ 8094E88 push {r4-r6,lr} mov r6, r10 mov r5, r9 @@ -15168,7 +14107,7 @@ _08094F80: .4byte 0x00000c6a _08094F84: .4byte 0x00000c68 _08094F88: .4byte 0x00000cac _08094F8C: .4byte 0x00000caa - thumb_func_end sub_8094E88 + thumb_func_end AddMenu thumb_func_start sub_8094F90 sub_8094F90: @ 8094F90 @@ -15646,7 +14585,7 @@ _08095336: movs r0, 0 b _08095360 _08095342: - bl sub_8092BF8 + bl DoMonPlaceChange lsls r0, 24 cmp r0, 0 bne _0809538C @@ -15670,7 +14609,7 @@ _0809536E: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8092BF8 + bl DoMonPlaceChange lsls r0, 24 lsrs r0, 24 cmp r4, 0 @@ -15743,7 +14682,7 @@ _080953E2: bl sub_8092BAC b _0809543A _080953FA: - bl sub_8092BF8 + bl DoMonPlaceChange lsls r0, 24 cmp r0, 0 bne _0809546A @@ -15760,7 +14699,7 @@ _080953FA: bl HideBg b _0809543A _08095426: - bl sub_8092BF8 + bl DoMonPlaceChange lsls r0, 24 cmp r0, 0 bne _0809546A @@ -17502,8 +16441,8 @@ _08096164: bx r1 thumb_func_end sub_809610C - thumb_func_start sub_809616C -sub_809616C: @ 809616C + thumb_func_start IsActiveItemMoving +IsActiveItemMoving: @ 809616C push {lr} ldr r0, _08096190 @ =sPSSData ldr r1, [r0] @@ -17535,7 +16474,7 @@ _080961A0: _080961A2: pop {r1} bx r1 - thumb_func_end sub_809616C + thumb_func_end IsActiveItemMoving thumb_func_start sub_80961A8 sub_80961A8: @ 80961A8 @@ -18202,7 +17141,7 @@ GetItemIconPalette: @ 8096684 sub_8096694: @ 8096694 push {r4,lr} sub sp, 0x14 - bl sub_809616C + bl IsActiveItemMoving lsls r0, 24 cmp r0, 0 beq _080966B4 diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 37dd63110..134ee5fa2 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -288,5 +288,10 @@ struct PokemonStorageSystemData extern struct PokemonStorageSystemData *sPSSData; void Cb2_ExitPSS(void); +void sub_808C8FC(void); +void sub_808C940(u8 curBox); +void sub_808C950(void); +u8 HandleBoxChooseSelectionInput(void); +void sub_808C854(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal); #endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index dec837612..a9fdfc096 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -3,6 +3,7 @@ #include "box_party_pokemon_dropdown.h" #include "help_system.h" #include "mail_data.h" +#include "menu.h" #include "new_menu_helpers.h" #include "pc_screen_effect.h" #include "pokemon_storage_system_internal.h" @@ -23,7 +24,32 @@ void Cb_InitPSS(u8 taskId); void Cb_ShowPSS(u8 taskId); void Cb_ReshowPSS(u8 taskId); void Cb_MainPSS(u8 taskId); +void Cb_ShowPartyPokemon(u8 taskId); +void Cb_HidePartyPokemon(u8 taskId); +void Cb_OnSelectedMon(u8 taskId); +void Cb_MoveMon(u8 taskId); +void Cb_PlaceMon(u8 taskId); +void Cb_ShiftMon(u8 taskId); +void Cb_WithdrawMon(u8 taskId); +void Cb_DepositMenu(u8 taskId); +void Cb_ReleaseMon(u8 taskId); +void Cb_HandleMovingMonFromParty(u8 taskId); +void Cb_GiveMovingItemToMon(u8 taskId); +void Cb_HandleBoxOptions(u8 taskId); +void Cb_OnBPressed(u8 taskId); +void Cb_OnCloseBoxPressed(u8 taskId); +void Cb_SwitchSelectedItem(u8 taskId); +void Cb_TakeItemForMoving(u8 taskId); void Cb_ChangeScreen(u8 taskId); +void Cb_ShowMonSummary(u8 taskId); +void Cb_ShowMarkMenu(u8 taskId); +void Cb_ItemToBag(u8 taskId); +void Cb_GiveItemFromBag(u8 taskId); +void Cb_ShowItemInfo(u8 taskId); +void InitMonPlaceChange(u8 a0); +bool8 DoMonPlaceChange(void); +void SetUpDoShowPartyMenu(void); +bool8 DoShowPartyMenu(void); void GiveChosenBagItem(void); bool8 InitPSSWindows(void); void LoadPSSMenuGfx(void); @@ -31,36 +57,30 @@ void LoadWaveformSpritePalette(void); void SetScrollingBackground(void); void sub_808EFC8(void); void sub_808F078(void); +bool8 sub_808F258(void); void sub_808F68C(void); +void sub_808F948(void); +void sub_808F974(void); void sub_808F99C(void); void sub_808FB68(void); void sub_808FDFC(void); +void sub_808FE54(u8 a0); void sub_808FFAC(void); void sub_80913DC(u8 box); bool8 sub_809140C(void); +void SetUpHidePartyMenu(void); +bool8 HidePartyMenu(void); void sub_80922C0(void); void sub_8092340(void); +void sub_8092B3C(u8 a0); void sub_8092B50(void); +u8 sub_8092B70(void); void sub_8093660(void); void sub_80937B4(void); bool8 sub_8095050(void); void sub_8095B5C(void); void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2); void sub_8096BF8(void); -void Cb_DepositMenu(u8 taskId); -void Cb_GiveMovingItemToMon(u8 taskId); -void Cb_HandleBoxOptions(u8 taskId); -void Cb_HidePartyPokemon(u8 taskId); -void Cb_MoveMon(u8 taskId); -void Cb_OnBPressed(u8 taskId); -void Cb_OnCloseBoxPressed(u8 taskId); -void Cb_OnSelectedMon(u8 taskId); -void Cb_PlaceMon(u8 taskId); -void Cb_ShiftMon(u8 taskId); -void Cb_ShowPartyPokemon(u8 taskId); -void Cb_SwitchSelectedItem(u8 taskId); -void Cb_TakeItemForMoving(u8 taskId); -void Cb_WithdrawMon(u8 taskId); void BoxSetMosaic(void); bool8 CanMovePartyMon(void); bool8 CanShiftMon(void); @@ -71,9 +91,6 @@ bool8 IsMonBeingMoved(void); void PrintStorageActionText(u8 textId); bool8 ScrollToBox(void); void SetUpScrollToBox(u8 targetBox); -void sub_808FE54(u8 a0); -void sub_808F948(void); -void sub_808F974(void); bool8 sub_80924A8(void); void sub_8092F54(void); void sub_8094D60(void); @@ -81,6 +98,27 @@ void sub_8094D84(void); void sub_80950BC(u8 a0); bool8 sub_80950D0(void); bool8 sub_809610C(void); +bool8 IsActiveItemMoving(void); +void AddMenu(void); +bool8 sub_8094F90(void); +s16 sub_8094F94(void); +void sub_8092B5C(void); +void SetMovingMonPriority(u8 priority); +void sub_808FAA8(void); +bool8 TryStorePartyMonInBox(u8 boxId); +void sub_80909F4(void); +bool8 sub_8090A60(void); +void sub_8093174(void); +void ShowYesNoWindow(u8 a0); +void InitCanReleaseMonVars(void); +void sub_8093194(void); +s8 RunCanReleaseMon(void); +bool8 sub_80931EC(void); +void ReleaseMon(void); +void RefreshCursorMonData(void); +void sub_8091114(void); +bool8 sub_8091150(void); +void sub_8093264(void); extern const u16 gUnknown_83CE6F8[]; @@ -562,7 +600,7 @@ void Cb_MainPSS(u8 taskId) sPSSData->state = 6; break; case 6: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); SetPSSCallback(Cb_MainPSS); @@ -597,3 +635,510 @@ void Cb_MainPSS(u8 taskId) break; } } + +void Cb_ShowPartyPokemon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + SetUpDoShowPartyMenu(); + sPSSData->state++; + break; + case 1: + if (!DoShowPartyMenu()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +void Cb_HidePartyPokemon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PlaySE(SE_SELECT); + SetUpHidePartyMenu(); + sPSSData->state++; + break; + case 1: + if (!HidePartyMenu()) + { + sub_8092B3C(sub_8092B70()); + sPSSData->state++; + } + break; + case 2: + if (!sub_80924A8()) + { + if (sPSSData->setMosaic) + BoxSetMosaic(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +void Cb_OnSelectedMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (!sub_808F258()) + { + PlaySE(SE_SELECT); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + PrintStorageActionText(PC_TEXT_IS_SELECTED); + else if (IsActiveItemMoving() || sPSSData->cursorMonItem != 0) + PrintStorageActionText(PC_TEXT_IS_SELECTED2); + else + PrintStorageActionText(PC_TEXT_GIVE_TO_MON); + + AddMenu(); + sPSSData->state = 1; + } + break; + case 1: // debug? + if (!sub_8094F90()) + sPSSData->state = 2; + break; + case 2: + switch (sub_8094F94()) + { + case -1: + case 0: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 3: + if (CanMovePartyMon()) + { + sPSSData->state = 3; + } + else + { + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_MoveMon); + } + break; + case 5: + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_PlaceMon); + break; + case 4: + if (!CanShiftMon()) + { + sPSSData->state = 3; + } + else + { + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_ShiftMon); + } + break; + case 2: + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_WithdrawMon); + break; + case 1: + if (CanMovePartyMon()) + { + sPSSData->state = 3; + } + else if (ItemIsMail(sPSSData->cursorMonItem)) + { + sPSSData->state = 4; + } + else + { + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_DepositMenu); + } + break; + case 7: + if (CanMovePartyMon()) + { + sPSSData->state = 3; + } + else if (sPSSData->cursorMonIsEgg) + { + sPSSData->state = 5; // Cannot release an Egg. + } + else if (ItemIsMail(sPSSData->cursorMonItem)) + { + sPSSData->state = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ReleaseMon); + } + break; + case 6: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ShowMonSummary); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ShowMarkMenu); + break; + case 12: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_TakeItemForMoving); + break; + case 13: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_GiveMovingItemToMon); + break; + case 16: + SetPSSCallback(Cb_ItemToBag); + break; + case 15: + SetPSSCallback(Cb_SwitchSelectedItem); + break; + case 14: + SetPSSCallback(Cb_GiveItemFromBag); + break; + case 17: + SetPSSCallback(Cb_ShowItemInfo); + break; + } + break; + case 3: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + sPSSData->state = 6; + break; + case 5: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); + sPSSData->state = 6; + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + sPSSData->state = 6; + break; + case 6: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +void Cb_MoveMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + InitMonPlaceChange(0); + sPSSData->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + if (sInPartyMenu) + SetPSSCallback(Cb_HandleMovingMonFromParty); + else + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +void Cb_PlaceMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + sub_808FE54(1); + InitMonPlaceChange(1); + sPSSData->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + if (sInPartyMenu) + SetPSSCallback(Cb_HandleMovingMonFromParty); + else + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +void Cb_ShiftMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + sub_808FE54(0); + InitMonPlaceChange(2); + sPSSData->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + BoxSetMosaic(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +void Cb_WithdrawMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (CalculatePlayerPartyCount() == PARTY_SIZE) + { + PrintStorageActionText(PC_TEXT_PARTY_FULL); + sPSSData->state = 1; + } + else + { + sub_8092B5C(); + InitMonPlaceChange(0); + sPSSData->state = 2; + } + break; + case 1: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 2: + if (!DoMonPlaceChange()) + { + SetMovingMonPriority(1); + SetUpDoShowPartyMenu(); + sPSSData->state++; + } + break; + case 3: + if (!DoShowPartyMenu()) + { + sub_808FE54(1); + InitMonPlaceChange(1); + sPSSData->state++; + } + break; + case 4: + if (!DoMonPlaceChange()) + { + sub_808FAA8(); + sPSSData->state++; + } + break; + case 5: + SetPSSCallback(Cb_HidePartyPokemon); + break; + } +} + +void Cb_DepositMenu(u8 taskId) +{ + u8 boxId; + + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + sub_808C854(&sPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); + sub_808C940(gUnknown_20397B6); + sPSSData->state++; + break; + case 1: + boxId = HandleBoxChooseSelectionInput(); + if (boxId == 200) + { + // no box chosen yet + } + else if (boxId == 201) + { + ClearBottomWindow(); + sub_808C950(); + sub_808C8FC(); + SetPSSCallback(Cb_MainPSS); + } + else + { + if (TryStorePartyMonInBox(boxId)) + { + gUnknown_20397B6 = boxId; + sub_808FE54(2); + ClearBottomWindow(); + sub_808C950(); + sub_808C8FC(); + sPSSData->state = 2; + } + else + { + PrintStorageActionText(PC_TEXT_BOX_IS_FULL); + sPSSData->state = 4; + } + } + break; + case 2: + CompactPartySlots(); + sub_80909F4(); + sPSSData->state++; + break; + case 3: + if (!sub_8090A60()) + { + sub_8093174(); + BoxSetMosaic(); + sub_808FAA8(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 4: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + sPSSData->state = 1; + } + break; + } +} + +void Cb_ReleaseMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_RELEASE_POKE); + ShowYesNoWindow(1); + sPSSData->state++; + // fallthrough + case 1: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: + case 1: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 0: + ClearBottomWindow(); + InitCanReleaseMonVars(); + sub_8093194(); + sPSSData->state++; + break; + } + break; + case 2: + RunCanReleaseMon(); + if (!sub_80931EC()) + { + while (1) + { + s8 r0 = RunCanReleaseMon(); + if (r0 == 1) + { + sPSSData->state++; + break; + } + else if (r0 == 0) + { + sPSSData->state = 8; // Can't release the mon. + break; + } + } + } + break; + case 3: + ReleaseMon(); + RefreshCursorMonData(); + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + sPSSData->state++; + break; + case 4: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_BYE_BYE); + sPSSData->state++; + } + break; + case 5: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + if (sInPartyMenu) + { + CompactPartySlots(); + sub_80909F4(); + sPSSData->state++; + } + else + { + sPSSData->state = 7; + } + } + break; + case 6: + if (!sub_8090A60()) + { + sub_8092F54(); + BoxSetMosaic(); + sub_808FAA8(); + sPSSData->state++; + } + break; + case 7: + SetPSSCallback(Cb_MainPSS); + break; + case 8: + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + sPSSData->state++; + break; + case 9: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_SURPRISE); + sPSSData->state++; + } + break; + case 10: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sub_8091114(); + sPSSData->state++; + } + break; + case 11: + if (!sub_8091150()) + { + sub_8093264(); + PrintStorageActionText(PC_TEXT_CAME_BACK); + sPSSData->state++; + } + break; + case 12: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_WORRIED); + sPSSData->state++; + } + break; + case 13: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} |