2477 lines
40 KiB
ArmAsm
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.
|