summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-15 17:29:02 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-15 17:29:02 -0400
commitc996ca85bc4d3bd62e2b6d2a37809c4f5c46b2e1 (patch)
tree372afdf22c54691db085aeb01e3517ec8c19b7a1
parentbe742e6741af58076ac09722d42d64eee3c8d763 (diff)
pokemon_storage_system_8
-rw-r--r--asm/pokemon_storage_system.s2157
-rw-r--r--data/pokemon_storage_system.s53
-rw-r--r--include/pokemon_storage_system_internal.h6
-rw-r--r--ld_script.txt3
-rw-r--r--src/pokemon_storage_system_8.c755
-rw-r--r--sym_bss.txt6
6 files changed, 762 insertions, 2218 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index fe224637d..d768a042e 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -7,2163 +7,6 @@
@ file boundary?
- thumb_func_start sub_8095B5C
-sub_8095B5C: @ 8095B5C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r3, _08095C58 @ =sPSSData
- ldr r0, [r3]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08095C3C
- ldr r0, _08095C5C @ =gUnknown_3000FE8
- str r0, [sp, 0x18]
- ldr r1, _08095C60 @ =0xffff0000
- add r2, sp, 0x18
- ldr r0, [r2, 0x4]
- ands r0, r1
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- str r0, [r2, 0x4]
- mov r1, sp
- ldr r0, _08095C64 @ =gUnknown_83D3728
- ldm r0!, {r4-r6}
- stm r1!, {r4-r6}
- ldm r0!, {r4-r6}
- stm r1!, {r4-r6}
- movs r7, 0
- mov r9, r2
- mov r8, r3
- movs r0, 0
- mov r10, r0
-_08095B9C:
- adds r6, r7, 0x7
- lsls r1, r6, 16
- mov r2, r9
- ldrh r0, [r2, 0x4]
- orrs r0, r1
- str r0, [r2, 0x4]
- mov r0, r9
- bl LoadCompressedSpriteSheet
- mov r4, r9
- ldrh r0, [r4, 0x6]
- bl GetSpriteTileStartByTag
- mov r5, r8
- ldr r1, [r5]
- lsls r5, r7, 4
- ldr r2, _08095C68 @ =0x000021f8
- adds r1, r2
- adds r1, r5
- lsls r0, 16
- lsrs r0, 11
- ldr r4, _08095C6C @ =0x06010000
- adds r0, r4
- str r0, [r1]
- ldr r0, _08095C70 @ =0xffffdacb
- adds r4, r7, r0
- lsls r0, r4, 16
- lsrs r0, 16
- bl AllocSpritePalette
- mov r2, r8
- ldr r1, [r2]
- adds r1, r5
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08095C74 @ =0x000021fc
- adds r1, r2
- strh r0, [r1]
- ldrh r0, [r1]
- lsls r0, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- strh r0, [r1]
- mov r0, sp
- strh r6, [r0]
- strh r4, [r0, 0x2]
- movs r1, 0
- movs r2, 0
- movs r3, 0xB
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r4, r8
- ldr r2, [r4]
- ldr r6, _08095C78 @ =0x000021f4
- adds r2, r6
- adds r2, r5
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08095C7C @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0x88
- lsls r1, 6
- adds r0, r1
- mov r2, r10
- strb r2, [r0]
- adds r7, 0x1
- cmp r7, 0x2
- ble _08095B9C
-_08095C3C:
- ldr r0, _08095C58 @ =sPSSData
- ldr r0, [r0]
- ldr r4, _08095C80 @ =0x00002224
- adds r0, r4
- movs r1, 0
- strh r1, [r0]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08095C58: .4byte sPSSData
-_08095C5C: .4byte gUnknown_3000FE8
-_08095C60: .4byte 0xffff0000
-_08095C64: .4byte gUnknown_83D3728
-_08095C68: .4byte 0x000021f8
-_08095C6C: .4byte 0x06010000
-_08095C70: .4byte 0xffffdacb
-_08095C74: .4byte 0x000021fc
-_08095C78: .4byte 0x000021f4
-_08095C7C: .4byte gSprites
-_08095C80: .4byte 0x00002224
- thumb_func_end sub_8095B5C
-
- thumb_func_start sub_8095C84
-sub_8095C84: @ 8095C84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _08095CB8 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08095D36
- mov r0, r8
- adds r1, r7, 0
- bl sub_8096210
- cmp r0, 0
- bne _08095D36
- mov r0, r8
- cmp r0, 0
- beq _08095CBC
- cmp r0, 0x1
- beq _08095CD2
- b _08095D36
- .align 2, 0
-_08095CB8: .4byte sPSSData
-_08095CBC:
- adds r0, r7, 0
- movs r1, 0x5
- bl GetCurrentBoxMonData
- cmp r0, 0
- beq _08095D36
- adds r0, r7, 0
- movs r1, 0xC
- bl GetCurrentBoxMonData
- b _08095CF0
-_08095CD2:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08095D40 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _08095D36
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
-_08095CF0:
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08095D36
- adds r0, r4, 0
- bl GetItemIconPic
- adds r6, r0, 0
- adds r0, r4, 0
- bl GetItemIconPalette
- adds r5, r0, 0
- bl sub_80961D8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- mov r1, r8
- adds r2, r7, 0
- bl sub_80962F0
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_8096408
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8096624
-_08095D36:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08095D40: .4byte gPlayerParty
- thumb_func_end sub_8095C84
-
- thumb_func_start sub_8095D44
-sub_8095D44: @ 8095D44
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _08095D80 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08095D7A
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8096258
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_80964E8
-_08095D7A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08095D80: .4byte sPSSData
- thumb_func_end sub_8095D44
-
- thumb_func_start Item_FromMonToMoving
-Item_FromMonToMoving: @ 8095D84
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- adds r7, r5, 0
- ldr r0, _08095DE8 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08095E14
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8096258
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_80964E8
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_80962F0
- cmp r6, 0
- bne _08095DEC
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetCurrentBoxMonData
- adds r0, r5, 0
- movs r1, 0x1
- bl SetBoxMonIconObjMode
- b _08095E04
- .align 2, 0
-_08095DE8: .4byte sPSSData
-_08095DEC:
- movs r0, 0x64
- muls r0, r7
- ldr r1, _08095E1C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x1
- bl SetPartyMonIconObjMode
-_08095E04:
- ldr r0, _08095E20 @ =sPSSData
- ldr r0, [r0]
- ldr r2, _08095E24 @ =0x00000ce2
- adds r1, r0, r2
- ldrh r1, [r1]
- ldr r2, _08095E28 @ =0x00002224
- adds r0, r2
- strh r1, [r0]
-_08095E14:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08095E1C: .4byte gPlayerParty
-_08095E20: .4byte sPSSData
-_08095E24: .4byte 0x00000ce2
-_08095E28: .4byte 0x00002224
- thumb_func_end Item_FromMonToMoving
-
- thumb_func_start sub_8095E2C
-sub_8095E2C: @ 8095E2C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r5, 0
- bl GetItemIconPic
- mov r8, r0
- adds r0, r5, 0
- bl GetItemIconPalette
- adds r6, r0, 0
- bl sub_80961D8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- mov r1, r8
- adds r2, r6, 0
- bl sub_8096408
- adds r0, r4, 0
- movs r1, 0x6
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl sub_80964E8
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_80962F0
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8096624
- ldr r0, _08095E98 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _08095E9C @ =0x00002224
- adds r0, r1
- strh r5, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08095E98: .4byte sPSSData
-_08095E9C: .4byte 0x00002224
- thumb_func_end sub_8095E2C
-
- thumb_func_start Item_SwitchMonsWithMoving
-Item_SwitchMonsWithMoving: @ 8095EA0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _08095F08 @ =sPSSData
- mov r8, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08095F5E
- mov r0, r9
- adds r1, r7, 0
- bl sub_8096258
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0x2
- movs r3, 0
- bl sub_80964E8
- mov r1, r9
- cmp r1, 0
- bne _08095F10
- adds r0, r7, 0
- movs r1, 0xC
- bl GetCurrentBoxMonData
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r8
- ldr r2, [r0]
- ldr r4, _08095F0C @ =0x00002224
- adds r2, r4
- adds r0, r7, 0
- movs r1, 0xC
- bl SetCurrentBoxMonData
- mov r1, r8
- ldr r0, [r1]
- adds r0, r4
- b _08095F3C
- .align 2, 0
-_08095F08: .4byte sPSSData
-_08095F0C: .4byte 0x00002224
-_08095F10:
- movs r0, 0x64
- adds r4, r7, 0
- muls r4, r0
- ldr r0, _08095F6C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r8
- ldr r2, [r0]
- ldr r5, _08095F70 @ =0x00002224
- adds r2, r5
- adds r0, r4, 0
- movs r1, 0xC
- bl SetMonData
- mov r1, r8
- ldr r0, [r1]
- adds r0, r5
-_08095F3C:
- strh r6, [r0]
- movs r0, 0x2
- movs r1, 0
- bl sub_8096258
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0x4
- mov r2, r9
- adds r3, r7, 0
- bl sub_80964E8
-_08095F5E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08095F6C: .4byte gPlayerParty
-_08095F70: .4byte 0x00002224
- thumb_func_end Item_SwitchMonsWithMoving
-
- thumb_func_start Item_GiveMovingToMon
-Item_GiveMovingToMon: @ 8095F74
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- mov r8, r5
- ldr r6, _08095FCC @ =sPSSData
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08095FF4
- movs r0, 0x2
- movs r1, 0
- bl sub_8096258
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r7, 0
- adds r3, r5, 0
- bl sub_80964E8
- cmp r7, 0
- bne _08095FD4
- ldr r2, [r6]
- ldr r0, _08095FD0 @ =0x00002224
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl SetCurrentBoxMonData
- adds r0, r5, 0
- movs r1, 0
- bl SetBoxMonIconObjMode
- b _08095FF4
- .align 2, 0
-_08095FCC: .4byte sPSSData
-_08095FD0: .4byte 0x00002224
-_08095FD4:
- movs r0, 0x64
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _08096000 @ =gPlayerParty
- adds r0, r1
- ldr r2, [r6]
- ldr r1, _08096004 @ =0x00002224
- adds r2, r1
- movs r1, 0xC
- bl SetMonData
- mov r0, r8
- movs r1, 0
- bl SetPartyMonIconObjMode
-_08095FF4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08096000: .4byte gPlayerParty
-_08096004: .4byte 0x00002224
- thumb_func_end Item_GiveMovingToMon
-
- thumb_func_start Item_TakeMons
-Item_TakeMons: @ 8096008
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- adds r7, r5, 0
- ldr r0, _08096060 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _0809607C
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8096258
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_80964E8
- cmp r6, 0
- bne _08096064
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetCurrentBoxMonData
- adds r0, r5, 0
- movs r1, 0x1
- bl SetBoxMonIconObjMode
- b _0809607C
- .align 2, 0
-_08096060: .4byte sPSSData
-_08096064:
- movs r0, 0x64
- muls r0, r7
- ldr r1, _08096084 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x1
- bl SetPartyMonIconObjMode
-_0809607C:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08096084: .4byte gPlayerParty
- thumb_func_end Item_TakeMons
-
- thumb_func_start sub_8096088
-sub_8096088: @ 8096088
- push {r4,lr}
- ldr r0, _080960BC @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _080960B6
- movs r0, 0x2
- movs r1, 0
- bl sub_8096258
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x5
- bl sub_80964B8
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0
- bl sub_80964E8
-_080960B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080960BC: .4byte sPSSData
- thumb_func_end sub_8096088
-
- thumb_func_start sub_80960C0
-sub_80960C0: @ 80960C0
- push {r4,lr}
- ldr r0, _08096108 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08096100
- movs r4, 0
-_080960CE:
- ldr r0, _08096108 @ =sPSSData
- ldr r1, [r0]
- lsls r0, r4, 4
- adds r1, r0
- movs r2, 0x88
- lsls r2, 6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080960FA
- subs r2, 0x2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080960FA
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0x7
- movs r2, 0x2
- movs r3, 0
- bl sub_80964E8
-_080960FA:
- adds r4, 0x1
- cmp r4, 0x2
- ble _080960CE
-_08096100:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096108: .4byte sPSSData
- thumb_func_end sub_80960C0
-
- thumb_func_start sub_809610C
-sub_809610C: @ 809610C
- push {r4,r5,lr}
- movs r5, 0
- ldr r0, _08096148 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _0809614C @ =0x000021f4
- adds r4, r0, r1
- adds r3, r0, 0
-_0809611A:
- movs r1, 0x88
- lsls r1, 6
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08096158
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x28
- ands r0, r1
- cmp r0, 0x8
- beq _08096144
- ldr r1, [r2, 0x1C]
- ldr r0, _08096150 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _08096158
- ldr r0, _08096154 @ =sub_80969BC
- cmp r1, r0
- beq _08096158
-_08096144:
- movs r0, 0x1
- b _08096164
- .align 2, 0
-_08096148: .4byte sPSSData
-_0809614C: .4byte 0x000021f4
-_08096150: .4byte SpriteCallbackDummy
-_08096154: .4byte sub_80969BC
-_08096158:
- adds r4, 0x10
- adds r3, 0x10
- adds r5, 0x1
- cmp r5, 0x2
- ble _0809611A
- movs r0, 0
-_08096164:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809610C
-
- thumb_func_start IsActiveItemMoving
-IsActiveItemMoving: @ 809616C
- push {lr}
- ldr r0, _08096190 @ =sPSSData
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- cmp r0, 0x3
- bne _080961A0
- movs r2, 0
- ldr r0, _08096194 @ =0x000021fe
- adds r1, r0
-_0809617E:
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _08096198
- ldrb r0, [r1]
- cmp r0, 0x2
- bne _08096198
- movs r0, 0x1
- b _080961A2
- .align 2, 0
-_08096190: .4byte sPSSData
-_08096194: .4byte 0x000021fe
-_08096198:
- adds r1, 0x10
- adds r2, 0x1
- cmp r2, 0x2
- ble _0809617E
-_080961A0:
- movs r0, 0
-_080961A2:
- pop {r1}
- bx r1
- thumb_func_end IsActiveItemMoving
-
- thumb_func_start GetMovingItemName
-GetMovingItemName: @ 80961A8
- push {lr}
- ldr r0, _080961BC @ =sPSSData
- ldr r0, [r0]
- ldr r1, _080961C0 @ =0x00002224
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetName
- pop {r1}
- bx r1
- .align 2, 0
-_080961BC: .4byte sPSSData
-_080961C0: .4byte 0x00002224
- thumb_func_end GetMovingItemName
-
- thumb_func_start GetMovingItem
-GetMovingItem: @ 80961C4
- ldr r0, _080961D0 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _080961D4 @ =0x00002224
- adds r0, r1
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_080961D0: .4byte sPSSData
-_080961D4: .4byte 0x00002224
- thumb_func_end GetMovingItem
-
- thumb_func_start sub_80961D8
-sub_80961D8: @ 80961D8
- push {r4,r5,lr}
- movs r2, 0
- ldr r5, _080961F8 @ =sPSSData
- movs r3, 0x88
- lsls r3, 6
- movs r4, 0x1
-_080961E4:
- ldr r0, [r5]
- lsls r1, r2, 4
- adds r0, r1
- adds r1, r0, r3
- ldrb r0, [r1]
- cmp r0, 0
- bne _080961FC
- strb r4, [r1]
- adds r0, r2, 0
- b _08096208
- .align 2, 0
-_080961F8: .4byte sPSSData
-_080961FC:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080961E4
- movs r0, 0x3
-_08096208:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80961D8
-
- thumb_func_start sub_8096210
-sub_8096210: @ 8096210
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0
- ldr r0, _08096244 @ =sPSSData
- ldr r2, [r0]
-_08096220:
- movs r5, 0x88
- lsls r5, 6
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0
- beq _08096248
- subs r5, 0x2
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, r4
- bne _08096248
- adds r5, 0x1
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, r1
- bne _08096248
- movs r0, 0x1
- b _08096252
- .align 2, 0
-_08096244: .4byte sPSSData
-_08096248:
- adds r2, 0x10
- adds r3, 0x1
- cmp r3, 0x2
- ble _08096220
- movs r0, 0
-_08096252:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8096210
-
- thumb_func_start sub_8096258
-sub_8096258: @ 8096258
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- movs r3, 0
- ldr r0, _08096290 @ =sPSSData
- ldr r1, [r0]
-_08096268:
- lsls r0, r3, 4
- adds r2, r1, r0
- movs r6, 0x88
- lsls r6, 6
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08096294
- subs r6, 0x2
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, r5
- bne _08096294
- adds r6, 0x1
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, r4
- bne _08096294
- adds r0, r3, 0
- b _080962A0
- .align 2, 0
-_08096290: .4byte sPSSData
-_08096294:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x2
- bls _08096268
- movs r0, 0x3
-_080962A0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8096258
-
- thumb_func_start sub_80962A8
-sub_80962A8: @ 80962A8
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r2, 0
- ldr r0, _080962D4 @ =sPSSData
- ldr r3, [r0]
- ldr r0, _080962D8 @ =0x000021f4
- adds r4, r3, r0
- movs r6, 0x88
- lsls r6, 6
-_080962BA:
- lsls r1, r2, 4
- adds r0, r3, r1
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0
- beq _080962DC
- adds r0, r4, r1
- ldr r0, [r0]
- cmp r0, r5
- bne _080962DC
- adds r0, r2, 0
- b _080962E8
- .align 2, 0
-_080962D4: .4byte sPSSData
-_080962D8: .4byte 0x000021f4
-_080962DC:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080962BA
- movs r0, 0x3
-_080962E8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80962A8
-
- thumb_func_start sub_80962F0
-sub_80962F0: @ 80962F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r7, r2, 24
- cmp r5, 0x2
- bhi _080963EE
- cmp r1, 0
- beq _0809631C
- cmp r1, 0x1
- beq _08096378
- ldr r4, _08096318 @ =sPSSData
- lsls r3, r5, 4
- b _080963D8
- .align 2, 0
-_08096318: .4byte sPSSData
-_0809631C:
- adds r0, r7, 0
- movs r1, 0x6
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- ldr r6, _08096370 @ =sPSSData
- ldr r2, [r6]
- lsls r5, 4
- ldr r1, _08096374 @ =0x000021f4
- adds r2, r1
- adds r2, r5
- ldr r3, [r2]
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- adds r1, 0x70
- strh r1, [r3, 0x20]
- ldr r3, [r2]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, 0x38
- strh r1, [r3, 0x22]
- ldr r2, [r2]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2, 0x5]
- adds r4, r6, 0
- adds r3, r5, 0
- b _080963D8
- .align 2, 0
-_08096370: .4byte sPSSData
-_08096374: .4byte 0x000021f4
-_08096378:
- cmp r7, 0
- bne _080963A0
- ldr r4, _08096398 @ =sPSSData
- ldr r0, [r4]
- lsls r3, r5, 4
- ldr r1, _0809639C @ =0x000021f4
- adds r0, r1
- adds r0, r3
- ldr r2, [r0]
- movs r1, 0x74
- strh r1, [r2, 0x20]
- ldr r1, [r0]
- movs r0, 0x4C
- strh r0, [r1, 0x22]
- b _080963C0
- .align 2, 0
-_08096398: .4byte sPSSData
-_0809639C: .4byte 0x000021f4
-_080963A0:
- ldr r4, _080963F8 @ =sPSSData
- ldr r0, [r4]
- lsls r3, r5, 4
- ldr r1, _080963FC @ =0x000021f4
- adds r0, r1
- adds r0, r3
- ldr r2, [r0]
- movs r1, 0xA4
- strh r1, [r2, 0x20]
- ldr r2, [r0]
- subs r1, r7, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x1C
- strh r0, [r2, 0x22]
-_080963C0:
- ldr r0, [r4]
- ldr r1, _080963FC @ =0x000021f4
- adds r0, r1
- adds r0, r3
- ldr r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080963D8:
- ldr r0, [r4]
- adds r0, r3
- ldr r1, _08096400 @ =0x000021fe
- adds r0, r1
- mov r1, r8
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, r3
- ldr r1, _08096404 @ =0x000021ff
- adds r0, r1
- strb r7, [r0]
-_080963EE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080963F8: .4byte sPSSData
-_080963FC: .4byte 0x000021f4
-_08096400: .4byte 0x000021fe
-_08096404: .4byte 0x000021ff
- thumb_func_end sub_80962F0
-
- thumb_func_start sub_8096408
-sub_8096408: @ 8096408
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- mov r8, r1
- mov r9, r2
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bhi _08096490
- movs r0, 0
- str r0, [sp]
- ldr r4, _080964A0 @ =sPSSData
- ldr r1, [r4]
- ldr r6, _080964A4 @ =0x000042bc
- adds r1, r6
- ldr r2, _080964A8 @ =0x01000080
- mov r0, sp
- bl CpuFastSet
- ldr r1, [r4]
- ldr r5, _080964AC @ =0x000022bc
- adds r1, r5
- mov r0, r8
- bl LZ77UnCompWram
- lsls r7, 4
- mov r8, r7
- adds r7, r4, 0
- movs r4, 0x2
-_08096446:
- ldr r1, [r7]
- adds r0, r1, r5
- adds r1, r6
- movs r2, 0x18
- bl CpuFastSet
- adds r6, 0x80
- adds r5, 0x60
- subs r4, 0x1
- cmp r4, 0
- bge _08096446
- ldr r5, _080964A0 @ =sPSSData
- ldr r1, [r5]
- ldr r4, _080964A4 @ =0x000042bc
- adds r0, r1, r4
- ldr r2, _080964B0 @ =0x000021f8
- adds r1, r2
- add r1, r8
- ldr r1, [r1]
- movs r2, 0x80
- bl CpuFastSet
- ldr r1, [r5]
- adds r1, r4
- mov r0, r9
- bl LZ77UnCompWram
- ldr r0, [r5]
- adds r4, r0, r4
- add r0, r8
- ldr r1, _080964B4 @ =0x000021fc
- adds r0, r1
- ldrh r1, [r0]
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
-_08096490:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080964A0: .4byte sPSSData
-_080964A4: .4byte 0x000042bc
-_080964A8: .4byte 0x01000080
-_080964AC: .4byte 0x000022bc
-_080964B0: .4byte 0x000021f8
-_080964B4: .4byte 0x000021fc
- thumb_func_end sub_8096408
-
- thumb_func_start sub_80964B8
-sub_80964B8: @ 80964B8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- cmp r2, 0x2
- bhi _080964DA
- ldr r0, _080964E0 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r2, 4
- ldr r2, _080964E4 @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r0, [r0]
- adds r1, r3, 0
- bl StartSpriteAffineAnim
-_080964DA:
- pop {r0}
- bx r0
- .align 2, 0
-_080964E0: .4byte sPSSData
-_080964E4: .4byte 0x000021f4
- thumb_func_end sub_80964B8
-
- thumb_func_start sub_80964E8
-sub_80964E8: @ 80964E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r0, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r3, 24
- cmp r4, 0x2
- bls _08096500
- b _08096612
-_08096500:
- cmp r0, 0x7
- bls _08096506
- b _08096612
-_08096506:
- lsls r0, 2
- ldr r1, _08096510 @ =_08096514
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08096510: .4byte _08096514
- .align 2, 0
-_08096514:
- .4byte _08096534
- .4byte _08096558
- .4byte _0809657C
- .4byte _080965A8
- .4byte _080965D4
- .4byte _08096612
- .4byte _08096612
- .4byte _08096600
-_08096534:
- ldr r0, _0809654C @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 4
- ldr r2, _08096550 @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r1, [r0]
- strh r4, [r1, 0x2E]
- ldr r1, [r0]
- ldr r0, _08096554 @ =sub_809692C
- b _08096610
- .align 2, 0
-_0809654C: .4byte sPSSData
-_08096550: .4byte 0x000021f4
-_08096554: .4byte sub_809692C
-_08096558:
- ldr r0, _08096570 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 4
- ldr r2, _08096574 @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r2, [r0]
- movs r1, 0
- strh r1, [r2, 0x2E]
- ldr r1, [r0]
- ldr r0, _08096578 @ =sub_8096958
- b _08096610
- .align 2, 0
-_08096570: .4byte sPSSData
-_08096574: .4byte 0x000021f4
-_08096578: .4byte sub_8096958
-_0809657C:
- ldr r0, _0809659C @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 4
- ldr r2, _080965A0 @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r2, [r0]
- movs r1, 0
- strh r1, [r2, 0x2E]
- ldr r1, [r0]
- strh r5, [r1, 0x3A]
- ldr r1, [r0]
- strh r3, [r1, 0x3C]
- ldr r1, [r0]
- ldr r0, _080965A4 @ =sub_80969F4
- b _08096610
- .align 2, 0
-_0809659C: .4byte sPSSData
-_080965A0: .4byte 0x000021f4
-_080965A4: .4byte sub_80969F4
-_080965A8:
- ldr r0, _080965C8 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 4
- ldr r2, _080965CC @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r2, [r0]
- movs r1, 0
- strh r1, [r2, 0x2E]
- ldr r2, [r0]
- ldr r1, _080965D0 @ =sub_8096A74
- str r1, [r2, 0x1C]
- strh r5, [r2, 0x3A]
- ldr r0, [r0]
- strh r3, [r0, 0x3C]
- b _08096612
- .align 2, 0
-_080965C8: .4byte sPSSData
-_080965CC: .4byte 0x000021f4
-_080965D0: .4byte sub_8096A74
-_080965D4:
- ldr r0, _080965F4 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 4
- ldr r2, _080965F8 @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r2, [r0]
- movs r1, 0
- strh r1, [r2, 0x2E]
- ldr r1, [r0]
- strh r5, [r1, 0x3A]
- ldr r1, [r0]
- strh r3, [r1, 0x3C]
- ldr r1, [r0]
- ldr r0, _080965FC @ =sub_8096B10
- b _08096610
- .align 2, 0
-_080965F4: .4byte sPSSData
-_080965F8: .4byte 0x000021f4
-_080965FC: .4byte sub_8096B10
-_08096600:
- ldr r0, _08096618 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 4
- ldr r2, _0809661C @ =0x000021f4
- adds r0, r2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _08096620 @ =sub_8096BAC
-_08096610:
- str r0, [r1, 0x1C]
-_08096612:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08096618: .4byte sPSSData
-_0809661C: .4byte 0x000021f4
-_08096620: .4byte sub_8096BAC
- thumb_func_end sub_80964E8
-
- thumb_func_start sub_8096624
-sub_8096624: @ 8096624
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r2, 0x2
- bhi _08096666
- ldr r1, _0809666C @ =sPSSData
- ldr r0, [r1]
- lsls r2, 4
- adds r0, r2
- movs r3, 0x88
- lsls r3, 6
- adds r0, r3
- strb r4, [r0]
- ldr r0, [r1]
- ldr r1, _08096670 @ =0x000021f4
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
- movs r3, 0
- cmp r4, 0
- bne _08096654
- movs r3, 0x1
-_08096654:
- adds r2, r0, 0
- adds r2, 0x3E
- lsls r3, 2
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
-_08096666:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809666C: .4byte sPSSData
-_08096670: .4byte 0x000021f4
- thumb_func_end sub_8096624
-
- thumb_func_start GetItemIconPic
-GetItemIconPic: @ 8096674
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetItemIconGfxPtr
- pop {r1}
- bx r1
- thumb_func_end GetItemIconPic
-
- thumb_func_start GetItemIconPalette
-GetItemIconPalette: @ 8096684
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetItemIconGfxPtr
- pop {r1}
- bx r1
- thumb_func_end GetItemIconPalette
-
- thumb_func_start PrintItemDescription
-PrintItemDescription: @ 8096694
- push {r4,lr}
- sub sp, 0x14
- bl IsActiveItemMoving
- lsls r0, 24
- cmp r0, 0
- beq _080966B4
- ldr r0, _080966AC @ =sPSSData
- ldr r0, [r0]
- ldr r1, _080966B0 @ =0x00002224
- b _080966BA
- .align 2, 0
-_080966AC: .4byte sPSSData
-_080966B0: .4byte 0x00002224
-_080966B4:
- ldr r0, _080966EC @ =sPSSData
- ldr r0, [r0]
- ldr r1, _080966F0 @ =0x00000ce2
-_080966BA:
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetDescription
- adds r4, r0, 0
- movs r0, 0x2
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x2
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized5
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080966EC: .4byte sPSSData
-_080966F0: .4byte 0x00000ce2
- thumb_func_end PrintItemDescription
-
- thumb_func_start sub_80966F4
-sub_80966F4: @ 80966F4
- push {lr}
- ldr r0, _0809671C @ =sPSSData
- ldr r0, [r0]
- ldr r1, _08096720 @ =0x00002226
- adds r0, r1
- movs r1, 0x19
- strh r1, [r0]
- ldr r1, _08096724 @ =gUnknown_83D35DC
- movs r3, 0xD2
- lsls r3, 1
- movs r0, 0
- movs r2, 0x80
- bl LoadBgTiles
- movs r0, 0
- bl sub_8096898
- pop {r0}
- bx r0
- .align 2, 0
-_0809671C: .4byte sPSSData
-_08096720: .4byte 0x00002226
-_08096724: .4byte gUnknown_83D35DC
- thumb_func_end sub_80966F4
-
- thumb_func_start sub_8096728
-sub_8096728: @ 8096728
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r0, _08096740 @ =sPSSData
- ldr r0, [r0]
- ldr r2, _08096744 @ =0x00002226
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0
- bne _08096748
- movs r0, 0
- b _080967AE
- .align 2, 0
-_08096740: .4byte sPSSData
-_08096744: .4byte 0x00002226
-_08096748:
- subs r0, 0x1
- strh r0, [r1]
- ldrh r1, [r1]
- movs r0, 0x19
- subs r5, r0, r1
- movs r4, 0
- cmp r4, r5
- bge _08096798
-_08096758:
- movs r0, 0
- movs r1, 0xA
- bl GetBgAttribute
- adds r1, r0, 0
- ldr r0, _080967B8 @ =sPSSData
- ldr r0, [r0]
- ldr r2, _080967BC @ =0x00002226
- adds r0, r2
- adds r1, 0x14
- ldrh r0, [r0]
- adds r1, r0
- adds r1, r4
- lsls r1, 16
- lsrs r1, 16
- lsls r2, r4, 24
- lsrs r2, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x8
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x19
- str r0, [sp, 0xC]
- movs r0, 0
- movs r3, 0xC
- bl WriteSequenceToBgTilemapBuffer
- adds r4, 0x1
- cmp r4, r5
- blt _08096758
-_08096798:
- adds r0, r5, 0
- bl sub_8096898
- ldr r0, _080967B8 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _080967BC @ =0x00002226
- adds r0, r1
- ldrh r1, [r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_080967AE:
- add sp, 0x10
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080967B8: .4byte sPSSData
-_080967BC: .4byte 0x00002226
- thumb_func_end sub_8096728
-
- thumb_func_start sub_80967C0
-sub_80967C0: @ 80967C0
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r5, _080967D8 @ =sPSSData
- ldr r0, [r5]
- ldr r4, _080967DC @ =0x00002226
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x19
- bne _080967E0
- movs r0, 0
- b _08096886
- .align 2, 0
-_080967D8: .4byte sPSSData
-_080967DC: .4byte 0x00002226
-_080967E0:
- cmp r0, 0
- bne _080967FC
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x19
- movs r3, 0xB
- bl FillBgTilemapBufferRect
-_080967FC:
- ldr r1, [r5]
- adds r1, r4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldrh r1, [r1]
- movs r0, 0x19
- subs r5, r0, r1
- movs r4, 0
- cmp r4, r5
- bge _08096852
-_08096812:
- movs r0, 0
- movs r1, 0xA
- bl GetBgAttribute
- adds r1, r0, 0
- ldr r0, _08096890 @ =sPSSData
- ldr r0, [r0]
- ldr r2, _08096894 @ =0x00002226
- adds r0, r2
- adds r1, 0x14
- ldrh r0, [r0]
- adds r1, r0
- adds r1, r4
- lsls r1, 16
- lsrs r1, 16
- lsls r2, r4, 24
- lsrs r2, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x8
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x19
- str r0, [sp, 0xC]
- movs r0, 0
- movs r3, 0xC
- bl WriteSequenceToBgTilemapBuffer
- adds r4, 0x1
- cmp r4, r5
- blt _08096812
-_08096852:
- adds r0, r5, 0
- bl sub_8096898
- lsls r2, r5, 24
- lsrs r2, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- ldr r0, _08096890 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _08096894 @ =0x00002226
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x19
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_08096886:
- add sp, 0x10
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08096890: .4byte sPSSData
-_08096894: .4byte 0x00002226
- thumb_func_end sub_80967C0
-
- thumb_func_start sub_8096898
-sub_8096898: @ 8096898
- push {r4-r7,lr}
- sub sp, 0xC
- adds r7, r0, 0
- cmp r7, 0
- beq _080968D0
- movs r1, 0xD2
- lsls r1, 1
- lsls r4, r7, 24
- lsrs r4, 24
- str r4, [sp]
- movs r6, 0x1
- str r6, [sp, 0x4]
- movs r5, 0xF
- str r5, [sp, 0x8]
- movs r0, 0
- movs r2, 0
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- ldr r1, _08096920 @ =0x000009a4
- str r4, [sp]
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0
- movs r2, 0
- movs r3, 0x14
- bl FillBgTilemapBufferRect
-_080968D0:
- ldr r1, _08096924 @ =0x000001a5
- lsls r5, r7, 24
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- movs r0, 0x8
- str r0, [sp, 0x4]
- movs r6, 0xF
- str r6, [sp, 0x8]
- movs r0, 0
- adds r2, r5, 0
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- movs r1, 0xD3
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- adds r2, r5, 0
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- ldr r1, _08096928 @ =0x000001a7
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- adds r2, r5, 0
- movs r3, 0x14
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08096920: .4byte 0x000009a4
-_08096924: .4byte 0x000001a5
-_08096928: .4byte 0x000001a7
- thumb_func_end sub_8096898
-
- thumb_func_start sub_809692C
-sub_809692C: @ 809692C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0809694C
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8096624
- ldr r0, _08096954 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_0809694C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096954: .4byte SpriteCallbackDummy
- thumb_func_end sub_809692C
-
- thumb_func_start sub_8096958
-sub_8096958: @ 8096958
- push {lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0
- beq _0809696A
- cmp r1, 0x1
- beq _08096986
- b _080969B4
-_0809696A:
- ldrh r0, [r3, 0x20]
- lsls r0, 4
- strh r0, [r3, 0x30]
- ldrh r0, [r3, 0x22]
- lsls r0, 4
- strh r0, [r3, 0x32]
- movs r0, 0xA
- strh r0, [r3, 0x34]
- movs r0, 0x15
- strh r0, [r3, 0x36]
- strh r1, [r3, 0x38]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
-_08096986:
- ldrh r1, [r3, 0x30]
- ldrh r0, [r3, 0x34]
- subs r1, r0
- strh r1, [r3, 0x30]
- ldrh r0, [r3, 0x32]
- ldrh r2, [r3, 0x36]
- subs r0, r2
- strh r0, [r3, 0x32]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r3, 0x20]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r3, 0x22]
- ldrh r0, [r3, 0x38]
- adds r0, 0x1
- strh r0, [r3, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- ble _080969B4
- ldr r0, _080969B8 @ =sub_80969BC
- str r0, [r3, 0x1C]
-_080969B4:
- pop {r0}
- bx r0
- .align 2, 0
-_080969B8: .4byte sub_80969BC
- thumb_func_end sub_8096958
-
- thumb_func_start sub_80969BC
-sub_80969BC: @ 80969BC
- ldr r1, _080969F0 @ =sPSSData
- ldr r3, [r1]
- movs r1, 0xCB
- lsls r1, 4
- adds r3, r1
- ldr r1, [r3]
- ldrh r1, [r1, 0x20]
- adds r1, 0x4
- strh r1, [r0, 0x20]
- ldr r2, [r3]
- ldrh r1, [r2, 0x26]
- ldrh r2, [r2, 0x22]
- adds r1, r2
- adds r1, 0x8
- strh r1, [r0, 0x22]
- ldr r1, [r3]
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- bx lr
- .align 2, 0
-_080969F0: .4byte sPSSData
- thumb_func_end sub_80969BC
-
- thumb_func_start sub_80969F4
-sub_80969F4: @ 80969F4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _08096A06
- cmp r1, 0x1
- beq _08096A22
- b _08096A6A
-_08096A06:
- ldrh r0, [r4, 0x20]
- lsls r0, 4
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- lsls r0, 4
- strh r0, [r4, 0x32]
- movs r0, 0xA
- strh r0, [r4, 0x34]
- movs r0, 0x15
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08096A22:
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- ldrh r2, [r4, 0x32]
- adds r1, r2
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x22]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- ble _08096A6A
- adds r0, r4, 0
- bl sub_80962A8
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x3C]
- lsls r2, 24
- lsrs r2, 24
- bl sub_80962F0
- ldr r0, _08096A70 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_08096A6A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096A70: .4byte SpriteCallbackDummy
- thumb_func_end sub_80969F4
-
- thumb_func_start sub_8096A74
-sub_8096A74: @ 8096A74
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _08096A86
- cmp r1, 0x1
- beq _08096AA2
- b _08096B00
-_08096A86:
- ldrh r0, [r4, 0x20]
- lsls r0, 4
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- lsls r0, 4
- strh r0, [r4, 0x32]
- movs r0, 0xA
- strh r0, [r4, 0x34]
- movs r0, 0x15
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08096AA2:
- ldrh r1, [r4, 0x30]
- ldrh r0, [r4, 0x34]
- subs r1, r0
- strh r1, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- subs r0, r2
- strh r0, [r4, 0x32]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x20]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x22]
- ldr r1, _08096B08 @ =gSineTable
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- lsls r0, 4
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- ble _08096B00
- adds r0, r4, 0
- bl sub_80962A8
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x3C]
- lsls r2, 24
- lsrs r2, 24
- bl sub_80962F0
- movs r0, 0
- strh r0, [r4, 0x24]
- ldr r0, _08096B0C @ =sub_80969BC
- str r0, [r4, 0x1C]
-_08096B00:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096B08: .4byte gSineTable
-_08096B0C: .4byte sub_80969BC
- thumb_func_end sub_8096A74
-
- thumb_func_start sub_8096B10
-sub_8096B10: @ 8096B10
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _08096B22
- cmp r1, 0x1
- beq _08096B3E
- b _08096B9E
-_08096B22:
- ldrh r0, [r4, 0x20]
- lsls r0, 4
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- lsls r0, 4
- strh r0, [r4, 0x32]
- movs r0, 0xA
- strh r0, [r4, 0x34]
- movs r0, 0x15
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08096B3E:
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- ldrh r2, [r4, 0x32]
- adds r1, r2
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x22]
- ldr r1, _08096BA4 @ =gSineTable
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- lsls r0, 4
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- negs r0, r0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- ble _08096B9E
- adds r0, r4, 0
- bl sub_80962A8
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x3C]
- lsls r2, 24
- lsrs r2, 24
- bl sub_80962F0
- ldr r0, _08096BA8 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x24]
-_08096B9E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096BA4: .4byte gSineTable
-_08096BA8: .4byte SpriteCallbackDummy
- thumb_func_end sub_8096B10
-
- thumb_func_start sub_8096BAC
-sub_8096BAC: @ 8096BAC
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x22]
- subs r0, 0x8
- strh r0, [r2, 0x22]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bge _08096BDC
- ldr r0, _08096BE0 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- adds r0, r2, 0
- bl sub_80962A8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8096624
-_08096BDC:
- pop {r0}
- bx r0
- .align 2, 0
-_08096BE0: .4byte SpriteCallbackDummy
- thumb_func_end sub_8096BAC
-
- @ file boundary?
-
thumb_func_start sub_8096BE4
sub_8096BE4: @ 8096BE4
ldr r3, _08096BF4 @ =gUnknown_203982C
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index 65fefed4f..995797638 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -5,56 +5,3 @@
.section .rodata
.align 2
-
-gUnknown_83D35DC:: @ 83D35DC
- .incbin "graphics/interface/pss_unk_83D35DC.4bpp"
-
-gUnknown_83D365C::
- .4byte 0x80000100, 0x00000400
-
-gUnknown_83D3664::
- obj_rot_scal_anim_frame 128, 128, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_83D3674::
- obj_rot_scal_anim_frame 88, 88, 0, 0
- obj_rot_scal_anim_frame 5, 5, 0, 8
- obj_rot_scal_anim_end
-
-gUnknown_83D368C::
- obj_rot_scal_anim_frame 128, 128, 0, 0
- obj_rot_scal_anim_frame -5, -5, 0, 8
- obj_rot_scal_anim_end
-
-gUnknown_83D36A4::
- obj_rot_scal_anim_frame 128, 128, 0, 0
- obj_rot_scal_anim_frame 10, 10, 0, 12
- obj_rot_scal_anim_frame 256, 256, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_83D36C4::
- obj_rot_scal_anim_frame 256, 256, 0, 0
- obj_rot_scal_anim_frame -10, -10, 0, 12
- obj_rot_scal_anim_frame 128, 128, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_83D36E4::
- obj_rot_scal_anim_frame 256, 256, 0, 0
- obj_rot_scal_anim_frame -5, -5, 0, 16
- obj_rot_scal_anim_end
-
-gUnknown_83D36FC::
- obj_rot_scal_anim_frame 256, 256, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_83D370C::
- .4byte gUnknown_83D3664
- .4byte gUnknown_83D3674
- .4byte gUnknown_83D368C
- .4byte gUnknown_83D36A4
- .4byte gUnknown_83D36C4
- .4byte gUnknown_83D36E4
- .4byte gUnknown_83D36FC
-
-gUnknown_83D3728:: @ 83D3728
- spr_template 7, 56011, gUnknown_83D365C, gDummySpriteAnimTable, NULL, gUnknown_83D370C, SpriteCallbackDummy
diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h
index 399e29f32..2f6cf20f1 100644
--- a/include/pokemon_storage_system_internal.h
+++ b/include/pokemon_storage_system_internal.h
@@ -8,7 +8,7 @@
#define IN_BOX_ROWS 6
#define MAX_MON_ICONS 40
-
+#define MAX_ITEM_ICONS 3
#define MAX_MENU_ITEMS 7
enum
@@ -366,7 +366,7 @@ struct PokemonStorageSystemData
/* 21db */ u8 itemName[20];
/* 21ef */ u8 inBoxMovingMode;
/* 21f0 */ u16 field_2200;
- /* 21f4 */ struct UnkStorageStruct field_2204[3];
+ /* 21f4 */ struct UnkStorageStruct field_2204[MAX_ITEM_ICONS];
/* 2224 */ u16 movingItem;
/* 2226 */ u16 field_2236;
/* 2228 */ struct PssQuestLogBuffer qlogBuffer;
@@ -510,5 +510,7 @@ void sub_8094CD4(u8 *arg0, u8 *arg1);
void sub_8094D40(void);
void sub_8092BAC(bool8 arg0);
void DestroyBoxMonIconAtPosition(u8 boxPosition);
+void SetBoxMonIconObjMode(u8 cursorPos, u8 objMode);
+void SetPartyMonIconObjMode(u8 cursorPos, u8 objMode);
#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H
diff --git a/ld_script.txt b/ld_script.txt
index 554592574..2c7f2339c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -135,6 +135,7 @@ SECTIONS {
src/pokemon_storage_system_5.o(.text);
src/pokemon_storage_system_6.o(.text);
src/pokemon_storage_system_7.o(.text);
+ src/pokemon_storage_system_8.o(.text);
asm/pokemon_storage_system.o(.text);
src/pokemon_icon.o(.text);
src/script_movement.o(.text);
@@ -461,7 +462,7 @@ SECTIONS {
src/pokemon_storage_system_5.o(.rodata);
src/pokemon_storage_system_6.o(.rodata);
src/pokemon_storage_system_7.o(.rodata);
- data/pokemon_storage_system.o(.rodata);
+ src/pokemon_storage_system_8.o(.rodata);
src/pokemon_icon.o(.rodata);
src/fldeff_cut.o(.rodata);
src/map_name_popup.o(.rodata);
diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_8.c
new file mode 100644
index 000000000..ac3aa8a21
--- /dev/null
+++ b/src/pokemon_storage_system_8.c
@@ -0,0 +1,755 @@
+#include "global.h"
+#include "gflib.h"
+#include "decompress.h"
+#include "item.h"
+#include "item_menu_icons.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "pokemon_storage_system_internal.h"
+#include "trig.h"
+#include "constants/items.h"
+
+u8 sub_80961D8(void);
+bool32 sub_8096210(u8 cursorArea, u8 cursorPos);
+u8 sub_8096258(u8 cursorArea, u8 cursorPos);
+void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos);
+void sub_8096408(u8 id, const u32 * tiles, const u32 * pal);
+void sub_80964B8(u8 id, u8 affineAnimNo);
+void sub_80964E8(u8 id, u8 command, u8 cursorArea, u8 cursorPos);
+void sub_8096624(u8 id, bool8 show);
+const u32 *GetItemIconPic(u16 itemId);
+const u32 *GetItemIconPalette(u16 itemId);
+void sub_8096898(u32 x);
+void sub_809692C(struct Sprite * sprite);
+void sub_8096958(struct Sprite * sprite);
+void sub_80969BC(struct Sprite * sprite);
+void sub_80969F4(struct Sprite * sprite);
+void sub_8096A74(struct Sprite * sprite);
+void sub_8096B10(struct Sprite * sprite);
+void sub_8096BAC(struct Sprite * sprite);
+
+const u32 gUnknown_83D35DC[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp");
+
+const struct OamData gUnknown_83D365C = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+const union AffineAnimCmd gUnknown_83D3664[] = {
+ AFFINEANIMCMD_FRAME(128, 128, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83D3674[] = {
+ AFFINEANIMCMD_FRAME(88, 88, 0, 0),
+ AFFINEANIMCMD_FRAME(5, 5, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83D368C[] = {
+ AFFINEANIMCMD_FRAME(128, 128, 0, 0),
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83D36A4[] = {
+ AFFINEANIMCMD_FRAME(128, 128, 0, 0),
+ AFFINEANIMCMD_FRAME(10, 10, 0, 12),
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83D36C4[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(-10, -10, 0, 12),
+ AFFINEANIMCMD_FRAME(128, 128, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83D36E4[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 16),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83D36FC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gUnknown_83D370C[] = {
+ gUnknown_83D3664,
+ gUnknown_83D3674,
+ gUnknown_83D368C,
+ gUnknown_83D36A4,
+ gUnknown_83D36C4,
+ gUnknown_83D36E4,
+ gUnknown_83D36FC
+};
+
+const struct SpriteTemplate gUnknown_83D3728 = {
+ .tileTag = TAG_TILE_7,
+ .paletteTag = TAG_PAL_DACB,
+ .oam = &gUnknown_83D365C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83D370C,
+ .callback = SpriteCallbackDummy,
+};
+
+void sub_8095B5C(void)
+{
+ s32 i;
+ u8 spriteId;
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpriteTemplate spriteTemplate;
+ static u32 gUnknown_3000FE8[0x61];
+
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ {
+ spriteSheet.data = gUnknown_3000FE8;
+ spriteSheet.size = 0x200;
+ spriteTemplate = gUnknown_83D3728;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ spriteSheet.tag = TAG_TILE_7 + i;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ sPSSData->field_2204[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void*)(OBJ_VRAM0);
+ sPSSData->field_2204[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i);
+ sPSSData->field_2204[i].palIndex *= 16;
+ sPSSData->field_2204[i].palIndex += 0x100;
+ spriteTemplate.tileTag = TAG_TILE_7 + i;
+ spriteTemplate.paletteTag = TAG_PAL_DACB + i;
+ spriteId = CreateSprite(&spriteTemplate, 0, 0, 11);
+ sPSSData->field_2204[i].sprite = &gSprites[spriteId];
+ sPSSData->field_2204[i].sprite->invisible = TRUE;
+ sPSSData->field_2204[i].unk10 = 0;
+ }
+ }
+ sPSSData->movingItem = ITEM_NONE;
+}
+
+void sub_8095C84(u8 cursorArea, u8 cursorPos)
+{
+ u16 heldItem;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+ if (sub_8096210(cursorArea, cursorPos))
+ return;
+
+ switch (cursorArea)
+ {
+ case CURSOR_AREA_IN_BOX:
+ if (!GetCurrentBoxMonData(cursorPos, MON_DATA_SANITY_HAS_SPECIES))
+ return;
+ heldItem = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM);
+ break;
+ case CURSOR_AREA_IN_PARTY:
+ if (!GetMonData(&gPlayerParty[cursorPos], MON_DATA_SANITY_HAS_SPECIES))
+ return;
+ heldItem = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM);
+ break;
+ default:
+ return;
+ }
+
+ if (heldItem != ITEM_NONE)
+ {
+ const u32 *tiles = GetItemIconPic(heldItem);
+ const u32 *pal = GetItemIconPalette(heldItem);
+ u8 id = sub_80961D8();
+
+ sub_80962F0(id, cursorArea, cursorPos);
+ sub_8096408(id, tiles, pal);
+ sub_80964B8(id, 1);
+ sub_8096624(id, TRUE);
+ }
+}
+
+void sub_8095D44(u8 cursorArea, u8 cursorPos)
+{
+ u8 id;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+
+ id = sub_8096258(cursorArea, cursorPos);
+ sub_80964B8(id, 2);
+ sub_80964E8(id, 0, cursorArea, cursorPos);
+}
+
+void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
+{
+ u8 id;
+ u16 item;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+
+ id = sub_8096258(cursorArea, cursorPos);
+ item = 0;
+ sub_80964B8(id, 3);
+ sub_80964E8(id, 1, cursorArea, cursorPos);
+ sub_80962F0(id, 2, 0);
+ if (cursorArea == CURSOR_AREA_IN_BOX)
+ {
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
+ SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
+ }
+ else
+ {
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &item);
+ SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
+ }
+
+ sPSSData->movingItem = sPSSData->cursorMonItem;
+}
+
+void sub_8095E2C(u16 item)
+{
+ const u32 *tiles = GetItemIconPic(item);
+ const u32 *pal = GetItemIconPalette(item);
+ u8 id = sub_80961D8();
+
+ sub_8096408(id, tiles, pal);
+ sub_80964B8(id, 6);
+ sub_80964E8(id, 1, CURSOR_AREA_IN_BOX, 0);
+ sub_80962F0(id, CURSOR_AREA_BOX, 0);
+ sub_8096624(id, TRUE);
+ sPSSData->movingItem = item;
+}
+
+void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos)
+{
+ u8 id;
+ u16 item;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+
+ id = sub_8096258(cursorArea, cursorPos);
+ sub_80964B8(id, 3);
+ sub_80964E8(id, 3, CURSOR_AREA_BOX, 0);
+ if (cursorArea == CURSOR_AREA_IN_BOX)
+ {
+ item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM);
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sPSSData->movingItem);
+ sPSSData->movingItem = item;
+ }
+ else
+ {
+ item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM);
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sPSSData->movingItem);
+ sPSSData->movingItem = item;
+ }
+
+ id = sub_8096258(2, 0);
+ sub_80964B8(id, 4);
+ sub_80964E8(id, 4, cursorArea, cursorPos);
+}
+
+void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos)
+{
+ u8 id;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+
+ id = sub_8096258(2, 0);
+ sub_80964B8(id, 4);
+ sub_80964E8(id, 2, cursorArea, cursorPos);
+ if (cursorArea == CURSOR_AREA_IN_BOX)
+ {
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sPSSData->movingItem);
+ SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL);
+ }
+ else
+ {
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sPSSData->movingItem);
+ SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL);
+ }
+}
+
+void Item_TakeMons(u8 cursorArea, u8 cursorPos)
+{
+ u8 id;
+ u16 item;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+
+ item = 0;
+ id = sub_8096258(cursorArea, cursorPos);
+ sub_80964B8(id, 2);
+ sub_80964E8(id, 0, cursorArea, cursorPos);
+ if (cursorArea == CURSOR_AREA_IN_BOX)
+ {
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
+ SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
+ }
+ else
+ {
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &item);
+ SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
+ }
+}
+
+void sub_8096088(void)
+{
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ {
+ u8 id = sub_8096258(2, 0);
+ sub_80964B8(id, 5);
+ sub_80964E8(id, 0, CURSOR_AREA_BOX, 0);
+ }
+}
+
+void sub_80960C0(void)
+{
+ s32 i;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (sPSSData->field_2204[i].unk10 && sPSSData->field_2204[i].unk8 == 1)
+ sub_80964E8(i, 7, CURSOR_AREA_BOX, 0);
+ }
+}
+
+bool8 sub_809610C(void)
+{
+ s32 i;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (sPSSData->field_2204[i].unk10)
+ {
+ if (!sPSSData->field_2204[i].sprite->affineAnimEnded && sPSSData->field_2204[i].sprite->affineAnimBeginning)
+ return TRUE;
+ if (sPSSData->field_2204[i].sprite->callback != SpriteCallbackDummy && sPSSData->field_2204[i].sprite->callback != sub_80969BC)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool8 IsActiveItemMoving(void)
+{
+ s32 i;
+
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ {
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (sPSSData->field_2204[i].unk10 && sPSSData->field_2204[i].unk8 == 2)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+const u8 *GetMovingItemName(void)
+{
+ return ItemId_GetName(sPSSData->movingItem);
+}
+
+u16 GetMovingItem(void)
+{
+ return sPSSData->movingItem;
+}
+
+u8 sub_80961D8(void)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (!sPSSData->field_2204[i].unk10)
+ {
+ sPSSData->field_2204[i].unk10 = TRUE;
+ return i;
+ }
+ }
+
+ return MAX_ITEM_ICONS;
+}
+
+bool32 sub_8096210(u8 cursorArea, u8 cursorPos)
+{
+ s32 i;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (sPSSData->field_2204[i].unk10
+ && sPSSData->field_2204[i].unk8 == cursorArea
+ && sPSSData->field_2204[i].unk9 == cursorPos)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u8 sub_8096258(u8 cursorArea, u8 cursorPos)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (sPSSData->field_2204[i].unk10
+ && sPSSData->field_2204[i].unk8 == cursorArea
+ && sPSSData->field_2204[i].unk9 == cursorPos)
+ return i;
+ }
+
+ return MAX_ITEM_ICONS;
+}
+
+u8 sub_80962A8(struct Sprite *sprite)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
+ {
+ if (sPSSData->field_2204[i].unk10
+ && sPSSData->field_2204[i].sprite == sprite)
+ return i;
+ }
+
+ return MAX_ITEM_ICONS;
+}
+
+void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos)
+{
+ u8 row, column;
+
+ if (id >= MAX_ITEM_ICONS)
+ return;
+
+ switch (cursorArea)
+ {
+ case CURSOR_AREA_IN_BOX:
+ row = cursorPos % IN_BOX_ROWS;
+ column = cursorPos / IN_BOX_ROWS;
+ sPSSData->field_2204[id].sprite->pos1.x = (24 * row) + 112;
+ sPSSData->field_2204[id].sprite->pos1.y = (24 * column) + 56;
+ sPSSData->field_2204[id].sprite->oam.priority = 2;
+ break;
+ case CURSOR_AREA_IN_PARTY:
+ if (cursorPos == 0)
+ {
+ sPSSData->field_2204[id].sprite->pos1.x = 116;
+ sPSSData->field_2204[id].sprite->pos1.y = 76;
+ }
+ else
+ {
+ sPSSData->field_2204[id].sprite->pos1.x = 164;
+ sPSSData->field_2204[id].sprite->pos1.y = 24 * (cursorPos - 1) + 28;
+ }
+ sPSSData->field_2204[id].sprite->oam.priority = 1;
+ break;
+ }
+
+ sPSSData->field_2204[id].unk8 = cursorArea;
+ sPSSData->field_2204[id].unk9 = cursorPos;
+}
+
+void sub_8096408(u8 id, const u32 *itemTiles, const u32 *itemPal)
+{
+ s32 i;
+
+ if (id >= MAX_ITEM_ICONS)
+ return;
+
+ CpuFastFill(0, sPSSData->field_42C4, 0x200);
+ LZ77UnCompWram(itemTiles, sPSSData->field_22C4);
+ for (i = 0; i < 3; i++)
+ CpuFastCopy(sPSSData->field_22C4 + (i * 0x60), sPSSData->field_42C4 + (i * 0x80), 0x60);
+
+ CpuFastCopy(sPSSData->field_42C4, sPSSData->field_2204[id].tiles, 0x200);
+ LZ77UnCompWram(itemPal, sPSSData->field_42C4);
+ LoadPalette(sPSSData->field_42C4, sPSSData->field_2204[id].palIndex, 0x20);
+}
+
+void sub_80964B8(u8 id, u8 animNum)
+{
+ if (id >= MAX_ITEM_ICONS)
+ return;
+
+ StartSpriteAffineAnim(sPSSData->field_2204[id].sprite, animNum);
+}
+
+void sub_80964E8(u8 id, u8 command, u8 cursorArea, u8 cursorPos)
+{
+ if (id >= MAX_ITEM_ICONS)
+ return;
+
+ switch (command)
+ {
+ case 0:
+ sPSSData->field_2204[id].sprite->data[0] = id;
+ sPSSData->field_2204[id].sprite->callback = sub_809692C;
+ break;
+ case 1:
+ sPSSData->field_2204[id].sprite->data[0] = 0;
+ sPSSData->field_2204[id].sprite->callback = sub_8096958;
+ break;
+ case 2:
+ sPSSData->field_2204[id].sprite->data[0] = 0;
+ sPSSData->field_2204[id].sprite->data[6] = cursorArea;
+ sPSSData->field_2204[id].sprite->data[7] = cursorPos;
+ sPSSData->field_2204[id].sprite->callback = sub_80969F4;
+ break;
+ case 3:
+ sPSSData->field_2204[id].sprite->data[0] = 0;
+ sPSSData->field_2204[id].sprite->callback = sub_8096A74;
+ sPSSData->field_2204[id].sprite->data[6] = cursorArea;
+ sPSSData->field_2204[id].sprite->data[7] = cursorPos;
+ break;
+ case 4:
+ sPSSData->field_2204[id].sprite->data[0] = 0;
+ sPSSData->field_2204[id].sprite->data[6] = cursorArea;
+ sPSSData->field_2204[id].sprite->data[7] = cursorPos;
+ sPSSData->field_2204[id].sprite->callback = sub_8096B10;
+ break;
+ case 7:
+ sPSSData->field_2204[id].sprite->callback = sub_8096BAC;
+ break;
+ }
+}
+
+void sub_8096624(u8 id, bool8 show)
+{
+ if (id >= MAX_ITEM_ICONS)
+ return;
+
+ sPSSData->field_2204[id].unk10 = show;
+ sPSSData->field_2204[id].sprite->invisible = (show == FALSE);
+}
+
+const u32 *GetItemIconPic(u16 itemId)
+{
+ return GetItemIconGfxPtr(itemId, 0);
+}
+
+const u32 *GetItemIconPalette(u16 itemId)
+{
+ return GetItemIconGfxPtr(itemId, 1);
+}
+
+void PrintItemDescription(void)
+{
+ const u8 *description;
+
+ if (IsActiveItemMoving())
+ description = ItemId_GetDescription(sPSSData->movingItem);
+ else
+ description = ItemId_GetDescription(sPSSData->cursorMonItem);
+
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
+ AddTextPrinterParameterized5(2, 2, description, 2, 0, 0, NULL, 0, 0);
+}
+
+void sub_80966F4(void)
+{
+ sPSSData->field_2236 = 25;
+ LoadBgTiles(0, gUnknown_83D35DC, 0x80, 0x1A4);
+ sub_8096898(0);
+}
+
+bool8 sub_8096728(void)
+{
+ s32 i, var;
+
+ if (sPSSData->field_2236 == 0)
+ return FALSE;
+
+ sPSSData->field_2236--;
+ var = 25 - sPSSData->field_2236;
+ for (i = 0; i < var; i++)
+ {
+ WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 12, 1, 8, 15, 25);
+ }
+
+ sub_8096898(var);
+ return (sPSSData->field_2236 != 0);
+}
+
+bool8 sub_80967C0(void)
+{
+ s32 i, var;
+
+ if (sPSSData->field_2236 == 25)
+ return FALSE;
+
+ if (sPSSData->field_2236 == 0)
+ FillBgTilemapBufferRect(0, 0, 25, 11, 1, 10, 17);
+
+ sPSSData->field_2236++;
+ var = 25 - sPSSData->field_2236;
+ for (i = 0; i < var; i++)
+ {
+ WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 12, 1, 8, 15, 25);
+ }
+
+ sub_8096898(var);
+
+ FillBgTilemapBufferRect(0, 0, var, 11, 1, 10, 0x11);
+ return (sPSSData->field_2236 != 25);
+}
+
+void sub_8096898(u32 x)
+{
+ if (x != 0)
+ {
+ FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 0xFu);
+ FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 0xFu);
+ }
+ FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 0xFu);
+ FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 0xFu);
+ FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 0xFu);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void sub_809692C(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ sub_8096624(sprite->data[0], FALSE);
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_8096958(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = sprite->pos1.x << 4;
+ sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[3] = 10;
+ sprite->data[4] = 21;
+ sprite->data[5] = 0;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[1] -= sprite->data[3];
+ sprite->data[2] -= sprite->data[4];
+ sprite->pos1.x = sprite->data[1] >> 4;
+ sprite->pos1.y = sprite->data[2] >> 4;
+ if (++sprite->data[5] > 11)
+ sprite->callback = sub_80969BC;
+ break;
+ }
+}
+
+void sub_80969BC(struct Sprite *sprite)
+{
+ sprite->pos1.x = sPSSData->field_CB4->pos1.x + 4;
+ sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 8;
+ sprite->oam.priority = sPSSData->field_CB4->oam.priority;
+}
+
+void sub_80969F4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = sprite->pos1.x << 4;
+ sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[3] = 10;
+ sprite->data[4] = 21;
+ sprite->data[5] = 0;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[1] += sprite->data[3];
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[1] >> 4;
+ sprite->pos1.y = sprite->data[2] >> 4;
+ if (++sprite->data[5] > 11)
+ {
+ sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]);
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+void sub_8096A74(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = sprite->pos1.x << 4;
+ sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[3] = 10;
+ sprite->data[4] = 21;
+ sprite->data[5] = 0;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[1] -= sprite->data[3];
+ sprite->data[2] -= sprite->data[4];
+ sprite->pos1.x = sprite->data[1] >> 4;
+ sprite->pos1.y = sprite->data[2] >> 4;
+ sprite->pos2.x = gSineTable[sprite->data[5] * 8] >> 4;
+ if (++sprite->data[5] > 11)
+ {
+ sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]);
+ sprite->pos2.x = 0;
+ sprite->callback = sub_80969BC;
+ }
+ break;
+ }
+}
+
+void sub_8096B10(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = sprite->pos1.x << 4;
+ sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[3] = 10;
+ sprite->data[4] = 21;
+ sprite->data[5] = 0;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[1] += sprite->data[3];
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[1] >> 4;
+ sprite->pos1.y = sprite->data[2] >> 4;
+ sprite->pos2.x = -(gSineTable[sprite->data[5] * 8] >> 4);
+ if (++sprite->data[5] > 11)
+ {
+ sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]);
+ sprite->callback = SpriteCallbackDummy;
+ sprite->pos2.x = 0;
+ }
+ break;
+ }
+}
+
+void sub_8096BAC(struct Sprite *sprite)
+{
+ sprite->pos1.y -= 8;
+ if (sprite->pos1.y + sprite->pos2.y < -16)
+ {
+ sprite->callback = SpriteCallbackDummy;
+ sub_8096624(sub_80962A8(sprite), FALSE);
+ }
+}
diff --git a/sym_bss.txt b/sym_bss.txt
index 9195e3ee4..527efb982 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -47,12 +47,8 @@ gUnknown_3000E89: @ 3000E89
.include "src/sound.o"
.align 2
.include "src/field_effect.o"
-
.align 2
- @ .include "src/pokemon_storage_system.o"
-gUnknown_3000FE8: @ 3000FE8
- .space 0x184
-
+ .include "src/pokemon_storage_system_8.o"
.align 2
.include "src/easy_chat.o"
.align 2