Files
Pokemon-Firered/asm/pokemon_storage_system.s
T
2020-03-15 15:11:51 -04:00

2477 lines
40 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
@ 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
str r0, [r3]
str r1, [r0]
movs r1, 0
strb r2, [r0, 0x5]
strb r1, [r0, 0x4]
bx lr
.align 2, 0
_08096BF4: .4byte gUnknown_203982C
thumb_func_end sub_8096BE4
thumb_func_start sub_8096BF8
sub_8096BF8: @ 8096BF8
push {r4,r5,lr}
ldr r2, _08096C3C @ =gUnknown_203982C
ldr r1, [r2]
ldrb r0, [r1, 0x4]
cmp r0, 0
beq _08096C36
movs r4, 0
ldrb r1, [r1, 0x4]
cmp r4, r1
bcs _08096C2E
adds r5, r2, 0
_08096C0E:
ldr r0, [r5]
lsls r1, r4, 2
adds r1, r4
lsls r1, 2
ldr r0, [r0]
adds r0, r1
ldr r1, [r0, 0x10]
bl _call_via_r1
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
ldr r0, [r5]
ldrb r0, [r0, 0x4]
cmp r4, r0
bcc _08096C0E
_08096C2E:
ldr r0, _08096C3C @ =gUnknown_203982C
ldr r1, [r0]
movs r0, 0
strb r0, [r1, 0x4]
_08096C36:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08096C3C: .4byte gUnknown_203982C
thumb_func_end sub_8096BF8
thumb_func_start sub_8096C40
sub_8096C40: @ 8096C40
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r9, r0
mov r10, r3
ldr r0, [sp, 0x24]
ldr r3, [sp, 0x28]
ldr r4, [sp, 0x2C]
ldr r5, [sp, 0x30]
ldr r6, [sp, 0x34]
lsls r1, 16
lsrs r1, 16
mov r12, r1
lsls r2, 16
lsrs r2, 16
str r2, [sp]
lsls r0, 16
lsrs r0, 16
mov r8, r0
lsls r3, 16
lsrs r3, 16
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
lsls r6, 16
lsrs r6, 16
ldr r0, _08096CC0 @ =gUnknown_203982C
ldr r2, [r0]
ldrb r0, [r2, 0x4]
adds r1, r0, 0
ldrb r7, [r2, 0x5]
cmp r1, r7
bcs _08096CC8
adds r0, 0x1
strb r0, [r2, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
ldr r1, [r2]
adds r1, r0
lsls r0, r4, 1
strh r0, [r1, 0x8]
ldr r2, [sp]
lsls r0, r2, 5
add r0, r12
lsls r0, 1
add r0, r9
str r0, [r1, 0x4]
adds r0, r3, 0
muls r0, r6
add r0, r8
lsls r0, 1
add r0, r10
str r0, [r1]
strh r5, [r1, 0xC]
strh r6, [r1, 0xA]
ldr r0, _08096CC4 @ =sub_8096CDC
str r0, [r1, 0x10]
movs r0, 0x1
b _08096CCA
.align 2, 0
_08096CC0: .4byte gUnknown_203982C
_08096CC4: .4byte sub_8096CDC
_08096CC8:
movs r0, 0
_08096CCA:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8096C40
thumb_func_start sub_8096CDC
sub_8096CDC: @ 8096CDC
push {r4,r5,lr}
adds r4, r0, 0
movs r5, 0
b _08096D06
_08096CE4:
ldr r0, [r4]
ldr r1, [r4, 0x4]
ldrh r2, [r4, 0x8]
lsrs r2, 1
bl CpuSet
ldr r0, [r4, 0x4]
adds r0, 0x40
str r0, [r4, 0x4]
ldrh r1, [r4, 0xA]
lsls r1, 1
ldr r0, [r4]
adds r0, r1
str r0, [r4]
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_08096D06:
ldrh r0, [r4, 0xC]
cmp r5, r0
bcc _08096CE4
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8096CDC
thumb_func_start sub_8096D14
sub_8096D14: @ 8096D14
push {r4-r7,lr}
mov r12, r0
ldr r0, [sp, 0x14]
lsls r1, 16
lsrs r6, r1, 16
lsls r2, 16
lsrs r4, r2, 16
lsls r3, 16
lsrs r3, 16
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _08096D60 @ =gUnknown_203982C
ldr r2, [r0]
ldrb r0, [r2, 0x4]
adds r1, r0, 0
ldrb r7, [r2, 0x5]
cmp r1, r7
bcs _08096D68
adds r0, 0x1
strb r0, [r2, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
ldr r1, [r2]
adds r1, r0
lsls r0, r3, 1
strh r0, [r1, 0x8]
lsls r0, r4, 5
adds r0, r6
lsls r0, 1
add r0, r12
str r0, [r1, 0x4]
strh r5, [r1, 0xC]
ldr r0, _08096D64 @ =sub_8096D70
str r0, [r1, 0x10]
movs r0, 0x1
b _08096D6A
.align 2, 0
_08096D60: .4byte gUnknown_203982C
_08096D64: .4byte sub_8096D70
_08096D68:
movs r0, 0
_08096D6A:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8096D14
thumb_func_start sub_8096D70
sub_8096D70: @ 8096D70
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r6, r0, 0
movs r0, 0
ldrh r1, [r6, 0xC]
cmp r0, r1
bcs _08096DFE
movs r7, 0x80
lsls r7, 5
mov r5, sp
ldr r2, _08096DBC @ =0x040000d4
mov r8, r2
movs r1, 0x81
lsls r1, 24
mov r10, r1
_08096D96:
ldr r2, [r6, 0x4]
ldrh r3, [r6, 0x8]
mov r12, r2
adds r0, 0x1
mov r9, r0
cmp r3, r7
bhi _08096DC0
movs r0, 0
strh r0, [r5]
mov r2, sp
mov r0, r8
str r2, [r0]
mov r1, r12
str r1, [r0, 0x4]
lsrs r0, r3, 1
mov r2, r10
orrs r0, r2
mov r1, r8
b _08096DE8
.align 2, 0
_08096DBC: .4byte 0x040000d4
_08096DC0:
movs r4, 0
strh r4, [r5]
ldr r1, _08096E10 @ =0x040000d4
mov r0, sp
str r0, [r1]
str r2, [r1, 0x4]
ldr r0, _08096E14 @ =0x81000800
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
adds r2, r7
subs r3, r7
cmp r3, r7
bhi _08096DC0
strh r4, [r5]
mov r0, sp
str r0, [r1]
str r2, [r1, 0x4]
lsrs r0, r3, 1
mov r2, r10
orrs r0, r2
_08096DE8:
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
mov r0, r12
adds r0, 0x40
str r0, [r6, 0x4]
mov r1, r9
lsls r0, r1, 16
lsrs r0, 16
ldrh r2, [r6, 0xC]
cmp r0, r2
bcc _08096D96
_08096DFE:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08096E10: .4byte 0x040000d4
_08096E14: .4byte 0x81000800
thumb_func_end sub_8096D70
.align 2, 0 @ Don't pad with nop.