diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-15 17:29:02 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-15 17:29:02 -0400 |
commit | c996ca85bc4d3bd62e2b6d2a37809c4f5c46b2e1 (patch) | |
tree | 372afdf22c54691db085aeb01e3517ec8c19b7a1 | |
parent | be742e6741af58076ac09722d42d64eee3c8d763 (diff) |
pokemon_storage_system_8
-rw-r--r-- | asm/pokemon_storage_system.s | 2157 | ||||
-rw-r--r-- | data/pokemon_storage_system.s | 53 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/pokemon_storage_system_8.c | 755 | ||||
-rw-r--r-- | sym_bss.txt | 6 |
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 |