mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-26 22:40:33 +00:00
8640 lines
129 KiB
ArmAsm
8640 lines
129 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start AllocGroundLives
|
|
AllocGroundLives:
|
|
push {r4,r5,lr}
|
|
ldr r4, _080A7860
|
|
movs r0, 0xCE
|
|
lsls r0, 2
|
|
movs r1, 0x6
|
|
bl MemoryAlloc
|
|
str r0, [r4]
|
|
ldr r4, _080A7864
|
|
movs r0, 0xBA
|
|
lsls r0, 6
|
|
movs r1, 0x6
|
|
bl MemoryAlloc
|
|
str r0, [r4]
|
|
adds r1, r0, 0
|
|
ldr r0, _080A7868
|
|
adds r5, r0, 0
|
|
movs r4, 0xF8
|
|
lsls r4, 1
|
|
movs r2, 0x80
|
|
lsls r2, 9
|
|
adds r3, r2, 0
|
|
_080A7826:
|
|
ldrh r0, [r1, 0x2]
|
|
orrs r0, r5
|
|
strh r0, [r1, 0x2]
|
|
adds r0, r2, 0
|
|
adds r2, r3
|
|
asrs r0, 16
|
|
adds r1, r4
|
|
cmp r0, 0x17
|
|
ble _080A7826
|
|
ldr r4, _080A7860
|
|
ldr r1, [r4]
|
|
movs r0, 0xCB
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
movs r0, 0
|
|
movs r2, 0x19
|
|
bl GetFunctionScript
|
|
ldr r0, [r4]
|
|
movs r1, 0xCC
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
strh r1, [r0]
|
|
bl DeleteGroundLives
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7860: .4byte gGroundLivesMeta
|
|
_080A7864: .4byte gGroundLives
|
|
_080A7868: .4byte 0x0000ffff
|
|
thumb_func_end AllocGroundLives
|
|
|
|
thumb_func_start DeleteGroundLives
|
|
DeleteGroundLives:
|
|
push {r4-r6,lr}
|
|
ldr r0, _080A78E8
|
|
ldr r4, [r0]
|
|
movs r1, 0
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
movs r5, 0x80
|
|
lsls r5, 9
|
|
_080A787C:
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, r6
|
|
beq _080A788A
|
|
adds r0, r1, 0
|
|
bl GroundLives_Delete
|
|
_080A788A:
|
|
adds r0, r5, 0
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
adds r5, r1
|
|
asrs r1, r0, 16
|
|
movs r2, 0xF8
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
cmp r1, 0x17
|
|
ble _080A787C
|
|
ldr r3, _080A78EC
|
|
ldr r0, [r3]
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
str r2, [r0, 0x24]
|
|
adds r0, 0x28
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
movs r5, 0
|
|
movs r4, 0
|
|
movs r1, 0x2
|
|
_080A78B4:
|
|
ldr r0, [r3]
|
|
adds r0, r4
|
|
str r2, [r0, 0x8]
|
|
str r5, [r0]
|
|
str r5, [r0, 0x4]
|
|
adds r4, 0xC
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _080A78B4
|
|
ldr r4, _080A78EC
|
|
movs r2, 0
|
|
movs r3, 0x2C
|
|
movs r1, 0x3F
|
|
_080A78CE:
|
|
ldr r0, [r4]
|
|
adds r0, r3
|
|
str r2, [r0]
|
|
str r2, [r0, 0x4]
|
|
str r2, [r0, 0x8]
|
|
adds r3, 0xC
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _080A78CE
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A78E8: .4byte gGroundLives
|
|
_080A78EC: .4byte gGroundLivesMeta
|
|
thumb_func_end DeleteGroundLives
|
|
|
|
thumb_func_start FreeGroundLives
|
|
FreeGroundLives:
|
|
push {r4,r5,lr}
|
|
bl DeleteGroundLives
|
|
ldr r4, _080A7914
|
|
ldr r0, [r4]
|
|
bl MemoryFree
|
|
movs r5, 0
|
|
str r5, [r4]
|
|
ldr r4, _080A7918
|
|
ldr r0, [r4]
|
|
bl MemoryFree
|
|
str r5, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7914: .4byte gGroundLives
|
|
_080A7918: .4byte gGroundLivesMeta
|
|
thumb_func_end FreeGroundLives
|
|
|
|
thumb_func_start GroundLives_Select
|
|
GroundLives_Select:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r1, 16
|
|
asrs r7, r1, 16
|
|
lsls r2, 24
|
|
asrs r6, r2, 24
|
|
ldr r1, _080A7980
|
|
adds r0, r4, 0
|
|
bl GetGroundScript
|
|
adds r5, r0, 0
|
|
ldr r1, _080A7984
|
|
str r6, [sp]
|
|
movs r0, 0
|
|
adds r2, r4, 0
|
|
adds r3, r7, 0
|
|
bl Log
|
|
lsls r1, r7, 3
|
|
ldr r0, [r5, 0x4]
|
|
adds r0, r1
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
ldr r0, [r0, 0x4]
|
|
adds r0, r1
|
|
ldr r5, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
ble _080A7976
|
|
adds r4, r0, 0
|
|
_080A7960:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
adds r1, r5, 0
|
|
adds r2, r7, 0
|
|
adds r3, r6, 0
|
|
bl GroundLives_Add
|
|
subs r4, 0x1
|
|
adds r5, 0x18
|
|
cmp r4, 0
|
|
bne _080A7960
|
|
_080A7976:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7980: .4byte gUnknown_811808C
|
|
_080A7984: .4byte gUnknown_8118098
|
|
thumb_func_end GroundLives_Select
|
|
|
|
thumb_func_start GroundLives_Cancel
|
|
GroundLives_Cancel:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 16
|
|
asrs r7, r0, 16
|
|
lsls r1, 24
|
|
asrs r5, r1, 24
|
|
ldr r1, _080A79F4
|
|
movs r0, 0
|
|
adds r2, r7, 0
|
|
adds r3, r5, 0
|
|
bl Log
|
|
movs r1, 0
|
|
ldr r0, _080A79F8
|
|
ldr r4, [r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r8, r0
|
|
movs r6, 0x80
|
|
lsls r6, 9
|
|
_080A79B2:
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, r8
|
|
beq _080A79D4
|
|
movs r2, 0x4
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, r7
|
|
bne _080A79D4
|
|
cmp r5, 0
|
|
blt _080A79CE
|
|
movs r0, 0x6
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, r5
|
|
bne _080A79D4
|
|
_080A79CE:
|
|
adds r0, r1, 0
|
|
bl GroundLives_Delete
|
|
_080A79D4:
|
|
adds r0, r6, 0
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
adds r6, r1
|
|
asrs r1, r0, 16
|
|
movs r2, 0xF8
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
cmp r1, 0x17
|
|
ble _080A79B2
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A79F4: .4byte gUnknown_81180BC
|
|
_080A79F8: .4byte gGroundLives
|
|
thumb_func_end GroundLives_Cancel
|
|
|
|
thumb_func_start GroundLives_CancelBlank_1
|
|
GroundLives_CancelBlank_1:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
ldr r1, _080A7A70
|
|
movs r0, 0
|
|
bl Log
|
|
movs r6, 0
|
|
ldr r0, _080A7A74
|
|
ldr r4, [r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r8, r0
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r5, r4, r1
|
|
mov r7, sp
|
|
_080A7A20:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, r8
|
|
beq _080A7A50
|
|
ldr r0, [r5]
|
|
ldr r1, [r4, 0x14]
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
ldr r0, [r5, 0x4]
|
|
ldr r1, [r4, 0x18]
|
|
adds r0, r1
|
|
str r0, [r7, 0x4]
|
|
movs r1, 0xB8
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
mov r1, sp
|
|
bl IsOnscreen_80A675C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7A50
|
|
adds r0, r6, 0
|
|
bl GroundLives_Delete
|
|
_080A7A50:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 16
|
|
asrs r6, r0, 16
|
|
movs r0, 0xF8
|
|
lsls r0, 1
|
|
adds r5, r0
|
|
adds r4, r0
|
|
cmp r6, 0x17
|
|
ble _080A7A20
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7A70: .4byte gUnknown_81180D8
|
|
_080A7A74: .4byte gGroundLives
|
|
thumb_func_end GroundLives_CancelBlank_1
|
|
|
|
thumb_func_start GroundLives_CancelBlank_2
|
|
GroundLives_CancelBlank_2:
|
|
push {r4-r7,lr}
|
|
ldr r1, _080A7AC0
|
|
movs r0, 0
|
|
bl Log
|
|
movs r6, 0
|
|
ldr r0, _080A7AC4
|
|
ldr r4, [r0]
|
|
movs r7, 0x1
|
|
negs r7, r7
|
|
movs r0, 0x9F
|
|
lsls r0, 1
|
|
adds r5, r4, r0
|
|
_080A7A92:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, r7
|
|
beq _080A7ACC
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7AC8
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
adds r1, r4, r0
|
|
adds r0, 0x8
|
|
adds r2, r4, r0
|
|
movs r0, 0x20
|
|
bl FindGroundEvent
|
|
b _080A7ACA
|
|
.align 2, 0
|
|
_080A7AC0: .4byte gUnknown_81180D8
|
|
_080A7AC4: .4byte gGroundLives
|
|
_080A7AC8:
|
|
ldr r0, _080A7AE4
|
|
_080A7ACA:
|
|
strh r0, [r5]
|
|
_080A7ACC:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 16
|
|
asrs r6, r0, 16
|
|
movs r1, 0xF8
|
|
lsls r1, 1
|
|
adds r5, r1
|
|
adds r4, r1
|
|
cmp r6, 0x17
|
|
ble _080A7A92
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7AE4: .4byte 0x0000ffff
|
|
thumb_func_end GroundLives_CancelBlank_2
|
|
|
|
thumb_func_start sub_80A7AE8
|
|
sub_80A7AE8:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
mov r0, sp
|
|
bl sub_80A7B94
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r2, [r0, r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r2, r0
|
|
beq _080A7B34
|
|
movs r3, 0
|
|
ldr r0, _080A7B24
|
|
ldr r1, [r0]
|
|
adds r4, r2, 0
|
|
movs r2, 0x80
|
|
lsls r2, 9
|
|
adds r6, r2, 0
|
|
movs r5, 0xF8
|
|
lsls r5, 1
|
|
_080A7B16:
|
|
movs r7, 0x2
|
|
ldrsh r0, [r1, r7]
|
|
cmp r0, r4
|
|
bne _080A7B28
|
|
adds r0, r3, 0
|
|
b _080A7B38
|
|
.align 2, 0
|
|
_080A7B24: .4byte gGroundLives
|
|
_080A7B28:
|
|
adds r0, r2, 0
|
|
adds r2, r6
|
|
asrs r3, r0, 16
|
|
adds r1, r5
|
|
cmp r3, 0x17
|
|
ble _080A7B16
|
|
_080A7B34:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A7B38:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7AE8
|
|
|
|
thumb_func_start sub_80A7B40
|
|
sub_80A7B40:
|
|
push {r4-r7,lr}
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
movs r3, 0
|
|
ldr r0, _080A7B70
|
|
ldr r1, [r0]
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
movs r2, 0x80
|
|
lsls r2, 9
|
|
movs r5, 0x9E
|
|
lsls r5, 1
|
|
_080A7B58:
|
|
movs r7, 0x2
|
|
ldrsh r0, [r1, r7]
|
|
cmp r0, r6
|
|
beq _080A7B74
|
|
adds r0, r1, r5
|
|
movs r7, 0
|
|
ldrsh r0, [r0, r7]
|
|
cmp r0, r4
|
|
bne _080A7B74
|
|
adds r0, r3, 0
|
|
b _080A7B8C
|
|
.align 2, 0
|
|
_080A7B70: .4byte gGroundLives
|
|
_080A7B74:
|
|
adds r0, r2, 0
|
|
movs r3, 0x80
|
|
lsls r3, 9
|
|
adds r2, r3
|
|
asrs r3, r0, 16
|
|
movs r7, 0xF8
|
|
lsls r7, 1
|
|
adds r1, r7
|
|
cmp r3, 0x17
|
|
ble _080A7B58
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A7B8C:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7B40
|
|
|
|
thumb_func_start sub_80A7B94
|
|
sub_80A7B94:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
adds r7, r0, 0
|
|
movs r0, 0
|
|
ldrsh r2, [r7, r0]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r1, _080A7BD4
|
|
adds r0, r1
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
movs r1, 0
|
|
ldrsh r5, [r0, r1]
|
|
cmp r5, 0x1
|
|
bne _080A7C14
|
|
adds r0, r2, 0
|
|
cmp r0, 0
|
|
bne _080A7C10
|
|
movs r0, 0
|
|
movs r1, 0x1C
|
|
bl GetScriptVarValue
|
|
adds r4, r0, 0
|
|
cmp r4, 0x1
|
|
beq _080A7BDE
|
|
cmp r4, 0x1
|
|
bgt _080A7BD8
|
|
cmp r4, 0
|
|
beq _080A7BF2
|
|
b _080A7C08
|
|
.align 2, 0
|
|
_080A7BD4: .4byte gGroundLivesTypeData_811E63C
|
|
_080A7BD8:
|
|
cmp r4, 0x2
|
|
beq _080A7BE4
|
|
b _080A7C08
|
|
_080A7BDE:
|
|
movs r0, 0x2
|
|
strh r0, [r7]
|
|
b _080A7C10
|
|
_080A7BE4:
|
|
bl GetPlayerPokemonStruct
|
|
adds r6, r0, 0
|
|
bl sub_808D3BC
|
|
cmp r0, r6
|
|
bne _080A7BF6
|
|
_080A7BF2:
|
|
strh r5, [r7]
|
|
b _080A7C10
|
|
_080A7BF6:
|
|
bl sub_808D3F8
|
|
cmp r0, r6
|
|
bne _080A7C02
|
|
strh r4, [r7]
|
|
b _080A7C10
|
|
_080A7C02:
|
|
movs r0, 0x3
|
|
strh r0, [r7]
|
|
b _080A7C10
|
|
_080A7C08:
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
b _080A7DAC
|
|
_080A7C10:
|
|
movs r6, 0
|
|
b _080A7DD2
|
|
_080A7C14:
|
|
cmp r5, 0x2
|
|
bne _080A7CD2
|
|
movs r0, 0
|
|
movs r1, 0x1D
|
|
bl GetScriptVarValue
|
|
adds r4, r0, 0
|
|
movs r0, 0
|
|
movs r1, 0x1E
|
|
bl GetScriptVarValue
|
|
adds r2, r0, 0
|
|
ldrh r1, [r7]
|
|
subs r0, r1, 0x4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _080A7C82
|
|
cmp r1, 0x4
|
|
bne _080A7C44
|
|
adds r0, r4, 0
|
|
cmp r0, 0
|
|
bne _080A7C4C
|
|
b _080A7C4A
|
|
_080A7C44:
|
|
movs r0, 0
|
|
cmp r4, 0
|
|
beq _080A7C4C
|
|
_080A7C4A:
|
|
adds r0, r2, 0
|
|
_080A7C4C:
|
|
cmp r0, 0x2
|
|
beq _080A7C7A
|
|
cmp r0, 0x2
|
|
bhi _080A7C5A
|
|
cmp r0, 0x1
|
|
beq _080A7C6E
|
|
b _080A7DA6
|
|
_080A7C5A:
|
|
cmp r0, 0x3
|
|
beq _080A7C60
|
|
b _080A7DA6
|
|
_080A7C60:
|
|
bl GetPlayerPokemonStruct
|
|
adds r4, r0, 0
|
|
bl sub_808D3BC
|
|
cmp r0, r4
|
|
bne _080A7C72
|
|
_080A7C6E:
|
|
movs r0, 0x6
|
|
b _080A7C80
|
|
_080A7C72:
|
|
bl sub_808D3F8
|
|
cmp r0, r4
|
|
bne _080A7C7E
|
|
_080A7C7A:
|
|
movs r0, 0x7
|
|
b _080A7C80
|
|
_080A7C7E:
|
|
movs r0, 0x8
|
|
_080A7C80:
|
|
strh r0, [r7]
|
|
_080A7C82:
|
|
movs r0, 0
|
|
ldrsh r5, [r7, r0]
|
|
cmp r5, 0x7
|
|
beq _080A7CB0
|
|
cmp r5, 0x7
|
|
bgt _080A7C94
|
|
cmp r5, 0x6
|
|
beq _080A7C9A
|
|
b _080A7CCA
|
|
_080A7C94:
|
|
cmp r5, 0x8
|
|
beq _080A7CC6
|
|
b _080A7CCA
|
|
_080A7C9A:
|
|
movs r6, 0x2
|
|
bl GetPlayerPokemonStruct
|
|
adds r4, r0, 0
|
|
bl sub_808D3BC
|
|
cmp r4, r0
|
|
beq _080A7CAC
|
|
b _080A7DD2
|
|
_080A7CAC:
|
|
strh r5, [r7]
|
|
b _080A7DD2
|
|
_080A7CB0:
|
|
movs r6, 0x1
|
|
bl GetPlayerPokemonStruct
|
|
adds r4, r0, 0
|
|
bl sub_808D3F8
|
|
cmp r4, r0
|
|
beq _080A7CC2
|
|
b _080A7DD2
|
|
_080A7CC2:
|
|
movs r0, 0x6
|
|
b _080A7DD0
|
|
_080A7CC6:
|
|
movs r6, 0x2
|
|
b _080A7DD2
|
|
_080A7CCA:
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
b _080A7DAC
|
|
_080A7CD2:
|
|
cmp r5, 0x3
|
|
bne _080A7DB0
|
|
ldrh r1, [r7]
|
|
adds r0, r1, 0
|
|
subs r0, 0xA
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x3
|
|
bhi _080A7D12
|
|
adds r4, r2, 0
|
|
subs r4, 0xA
|
|
bl sub_8098F88
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7DD2
|
|
movs r0, 0x9
|
|
bl sub_80023E4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7D06
|
|
mov r0, sp
|
|
bl sub_808D6A4
|
|
b _080A7D0C
|
|
_080A7D06:
|
|
mov r0, sp
|
|
bl sub_808D654
|
|
_080A7D0C:
|
|
cmp r4, r0
|
|
bge _080A7DA6
|
|
b _080A7D7E
|
|
_080A7D12:
|
|
adds r0, r1, 0
|
|
subs r0, 0xE
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xF
|
|
bhi _080A7DA6
|
|
movs r0, 0
|
|
movs r1, 0x10
|
|
bl GetScriptVarValue
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_8002658
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _080A7DA6
|
|
movs r2, 0
|
|
ldrsh r0, [r7, r2]
|
|
adds r4, r0, 0
|
|
subs r4, 0xE
|
|
adds r0, r1, 0
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8092638
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r4, r0
|
|
bge _080A7DA6
|
|
ldr r2, _080A7D84
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r4
|
|
movs r1, 0x58
|
|
muls r1, r0
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r0, 0x9
|
|
bl sub_80023E4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7D88
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7DA6
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
bne _080A7DA6
|
|
_080A7D7E:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
b _080A7DD4
|
|
.align 2, 0
|
|
_080A7D84: .4byte gRecruitedPokemonRef
|
|
_080A7D88:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7DA6
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
bne _080A7DA6
|
|
movs r1, 0
|
|
ldrb r0, [r4, 0x4]
|
|
cmp r0, 0x41
|
|
bne _080A7DA2
|
|
movs r1, 0x1
|
|
_080A7DA2:
|
|
cmp r1, 0
|
|
beq _080A7D7E
|
|
_080A7DA6:
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
_080A7DAC:
|
|
strh r0, [r7]
|
|
b _080A7D7E
|
|
_080A7DB0:
|
|
cmp r2, 0x23
|
|
bne _080A7DD2
|
|
bl GetPlayerPokemonStruct
|
|
adds r4, r0, 0
|
|
bl sub_808D3BC
|
|
cmp r0, r4
|
|
bne _080A7DC6
|
|
movs r0, 0x21
|
|
b _080A7DD0
|
|
_080A7DC6:
|
|
bl sub_808D3F8
|
|
cmp r0, r4
|
|
bne _080A7DD2
|
|
movs r0, 0x22
|
|
_080A7DD0:
|
|
strh r0, [r7]
|
|
_080A7DD2:
|
|
adds r0, r6, 0
|
|
_080A7DD4:
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7B94
|
|
|
|
thumb_func_start sub_80A7DDC
|
|
sub_80A7DDC:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x24
|
|
adds r7, r0, 0
|
|
adds r5, r1, 0
|
|
bl sub_80A7B94
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
mov r8, r0
|
|
movs r0, 0
|
|
strh r0, [r5]
|
|
ldrh r3, [r7]
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
cmp r0, r6
|
|
bne _080A7E0A
|
|
_080A7E04:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
b _080A8098
|
|
_080A7E0A:
|
|
movs r0, 0
|
|
ldrsh r2, [r7, r0]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r1, _080A7E50
|
|
adds r4, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3
|
|
beq _080A7E22
|
|
b _080A7F38
|
|
_080A7E22:
|
|
adds r0, r3, 0
|
|
subs r0, 0xA
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x3
|
|
bhi _080A7E90
|
|
adds r4, r2, 0
|
|
subs r4, 0xA
|
|
bl sub_8098F88
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7E58
|
|
ldr r0, _080A7E54
|
|
lsls r1, r4, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r5]
|
|
cmp r0, 0
|
|
bne _080A7E04
|
|
strh r6, [r7]
|
|
b _080A7E04
|
|
.align 2, 0
|
|
_080A7E50: .4byte gGroundLivesTypeData_811E63C
|
|
_080A7E54: .4byte gUnknown_81180F0
|
|
_080A7E58:
|
|
movs r0, 0x9
|
|
bl sub_80023E4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7E6C
|
|
mov r0, sp
|
|
bl sub_808D6A4
|
|
b _080A7E72
|
|
_080A7E6C:
|
|
mov r0, sp
|
|
bl sub_808D654
|
|
_080A7E72:
|
|
cmp r4, r0
|
|
blt _080A7E78
|
|
b _080A8080
|
|
_080A7E78:
|
|
ldr r2, _080A7E8C
|
|
lsls r0, r4, 2
|
|
add r0, sp
|
|
ldr r1, [r0]
|
|
movs r0, 0x58
|
|
muls r1, r0
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x8]
|
|
b _080A800A
|
|
.align 2, 0
|
|
_080A7E8C: .4byte gRecruitedPokemonRef
|
|
_080A7E90:
|
|
adds r0, r3, 0
|
|
subs r0, 0xE
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xF
|
|
bls _080A7E9E
|
|
b _080A8080
|
|
_080A7E9E:
|
|
movs r0, 0
|
|
movs r1, 0x10
|
|
bl GetScriptVarValue
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_8002658
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
bne _080A7EB8
|
|
b _080A8080
|
|
_080A7EB8:
|
|
movs r2, 0
|
|
ldrsh r0, [r7, r2]
|
|
adds r4, r0, 0
|
|
subs r4, 0xE
|
|
adds r0, r1, 0
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8092638
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r4, r0
|
|
blt _080A7ED8
|
|
b _080A8080
|
|
_080A7ED8:
|
|
ldr r2, _080A7F0C
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r4
|
|
movs r1, 0x58
|
|
muls r1, r0
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r0, 0x9
|
|
bl sub_80023E4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7F10
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080A7EFE
|
|
b _080A8080
|
|
_080A7EFE:
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
beq _080A7F06
|
|
b _080A8080
|
|
_080A7F06:
|
|
ldrh r0, [r4, 0x8]
|
|
b _080A800A
|
|
.align 2, 0
|
|
_080A7F0C: .4byte gRecruitedPokemonRef
|
|
_080A7F10:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080A7F1C
|
|
b _080A8080
|
|
_080A7F1C:
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
beq _080A7F24
|
|
b _080A8080
|
|
_080A7F24:
|
|
movs r1, 0
|
|
ldrb r0, [r4, 0x4]
|
|
cmp r0, 0x41
|
|
bne _080A7F2E
|
|
movs r1, 0x1
|
|
_080A7F2E:
|
|
cmp r1, 0
|
|
beq _080A7F34
|
|
b _080A8080
|
|
_080A7F34:
|
|
ldrh r0, [r4, 0x8]
|
|
b _080A800A
|
|
_080A7F38:
|
|
subs r0, r3, 0x1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x23
|
|
bls _080A7F44
|
|
b _080A808A
|
|
_080A7F44:
|
|
lsls r0, 2
|
|
ldr r1, _080A7F50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080A7F50: .4byte _080A7F54
|
|
.align 2, 0
|
|
_080A7F54:
|
|
.4byte _080A7FE4
|
|
.4byte _080A7FEC
|
|
.4byte _080A7FF4
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A7FE4
|
|
.4byte _080A7FEC
|
|
.4byte _080A7FF4
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A808A
|
|
.4byte _080A8032
|
|
.4byte _080A8032
|
|
.4byte _080A8014
|
|
.4byte _080A7FE4
|
|
.4byte _080A7FEC
|
|
.4byte _080A7FF4
|
|
.4byte _080A7FFC
|
|
_080A7FE4:
|
|
bl sub_808D3BC
|
|
ldrh r0, [r0, 0x8]
|
|
b _080A8094
|
|
_080A7FEC:
|
|
bl sub_808D3F8
|
|
ldrh r0, [r0, 0x8]
|
|
b _080A8094
|
|
_080A7FF4:
|
|
bl GetPlayerPokemonStruct
|
|
ldrh r0, [r0, 0x8]
|
|
b _080A8094
|
|
_080A7FFC:
|
|
movs r0, 0xF
|
|
bl RandInt
|
|
ldr r1, _080A8010
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
_080A800A:
|
|
strh r0, [r5]
|
|
b _080A7E04
|
|
.align 2, 0
|
|
_080A8010: .4byte gUnknown_81180FC
|
|
_080A8014:
|
|
movs r0, 0
|
|
movs r1, 0x1F
|
|
bl GetScriptVarValue
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
beq _080A8028
|
|
strh r0, [r5]
|
|
b _080A7E04
|
|
_080A8028:
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
strh r0, [r7]
|
|
b _080A7E04
|
|
_080A8032:
|
|
movs r0, 0x89
|
|
strh r0, [r5]
|
|
add r6, sp, 0x10
|
|
adds r0, r6, 0
|
|
bl sub_8099328
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8046
|
|
b _080A7E04
|
|
_080A8046:
|
|
add r1, sp, 0x14
|
|
add r2, sp, 0x18
|
|
movs r0, 0x2
|
|
bl GetScriptVarScenario
|
|
add r4, sp, 0x1C
|
|
ldr r1, [sp, 0x18]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r2, [r6]
|
|
adds r0, r4, 0
|
|
bl sub_8096AF8
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
beq _080A8076
|
|
movs r2, 0
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0x1E
|
|
bne _080A8072
|
|
ldrh r0, [r4, 0x2]
|
|
b _080A8074
|
|
_080A8072:
|
|
ldrh r0, [r4, 0x4]
|
|
_080A8074:
|
|
strh r0, [r5]
|
|
_080A8076:
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _080A8080
|
|
b _080A7E04
|
|
_080A8080:
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
strh r0, [r7]
|
|
b _080A7E04
|
|
_080A808A:
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080A8096
|
|
ldrh r0, [r4, 0x2]
|
|
_080A8094:
|
|
strh r0, [r5]
|
|
_080A8096:
|
|
mov r0, r8
|
|
_080A8098:
|
|
add sp, 0x24
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7DDC
|
|
|
|
thumb_func_start GroundLives_Add
|
|
GroundLives_Add:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x24
|
|
str r1, [sp, 0x10]
|
|
lsls r0, 16
|
|
asrs r6, r0, 16
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
str r2, [sp, 0x14]
|
|
lsls r3, 24
|
|
asrs r3, 24
|
|
str r3, [sp, 0x18]
|
|
ldrb r1, [r1]
|
|
add r0, sp, 0xC
|
|
strh r1, [r0]
|
|
movs r0, 0
|
|
mov r8, r0
|
|
mov r4, sp
|
|
adds r4, 0xE
|
|
add r0, sp, 0xC
|
|
adds r1, r4, 0
|
|
bl sub_80A7DDC
|
|
lsls r0, 16
|
|
asrs r7, r0, 16
|
|
add r0, sp, 0xC
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r9, r4
|
|
cmp r1, r0
|
|
beq _080A81AE
|
|
cmp r7, 0x1
|
|
beq _080A8104
|
|
cmp r7, 0x1
|
|
bgt _080A80FA
|
|
cmp r7, 0
|
|
beq _080A8100
|
|
b _080A8118
|
|
_080A80FA:
|
|
cmp r7, 0x2
|
|
beq _080A8108
|
|
b _080A8118
|
|
_080A8100:
|
|
movs r6, 0
|
|
b _080A8118
|
|
_080A8104:
|
|
movs r6, 0x1
|
|
b _080A8118
|
|
_080A8108:
|
|
movs r0, 0
|
|
movs r1, 0x1D
|
|
bl GetScriptVarValue
|
|
cmp r0, 0
|
|
bne _080A8116
|
|
movs r7, 0x1
|
|
_080A8116:
|
|
movs r6, 0x2
|
|
_080A8118:
|
|
add r0, sp, 0xC
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r1, _080A813C
|
|
adds r0, r1
|
|
str r0, [sp, 0x1C]
|
|
cmp r6, 0
|
|
bge _080A81B4
|
|
cmp r2, 0x21
|
|
beq _080A8140
|
|
cmp r2, 0x23
|
|
beq _080A8154
|
|
adds r0, r2, 0
|
|
b _080A8162
|
|
.align 2, 0
|
|
_080A813C: .4byte gGroundLivesTypeData_811E63C
|
|
_080A8140:
|
|
ldr r0, _080A8150
|
|
ldr r0, [r0]
|
|
movs r4, 0x2
|
|
ldrsh r0, [r0, r4]
|
|
cmp r0, 0x1
|
|
beq _080A81AE
|
|
movs r0, 0x21
|
|
b _080A8162
|
|
.align 2, 0
|
|
_080A8150: .4byte gGroundLives
|
|
_080A8154:
|
|
ldr r0, _080A8188
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x3
|
|
beq _080A81AE
|
|
movs r0, 0x23
|
|
_080A8162:
|
|
bl sub_80A7AE8
|
|
adds r6, r0, 0
|
|
cmp r6, 0
|
|
bge _080A81B4
|
|
movs r2, 0x3
|
|
ldr r0, _080A8188
|
|
ldr r0, [r0]
|
|
movs r3, 0xBA
|
|
lsls r3, 3
|
|
adds r5, r0, r3
|
|
movs r4, 0x2
|
|
ldrsh r1, [r5, r4]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A818C
|
|
movs r6, 0x3
|
|
b _080A81B4
|
|
.align 2, 0
|
|
_080A8188: .4byte gGroundLives
|
|
_080A818C:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
movs r0, 0xF8
|
|
lsls r0, 1
|
|
adds r5, r0
|
|
cmp r2, 0x17
|
|
bgt _080A81AA
|
|
movs r3, 0x2
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A818C
|
|
adds r6, r2, 0
|
|
_080A81AA:
|
|
cmp r6, 0
|
|
bge _080A81B4
|
|
_080A81AE:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
b _080A8674
|
|
_080A81B4:
|
|
ldr r1, _080A8234
|
|
lsls r0, r6, 5
|
|
subs r0, r6
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r5, r1, r0
|
|
ldr r1, _080A8238
|
|
add r0, sp, 0xC
|
|
movs r4, 0
|
|
ldrsh r3, [r0, r4]
|
|
ldr r2, [sp, 0x1C]
|
|
movs r4, 0
|
|
ldrsh r0, [r2, r4]
|
|
str r0, [sp]
|
|
ldr r0, [sp, 0x14]
|
|
str r0, [sp, 0x4]
|
|
ldr r2, [sp, 0x18]
|
|
str r2, [sp, 0x8]
|
|
movs r0, 0
|
|
adds r2, r6, 0
|
|
bl Log
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A81F0
|
|
movs r2, 0x1
|
|
_080A81F0:
|
|
str r2, [sp, 0x20]
|
|
strh r6, [r5]
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x2]
|
|
mov r4, sp
|
|
ldrh r4, [r4, 0x14]
|
|
strh r4, [r5, 0x4]
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x18]
|
|
strb r0, [r5, 0x6]
|
|
mov r1, r9
|
|
ldrh r0, [r1]
|
|
strh r0, [r5, 0x8]
|
|
movs r2, 0x90
|
|
lsls r2, 1
|
|
adds r4, r5, r2
|
|
adds r0, r4, 0
|
|
bl sub_809CD68
|
|
movs r0, 0x9
|
|
str r0, [r4]
|
|
ldr r3, [sp, 0x1C]
|
|
ldrh r0, [r3]
|
|
subs r0, 0x1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x9
|
|
bhi _080A82D8
|
|
lsls r0, 2
|
|
ldr r1, _080A823C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080A8234: .4byte gGroundLives
|
|
_080A8238: .4byte gUnknown_811811C
|
|
_080A823C: .4byte _080A8240
|
|
.align 2, 0
|
|
_080A8240:
|
|
.4byte _080A8268
|
|
.4byte _080A8280
|
|
.4byte _080A8290
|
|
.4byte _080A82D8
|
|
.4byte _080A82D8
|
|
.4byte _080A8298
|
|
.4byte _080A82A8
|
|
.4byte _080A82B4
|
|
.4byte _080A82BE
|
|
.4byte _080A82CA
|
|
_080A8268:
|
|
movs r4, 0x8E
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
ldr r0, _080A827C
|
|
str r0, [r1]
|
|
movs r0, 0x90
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
movs r0, 0x1
|
|
b _080A82E0
|
|
.align 2, 0
|
|
_080A827C: .4byte 0x2300181d
|
|
_080A8280:
|
|
movs r2, 0x8E
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
ldr r0, _080A828C
|
|
b _080A82E0
|
|
.align 2, 0
|
|
_080A828C: .4byte 0x23001000
|
|
_080A8290:
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r1, r5, r3
|
|
b _080A82DE
|
|
_080A8298:
|
|
movs r4, 0x8E
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
ldr r0, _080A82A4
|
|
b _080A82E0
|
|
.align 2, 0
|
|
_080A82A4: .4byte 0x2000000d
|
|
_080A82A8:
|
|
movs r0, 0x8E
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
movs r0, 0x80
|
|
lsls r0, 10
|
|
b _080A82E0
|
|
_080A82B4:
|
|
movs r2, 0x8E
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
movs r0, 0
|
|
b _080A82E0
|
|
_080A82BE:
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r1, r5, r3
|
|
movs r0, 0xC0
|
|
lsls r0, 12
|
|
b _080A82E0
|
|
_080A82CA:
|
|
movs r4, 0x8E
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
ldr r0, _080A82D4
|
|
b _080A82E0
|
|
.align 2, 0
|
|
_080A82D4: .4byte 0x20010000
|
|
_080A82D8:
|
|
movs r0, 0x8E
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
_080A82DE:
|
|
ldr r0, _080A83DC
|
|
_080A82E0:
|
|
str r0, [r1]
|
|
ldr r2, [sp, 0x1C]
|
|
ldrb r1, [r2, 0x8]
|
|
lsls r1, 11
|
|
str r1, [r5, 0xC]
|
|
ldrb r0, [r2, 0x9]
|
|
lsls r0, 11
|
|
str r0, [r5, 0x10]
|
|
lsrs r1, 1
|
|
str r1, [r5, 0x14]
|
|
lsrs r0, 1
|
|
str r0, [r5, 0x18]
|
|
ldr r3, [sp, 0x10]
|
|
ldrb r0, [r3, 0x1]
|
|
strb r0, [r5, 0x1C]
|
|
adds r2, r3, 0
|
|
adds r2, 0x4
|
|
adds r4, r5, 0
|
|
adds r4, 0x20
|
|
ldrb r1, [r2, 0x2]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080A8328
|
|
ldrb r0, [r3, 0x4]
|
|
lsls r3, r0, 11
|
|
str r3, [r5, 0x20]
|
|
ldrb r1, [r2, 0x2]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A8328
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
adds r0, r3, r1
|
|
str r0, [r5, 0x20]
|
|
_080A8328:
|
|
ldrb r1, [r2, 0x3]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080A834A
|
|
ldrb r0, [r2, 0x1]
|
|
lsls r3, r0, 11
|
|
str r3, [r4, 0x4]
|
|
ldrb r1, [r2, 0x3]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A834A
|
|
movs r2, 0x80
|
|
lsls r2, 3
|
|
adds r0, r3, r2
|
|
str r0, [r4, 0x4]
|
|
_080A834A:
|
|
ldr r3, [sp, 0x20]
|
|
cmp r3, 0
|
|
beq _080A83EC
|
|
ldrb r0, [r5, 0x1C]
|
|
movs r4, 0xA1
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
movs r3, 0
|
|
strb r0, [r1]
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
adds r2, r5, r0
|
|
ldr r0, [r5, 0x20]
|
|
ldr r1, [r5, 0x14]
|
|
subs r0, r1
|
|
str r0, [r2]
|
|
movs r1, 0xA6
|
|
lsls r1, 1
|
|
adds r2, r5, r1
|
|
ldr r0, [r5, 0x20]
|
|
ldr r1, [r5, 0x14]
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
adds r4, 0x6
|
|
adds r2, r5, r4
|
|
ldr r0, [r5, 0x24]
|
|
ldr r1, [r5, 0x18]
|
|
subs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0xA8
|
|
lsls r0, 1
|
|
adds r2, r5, r0
|
|
ldr r0, [r5, 0x24]
|
|
ldr r1, [r5, 0x18]
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
movs r2, 0xAA
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
adds r4, 0x10
|
|
adds r0, r5, r4
|
|
str r3, [r0]
|
|
str r3, [r1]
|
|
movs r1, 0x9E
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
strh r7, [r0]
|
|
ldr r1, _080A83E0
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [r1, 0x8]
|
|
str r3, [r1]
|
|
str r3, [r1, 0x4]
|
|
ldrh r0, [r5, 0x2]
|
|
subs r0, 0xE
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xF
|
|
bhi _080A83E4
|
|
movs r0, 0x12
|
|
bl OtherRandInt
|
|
movs r2, 0xA0
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
strh r0, [r1]
|
|
b _080A83EC
|
|
.align 2, 0
|
|
_080A83DC: .4byte 0x2300068d
|
|
_080A83E0: .4byte gGroundLivesMeta
|
|
_080A83E4:
|
|
movs r4, 0xA0
|
|
lsls r4, 1
|
|
adds r0, r5, r4
|
|
strh r3, [r0]
|
|
_080A83EC:
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A8418
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
movs r3, 0xA6
|
|
lsls r3, 1
|
|
adds r2, r5, r3
|
|
movs r0, 0x20
|
|
bl FindGroundEvent
|
|
movs r4, 0x9F
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
b _080A8420
|
|
_080A8418:
|
|
movs r0, 0x9F
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
ldr r0, _080A849C
|
|
_080A8420:
|
|
strh r0, [r1]
|
|
adds r0, r5, 0
|
|
adds r0, 0x28
|
|
adds r1, r5, 0
|
|
adds r1, 0x30
|
|
bl GetCurrentDungeonBounds
|
|
ldr r1, [sp, 0x20]
|
|
cmp r1, 0
|
|
beq _080A84AC
|
|
ldr r2, _080A84A0
|
|
adds r1, r5, r2
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
movs r3, 0xAF
|
|
lsls r3, 1
|
|
adds r1, r5, r3
|
|
movs r3, 0
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r1]
|
|
movs r4, 0xB0
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
strh r0, [r1]
|
|
movs r1, 0xB2
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
str r3, [r0]
|
|
adds r4, 0x8
|
|
adds r1, r5, r4
|
|
ldr r0, _080A84A4
|
|
strh r0, [r1]
|
|
movs r1, 0xAE
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
strb r2, [r0]
|
|
movs r2, 0xB5
|
|
lsls r2, 1
|
|
adds r0, r5, r2
|
|
strh r3, [r0]
|
|
movs r3, 0xB8
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
movs r4, 0x2
|
|
ldrsh r1, [r5, r4]
|
|
movs r3, 0x8
|
|
ldrsh r2, [r5, r3]
|
|
movs r4, 0x8E
|
|
lsls r4, 1
|
|
adds r3, r5, r4
|
|
ldr r3, [r3]
|
|
bl sub_80A7428
|
|
adds r4, r5, 0
|
|
adds r4, 0x38
|
|
ldr r1, _080A84A8
|
|
ldr r0, [sp, 0x18]
|
|
str r0, [sp]
|
|
b _080A855C
|
|
.align 2, 0
|
|
_080A849C: .4byte 0x0000ffff
|
|
_080A84A0: .4byte 0x0000015d
|
|
_080A84A4: .4byte 0x00000807
|
|
_080A84A8: .4byte gGroundLivesCallbacks
|
|
_080A84AC:
|
|
adds r4, r5, 0
|
|
adds r4, 0x38
|
|
ldr r0, _080A84F0
|
|
ldr r1, [r0]
|
|
movs r2, 0xCB
|
|
lsls r2, 2
|
|
adds r1, r2
|
|
adds r0, r4, 0
|
|
bl sub_809D684
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8550
|
|
adds r0, r5, 0
|
|
adds r0, 0xBE
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
beq _080A84F4
|
|
adds r0, r5, 0
|
|
adds r0, 0xE0
|
|
ldrh r0, [r0]
|
|
mov r10, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0xE2
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
mov r9, r0
|
|
adds r7, r5, 0
|
|
adds r7, 0x80
|
|
movs r0, 0x82
|
|
adds r0, r5
|
|
b _080A8508
|
|
.align 2, 0
|
|
_080A84F0: .4byte gGroundLivesMeta
|
|
_080A84F4:
|
|
adds r1, r5, 0
|
|
adds r1, 0x80
|
|
ldrh r2, [r1]
|
|
mov r10, r2
|
|
adds r0, r5, 0
|
|
adds r0, 0x82
|
|
movs r3, 0
|
|
ldrsb r3, [r0, r3]
|
|
mov r9, r3
|
|
adds r7, r1, 0
|
|
_080A8508:
|
|
mov r8, r0
|
|
adds r0, r4, 0
|
|
bl InitAction2
|
|
ldr r1, _080A8544
|
|
ldr r0, [sp, 0x18]
|
|
str r0, [sp]
|
|
adds r0, r4, 0
|
|
adds r2, r5, 0
|
|
ldr r3, [sp, 0x14]
|
|
bl InitActionWithParams
|
|
ldr r0, _080A8548
|
|
ldr r2, [r0]
|
|
movs r1, 0xCB
|
|
lsls r1, 2
|
|
adds r2, r1
|
|
ldr r3, _080A854C
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl GroundScript_ExecutePP
|
|
mov r2, r10
|
|
strh r2, [r7]
|
|
mov r0, r9
|
|
mov r3, r8
|
|
strb r0, [r3]
|
|
movs r1, 0x1
|
|
mov r8, r1
|
|
b _080A8566
|
|
.align 2, 0
|
|
_080A8544: .4byte gGroundLivesCallbacks
|
|
_080A8548: .4byte gGroundLivesMeta
|
|
_080A854C: .4byte gUnknown_8118170
|
|
_080A8550:
|
|
adds r0, r4, 0
|
|
bl InitAction2
|
|
ldr r1, _080A861C
|
|
ldr r2, [sp, 0x18]
|
|
str r2, [sp]
|
|
_080A855C:
|
|
adds r0, r4, 0
|
|
adds r2, r5, 0
|
|
ldr r3, [sp, 0x14]
|
|
bl InitActionWithParams
|
|
_080A8566:
|
|
ldr r3, [sp, 0x10]
|
|
ldr r2, [r3, 0xC]
|
|
cmp r2, 0
|
|
bne _080A8574
|
|
ldr r0, _080A8620
|
|
adds r0, 0xEC
|
|
ldr r2, [r0]
|
|
_080A8574:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl SetPredefinedScript
|
|
ldr r0, [sp, 0x10]
|
|
ldr r2, [r0, 0x10]
|
|
cmp r2, 0
|
|
bne _080A8588
|
|
ldr r0, _080A8620
|
|
ldr r2, [r0, 0x38]
|
|
_080A8588:
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl SetPredefinedScript
|
|
ldr r1, [sp, 0x10]
|
|
ldr r2, [r1, 0x14]
|
|
cmp r2, 0
|
|
bne _080A859C
|
|
ldr r0, _080A8620
|
|
ldr r2, [r0, 0x50]
|
|
_080A859C:
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl SetPredefinedScript
|
|
ldr r3, [sp, 0x10]
|
|
ldr r2, [r3, 0x8]
|
|
cmp r2, 0
|
|
beq _080A8630
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl SetPredefinedScript
|
|
ldr r0, [sp, 0x20]
|
|
cmp r0, 0
|
|
bne _080A860C
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
bne _080A860C
|
|
movs r2, 0x8E
|
|
lsls r2, 1
|
|
adds r0, r5, r2
|
|
ldr r0, [r0]
|
|
movs r1, 0xC0
|
|
lsls r1, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080A860C
|
|
ldr r0, _080A8624
|
|
ldr r2, [r0]
|
|
movs r3, 0xCB
|
|
lsls r3, 2
|
|
adds r2, r3
|
|
ldr r3, _080A8628
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl GroundScript_ExecutePP
|
|
movs r1, 0xB0
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
movs r2, 0xAF
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1]
|
|
orrs r0, r1
|
|
adds r1, r5, 0
|
|
adds r1, 0x80
|
|
strh r0, [r1]
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r0, 0x82
|
|
strb r1, [r0]
|
|
_080A860C:
|
|
ldr r3, _080A862C
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl ExecutePredefinedScript
|
|
b _080A865A
|
|
.align 2, 0
|
|
_080A861C: .4byte gGroundLivesCallbacks
|
|
_080A8620: .4byte gFunctionScriptTable
|
|
_080A8624: .4byte gGroundLivesMeta
|
|
_080A8628: .4byte gUnknown_811817C
|
|
_080A862C: .4byte gUnknown_8118188
|
|
_080A8630:
|
|
mov r4, r8
|
|
cmp r4, 0
|
|
beq _080A865A
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
adds r0, r5, 0
|
|
adds r0, 0x82
|
|
ldrb r0, [r0]
|
|
movs r2, 0xA1
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
strb r0, [r1]
|
|
adds r0, r5, 0
|
|
adds r0, 0x80
|
|
ldrh r1, [r0]
|
|
adds r0, r5, 0
|
|
bl sub_80A9750
|
|
_080A865A:
|
|
ldr r3, [sp, 0x1C]
|
|
movs r4, 0
|
|
ldrsh r0, [r3, r4]
|
|
cmp r0, 0x1
|
|
bne _080A8672
|
|
ldr r0, [sp, 0x20]
|
|
cmp r0, 0
|
|
beq _080A8672
|
|
movs r0, 0x1
|
|
adds r1, r6, 0
|
|
bl sub_809D170
|
|
_080A8672:
|
|
adds r0, r6, 0
|
|
_080A8674:
|
|
add sp, 0x24
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GroundLives_Add
|
|
|
|
thumb_func_start GroundLives_Delete
|
|
GroundLives_Delete:
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
ldr r1, _080A86BC
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r4, r1, r0
|
|
ldr r1, _080A86C0
|
|
movs r0, 0
|
|
bl Log
|
|
movs r1, 0xB8
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl sub_80A74E4
|
|
adds r0, r4, 0
|
|
adds r0, 0x38
|
|
bl InitAction2
|
|
ldr r0, _080A86C4
|
|
strh r0, [r4, 0x2]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A86BC: .4byte gGroundLives
|
|
_080A86C0: .4byte gUnknown_8118194
|
|
_080A86C4: .4byte 0x0000ffff
|
|
thumb_func_end GroundLives_Delete
|
|
|
|
thumb_func_start sub_80A86C8
|
|
sub_80A86C8:
|
|
push {r4,r5,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8708
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
cmp r0, r3
|
|
beq _080A8744
|
|
movs r2, 0x9E
|
|
lsls r2, 1
|
|
adds r1, r4, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080A870C
|
|
movs r0, 0xC0
|
|
lsls r0, 6
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _080A872E
|
|
bl sub_80AB5A4
|
|
b _080A872E
|
|
.align 2, 0
|
|
_080A8708: .4byte gGroundLives
|
|
_080A870C:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _080A872E
|
|
ldr r2, _080A874C
|
|
movs r0, 0
|
|
ldrsh r1, [r1, r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
str r3, [r1, 0x8]
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
str r0, [r1, 0x4]
|
|
_080A872E:
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r1, [r0]
|
|
orrs r1, r5
|
|
str r1, [r0]
|
|
movs r2, 0xB8
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl sub_80A6688
|
|
_080A8744:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A874C: .4byte gGroundLivesMeta
|
|
thumb_func_end sub_80A86C8
|
|
|
|
thumb_func_start sub_80A8750
|
|
sub_80A8750:
|
|
push {r4,r5,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A87A8
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A87A2
|
|
movs r1, 0x9E
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
bne _080A878C
|
|
movs r0, 0xC0
|
|
lsls r0, 6
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _080A878C
|
|
bl sub_80AB5A4
|
|
_080A878C:
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r1, [r0]
|
|
bics r1, r5
|
|
str r1, [r0]
|
|
movs r2, 0xB8
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl sub_80A6688
|
|
_080A87A2:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A87A8: .4byte gGroundLives
|
|
thumb_func_end sub_80A8750
|
|
|
|
thumb_func_start sub_80A87AC
|
|
sub_80A87AC:
|
|
push {lr}
|
|
adds r3, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A87DC
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A87D8
|
|
movs r1, 0x90
|
|
lsls r1, 1
|
|
adds r0, r2, r1
|
|
adds r1, r3, 0
|
|
bl sub_809CD8C
|
|
_080A87D8:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A87DC: .4byte gGroundLives
|
|
thumb_func_end sub_80A87AC
|
|
|
|
thumb_func_start sub_80A87E0
|
|
sub_80A87E0:
|
|
push {r4,lr}
|
|
adds r3, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8820
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A8824
|
|
movs r0, 0x7
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_809B1C0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8824
|
|
movs r1, 0x90
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
movs r1, 0x5
|
|
bl sub_809CD8C
|
|
movs r0, 0x1
|
|
b _080A8826
|
|
.align 2, 0
|
|
_080A8820: .4byte gGroundLives
|
|
_080A8824:
|
|
movs r0, 0
|
|
_080A8826:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A87E0
|
|
|
|
thumb_func_start sub_80A882C
|
|
sub_80A882C:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8850
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A8854
|
|
movs r0, 0
|
|
b _080A8858
|
|
.align 2, 0
|
|
_080A8850: .4byte gGroundLives
|
|
_080A8854:
|
|
adds r0, r2, 0
|
|
adds r0, 0x38
|
|
_080A8858:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A882C
|
|
|
|
thumb_func_start sub_80A885C
|
|
sub_80A885C:
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r2, 16
|
|
asrs r3, r2, 16
|
|
ldr r2, _080A8884
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A8888
|
|
movs r0, 0
|
|
b _080A8898
|
|
.align 2, 0
|
|
_080A8884: .4byte gGroundLives
|
|
_080A8888:
|
|
adds r0, r2, 0
|
|
adds r0, 0x38
|
|
adds r1, r4, 0
|
|
adds r2, r3, 0
|
|
bl GetPredefinedScript
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_080A8898:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A885C
|
|
|
|
thumb_func_start sub_80A88A0
|
|
sub_80A88A0:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A88C4
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A88C8
|
|
movs r0, 0
|
|
b _080A88D4
|
|
.align 2, 0
|
|
_080A88C4: .4byte gGroundLives
|
|
_080A88C8:
|
|
adds r0, r2, 0
|
|
adds r0, 0x38
|
|
bl sub_809D678
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_080A88D4:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A88A0
|
|
|
|
thumb_func_start GroundLives_ExecuteScript
|
|
GroundLives_ExecuteScript:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
adds r7, r1, 0
|
|
adds r6, r2, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
ldr r1, _080A8914
|
|
lsls r0, r4, 5
|
|
subs r0, r4
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r5, r1, r0
|
|
ldr r1, _080A8918
|
|
movs r0, 0x2
|
|
ldrsh r3, [r5, r0]
|
|
str r6, [sp]
|
|
movs r0, 0
|
|
adds r2, r4, 0
|
|
bl Log
|
|
movs r0, 0x2
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A891C
|
|
movs r0, 0
|
|
b _080A8934
|
|
.align 2, 0
|
|
_080A8914: .4byte gGroundLives
|
|
_080A8918: .4byte gUnknown_81181B0
|
|
_080A891C:
|
|
adds r0, r5, 0
|
|
adds r0, 0x38
|
|
ldr r3, _080A893C
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl GroundScript_ExecutePP
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080A8934:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A893C: .4byte gUnknown_81181F4
|
|
thumb_func_end GroundLives_ExecuteScript
|
|
|
|
thumb_func_start _ExecutePlayerScript
|
|
_ExecutePlayerScript:
|
|
push {r4,r5,lr}
|
|
adds r3, r0, 0
|
|
adds r5, r1, 0
|
|
adds r4, r2, 0
|
|
movs r0, 0xAF
|
|
lsls r0, 1
|
|
adds r1, r3, r0
|
|
movs r2, 0
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r1]
|
|
movs r0, 0xB0
|
|
lsls r0, 1
|
|
adds r1, r3, r0
|
|
movs r0, 0x1
|
|
strh r0, [r1]
|
|
movs r1, 0xB2
|
|
lsls r1, 1
|
|
adds r0, r3, r1
|
|
str r2, [r0]
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
ldr r1, _080A898C
|
|
cmp r0, r1
|
|
beq _080A8984
|
|
strh r1, [r2]
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r3, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080A8984:
|
|
cmp r4, 0
|
|
bne _080A8990
|
|
movs r0, 0
|
|
b _080A89A2
|
|
.align 2, 0
|
|
_080A898C: .4byte 0x00000807
|
|
_080A8990:
|
|
adds r0, r3, 0
|
|
adds r0, 0x38
|
|
ldr r3, _080A89A8
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl GroundScript_ExecutePP
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_080A89A2:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A89A8: .4byte gUnknown_8118218
|
|
thumb_func_end _ExecutePlayerScript
|
|
|
|
thumb_func_start sub_80A89AC
|
|
sub_80A89AC:
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r4, _080A89CC
|
|
lsls r3, r0, 5
|
|
subs r3, r0
|
|
lsls r3, 4
|
|
ldr r0, [r4]
|
|
adds r0, r3
|
|
bl _ExecutePlayerScript
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A89CC: .4byte gGroundLives
|
|
thumb_func_end sub_80A89AC
|
|
|
|
thumb_func_start GroundLives_ExecutePlayerScriptActionLives
|
|
GroundLives_ExecutePlayerScriptActionLives:
|
|
push {r4-r6,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
lsls r1, 16
|
|
asrs r4, r1, 16
|
|
cmp r2, 0
|
|
blt _080A8A50
|
|
cmp r4, 0
|
|
blt _080A8A50
|
|
ldr r1, _080A8A48
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r5, r1, r0
|
|
lsls r0, r4, 5
|
|
subs r0, r4
|
|
lsls r0, 4
|
|
adds r1, r0
|
|
movs r2, 0x2
|
|
ldrsh r0, [r5, r2]
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
cmp r0, r2
|
|
beq _080A8A50
|
|
movs r3, 0x2
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, r2
|
|
beq _080A8A50
|
|
adds r6, r1, 0
|
|
adds r6, 0x38
|
|
adds r0, r6, 0
|
|
mov r1, sp
|
|
movs r2, 0x2
|
|
bl GetPredefinedScript
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8A50
|
|
movs r1, 0x1
|
|
lsls r0, r4, 16
|
|
orrs r0, r1
|
|
str r0, [sp, 0xC]
|
|
adds r1, r5, 0
|
|
adds r1, 0x40
|
|
ldr r3, _080A8A4C
|
|
adds r0, r6, 0
|
|
movs r2, 0x3
|
|
bl ExecutePredefinedScript
|
|
add r1, sp, 0xC
|
|
adds r0, r5, 0
|
|
mov r2, sp
|
|
bl _ExecutePlayerScript
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _080A8A52
|
|
.align 2, 0
|
|
_080A8A48: .4byte gGroundLives
|
|
_080A8A4C: .4byte gUnknown_8118250
|
|
_080A8A50:
|
|
movs r0, 0
|
|
_080A8A52:
|
|
add sp, 0x10
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GroundLives_ExecutePlayerScriptActionLives
|
|
|
|
thumb_func_start sub_80A8A5C
|
|
sub_80A8A5C:
|
|
push {r4-r6,lr}
|
|
sub sp, 0x1C
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
lsls r1, 16
|
|
asrs r5, r1, 16
|
|
cmp r2, 0
|
|
blt _080A8AC0
|
|
cmp r5, 0
|
|
blt _080A8AC0
|
|
ldr r1, _080A8ABC
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r6, r1, r0
|
|
adds r0, r5, 0
|
|
mov r1, sp
|
|
movs r2, 0x2
|
|
bl sub_80AC274
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8AC0
|
|
movs r1, 0x2
|
|
lsls r0, r5, 16
|
|
orrs r0, r1
|
|
str r0, [sp, 0x18]
|
|
add r4, sp, 0xC
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x3
|
|
bl sub_80AC274
|
|
adds r1, r6, 0
|
|
adds r1, 0x40
|
|
adds r0, r5, 0
|
|
adds r2, r4, 0
|
|
bl GroundObject_ExecuteScript
|
|
add r1, sp, 0x18
|
|
adds r0, r6, 0
|
|
mov r2, sp
|
|
bl _ExecutePlayerScript
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _080A8AC2
|
|
.align 2, 0
|
|
_080A8ABC: .4byte gGroundLives
|
|
_080A8AC0:
|
|
movs r0, 0
|
|
_080A8AC2:
|
|
add sp, 0x1C
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8A5C
|
|
|
|
thumb_func_start sub_80A8ACC
|
|
sub_80A8ACC:
|
|
push {r4,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
lsls r1, 16
|
|
asrs r3, r1, 16
|
|
cmp r2, 0
|
|
blt _080A8B10
|
|
cmp r3, 0
|
|
blt _080A8B10
|
|
ldr r1, _080A8B0C
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r4, r1, r0
|
|
adds r0, r3, 0
|
|
mov r1, sp
|
|
bl sub_80ADC64
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8B10
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
mov r2, sp
|
|
bl _ExecutePlayerScript
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _080A8B12
|
|
.align 2, 0
|
|
_080A8B0C: .4byte gGroundLives
|
|
_080A8B10:
|
|
movs r0, 0
|
|
_080A8B12:
|
|
add sp, 0xC
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8ACC
|
|
|
|
thumb_func_start GroundLivesNotifyAll
|
|
GroundLivesNotifyAll:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 16
|
|
asrs r7, r0, 16
|
|
ldr r0, _080A8B70
|
|
ldr r4, [r0]
|
|
movs r5, 0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r8, r0
|
|
movs r6, 0x80
|
|
lsls r6, 9
|
|
_080A8B36:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, r8
|
|
beq _080A8B4E
|
|
adds r0, r4, 0
|
|
adds r0, 0x38
|
|
adds r1, r7, 0
|
|
bl GroundScriptNotify
|
|
orrs r5, r0
|
|
lsls r0, r5, 24
|
|
lsrs r5, r0, 24
|
|
_080A8B4E:
|
|
adds r0, r6, 0
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
adds r6, r1
|
|
asrs r0, 16
|
|
movs r1, 0xF8
|
|
lsls r1, 1
|
|
adds r4, r1
|
|
cmp r0, 0x17
|
|
ble _080A8B36
|
|
adds r0, r5, 0
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A8B70: .4byte gGroundLives
|
|
thumb_func_end GroundLivesNotifyAll
|
|
|
|
thumb_func_start GroundLivesCancelAll
|
|
GroundLivesCancelAll:
|
|
push {r4-r7,lr}
|
|
ldr r0, _080A8BB8
|
|
ldr r4, [r0]
|
|
movs r5, 0
|
|
movs r7, 0x1
|
|
negs r7, r7
|
|
movs r6, 0x80
|
|
lsls r6, 9
|
|
_080A8B84:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, r7
|
|
beq _080A8B9A
|
|
adds r0, r4, 0
|
|
adds r0, 0x38
|
|
bl GroundScript_Cancel
|
|
orrs r5, r0
|
|
lsls r0, r5, 24
|
|
lsrs r5, r0, 24
|
|
_080A8B9A:
|
|
adds r0, r6, 0
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
adds r6, r1
|
|
asrs r0, 16
|
|
movs r1, 0xF8
|
|
lsls r1, 1
|
|
adds r4, r1
|
|
cmp r0, 0x17
|
|
ble _080A8B84
|
|
adds r0, r5, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A8BB8: .4byte gGroundLives
|
|
thumb_func_end GroundLivesCancelAll
|
|
|
|
thumb_func_start sub_80A8BBC
|
|
sub_80A8BBC:
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8BD4
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_080A8BD4: .4byte gGroundLives
|
|
thumb_func_end sub_80A8BBC
|
|
|
|
thumb_func_start sub_80A8BD8
|
|
sub_80A8BD8:
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r3, _080A8BF8
|
|
lsls r2, r0, 5
|
|
subs r2, r0
|
|
lsls r2, 4
|
|
ldr r0, [r3]
|
|
adds r0, r2
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r2, r0, r3
|
|
ldr r2, [r2]
|
|
str r2, [r1]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_080A8BF8: .4byte gGroundLives
|
|
thumb_func_end sub_80A8BD8
|
|
|
|
thumb_func_start sub_80A8BFC
|
|
sub_80A8BFC:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8C20
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A8C24
|
|
movs r0, 0
|
|
b _080A8C28
|
|
.align 2, 0
|
|
_080A8C20: .4byte gGroundLives
|
|
_080A8C24:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r2, r1]
|
|
_080A8C28:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8BFC
|
|
|
|
thumb_func_start sub_80A8C2C
|
|
sub_80A8C2C:
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl sub_80A7DDC
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8C2C
|
|
|
|
thumb_func_start sub_80A8C4C
|
|
sub_80A8C4C:
|
|
push {r4,r5,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8C80
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A8C90
|
|
adds r0, r1, 0
|
|
bl sub_80A8D54
|
|
adds r1, r0, 0
|
|
cmp r1, 0
|
|
beq _080A8C84
|
|
ldr r0, [r1, 0x4]
|
|
str r0, [r5]
|
|
b _080A8C8A
|
|
.align 2, 0
|
|
_080A8C80: .4byte gGroundLives
|
|
_080A8C84:
|
|
movs r0, 0x63
|
|
strb r0, [r5]
|
|
strb r1, [r5, 0x1]
|
|
_080A8C8A:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
b _080A8C92
|
|
_080A8C90:
|
|
movs r0, 0
|
|
_080A8C92:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8C4C
|
|
|
|
thumb_func_start sub_80A8C98
|
|
sub_80A8C98:
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8CD4
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r3, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r3, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A8CE8
|
|
ldr r1, _080A8CD8
|
|
ldrh r2, [r1]
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, 0
|
|
beq _080A8CE8
|
|
movs r0, 0x8
|
|
ldrsh r3, [r3, r0]
|
|
_080A8CC6:
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
cmp r0, r3
|
|
bne _080A8CDC
|
|
movs r0, 0x1
|
|
b _080A8CEA
|
|
.align 2, 0
|
|
_080A8CD4: .4byte gGroundLives
|
|
_080A8CD8: .4byte gUnknown_8117FCE
|
|
_080A8CDC:
|
|
adds r1, 0x2
|
|
ldrh r2, [r1]
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, 0
|
|
bne _080A8CC6
|
|
_080A8CE8:
|
|
movs r0, 0
|
|
_080A8CEA:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8C98
|
|
|
|
thumb_func_start sub_80A8CF0
|
|
sub_80A8CF0:
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
asrs r3, r0, 16
|
|
ldr r1, _080A8CFC
|
|
b _080A8D0E
|
|
.align 2, 0
|
|
_080A8CFC: .4byte gUnknown_8117FCE
|
|
_080A8D00:
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
cmp r0, r3
|
|
bne _080A8D0C
|
|
movs r0, 0x1
|
|
b _080A8D1A
|
|
_080A8D0C:
|
|
adds r1, 0x2
|
|
_080A8D0E:
|
|
ldrh r2, [r1]
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, 0
|
|
bne _080A8D00
|
|
movs r0, 0
|
|
_080A8D1A:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8CF0
|
|
|
|
thumb_func_start sub_80A8D20
|
|
sub_80A8D20:
|
|
push {lr}
|
|
movs r0, 0
|
|
bl sub_80A7AE8
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8D50
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r1, 0x90
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
bl sub_809CDB8
|
|
movs r1, 0
|
|
cmp r0, 0x1
|
|
bne _080A8D4A
|
|
movs r1, 0x1
|
|
_080A8D4A:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A8D50: .4byte gGroundLives
|
|
thumb_func_end sub_80A8D20
|
|
|
|
thumb_func_start sub_80A8D54
|
|
sub_80A8D54:
|
|
push {r4,r5,lr}
|
|
sub sp, 0x14
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
mov r0, sp
|
|
bl sub_80A7B94
|
|
mov r0, sp
|
|
ldrh r1, [r0]
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0x1
|
|
beq _080A8D76
|
|
cmp r0, 0x6
|
|
beq _080A8D76
|
|
cmp r0, 0x21
|
|
bne _080A8D7C
|
|
_080A8D76:
|
|
bl sub_808D3BC
|
|
b _080A8E94
|
|
_080A8D7C:
|
|
cmp r0, 0x2
|
|
beq _080A8D88
|
|
cmp r0, 0x7
|
|
beq _080A8D88
|
|
cmp r0, 0x22
|
|
bne _080A8D8E
|
|
_080A8D88:
|
|
bl sub_808D3F8
|
|
b _080A8E94
|
|
_080A8D8E:
|
|
cmp r0, 0x3
|
|
beq _080A8D9A
|
|
cmp r0, 0x8
|
|
beq _080A8D9A
|
|
cmp r0, 0x23
|
|
bne _080A8DA0
|
|
_080A8D9A:
|
|
bl GetPlayerPokemonStruct
|
|
b _080A8E94
|
|
_080A8DA0:
|
|
adds r0, r1, 0
|
|
subs r0, 0xA
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x3
|
|
bhi _080A8DF8
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
adds r5, r0, 0
|
|
subs r5, 0xA
|
|
bl sub_8098F88
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8E92
|
|
movs r0, 0x9
|
|
bl sub_80023E4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8DD6
|
|
add r4, sp, 0x4
|
|
adds r0, r4, 0
|
|
bl sub_808D6A4
|
|
b _080A8DDE
|
|
_080A8DD6:
|
|
add r4, sp, 0x4
|
|
adds r0, r4, 0
|
|
bl sub_808D654
|
|
_080A8DDE:
|
|
cmp r5, r0
|
|
bge _080A8E92
|
|
ldr r2, _080A8DF4
|
|
lsls r0, r5, 2
|
|
adds r0, r4, r0
|
|
ldr r1, [r0]
|
|
movs r0, 0x58
|
|
muls r1, r0
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
b _080A8E94
|
|
.align 2, 0
|
|
_080A8DF4: .4byte gRecruitedPokemonRef
|
|
_080A8DF8:
|
|
adds r0, r1, 0
|
|
subs r0, 0xE
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xF
|
|
bhi _080A8E92
|
|
movs r0, 0
|
|
movs r1, 0x10
|
|
bl GetScriptVarValue
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_8002658
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _080A8E92
|
|
mov r0, sp
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
adds r5, r0, 0
|
|
subs r5, 0xE
|
|
add r4, sp, 0x4
|
|
adds r0, r1, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8092638
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r5, r0
|
|
bge _080A8E92
|
|
ldr r2, _080A8E6C
|
|
ldr r0, [r4, 0x8]
|
|
adds r0, r5
|
|
movs r1, 0x58
|
|
muls r1, r0
|
|
ldr r0, [r2]
|
|
adds r4, r0, r1
|
|
movs r0, 0x9
|
|
bl sub_80023E4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8E70
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A8E92
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
bne _080A8E92
|
|
adds r0, r4, 0
|
|
b _080A8E94
|
|
.align 2, 0
|
|
_080A8E6C: .4byte gRecruitedPokemonRef
|
|
_080A8E70:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A8E92
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
bne _080A8E92
|
|
movs r1, 0
|
|
ldrb r0, [r4, 0x4]
|
|
cmp r0, 0x41
|
|
bne _080A8E8A
|
|
movs r1, 0x1
|
|
_080A8E8A:
|
|
cmp r1, 0
|
|
bne _080A8E92
|
|
adds r0, r4, 0
|
|
b _080A8E94
|
|
_080A8E92:
|
|
movs r0, 0
|
|
_080A8E94:
|
|
add sp, 0x14
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8D54
|
|
|
|
thumb_func_start sub_80A8E9C
|
|
sub_80A8E9C:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8EBC
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
ldrsh r0, [r0, r1]
|
|
bl sub_80A8D54
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A8EBC: .4byte gGroundLives
|
|
thumb_func_end sub_80A8E9C
|
|
|
|
thumb_func_start sub_80A8EC0
|
|
sub_80A8EC0:
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
mov r0, sp
|
|
strh r1, [r0]
|
|
mov r5, sp
|
|
adds r5, 0x2
|
|
adds r1, r5, 0
|
|
bl sub_80A7DDC
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bl sub_80A8D54
|
|
cmp r0, 0
|
|
beq _080A8EF0
|
|
adds r1, r0, 0
|
|
adds r1, 0x4C
|
|
adds r0, r4, 0
|
|
movs r2, 0xA
|
|
bl sub_80922B4
|
|
b _080A8F44
|
|
_080A8EF0:
|
|
mov r0, sp
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0x20
|
|
bne _080A8F00
|
|
movs r0, 0
|
|
ldrsh r1, [r5, r0]
|
|
b _080A8F34
|
|
_080A8F00:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A8F3C
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r2, [r0, r1]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r1, _080A8F2C
|
|
adds r0, r1
|
|
cmp r2, 0x34
|
|
beq _080A8F20
|
|
cmp r2, 0x64
|
|
bne _080A8F30
|
|
_080A8F20:
|
|
ldr r1, [r0, 0x4]
|
|
adds r0, r4, 0
|
|
bl strcpy
|
|
b _080A8F44
|
|
.align 2, 0
|
|
_080A8F2C: .4byte gGroundLivesTypeData_811E63C
|
|
_080A8F30:
|
|
movs r2, 0x2
|
|
ldrsh r1, [r0, r2]
|
|
_080A8F34:
|
|
adds r0, r4, 0
|
|
bl CopyMonsterNametoBuffer
|
|
b _080A8F44
|
|
_080A8F3C:
|
|
ldr r1, _080A8F4C
|
|
adds r0, r4, 0
|
|
bl strcpy
|
|
_080A8F44:
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8F4C: .4byte gGroundLives_InvalidityText
|
|
thumb_func_end sub_80A8EC0
|
|
|
|
thumb_func_start sub_80A8F50
|
|
sub_80A8F50:
|
|
push {r4,r5,lr}
|
|
sub sp, 0x80
|
|
adds r4, r0, 0
|
|
adds r5, r2, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
mov r0, sp
|
|
bl sub_80A8EC0
|
|
adds r0, r4, 0
|
|
mov r1, sp
|
|
adds r2, r5, 0
|
|
bl BoundedCopyStringtoBuffer
|
|
add sp, 0x80
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8F50
|
|
|
|
thumb_func_start sub_80A8F74
|
|
sub_80A8F74:
|
|
push {lr}
|
|
adds r3, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8F98
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r2, 0x2
|
|
ldrsh r1, [r0, r2]
|
|
adds r0, r3, 0
|
|
bl sub_80A8EC0
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8F98: .4byte gGroundLives
|
|
thumb_func_end sub_80A8F74
|
|
|
|
thumb_func_start sub_80A8F9C
|
|
sub_80A8F9C:
|
|
push {lr}
|
|
adds r3, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A8FC4
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A8FC8
|
|
movs r0, 0
|
|
str r0, [r3]
|
|
str r0, [r3, 0x4]
|
|
b _080A8FD0
|
|
.align 2, 0
|
|
_080A8FC4: .4byte gGroundLives
|
|
_080A8FC8:
|
|
ldr r0, [r2, 0xC]
|
|
ldr r1, [r2, 0x10]
|
|
str r0, [r3]
|
|
str r1, [r3, 0x4]
|
|
_080A8FD0:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r2, r1]
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8F9C
|
|
|
|
thumb_func_start sub_80A8FD8
|
|
sub_80A8FD8:
|
|
push {lr}
|
|
adds r3, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A9000
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A9004
|
|
movs r0, 0
|
|
str r0, [r3]
|
|
b _080A901E
|
|
.align 2, 0
|
|
_080A9000: .4byte gGroundLives
|
|
_080A9004:
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r0, r2, r1
|
|
ldr r0, [r0]
|
|
ldr r1, [r2, 0x14]
|
|
adds r0, r1
|
|
str r0, [r3]
|
|
movs r1, 0xA4
|
|
lsls r1, 1
|
|
adds r0, r2, r1
|
|
ldr r0, [r0]
|
|
ldr r1, [r2, 0x18]
|
|
adds r0, r1
|
|
_080A901E:
|
|
str r0, [r3, 0x4]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r2, r1]
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8FD8
|
|
|
|
thumb_func_start sub_80A9028
|
|
sub_80A9028:
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r3, _080A904C
|
|
lsls r2, r0, 5
|
|
subs r2, r0
|
|
lsls r2, 4
|
|
ldr r4, [r3]
|
|
adds r4, r2
|
|
adds r0, r4, 0
|
|
bl sub_80A9F20
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A904C: .4byte gGroundLives
|
|
thumb_func_end sub_80A9028
|
|
|
|
thumb_func_start sub_80A9050
|
|
sub_80A9050:
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A9078
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
adds r3, r0, 0
|
|
cmp r1, r0
|
|
bne _080A907C
|
|
strb r3, [r4]
|
|
b _080A9086
|
|
.align 2, 0
|
|
_080A9078: .4byte gGroundLives
|
|
_080A907C:
|
|
movs r1, 0xA1
|
|
lsls r1, 1
|
|
adds r0, r2, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
_080A9086:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r2, r1]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A9050
|
|
|
|
thumb_func_start sub_80A9090
|
|
sub_80A9090:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 24
|
|
asrs r3, r1, 24
|
|
ldr r2, _080A90C4
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r2, r0, r1
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A90BA
|
|
movs r1, 0xA1
|
|
lsls r1, 1
|
|
adds r0, r2, r1
|
|
strb r3, [r0]
|
|
_080A90BA:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r2, r1]
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A90C4: .4byte gGroundLives
|
|
thumb_func_end sub_80A9090
|
|
|
|
thumb_func_start sub_80A90C8
|
|
sub_80A90C8:
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r2, _080A90E4
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r1, 0xA0
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_080A90E4: .4byte gGroundLives
|
|
thumb_func_end sub_80A90C8
|
|
|
|
thumb_func_start sub_80A90E8
|
|
sub_80A90E8:
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
lsls r1, 16
|
|
asrs r3, r1, 16
|
|
cmp r2, r3
|
|
beq _080A9196
|
|
ldr r1, _080A916C
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r5, r1, r0
|
|
lsls r0, r3, 5
|
|
subs r0, r3
|
|
lsls r0, 4
|
|
adds r4, r1, r0
|
|
movs r1, 0x2
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
beq _080A9196
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, r1
|
|
beq _080A9196
|
|
movs r3, 0xA2
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldr r0, [r0]
|
|
ldr r1, [r5, 0x14]
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r2, 0xA4
|
|
lsls r2, 1
|
|
adds r0, r5, r2
|
|
ldr r0, [r0]
|
|
ldr r1, [r5, 0x18]
|
|
adds r0, r1
|
|
str r0, [sp, 0x4]
|
|
adds r3, r4, r3
|
|
ldr r0, [r3]
|
|
ldr r1, [r4, 0x14]
|
|
adds r0, r1
|
|
str r0, [sp, 0x8]
|
|
adds r2, r4, r2
|
|
ldr r0, [r2]
|
|
ldr r1, [r4, 0x18]
|
|
adds r0, r1
|
|
add r2, sp, 0x8
|
|
str r0, [r2, 0x4]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x24
|
|
bgt _080A9170
|
|
adds r1, r5, 0
|
|
adds r1, 0xC
|
|
adds r3, r4, 0
|
|
adds r3, 0xC
|
|
mov r0, sp
|
|
bl SizedDeltaDirection8
|
|
b _080A917E
|
|
.align 2, 0
|
|
_080A916C: .4byte gGroundLives
|
|
_080A9170:
|
|
adds r1, r5, 0
|
|
adds r1, 0xC
|
|
adds r3, r4, 0
|
|
adds r3, 0xC
|
|
mov r0, sp
|
|
bl SizedDeltaDirection4
|
|
_080A917E:
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080A9196
|
|
movs r2, 0xA1
|
|
lsls r2, 1
|
|
adds r0, r5, r2
|
|
strb r1, [r0]
|
|
movs r0, 0x1
|
|
b _080A9198
|
|
_080A9196:
|
|
movs r0, 0
|
|
_080A9198:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A90E8
|
|
|
|
thumb_func_start sub_80A91A0
|
|
sub_80A91A0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
lsls r1, 16
|
|
asrs r4, r1, 16
|
|
cmp r2, r4
|
|
beq _080A928E
|
|
ldr r1, _080A9260
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r7, r1, r0
|
|
lsls r0, r4, 5
|
|
subs r0, r4
|
|
lsls r0, 4
|
|
adds r1, r0
|
|
mov r8, r1
|
|
movs r1, 0x2
|
|
ldrsh r0, [r7, r1]
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
mov r10, r2
|
|
cmp r0, r10
|
|
beq _080A928E
|
|
mov r3, r8
|
|
movs r1, 0x2
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, r10
|
|
beq _080A928E
|
|
movs r3, 0xA2
|
|
lsls r3, 1
|
|
adds r0, r7, r3
|
|
ldr r0, [r0]
|
|
ldr r1, [r7, 0x14]
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r2, 0xA4
|
|
lsls r2, 1
|
|
adds r0, r7, r2
|
|
ldr r0, [r0]
|
|
ldr r1, [r7, 0x18]
|
|
adds r0, r1
|
|
str r0, [sp, 0x4]
|
|
add r3, r8
|
|
ldr r0, [r3]
|
|
mov r3, r8
|
|
ldr r1, [r3, 0x14]
|
|
adds r0, r1
|
|
str r0, [sp, 0x8]
|
|
add r2, r8
|
|
ldr r0, [r2]
|
|
ldr r1, [r3, 0x18]
|
|
adds r0, r1
|
|
add r4, sp, 0x8
|
|
str r0, [r4, 0x4]
|
|
adds r5, r7, 0
|
|
adds r5, 0xC
|
|
mov r6, r8
|
|
adds r6, 0xC
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
adds r3, r6, 0
|
|
bl SizedDeltaDirection8
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
mov r9, r0
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
adds r3, r6, 0
|
|
bl SizedDeltaDirection4
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r9, r10
|
|
beq _080A928E
|
|
cmp r1, r10
|
|
beq _080A928E
|
|
movs r2, 0x2
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0x24
|
|
bgt _080A9264
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r0, r7, r3
|
|
mov r2, r9
|
|
strb r2, [r0]
|
|
b _080A926C
|
|
.align 2, 0
|
|
_080A9260: .4byte gGroundLives
|
|
_080A9264:
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r0, r7, r3
|
|
strb r1, [r0]
|
|
_080A926C:
|
|
mov r2, r8
|
|
movs r3, 0x2
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0x25
|
|
bgt _080A927A
|
|
mov r0, r9
|
|
b _080A927C
|
|
_080A927A:
|
|
adds r0, r1, 0
|
|
_080A927C:
|
|
movs r1, 0x5
|
|
bl sub_8002984
|
|
movs r1, 0xA1
|
|
lsls r1, 1
|
|
add r1, r8
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
b _080A9290
|
|
_080A928E:
|
|
movs r0, 0
|
|
_080A9290:
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A91A0
|
|
|
|
thumb_func_start GetLivesCollision_80A92A0
|
|
GetLivesCollision_80A92A0:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
mov r9, r1
|
|
adds r4, r2, 0
|
|
lsls r0, 16
|
|
asrs r6, r0, 16
|
|
ldr r0, _080A931C
|
|
ldr r0, [r0]
|
|
mov r12, r0
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r8, r0
|
|
movs r5, 0x80
|
|
lsls r5, 9
|
|
_080A92C2:
|
|
cmp r2, r6
|
|
beq _080A9320
|
|
mov r1, r12
|
|
movs r7, 0x2
|
|
ldrsh r0, [r1, r7]
|
|
cmp r0, r8
|
|
beq _080A9320
|
|
movs r0, 0x8E
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
mov r1, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A9320
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r1, [r0]
|
|
ldr r0, [r3]
|
|
cmp r1, r0
|
|
bge _080A9320
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r1, [r0]
|
|
ldr r0, [r4]
|
|
cmp r1, r0
|
|
ble _080A9320
|
|
movs r0, 0xA4
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r1, [r0]
|
|
ldr r0, [r3, 0x4]
|
|
cmp r1, r0
|
|
bge _080A9320
|
|
movs r0, 0xA8
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r1, [r0]
|
|
ldr r0, [r4, 0x4]
|
|
cmp r1, r0
|
|
ble _080A9320
|
|
adds r0, r2, 0
|
|
b _080A9338
|
|
.align 2, 0
|
|
_080A931C: .4byte gGroundLives
|
|
_080A9320:
|
|
adds r0, r5, 0
|
|
movs r7, 0x80
|
|
lsls r7, 9
|
|
adds r5, r7
|
|
asrs r2, r0, 16
|
|
movs r0, 0xF8
|
|
lsls r0, 1
|
|
add r12, r0
|
|
cmp r2, 0x17
|
|
ble _080A92C2
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A9338:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetLivesCollision_80A92A0
|
|
|
|
thumb_func_start sub_80A9344
|
|
sub_80A9344:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
mov r9, r1
|
|
str r2, [sp]
|
|
adds r5, r3, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
mov r8, r0
|
|
ldr r0, _080A93C4
|
|
ldr r0, [r0]
|
|
mov r12, r0
|
|
movs r4, 0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
mov r10, r0
|
|
movs r7, 0x80
|
|
lsls r7, 9
|
|
_080A936E:
|
|
cmp r4, r8
|
|
beq _080A93C8
|
|
mov r1, r12
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, r10
|
|
beq _080A93C8
|
|
movs r0, 0x8E
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
mov r6, r9
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _080A93C8
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r1, [r0]
|
|
mov r6, r12
|
|
ldr r0, [r6, 0x14]
|
|
adds r2, r1, r0
|
|
movs r0, 0xA4
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r1, [r0]
|
|
ldr r0, [r6, 0x18]
|
|
adds r3, r1, r0
|
|
ldr r0, [r5]
|
|
cmp r2, r0
|
|
bge _080A93C8
|
|
ldr r1, [sp]
|
|
ldr r0, [r1]
|
|
cmp r2, r0
|
|
ble _080A93C8
|
|
ldr r0, [r5, 0x4]
|
|
cmp r3, r0
|
|
bge _080A93C8
|
|
ldr r0, [r1, 0x4]
|
|
cmp r3, r0
|
|
ble _080A93C8
|
|
adds r0, r4, 0
|
|
b _080A93E0
|
|
.align 2, 0
|
|
_080A93C4: .4byte gGroundLives
|
|
_080A93C8:
|
|
adds r0, r7, 0
|
|
movs r2, 0x80
|
|
lsls r2, 9
|
|
adds r7, r2
|
|
asrs r4, r0, 16
|
|
movs r6, 0xF8
|
|
lsls r6, 1
|
|
add r12, r6
|
|
cmp r4, 0x17
|
|
ble _080A936E
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A93E0:
|
|
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_80A9344
|
|
|
|
thumb_func_start sub_80A93F0
|
|
sub_80A93F0:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
ldr r2, _080A947C
|
|
lsls r1, r0, 5
|
|
subs r1, r0
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
mov r12, r0
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bge _080A941A
|
|
ldr r1, _080A9480
|
|
adds r0, r1
|
|
_080A941A:
|
|
asrs r5, r0, 11
|
|
str r5, [sp]
|
|
movs r0, 0xA4
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bge _080A942E
|
|
ldr r7, _080A9480
|
|
adds r0, r7
|
|
_080A942E:
|
|
asrs r4, r0, 11
|
|
str r4, [sp, 0x4]
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
subs r1, r0, 0x1
|
|
cmp r1, 0
|
|
bge _080A9444
|
|
ldr r7, _080A9484
|
|
adds r1, r0, r7
|
|
_080A9444:
|
|
asrs r2, r1, 11
|
|
movs r0, 0xA8
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
subs r1, r0, 0x1
|
|
cmp r1, 0
|
|
bge _080A9458
|
|
ldr r7, _080A9484
|
|
adds r1, r0, r7
|
|
_080A9458:
|
|
asrs r3, r1, 11
|
|
subs r0, r2, r5
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
subs r0, r3, r4
|
|
adds r0, 0x1
|
|
add r2, sp, 0x8
|
|
str r0, [r2, 0x4]
|
|
adds r0, r6, 0
|
|
mov r1, sp
|
|
bl sub_80A5934
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A947C: .4byte gGroundLives
|
|
_080A9480: .4byte 0x000007ff
|
|
_080A9484: .4byte 0x000007fe
|
|
thumb_func_end sub_80A93F0
|
|
|
|
thumb_func_start sub_80A9488
|
|
sub_80A9488:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
adds r5, r0, 0
|
|
adds r7, r1, 0
|
|
mov r8, r2
|
|
ldr r0, [r7]
|
|
cmp r0, 0
|
|
bge _080A94A0
|
|
ldr r1, _080A9528
|
|
adds r0, r1
|
|
_080A94A0:
|
|
asrs r0, 11
|
|
mov r12, r0
|
|
str r0, [sp]
|
|
ldr r0, [r7, 0x4]
|
|
cmp r0, 0
|
|
bge _080A94B0
|
|
ldr r3, _080A9528
|
|
adds r0, r3
|
|
_080A94B0:
|
|
asrs r4, r0, 11
|
|
str r4, [sp, 0x4]
|
|
mov r6, r8
|
|
ldr r3, [r6]
|
|
subs r0, r3, 0x1
|
|
cmp r0, 0
|
|
bge _080A94C2
|
|
ldr r6, _080A952C
|
|
adds r0, r3, r6
|
|
_080A94C2:
|
|
asrs r1, r0, 11
|
|
mov r0, r8
|
|
ldr r3, [r0, 0x4]
|
|
subs r0, r3, 0x1
|
|
cmp r0, 0
|
|
bge _080A94D2
|
|
ldr r6, _080A952C
|
|
adds r0, r3, r6
|
|
_080A94D2:
|
|
asrs r2, r0, 11
|
|
mov r3, r12
|
|
subs r0, r1, r3
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
subs r0, r2, r4
|
|
adds r0, 0x1
|
|
add r2, sp, 0x8
|
|
str r0, [r2, 0x4]
|
|
movs r6, 0x8E
|
|
lsls r6, 1
|
|
adds r0, r5, r6
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
adds r4, r2, 0
|
|
cmp r0, 0
|
|
beq _080A9504
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl CheckMapCollision_80A585C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A9522
|
|
_080A9504:
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A9530
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl sub_80A58C8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9530
|
|
_080A9522:
|
|
movs r0, 0x1
|
|
b _080A95A0
|
|
.align 2, 0
|
|
_080A9528: .4byte 0x000007ff
|
|
_080A952C: .4byte 0x000007fe
|
|
_080A9530:
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldr r0, [r0]
|
|
movs r1, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A9556
|
|
movs r6, 0
|
|
ldrsh r0, [r5, r6]
|
|
adds r2, r7, 0
|
|
mov r3, r8
|
|
bl GetLivesCollision_80A92A0
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080A9556
|
|
movs r0, 0x4
|
|
b _080A95A0
|
|
_080A9556:
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A957A
|
|
movs r0, 0x4
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
bl sub_80AC4C8
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080A957A
|
|
movs r0, 0x8
|
|
b _080A95A0
|
|
_080A957A:
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A959E
|
|
movs r0, 0x40
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
bl FindGroundEvent
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080A959E
|
|
movs r0, 0x10
|
|
b _080A95A0
|
|
_080A959E:
|
|
movs r0, 0
|
|
_080A95A0:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A9488
|
|
|
|
thumb_func_start sub_80A95AC
|
|
sub_80A95AC:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x14
|
|
adds r5, r0, 0
|
|
adds r7, r1, 0
|
|
mov r8, r2
|
|
ldr r0, [r7]
|
|
cmp r0, 0
|
|
bge _080A95C6
|
|
ldr r1, _080A96BC
|
|
adds r0, r1
|
|
_080A95C6:
|
|
asrs r0, 11
|
|
mov r9, r0
|
|
str r0, [sp]
|
|
ldr r0, [r7, 0x4]
|
|
cmp r0, 0
|
|
bge _080A95D6
|
|
ldr r2, _080A96BC
|
|
adds r0, r2
|
|
_080A95D6:
|
|
asrs r4, r0, 11
|
|
str r4, [sp, 0x4]
|
|
mov r6, r8
|
|
ldr r3, [r6]
|
|
subs r0, r3, 0x1
|
|
cmp r0, 0
|
|
bge _080A95E8
|
|
ldr r6, _080A96C0
|
|
adds r0, r3, r6
|
|
_080A95E8:
|
|
asrs r1, r0, 11
|
|
mov r0, r8
|
|
ldr r3, [r0, 0x4]
|
|
subs r0, r3, 0x1
|
|
cmp r0, 0
|
|
bge _080A95F8
|
|
ldr r6, _080A96C0
|
|
adds r0, r3, r6
|
|
_080A95F8:
|
|
asrs r2, r0, 11
|
|
mov r3, r9
|
|
subs r0, r1, r3
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
subs r0, r2, r4
|
|
adds r0, 0x1
|
|
add r2, sp, 0x8
|
|
str r0, [r2, 0x4]
|
|
movs r6, 0x8E
|
|
lsls r6, 1
|
|
adds r0, r5, r6
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
adds r4, r2, 0
|
|
cmp r0, 0
|
|
beq _080A962C
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl CheckMapCollision_80A585C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A962C
|
|
b _080A973C
|
|
_080A962C:
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A964A
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl sub_80A58C8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A973C
|
|
_080A964A:
|
|
movs r4, 0x8E
|
|
lsls r4, 1
|
|
adds r0, r5, r4
|
|
ldr r0, [r0]
|
|
movs r1, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A96C8
|
|
movs r2, 0
|
|
ldrsh r0, [r5, r2]
|
|
movs r1, 0x44
|
|
adds r2, r7, 0
|
|
mov r3, r8
|
|
bl GetLivesCollision_80A92A0
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
mov r9, r2
|
|
cmp r2, 0
|
|
blt _080A96C8
|
|
ldr r1, _080A96C4
|
|
lsls r0, r2, 5
|
|
subs r0, r2
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r6, r1, r0
|
|
adds r0, r6, r4
|
|
ldr r1, [r0]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A973C
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080A96A8
|
|
adds r4, 0x26
|
|
adds r0, r5, r4
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r1, 0x5
|
|
bl sub_8002984
|
|
adds r4, r6, r4
|
|
strb r0, [r4]
|
|
_080A96A8:
|
|
movs r3, 0
|
|
ldrsh r0, [r5, r3]
|
|
mov r1, r9
|
|
bl GroundLives_ExecutePlayerScriptActionLives
|
|
_080A96B2:
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A9738
|
|
b _080A973C
|
|
.align 2, 0
|
|
_080A96BC: .4byte 0x000007ff
|
|
_080A96C0: .4byte 0x000007fe
|
|
_080A96C4: .4byte gGroundLives
|
|
_080A96C8:
|
|
movs r6, 0x8E
|
|
lsls r6, 1
|
|
adds r0, r5, r6
|
|
ldr r0, [r0]
|
|
movs r1, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A9708
|
|
movs r0, 0x44
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
bl sub_80AC4C8
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
cmp r4, 0
|
|
blt _080A9708
|
|
add r1, sp, 0x10
|
|
adds r0, r4, 0
|
|
bl sub_80AC3E0
|
|
ldr r0, [sp, 0x10]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A973C
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
adds r1, r4, 0
|
|
bl sub_80A8A5C
|
|
b _080A96B2
|
|
_080A9708:
|
|
movs r2, 0x8E
|
|
lsls r2, 1
|
|
adds r0, r5, r2
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A9740
|
|
movs r0, 0x40
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
bl FindGroundEvent
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
blt _080A9740
|
|
movs r3, 0
|
|
ldrsh r0, [r5, r3]
|
|
bl sub_80A8ACC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A973C
|
|
_080A9738:
|
|
movs r0, 0x2
|
|
b _080A9742
|
|
_080A973C:
|
|
movs r0, 0x1
|
|
b _080A9742
|
|
_080A9740:
|
|
movs r0, 0
|
|
_080A9742:
|
|
add sp, 0x14
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A95AC
|
|
|
|
thumb_func_start sub_80A9750
|
|
sub_80A9750:
|
|
push {r4,lr}
|
|
mov r12, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r4, r1, 0
|
|
movs r3, 0xFF
|
|
ands r3, r1
|
|
movs r2, 0xF0
|
|
lsls r2, 4
|
|
ands r2, r1
|
|
cmp r3, 0
|
|
beq _080A9770
|
|
movs r0, 0xB0
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strh r3, [r0]
|
|
_080A9770:
|
|
cmp r2, 0
|
|
beq _080A977C
|
|
movs r0, 0xAF
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strh r2, [r0]
|
|
_080A977C:
|
|
movs r2, 0xB0
|
|
lsls r2, 1
|
|
add r2, r12
|
|
ldrh r0, [r2]
|
|
cmp r0, 0x1
|
|
bne _080A97A8
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
cmp r1, r0
|
|
beq _080A97B6
|
|
movs r0, 0xB2
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
ldr r2, _080A97A4
|
|
cmp r0, 0
|
|
bgt _080A97A0
|
|
b _080A9E98
|
|
_080A97A0:
|
|
b _080A97C0
|
|
.align 2, 0
|
|
_080A97A4: .4byte 0x00000807
|
|
_080A97A8:
|
|
cmp r0, 0x2
|
|
beq _080A97AE
|
|
b _080A9E8C
|
|
_080A97AE:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
cmp r4, r0
|
|
bne _080A97C6
|
|
_080A97B6:
|
|
movs r1, 0xB2
|
|
lsls r1, 1
|
|
add r1, r12
|
|
movs r0, 0x4
|
|
str r0, [r1]
|
|
_080A97C0:
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
b _080A9E98
|
|
_080A97C6:
|
|
movs r0, 0xB2
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bgt _080A97C0
|
|
mov r1, r12
|
|
ldrh r0, [r1, 0x8]
|
|
subs r0, 0xC
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
ldr r0, _080A97F0
|
|
cmp r1, r0
|
|
bls _080A97E4
|
|
b _080A9E7E
|
|
_080A97E4:
|
|
lsls r0, r1, 2
|
|
ldr r1, _080A97F4
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080A97F0: .4byte 0x00000197
|
|
_080A97F4: .4byte _080A97F8
|
|
.align 2, 0
|
|
_080A97F8:
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E68
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E60
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E60
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E60
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E7E
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
.4byte _080A9E58
|
|
_080A9E58:
|
|
ldr r2, _080A9E5C
|
|
b _080A9E98
|
|
.align 2, 0
|
|
_080A9E5C: .4byte 0x00000807
|
|
_080A9E60:
|
|
ldr r2, _080A9E64
|
|
b _080A9E98
|
|
.align 2, 0
|
|
_080A9E64: .4byte 0x00000307
|
|
_080A9E68:
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
add r0, r12
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
ldr r2, _080A9E84
|
|
cmp r1, r2
|
|
beq _080A9E98
|
|
ldr r0, _080A9E88
|
|
cmp r1, r0
|
|
beq _080A9E98
|
|
_080A9E7E:
|
|
movs r2, 0xC0
|
|
lsls r2, 2
|
|
b _080A9E98
|
|
.align 2, 0
|
|
_080A9E84: .4byte 0x00000807
|
|
_080A9E88: .4byte 0x00000307
|
|
_080A9E8C:
|
|
ldr r1, _080A9EC4
|
|
ldrh r0, [r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
movs r4, 0
|
|
ldrsh r2, [r0, r4]
|
|
_080A9E98:
|
|
movs r0, 0xE0
|
|
lsls r0, 3
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080A9EEE
|
|
movs r0, 0xAF
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldrh r1, [r0]
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
cmp r1, r0
|
|
beq _080A9EEE
|
|
cmp r1, r0
|
|
bgt _080A9EC8
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
cmp r1, r3
|
|
beq _080A9EDA
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
b _080A9ED4
|
|
.align 2, 0
|
|
_080A9EC4: .4byte gUnknown_8117F64
|
|
_080A9EC8:
|
|
movs r3, 0x80
|
|
lsls r3, 3
|
|
cmp r1, r3
|
|
beq _080A9EDE
|
|
movs r0, 0x80
|
|
lsls r0, 4
|
|
_080A9ED4:
|
|
cmp r1, r0
|
|
beq _080A9EEC
|
|
b _080A9EEE
|
|
_080A9EDA:
|
|
orrs r2, r0
|
|
b _080A9EEE
|
|
_080A9EDE:
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
adds r0, r1, 0
|
|
orrs r2, r0
|
|
lsls r0, r2, 16
|
|
asrs r2, r0, 16
|
|
b _080A9EEE
|
|
_080A9EEC:
|
|
orrs r2, r3
|
|
_080A9EEE:
|
|
movs r1, 0xB4
|
|
lsls r1, 1
|
|
add r1, r12
|
|
ldrh r3, [r1]
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r2
|
|
beq _080A9F02
|
|
strh r2, [r1]
|
|
b _080A9F0C
|
|
_080A9F02:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _080A9F16
|
|
_080A9F0C:
|
|
movs r1, 0xAE
|
|
lsls r1, 1
|
|
add r1, r12
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080A9F16:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A9750
|
|
|
|
thumb_func_start sub_80A9F20
|
|
sub_80A9F20:
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
adds r5, r0, 0
|
|
ldr r2, [r1]
|
|
ldr r4, [r5, 0x14]
|
|
subs r0, r2, r4
|
|
str r0, [sp]
|
|
ldr r3, [r1, 0x4]
|
|
ldr r1, [r5, 0x18]
|
|
subs r0, r3, r1
|
|
str r0, [sp, 0x4]
|
|
adds r2, r4
|
|
str r2, [sp, 0x8]
|
|
adds r3, r1
|
|
add r2, sp, 0x8
|
|
str r3, [r2, 0x4]
|
|
ldr r1, [r5, 0x28]
|
|
ldr r0, [sp]
|
|
cmp r0, r1
|
|
blt _080A9F5E
|
|
ldr r1, [r5, 0x30]
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, r1
|
|
bge _080A9F5E
|
|
ldr r1, [r5, 0x2C]
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, r1
|
|
blt _080A9F5E
|
|
ldr r0, [r5, 0x34]
|
|
cmp r3, r0
|
|
blt _080A9F62
|
|
_080A9F5E:
|
|
movs r0, 0x1
|
|
b _080A9F8C
|
|
_080A9F62:
|
|
adds r0, r5, 0
|
|
mov r1, sp
|
|
bl sub_80A9488
|
|
cmp r0, 0
|
|
bne _080A9F8C
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
adds r2, r5, r0
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
adds r2, r5, r0
|
|
ldr r0, [sp, 0x8]
|
|
ldr r1, [sp, 0xC]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
movs r0, 0
|
|
_080A9F8C:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A9F20
|
|
|
|
thumb_func_start sub_80A9F94
|
|
sub_80A9F94:
|
|
push {r4-r6,lr}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
ldr r0, [r0]
|
|
ldr r2, [r1]
|
|
adds r0, r2
|
|
str r0, [sp]
|
|
movs r3, 0xA4
|
|
lsls r3, 1
|
|
adds r0, r4, r3
|
|
ldr r0, [r0]
|
|
ldr r1, [r1, 0x4]
|
|
adds r0, r1
|
|
str r0, [sp, 0x4]
|
|
adds r3, 0x4
|
|
adds r0, r4, r3
|
|
ldr r0, [r0]
|
|
adds r0, r2
|
|
str r0, [sp, 0x8]
|
|
movs r2, 0xA8
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
ldr r0, [r0]
|
|
adds r0, r1
|
|
add r1, sp, 0x8
|
|
str r0, [r1, 0x4]
|
|
movs r6, 0
|
|
ldr r3, [r4, 0x28]
|
|
ldr r0, [sp]
|
|
adds r2, r1, 0
|
|
cmp r0, r3
|
|
bge _080A9FE4
|
|
str r3, [sp]
|
|
ldr r0, [r4, 0xC]
|
|
adds r0, r3, r0
|
|
str r0, [sp, 0x8]
|
|
b _080A9FF4
|
|
_080A9FE4:
|
|
ldr r1, [r4, 0x30]
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, r1
|
|
blt _080A9FF6
|
|
ldr r0, [r4, 0xC]
|
|
subs r0, r1, r0
|
|
str r0, [sp]
|
|
str r1, [sp, 0x8]
|
|
_080A9FF4:
|
|
movs r6, 0x1
|
|
_080A9FF6:
|
|
ldr r1, [r4, 0x2C]
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, r1
|
|
bge _080AA008
|
|
str r1, [sp, 0x4]
|
|
ldr r0, [r4, 0x10]
|
|
adds r0, r1, r0
|
|
str r0, [r2, 0x4]
|
|
b _080AA018
|
|
_080AA008:
|
|
ldr r1, [r4, 0x34]
|
|
ldr r0, [r2, 0x4]
|
|
cmp r0, r1
|
|
blt _080AA01A
|
|
ldr r0, [r4, 0x10]
|
|
subs r0, r1, r0
|
|
str r0, [sp, 0x4]
|
|
str r1, [r2, 0x4]
|
|
_080AA018:
|
|
movs r6, 0x1
|
|
_080AA01A:
|
|
adds r0, r4, 0
|
|
mov r1, sp
|
|
bl sub_80A9488
|
|
adds r5, r0, 0
|
|
cmp r5, 0
|
|
beq _080AA034
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80AAF68
|
|
adds r0, r5, 0
|
|
b _080AA06A
|
|
_080AA034:
|
|
movs r3, 0xA2
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
adds r2, r4, r0
|
|
ldr r0, [sp, 0x8]
|
|
ldr r1, [sp, 0xC]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
cmp r6, 0
|
|
bne _080AA060
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_80AAF68
|
|
movs r0, 0
|
|
b _080AA06A
|
|
_080AA060:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80AAF68
|
|
movs r0, 0x1
|
|
_080AA06A:
|
|
add sp, 0x10
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A9F94
|
|
|
|
thumb_func_start sub_80AA074
|
|
sub_80AA074:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
ldr r0, [r0]
|
|
ldr r2, [r1]
|
|
adds r0, r2
|
|
str r0, [sp]
|
|
movs r3, 0xA4
|
|
lsls r3, 1
|
|
adds r0, r4, r3
|
|
ldr r0, [r0]
|
|
ldr r1, [r1, 0x4]
|
|
adds r0, r1
|
|
str r0, [sp, 0x4]
|
|
adds r3, 0x4
|
|
adds r0, r4, r3
|
|
ldr r0, [r0]
|
|
adds r0, r2
|
|
str r0, [sp, 0x8]
|
|
movs r2, 0xA8
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
ldr r0, [r0]
|
|
adds r0, r1
|
|
add r1, sp, 0x8
|
|
str r0, [r1, 0x4]
|
|
ldr r3, [r4, 0x28]
|
|
ldr r0, [sp]
|
|
adds r5, r1, 0
|
|
cmp r0, r3
|
|
bge _080AA0C2
|
|
str r3, [sp]
|
|
ldr r0, [r4, 0xC]
|
|
adds r0, r3, r0
|
|
str r0, [sp, 0x8]
|
|
b _080AA0D2
|
|
_080AA0C2:
|
|
ldr r1, [r4, 0x30]
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, r1
|
|
blt _080AA0D2
|
|
ldr r0, [r4, 0xC]
|
|
subs r0, r1, r0
|
|
str r0, [sp]
|
|
str r1, [sp, 0x8]
|
|
_080AA0D2:
|
|
ldr r1, [r4, 0x2C]
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, r1
|
|
bge _080AA0E4
|
|
str r1, [sp, 0x4]
|
|
ldr r0, [r4, 0x10]
|
|
adds r0, r1, r0
|
|
str r0, [r5, 0x4]
|
|
b _080AA0F4
|
|
_080AA0E4:
|
|
ldr r1, [r4, 0x34]
|
|
ldr r0, [r5, 0x4]
|
|
cmp r0, r1
|
|
blt _080AA0F4
|
|
ldr r0, [r4, 0x10]
|
|
subs r0, r1, r0
|
|
str r0, [sp, 0x4]
|
|
str r1, [r5, 0x4]
|
|
_080AA0F4:
|
|
adds r0, r4, 0
|
|
mov r1, sp
|
|
adds r2, r5, 0
|
|
bl sub_80A95AC
|
|
adds r6, r0, 0
|
|
cmp r6, 0
|
|
bne _080AA170
|
|
movs r3, 0xA2
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
adds r2, r4, r0
|
|
ldr r0, [sp, 0x8]
|
|
ldr r1, [sp, 0xC]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AA170
|
|
movs r0, 0x20
|
|
mov r1, sp
|
|
adds r2, r5, 0
|
|
bl FindGroundEvent
|
|
lsls r0, 16
|
|
asrs r5, r0, 16
|
|
cmp r5, 0
|
|
blt _080AA166
|
|
movs r2, 0x9F
|
|
lsls r2, 1
|
|
adds r7, r4, r2
|
|
movs r3, 0
|
|
ldrsh r0, [r7, r3]
|
|
cmp r0, r5
|
|
beq _080AA170
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
adds r1, r5, 0
|
|
bl sub_80A8ACC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AA170
|
|
strh r5, [r7]
|
|
movs r6, 0x2
|
|
b _080AA170
|
|
_080AA166:
|
|
movs r2, 0x9F
|
|
lsls r2, 1
|
|
adds r1, r4, r2
|
|
ldr r0, _080AA17C
|
|
strh r0, [r1]
|
|
_080AA170:
|
|
adds r0, r6, 0
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080AA17C: .4byte 0x0000ffff
|
|
thumb_func_end sub_80AA074
|
|
|
|
thumb_func_start sub_80AA180
|
|
sub_80AA180:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
adds r7, r3, 0
|
|
movs r0, 0x4
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _080AA220
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x80
|
|
bl sub_80A9344
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
blt _080AA220
|
|
mov r1, sp
|
|
bl sub_80A8FD8
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
ldr r1, [r0]
|
|
ldr r0, [r4, 0x14]
|
|
adds r1, r0
|
|
ldr r0, [sp]
|
|
subs r0, r1
|
|
str r0, [sp, 0x8]
|
|
movs r3, 0xA4
|
|
lsls r3, 1
|
|
adds r0, r4, r3
|
|
ldr r0, [r0]
|
|
ldr r1, [r4, 0x18]
|
|
adds r0, r1
|
|
ldr r1, [sp, 0x4]
|
|
subs r1, r0
|
|
add r0, sp, 0x8
|
|
str r1, [r0, 0x4]
|
|
bl VecDirection8Radial
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080AA2B2
|
|
movs r0, 0xA1
|
|
lsls r0, 1
|
|
adds r2, r4, r0
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
strb r0, [r2]
|
|
ldr r3, _080AA21C
|
|
adds r1, r4, r3
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r1, r0
|
|
beq _080AA20A
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r4, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080AA20A:
|
|
movs r1, 0
|
|
ldrsb r1, [r2, r1]
|
|
adds r0, r4, 0
|
|
bl sub_80AA3F8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AA2AE
|
|
b _080AA2B2
|
|
.align 2, 0
|
|
_080AA21C: .4byte 0x0000015d
|
|
_080AA220:
|
|
movs r0, 0x8
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _080AA2B2
|
|
movs r0, 0x80
|
|
adds r1, r6, 0
|
|
adds r2, r7, 0
|
|
bl sub_80AC554
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
blt _080AA2B2
|
|
mov r1, sp
|
|
bl sub_80AC448
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r1, [r0]
|
|
ldr r0, [r4, 0x14]
|
|
adds r1, r0
|
|
ldr r0, [sp]
|
|
subs r0, r1
|
|
str r0, [sp, 0x8]
|
|
add r0, sp, 0x8
|
|
movs r2, 0xA4
|
|
lsls r2, 1
|
|
adds r1, r4, r2
|
|
ldr r2, [r1]
|
|
ldr r1, [r4, 0x18]
|
|
adds r2, r1
|
|
ldr r1, [sp, 0x4]
|
|
subs r1, r2
|
|
str r1, [r0, 0x4]
|
|
bl VecDirection8Radial
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080AA2B2
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
strb r0, [r2]
|
|
adds r3, 0x1B
|
|
adds r1, r4, r3
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r1, r0
|
|
beq _080AA29E
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r4, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080AA29E:
|
|
movs r1, 0
|
|
ldrsb r1, [r2, r1]
|
|
adds r0, r4, 0
|
|
bl sub_80AA3F8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AA2B2
|
|
_080AA2AE:
|
|
movs r0, 0x3
|
|
b _080AA2B4
|
|
_080AA2B2:
|
|
movs r0, 0
|
|
_080AA2B4:
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA180
|
|
|
|
thumb_func_start sub_80AA2BC
|
|
sub_80AA2BC:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
adds r7, r0, 0
|
|
mov r8, r1
|
|
ldr r0, [r2]
|
|
ldr r1, [r2, 0x4]
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
ldr r0, [r3]
|
|
ldr r1, [r3, 0x4]
|
|
str r0, [sp, 0x10]
|
|
str r1, [sp, 0x14]
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
bge _080AA2E6
|
|
ldr r1, _080AA3C4
|
|
adds r0, r1
|
|
_080AA2E6:
|
|
asrs r0, 11
|
|
str r0, [sp, 0x8]
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
bge _080AA2F4
|
|
ldr r2, _080AA3C4
|
|
adds r0, r2
|
|
_080AA2F4:
|
|
asrs r0, 11
|
|
add r1, sp, 0x8
|
|
str r0, [r1, 0x4]
|
|
ldr r4, [sp, 0x10]
|
|
subs r0, r4, 0x1
|
|
mov r10, r1
|
|
cmp r0, 0
|
|
bge _080AA308
|
|
ldr r1, _080AA3C8
|
|
adds r0, r4, r1
|
|
_080AA308:
|
|
asrs r2, r0, 11
|
|
add r0, sp, 0x10
|
|
ldr r4, [r0, 0x4]
|
|
subs r1, r4, 0x1
|
|
mov r9, r0
|
|
cmp r1, 0
|
|
bge _080AA31A
|
|
ldr r0, _080AA3C8
|
|
adds r1, r4, r0
|
|
_080AA31A:
|
|
asrs r3, r1, 11
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, r2, r0
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x18]
|
|
mov r1, r10
|
|
ldr r0, [r1, 0x4]
|
|
subs r0, r3, r0
|
|
adds r0, 0x1
|
|
add r1, sp, 0x18
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x4
|
|
mov r2, r8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080AA394
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
movs r1, 0x80
|
|
mov r2, sp
|
|
mov r3, r9
|
|
bl GetLivesCollision_80A92A0
|
|
lsls r0, 16
|
|
asrs r5, r0, 16
|
|
cmp r5, 0
|
|
blt _080AA394
|
|
ldr r1, _080AA3CC
|
|
lsls r0, r5, 5
|
|
subs r0, r5
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r6, r1, r0
|
|
movs r2, 0x8E
|
|
lsls r2, 1
|
|
adds r0, r6, r2
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AA384
|
|
movs r4, 0xA1
|
|
lsls r4, 1
|
|
adds r0, r7, r4
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r1, 0x5
|
|
bl sub_8002984
|
|
adds r4, r6, r4
|
|
strb r0, [r4]
|
|
_080AA384:
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
adds r1, r5, 0
|
|
bl GroundLives_ExecutePlayerScriptActionLives
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AA3BE
|
|
_080AA394:
|
|
movs r0, 0x8
|
|
mov r2, r8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080AA3D0
|
|
movs r0, 0x80
|
|
mov r1, sp
|
|
mov r2, r9
|
|
bl sub_80AC4C8
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
blt _080AA3D0
|
|
movs r2, 0
|
|
ldrsh r0, [r7, r2]
|
|
bl sub_80A8A5C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AA3D0
|
|
_080AA3BE:
|
|
movs r0, 0x3
|
|
b _080AA3E6
|
|
.align 2, 0
|
|
_080AA3C4: .4byte 0x000007ff
|
|
_080AA3C8: .4byte 0x000007fe
|
|
_080AA3CC: .4byte gGroundLives
|
|
_080AA3D0:
|
|
movs r0, 0x10
|
|
mov r1, r10
|
|
add r2, sp, 0x18
|
|
bl sub_80A595C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AA3E4
|
|
movs r0, 0
|
|
b _080AA3E6
|
|
_080AA3E4:
|
|
movs r0, 0x6
|
|
_080AA3E6:
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA2BC
|
|
|
|
thumb_func_start sub_80AA3F8
|
|
sub_80AA3F8:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x40
|
|
adds r6, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
str r1, [sp, 0x28]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
mov r0, sp
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r4, [sp]
|
|
ldr r5, [sp, 0x4]
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
adds r0, r6
|
|
mov r9, r0
|
|
ldr r0, [r0]
|
|
adds r0, r4
|
|
str r0, [sp, 0x8]
|
|
movs r1, 0xA4
|
|
lsls r1, 1
|
|
adds r1, r6
|
|
mov r10, r1
|
|
ldr r0, [r1]
|
|
adds r0, r5
|
|
add r2, sp, 0x8
|
|
str r0, [r2, 0x4]
|
|
movs r1, 0xA6
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
ldr r0, [r0]
|
|
adds r0, r4
|
|
str r0, [sp, 0x10]
|
|
adds r1, 0x4
|
|
adds r0, r6, r1
|
|
ldr r0, [r0]
|
|
adds r0, r5
|
|
add r3, sp, 0x10
|
|
str r0, [r3, 0x4]
|
|
adds r0, r6, 0
|
|
movs r1, 0xC
|
|
bl sub_80AA2BC
|
|
adds r7, r0, 0
|
|
cmp r7, 0x3
|
|
bne _080AA462
|
|
_080AA45E:
|
|
movs r0, 0x1
|
|
b _080AA650
|
|
_080AA462:
|
|
ldr r0, [r6, 0xC]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
movs r2, 0x80
|
|
lsls r2, 2
|
|
mov r8, r2
|
|
add r0, r8
|
|
muls r0, r4
|
|
cmp r0, 0
|
|
bge _080AA47A
|
|
adds r0, 0xFF
|
|
_080AA47A:
|
|
asrs r0, 8
|
|
str r0, [sp, 0x2C]
|
|
ldr r0, [r6, 0x10]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
add r0, r8
|
|
muls r0, r5
|
|
cmp r0, 0
|
|
bge _080AA490
|
|
adds r0, 0xFF
|
|
_080AA490:
|
|
asrs r0, 8
|
|
str r0, [sp, 0x30]
|
|
mov r1, r9
|
|
ldr r0, [r1]
|
|
ldr r1, [r6, 0x14]
|
|
adds r0, r1
|
|
ldr r2, [sp, 0x2C]
|
|
adds r0, r2
|
|
ldr r2, _080AA4F4
|
|
adds r0, r2
|
|
str r0, [sp, 0x18]
|
|
mov r1, r10
|
|
ldr r0, [r1]
|
|
ldr r1, [r6, 0x18]
|
|
adds r0, r1
|
|
ldr r1, [sp, 0x30]
|
|
adds r0, r1
|
|
adds r0, r2
|
|
add r2, sp, 0x18
|
|
str r0, [r2, 0x4]
|
|
movs r1, 0xC0
|
|
lsls r1, 3
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, r1
|
|
str r0, [sp, 0x20]
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r1
|
|
add r3, sp, 0x20
|
|
str r0, [r3, 0x4]
|
|
ldr r0, _080AA4F8
|
|
mov r9, r0
|
|
ldr r0, [sp, 0x28]
|
|
lsls r1, r0, 2
|
|
add r9, r1
|
|
mov r0, r9
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x34]
|
|
ldr r0, _080AA4FC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x38]
|
|
ldr r0, _080AA500
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
str r1, [sp, 0x3C]
|
|
mov r10, r8
|
|
mov r9, r2
|
|
mov r8, r3
|
|
b _080AA568
|
|
.align 2, 0
|
|
_080AA4F4: .4byte 0xfffffd00
|
|
_080AA4F8: .4byte gUnknown_8117FF0
|
|
_080AA4FC: .4byte gUnknown_8118010
|
|
_080AA500: .4byte gUnknown_8118030
|
|
_080AA504:
|
|
ldr r1, [r6, 0x28]
|
|
ldr r0, [sp, 0x18]
|
|
cmp r0, r1
|
|
bge _080AA50E
|
|
b _080AA64E
|
|
_080AA50E:
|
|
ldr r1, [r6, 0x30]
|
|
ldr r0, [sp, 0x20]
|
|
cmp r0, r1
|
|
blt _080AA518
|
|
b _080AA64E
|
|
_080AA518:
|
|
ldr r1, [r6, 0x2C]
|
|
mov r2, r9
|
|
ldr r0, [r2, 0x4]
|
|
cmp r0, r1
|
|
bge _080AA524
|
|
b _080AA64E
|
|
_080AA524:
|
|
ldr r1, [r6, 0x34]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
cmp r0, r1
|
|
blt _080AA530
|
|
b _080AA64E
|
|
_080AA530:
|
|
adds r0, r6, 0
|
|
movs r1, 0xC
|
|
mov r2, r9
|
|
mov r3, r8
|
|
bl sub_80AA2BC
|
|
adds r7, r0, 0
|
|
cmp r7, 0x3
|
|
beq _080AA45E
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, r4
|
|
str r0, [sp, 0x18]
|
|
mov r1, r9
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, r5
|
|
str r0, [r1, 0x4]
|
|
ldr r0, [sp, 0x20]
|
|
adds r0, r4
|
|
str r0, [sp, 0x20]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r5
|
|
str r0, [r2, 0x4]
|
|
cmp r7, 0x6
|
|
beq _080AA572
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
add r10, r0
|
|
_080AA568:
|
|
ldr r1, [sp, 0x34]
|
|
cmp r10, r1
|
|
blt _080AA504
|
|
cmp r7, 0x6
|
|
bne _080AA64E
|
|
_080AA572:
|
|
ldr r2, [sp, 0x38]
|
|
cmp r10, r2
|
|
bge _080AA5DC
|
|
_080AA578:
|
|
ldr r1, [sp, 0x18]
|
|
ldr r0, [r6, 0x28]
|
|
cmp r1, r0
|
|
blt _080AA64E
|
|
ldr r1, [sp, 0x20]
|
|
ldr r0, [r6, 0x30]
|
|
cmp r1, r0
|
|
bge _080AA64E
|
|
mov r0, r9
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r6, 0x2C]
|
|
cmp r1, r0
|
|
blt _080AA64E
|
|
mov r2, r8
|
|
ldr r1, [r2, 0x4]
|
|
ldr r0, [r6, 0x34]
|
|
cmp r1, r0
|
|
bge _080AA64E
|
|
adds r0, r6, 0
|
|
movs r1, 0x4
|
|
mov r2, r9
|
|
mov r3, r8
|
|
bl sub_80AA2BC
|
|
adds r7, r0, 0
|
|
cmp r7, 0x3
|
|
bne _080AA5B0
|
|
b _080AA45E
|
|
_080AA5B0:
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, r4
|
|
str r0, [sp, 0x18]
|
|
mov r1, r9
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, r5
|
|
str r0, [r1, 0x4]
|
|
ldr r0, [sp, 0x20]
|
|
adds r0, r4
|
|
str r0, [sp, 0x20]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r5
|
|
str r0, [r2, 0x4]
|
|
cmp r7, 0x6
|
|
bne _080AA5E0
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
add r10, r0
|
|
ldr r1, [sp, 0x38]
|
|
cmp r10, r1
|
|
blt _080AA578
|
|
_080AA5DC:
|
|
cmp r7, 0x6
|
|
beq _080AA64E
|
|
_080AA5E0:
|
|
movs r2, 0
|
|
mov r10, r2
|
|
ldr r0, [sp, 0x3C]
|
|
cmp r10, r0
|
|
bge _080AA64E
|
|
_080AA5EA:
|
|
ldr r1, [sp, 0x18]
|
|
ldr r0, [r6, 0x28]
|
|
cmp r1, r0
|
|
blt _080AA64E
|
|
ldr r1, [sp, 0x20]
|
|
ldr r0, [r6, 0x30]
|
|
cmp r1, r0
|
|
bge _080AA64E
|
|
mov r2, r9
|
|
ldr r1, [r2, 0x4]
|
|
ldr r0, [r6, 0x2C]
|
|
cmp r1, r0
|
|
blt _080AA64E
|
|
mov r0, r8
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r6, 0x34]
|
|
cmp r1, r0
|
|
bge _080AA64E
|
|
adds r0, r6, 0
|
|
movs r1, 0x4
|
|
mov r2, r9
|
|
mov r3, r8
|
|
bl sub_80AA2BC
|
|
adds r7, r0, 0
|
|
cmp r7, 0x3
|
|
bne _080AA622
|
|
b _080AA45E
|
|
_080AA622:
|
|
cmp r7, 0x6
|
|
beq _080AA64E
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, r4
|
|
str r0, [sp, 0x18]
|
|
mov r1, r9
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, r5
|
|
str r0, [r1, 0x4]
|
|
ldr r0, [sp, 0x20]
|
|
adds r0, r4
|
|
str r0, [sp, 0x20]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r5
|
|
str r0, [r2, 0x4]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
add r10, r0
|
|
ldr r1, [sp, 0x3C]
|
|
cmp r10, r1
|
|
blt _080AA5EA
|
|
_080AA64E:
|
|
movs r0, 0
|
|
_080AA650:
|
|
add sp, 0x40
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA3F8
|
|
|
|
thumb_func_start sub_80AA660
|
|
sub_80AA660:
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
bl sub_80AC4C8
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
blt _080AA686
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
bl sub_80A8A5C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AA686
|
|
movs r0, 0x4
|
|
b _080AA688
|
|
_080AA686:
|
|
movs r0, 0
|
|
_080AA688:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA660
|
|
|
|
thumb_func_start sub_80AA690
|
|
sub_80AA690:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
adds r7, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
mov r9, r1
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
mov r0, sp
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r5, [sp]
|
|
ldr r6, [sp, 0x4]
|
|
ldr r0, [r7, 0xC]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
mov r8, r1
|
|
add r0, r8
|
|
muls r0, r5
|
|
cmp r0, 0
|
|
bge _080AA6CA
|
|
adds r0, 0xFF
|
|
_080AA6CA:
|
|
asrs r3, r0, 8
|
|
ldr r0, [r7, 0x10]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
add r0, r8
|
|
muls r0, r6
|
|
cmp r0, 0
|
|
bge _080AA6DE
|
|
adds r0, 0xFF
|
|
_080AA6DE:
|
|
asrs r4, r0, 8
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r0, r7, r2
|
|
ldr r0, [r0]
|
|
ldr r1, [r7, 0x14]
|
|
adds r0, r1
|
|
adds r0, r3
|
|
ldr r2, _080AA76C
|
|
adds r0, r2
|
|
str r0, [sp, 0x8]
|
|
movs r1, 0xA4
|
|
lsls r1, 1
|
|
adds r0, r7, r1
|
|
ldr r0, [r0]
|
|
ldr r1, [r7, 0x18]
|
|
adds r0, r1
|
|
adds r0, r4
|
|
adds r0, r2
|
|
add r2, sp, 0x8
|
|
str r0, [r2, 0x4]
|
|
movs r1, 0xC0
|
|
lsls r1, 3
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r1
|
|
str r0, [sp, 0x10]
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r1
|
|
add r3, sp, 0x10
|
|
str r0, [r3, 0x4]
|
|
ldr r1, _080AA770
|
|
mov r4, r9
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov r10, r0
|
|
mov r9, r8
|
|
mov r8, r2
|
|
adds r4, r3, 0
|
|
cmp r9, r10
|
|
bge _080AA79C
|
|
_080AA730:
|
|
ldr r1, [r7, 0x28]
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, r1
|
|
blt _080AA79C
|
|
ldr r1, [r7, 0x30]
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, r1
|
|
bge _080AA79C
|
|
ldr r1, [r7, 0x2C]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
cmp r0, r1
|
|
blt _080AA79C
|
|
ldr r1, [r7, 0x34]
|
|
ldr r0, [r4, 0x4]
|
|
cmp r0, r1
|
|
bge _080AA79C
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
adds r2, r4, 0
|
|
bl sub_80AA660
|
|
cmp r0, 0x4
|
|
beq _080AA774
|
|
cmp r0, 0x4
|
|
bhi _080AA778
|
|
cmp r0, 0
|
|
bne _080AA778
|
|
b _080AA79C
|
|
.align 2, 0
|
|
_080AA76C: .4byte 0xfffffd00
|
|
_080AA770: .4byte gUnknown_8117FF0
|
|
_080AA774:
|
|
movs r0, 0x1
|
|
b _080AA79E
|
|
_080AA778:
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r5
|
|
str r0, [sp, 0x8]
|
|
mov r1, r8
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, r6
|
|
str r0, [r1, 0x4]
|
|
ldr r0, [sp, 0x10]
|
|
adds r0, r5
|
|
str r0, [sp, 0x10]
|
|
ldr r0, [r4, 0x4]
|
|
adds r0, r6
|
|
str r0, [r4, 0x4]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
add r9, r2
|
|
cmp r9, r10
|
|
blt _080AA730
|
|
_080AA79C:
|
|
movs r0, 0
|
|
_080AA79E:
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA690
|
|
|
|
thumb_func_start sub_80AA7B0
|
|
sub_80AA7B0:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x20
|
|
adds r7, r0, 0
|
|
adds r6, r1, 0
|
|
mov r12, r2
|
|
ldr r2, [sp, 0x38]
|
|
ldr r0, [r3]
|
|
ldr r1, [r3, 0x4]
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
ldr r0, [r2]
|
|
ldr r1, [r2, 0x4]
|
|
str r0, [sp, 0x10]
|
|
str r1, [sp, 0x14]
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
bge _080AA7DA
|
|
ldr r1, _080AA884
|
|
adds r0, r1
|
|
_080AA7DA:
|
|
asrs r0, 11
|
|
str r0, [sp, 0x8]
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
bge _080AA7E8
|
|
ldr r2, _080AA884
|
|
adds r0, r2
|
|
_080AA7E8:
|
|
asrs r0, 11
|
|
add r1, sp, 0x8
|
|
str r0, [r1, 0x4]
|
|
ldr r4, [sp, 0x10]
|
|
subs r0, r4, 0x1
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
bge _080AA7FC
|
|
ldr r5, _080AA888
|
|
adds r0, r4, r5
|
|
_080AA7FC:
|
|
asrs r2, r0, 11
|
|
add r4, sp, 0x10
|
|
ldr r1, [r4, 0x4]
|
|
subs r0, r1, 0x1
|
|
cmp r0, 0
|
|
bge _080AA80C
|
|
ldr r5, _080AA888
|
|
adds r0, r1, r5
|
|
_080AA80C:
|
|
asrs r3, r0, 11
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, r2, r0
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x18]
|
|
mov r1, r8
|
|
ldr r0, [r1, 0x4]
|
|
subs r0, r3, r0
|
|
adds r0, 0x1
|
|
add r1, sp, 0x18
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x4
|
|
mov r2, r12
|
|
ands r0, r2
|
|
adds r5, r1, 0
|
|
cmp r0, 0
|
|
beq _080AA890
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
movs r1, 0x80
|
|
mov r2, sp
|
|
adds r3, r4, 0
|
|
bl GetLivesCollision_80A92A0
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
cmp r4, 0
|
|
blt _080AA890
|
|
adds r0, r4, 0
|
|
bl sub_80A8BBC
|
|
lsls r0, 16
|
|
ldr r2, _080AA88C
|
|
adds r0, r2
|
|
lsrs r0, 16
|
|
cmp r0, 0xF
|
|
bhi _080AA890
|
|
adds r0, r4, 0
|
|
bl sub_80A8E9C
|
|
cmp r0, 0
|
|
beq _080AA890
|
|
strh r4, [r6]
|
|
movs r5, 0xA1
|
|
lsls r5, 1
|
|
adds r0, r7, r5
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r1, 0x5
|
|
bl sub_8002984
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_80A9090
|
|
movs r0, 0x5
|
|
b _080AA8AE
|
|
.align 2, 0
|
|
_080AA884: .4byte 0x000007ff
|
|
_080AA888: .4byte 0x000007fe
|
|
_080AA88C: .4byte 0xfff20000
|
|
_080AA890:
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
strh r0, [r6]
|
|
movs r0, 0x10
|
|
mov r1, r8
|
|
adds r2, r5, 0
|
|
bl sub_80A595C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AA8AC
|
|
movs r0, 0
|
|
b _080AA8AE
|
|
_080AA8AC:
|
|
movs r0, 0x6
|
|
_080AA8AE:
|
|
add sp, 0x20
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA7B0
|
|
|
|
thumb_func_start sub_80AA8BC
|
|
sub_80AA8BC:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x30
|
|
adds r6, r0, 0
|
|
str r1, [sp, 0x1C]
|
|
lsls r2, 24
|
|
asrs r2, 24
|
|
mov r8, r2
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
add r0, sp, 0x4
|
|
mov r1, r8
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r4, [sp, 0x4]
|
|
ldr r5, [sp, 0x8]
|
|
ldr r0, [r6, 0xC]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
mov r9, r1
|
|
add r0, r9
|
|
muls r0, r4
|
|
cmp r0, 0
|
|
bge _080AA8FA
|
|
adds r0, 0xFF
|
|
_080AA8FA:
|
|
asrs r0, 8
|
|
str r0, [sp, 0x20]
|
|
ldr r0, [r6, 0x10]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
add r0, r9
|
|
muls r0, r5
|
|
cmp r0, 0
|
|
bge _080AA910
|
|
adds r0, 0xFF
|
|
_080AA910:
|
|
asrs r0, 8
|
|
str r0, [sp, 0x24]
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r0, r6, r2
|
|
ldr r0, [r0]
|
|
ldr r1, [r6, 0x14]
|
|
adds r0, r1
|
|
ldr r7, [sp, 0x20]
|
|
adds r0, r7
|
|
ldr r2, _080AA9F0
|
|
adds r0, r2
|
|
str r0, [sp, 0xC]
|
|
movs r1, 0xA4
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
ldr r0, [r0]
|
|
ldr r1, [r6, 0x18]
|
|
adds r0, r1
|
|
ldr r7, [sp, 0x24]
|
|
adds r0, r7
|
|
adds r0, r2
|
|
add r2, sp, 0xC
|
|
str r0, [r2, 0x4]
|
|
movs r1, 0xC0
|
|
lsls r1, 3
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, r1
|
|
str r0, [sp, 0x14]
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r1
|
|
add r3, sp, 0x14
|
|
str r0, [r3, 0x4]
|
|
ldr r0, _080AA9F4
|
|
mov r7, r8
|
|
lsls r1, r7, 2
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
mov r10, r0
|
|
ldr r0, _080AA9F8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x28]
|
|
ldr r0, _080AA9FC
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
str r1, [sp, 0x2C]
|
|
movs r1, 0
|
|
movs r7, 0x1
|
|
negs r7, r7
|
|
adds r0, r7, 0
|
|
ldr r7, [sp, 0x1C]
|
|
strh r0, [r7]
|
|
mov r8, r2
|
|
adds r7, r3, 0
|
|
cmp r9, r10
|
|
bge _080AA9E8
|
|
_080AA982:
|
|
ldr r1, [r6, 0x28]
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, r1
|
|
bge _080AA98C
|
|
b _080AAAD4
|
|
_080AA98C:
|
|
ldr r1, [r6, 0x30]
|
|
ldr r0, [sp, 0x14]
|
|
cmp r0, r1
|
|
blt _080AA996
|
|
b _080AAAD4
|
|
_080AA996:
|
|
ldr r1, [r6, 0x2C]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
cmp r0, r1
|
|
bge _080AA9A2
|
|
b _080AAAD4
|
|
_080AA9A2:
|
|
ldr r1, [r6, 0x34]
|
|
ldr r0, [r7, 0x4]
|
|
cmp r0, r1
|
|
blt _080AA9AC
|
|
b _080AAAD4
|
|
_080AA9AC:
|
|
str r7, [sp]
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x1C]
|
|
movs r2, 0xC
|
|
mov r3, r8
|
|
bl sub_80AA7B0
|
|
adds r1, r0, 0
|
|
cmp r1, 0x5
|
|
beq _080AAA66
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, r4
|
|
str r0, [sp, 0xC]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r5
|
|
str r0, [r2, 0x4]
|
|
ldr r0, [sp, 0x14]
|
|
adds r0, r4
|
|
str r0, [sp, 0x14]
|
|
ldr r0, [r7, 0x4]
|
|
adds r0, r5
|
|
str r0, [r7, 0x4]
|
|
cmp r1, 0x6
|
|
beq _080AAA5A
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
add r9, r0
|
|
cmp r9, r10
|
|
blt _080AA982
|
|
_080AA9E8:
|
|
cmp r1, 0x6
|
|
bne _080AAAD4
|
|
b _080AAA5A
|
|
.align 2, 0
|
|
_080AA9F0: .4byte 0xfffffd00
|
|
_080AA9F4: .4byte gUnknown_8117FF0
|
|
_080AA9F8: .4byte gUnknown_8118010
|
|
_080AA9FC: .4byte gUnknown_8118030
|
|
_080AAA00:
|
|
ldr r1, [sp, 0xC]
|
|
ldr r0, [r6, 0x28]
|
|
cmp r1, r0
|
|
blt _080AAAD4
|
|
ldr r1, [sp, 0x14]
|
|
ldr r0, [r6, 0x30]
|
|
cmp r1, r0
|
|
bge _080AAAD4
|
|
mov r0, r8
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r6, 0x2C]
|
|
cmp r1, r0
|
|
blt _080AAAD4
|
|
ldr r1, [r7, 0x4]
|
|
ldr r0, [r6, 0x34]
|
|
cmp r1, r0
|
|
bge _080AAAD4
|
|
str r7, [sp]
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x1C]
|
|
movs r2, 0x4
|
|
mov r3, r8
|
|
bl sub_80AA7B0
|
|
adds r1, r0, 0
|
|
cmp r1, 0x5
|
|
beq _080AAA66
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, r4
|
|
str r0, [sp, 0xC]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
adds r0, r5
|
|
str r0, [r2, 0x4]
|
|
ldr r0, [sp, 0x14]
|
|
adds r0, r4
|
|
str r0, [sp, 0x14]
|
|
ldr r0, [r7, 0x4]
|
|
adds r0, r5
|
|
str r0, [r7, 0x4]
|
|
cmp r1, 0x6
|
|
bne _080AAA6A
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
add r9, r0
|
|
_080AAA5A:
|
|
ldr r2, [sp, 0x28]
|
|
cmp r9, r2
|
|
blt _080AAA00
|
|
cmp r1, 0x6
|
|
bne _080AAA6A
|
|
b _080AAAD4
|
|
_080AAA66:
|
|
movs r0, 0x1
|
|
b _080AAAD6
|
|
_080AAA6A:
|
|
movs r0, 0
|
|
mov r9, r0
|
|
ldr r1, [sp, 0x2C]
|
|
cmp r9, r1
|
|
bge _080AAAD4
|
|
_080AAA74:
|
|
ldr r1, [sp, 0xC]
|
|
ldr r0, [r6, 0x28]
|
|
cmp r1, r0
|
|
blt _080AAAD4
|
|
ldr r1, [sp, 0x14]
|
|
ldr r0, [r6, 0x30]
|
|
cmp r1, r0
|
|
bge _080AAAD4
|
|
mov r2, r8
|
|
ldr r1, [r2, 0x4]
|
|
ldr r0, [r6, 0x2C]
|
|
cmp r1, r0
|
|
blt _080AAAD4
|
|
ldr r1, [r7, 0x4]
|
|
ldr r0, [r6, 0x34]
|
|
cmp r1, r0
|
|
bge _080AAAD4
|
|
str r7, [sp]
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x1C]
|
|
movs r2, 0x4
|
|
mov r3, r8
|
|
bl sub_80AA7B0
|
|
adds r1, r0, 0
|
|
cmp r1, 0x5
|
|
beq _080AAA66
|
|
cmp r1, 0x6
|
|
beq _080AAAD4
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, r4
|
|
str r0, [sp, 0xC]
|
|
mov r1, r8
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, r5
|
|
str r0, [r1, 0x4]
|
|
ldr r0, [sp, 0x14]
|
|
adds r0, r4
|
|
str r0, [sp, 0x14]
|
|
ldr r0, [r7, 0x4]
|
|
adds r0, r5
|
|
str r0, [r7, 0x4]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
add r9, r2
|
|
ldr r0, [sp, 0x2C]
|
|
cmp r9, r0
|
|
blt _080AAA74
|
|
_080AAAD4:
|
|
movs r0, 0
|
|
_080AAAD6:
|
|
add sp, 0x30
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AA8BC
|
|
|
|
thumb_func_start sub_80AAAE8
|
|
sub_80AAAE8:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x80
|
|
adds r5, r0, 0
|
|
adds r3, r1, 0
|
|
lsls r2, 24
|
|
asrs r4, r2, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [sp, 0x78]
|
|
movs r2, 0xAF
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r1]
|
|
movs r6, 0xB0
|
|
lsls r6, 1
|
|
adds r1, r5, r6
|
|
movs r0, 0x1
|
|
strh r0, [r1]
|
|
ldr r0, [sp, 0x78]
|
|
cmp r4, r0
|
|
beq _080AAB26
|
|
movs r1, 0xA1
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
strb r4, [r0]
|
|
_080AAB26:
|
|
subs r0, r3, 0x1
|
|
cmp r0, 0x13
|
|
bls _080AAB2E
|
|
b _080AAEB8
|
|
_080AAB2E:
|
|
lsls r0, 2
|
|
ldr r1, _080AAB38
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080AAB38: .4byte _080AAB3C
|
|
.align 2, 0
|
|
_080AAB3C:
|
|
.4byte _080AAB8C
|
|
.4byte _080AAD60
|
|
.4byte _080AAC9C
|
|
.4byte _080AAC9C
|
|
.4byte _080AAC9C
|
|
.4byte _080AAB9E
|
|
.4byte _080AAB9E
|
|
.4byte _080AAB9E
|
|
.4byte _080AAD7C
|
|
.4byte _080AADF4
|
|
.4byte _080AAE06
|
|
.4byte _080AAEB8
|
|
.4byte _080AAEB8
|
|
.4byte _080AAEB8
|
|
.4byte _080AAEB8
|
|
.4byte _080AAEB8
|
|
.4byte _080AAEB8
|
|
.4byte _080AAEB8
|
|
.4byte _080AAE32
|
|
.4byte _080AAE9C
|
|
_080AAB8C:
|
|
movs r4, 0xB2
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
movs r6, 0xC0
|
|
lsls r6, 2
|
|
str r6, [sp, 0x78]
|
|
b _080AAD6E
|
|
_080AAB9E:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r4, r0
|
|
beq _080AAC88
|
|
movs r6, 0
|
|
movs r0, 0xB2
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
movs r0, 0x4
|
|
str r0, [r1]
|
|
cmp r3, 0x7
|
|
beq _080AABD2
|
|
cmp r3, 0x7
|
|
bhi _080AABC0
|
|
cmp r3, 0x6
|
|
beq _080AABC6
|
|
b _080AABEA
|
|
_080AABC0:
|
|
cmp r3, 0x8
|
|
beq _080AABDE
|
|
b _080AABEA
|
|
_080AABC6:
|
|
movs r1, 0x90
|
|
lsls r1, 4
|
|
str r1, [sp, 0x78]
|
|
movs r2, 0x1
|
|
str r2, [sp, 0x7C]
|
|
b _080AABFC
|
|
_080AABD2:
|
|
movs r3, 0x80
|
|
lsls r3, 4
|
|
str r3, [sp, 0x78]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x7C]
|
|
b _080AABFC
|
|
_080AABDE:
|
|
movs r1, 0xA0
|
|
lsls r1, 4
|
|
str r1, [sp, 0x78]
|
|
movs r2, 0x4
|
|
str r2, [sp, 0x7C]
|
|
b _080AABFC
|
|
_080AABEA:
|
|
movs r3, 0xB2
|
|
lsls r3, 1
|
|
adds r1, r5, r3
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r0, _080AAC20
|
|
str r0, [sp, 0x78]
|
|
movs r1, 0
|
|
str r1, [sp, 0x7C]
|
|
_080AABFC:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
add r0, sp, 0x28
|
|
adds r1, r4, 0
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r0, [sp, 0x28]
|
|
ldr r1, [sp, 0x2C]
|
|
str r0, [sp, 0x38]
|
|
str r1, [sp, 0x3C]
|
|
movs r2, 0
|
|
mov r10, r2
|
|
add r3, sp, 0x40
|
|
mov r9, r3
|
|
add r4, sp, 0x30
|
|
mov r8, r4
|
|
b _080AAC42
|
|
.align 2, 0
|
|
_080AAC20: .4byte 0x00000807
|
|
_080AAC24:
|
|
cmp r6, 0x1
|
|
bne _080AAC3E
|
|
ldr r0, [sp, 0x38]
|
|
str r0, [sp, 0x30]
|
|
mov r6, r8
|
|
str r7, [r6, 0x4]
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
bl sub_80AA074
|
|
adds r6, r0, 0
|
|
cmp r6, 0x2
|
|
beq _080AAC78
|
|
_080AAC3E:
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
_080AAC42:
|
|
ldr r1, [sp, 0x7C]
|
|
cmp r10, r1
|
|
bge _080AAC74
|
|
add r4, sp, 0x38
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_80AA074
|
|
adds r6, r0, 0
|
|
cmp r6, 0x2
|
|
beq _080AAC78
|
|
cmp r6, 0x1
|
|
bne _080AAC3E
|
|
movs r7, 0
|
|
str r7, [sp, 0x40]
|
|
ldr r0, [r4, 0x4]
|
|
mov r2, r9
|
|
str r0, [r2, 0x4]
|
|
adds r0, r5, 0
|
|
mov r1, r9
|
|
bl sub_80AA074
|
|
adds r6, r0, 0
|
|
cmp r6, 0x2
|
|
bne _080AAC24
|
|
_080AAC74:
|
|
cmp r6, 0x2
|
|
bne _080AAC7E
|
|
_080AAC78:
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
b _080AAD6C
|
|
_080AAC7E:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_80AAF68
|
|
b _080AAEC0
|
|
_080AAC88:
|
|
movs r4, 0xB2
|
|
lsls r4, 1
|
|
adds r1, r5, r4
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r6, _080AAC98
|
|
str r6, [sp, 0x78]
|
|
b _080AAD6E
|
|
.align 2, 0
|
|
_080AAC98: .4byte 0x00000807
|
|
_080AAC9C:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r4, r0
|
|
beq _080AAD60
|
|
movs r0, 0xB2
|
|
lsls r0, 1
|
|
adds r1, r5, r0
|
|
movs r0, 0x4
|
|
str r0, [r1]
|
|
cmp r3, 0x4
|
|
beq _080AACCE
|
|
cmp r3, 0x4
|
|
bhi _080AACBC
|
|
cmp r3, 0x3
|
|
beq _080AACC2
|
|
b _080AACE6
|
|
_080AACBC:
|
|
cmp r3, 0x5
|
|
beq _080AACDA
|
|
b _080AACE6
|
|
_080AACC2:
|
|
movs r1, 0x90
|
|
lsls r1, 4
|
|
str r1, [sp, 0x78]
|
|
movs r2, 0x1
|
|
mov r9, r2
|
|
b _080AACF6
|
|
_080AACCE:
|
|
movs r3, 0x80
|
|
lsls r3, 4
|
|
str r3, [sp, 0x78]
|
|
movs r6, 0x2
|
|
mov r9, r6
|
|
b _080AACF6
|
|
_080AACDA:
|
|
movs r0, 0xA0
|
|
lsls r0, 4
|
|
str r0, [sp, 0x78]
|
|
movs r1, 0x4
|
|
mov r9, r1
|
|
b _080AACF6
|
|
_080AACE6:
|
|
movs r2, 0xB2
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r3, _080AAD5C
|
|
str r3, [sp, 0x78]
|
|
mov r9, r0
|
|
_080AACF6:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
add r0, sp, 0x48
|
|
adds r1, r4, 0
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r0, [sp, 0x48]
|
|
ldr r1, [sp, 0x4C]
|
|
str r0, [sp, 0x50]
|
|
str r1, [sp, 0x54]
|
|
movs r6, 0
|
|
cmp r6, r9
|
|
bge _080AAD52
|
|
add r4, sp, 0x50
|
|
mov r8, r4
|
|
add r7, sp, 0x58
|
|
_080AAD16:
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
bl sub_80A9F94
|
|
cmp r0, 0
|
|
beq _080AAD4C
|
|
movs r4, 0
|
|
str r4, [sp, 0x58]
|
|
mov r1, r8
|
|
ldr r0, [r1, 0x4]
|
|
str r0, [r7, 0x4]
|
|
adds r0, r5, 0
|
|
adds r1, r7, 0
|
|
bl sub_80A9F94
|
|
cmp r0, 0
|
|
beq _080AAD4C
|
|
ldr r0, [sp, 0x50]
|
|
str r0, [sp, 0x60]
|
|
add r1, sp, 0x60
|
|
str r4, [r1, 0x4]
|
|
adds r0, r5, 0
|
|
bl sub_80A9F94
|
|
cmp r0, 0
|
|
beq _080AAD4C
|
|
mov r9, r4
|
|
_080AAD4C:
|
|
adds r6, 0x1
|
|
cmp r6, r9
|
|
blt _080AAD16
|
|
_080AAD52:
|
|
adds r0, r5, 0
|
|
mov r1, r9
|
|
bl sub_80AAF68
|
|
b _080AAEC0
|
|
.align 2, 0
|
|
_080AAD5C: .4byte 0x00000807
|
|
_080AAD60:
|
|
movs r2, 0xB2
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r3, _080AAD78
|
|
_080AAD6C:
|
|
str r3, [sp, 0x78]
|
|
_080AAD6E:
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_80AAF68
|
|
b _080AAEC0
|
|
.align 2, 0
|
|
_080AAD78: .4byte 0x00000807
|
|
_080AAD7C:
|
|
movs r6, 0x8E
|
|
lsls r6, 1
|
|
adds r0, r5, r6
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AAD9C
|
|
ldr r0, _080AAD98
|
|
ldr r0, [r0]
|
|
adds r0, 0x28
|
|
strb r4, [r0]
|
|
b _080AADA6
|
|
.align 2, 0
|
|
_080AAD98: .4byte gGroundLivesMeta
|
|
_080AAD9C:
|
|
ldr r0, _080AADF0
|
|
ldr r0, [r0]
|
|
adds r0, 0x28
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
_080AADA6:
|
|
movs r1, 0xB2
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
str r2, [sp, 0x78]
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r1, r5, r3
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
cmp r4, r6
|
|
bne _080AADCA
|
|
b _080AAEC0
|
|
_080AADCA:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
add r0, sp, 0x68
|
|
adds r1, r4, 0
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r0, [sp, 0x68]
|
|
ldr r1, [sp, 0x6C]
|
|
str r0, [sp, 0x70]
|
|
str r1, [sp, 0x74]
|
|
add r1, sp, 0x70
|
|
adds r0, r5, 0
|
|
bl sub_80AA074
|
|
cmp r0, 0x2
|
|
bne _080AAEC0
|
|
str r6, [sp, 0x78]
|
|
b _080AAEC0
|
|
.align 2, 0
|
|
_080AADF0: .4byte gGroundLivesMeta
|
|
_080AADF4:
|
|
movs r4, 0xA1
|
|
lsls r4, 1
|
|
adds r0, r5, r4
|
|
movs r1, 0
|
|
ldrsb r1, [r0, r1]
|
|
adds r0, r5, 0
|
|
bl sub_80AA3F8
|
|
b _080AAEC0
|
|
_080AAE06:
|
|
movs r6, 0xA1
|
|
lsls r6, 1
|
|
adds r0, r5, r6
|
|
movs r1, 0
|
|
ldrsb r1, [r0, r1]
|
|
adds r0, r5, 0
|
|
bl sub_80AA690
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AAEC0
|
|
movs r0, 0
|
|
mov r1, sp
|
|
movs r2, 0x9
|
|
bl GetFunctionScript
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
mov r2, sp
|
|
bl _ExecutePlayerScript
|
|
b _080AAEC0
|
|
_080AAE32:
|
|
add r6, sp, 0xC
|
|
movs r1, 0xA1
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
movs r2, 0
|
|
ldrsb r2, [r0, r2]
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl sub_80AA8BC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AAE84
|
|
add r4, sp, 0x10
|
|
movs r0, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x6
|
|
bl GetFunctionScript
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
adds r1, r5, 0
|
|
adds r1, 0x40
|
|
adds r2, r4, 0
|
|
bl GroundLives_ExecuteScript
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl _ExecutePlayerScript
|
|
movs r3, 0
|
|
ldrsh r0, [r6, r3]
|
|
bl sub_80A8E9C
|
|
adds r2, r0, 0
|
|
movs r0, 0x7
|
|
movs r1, 0
|
|
bl sub_809B1C0
|
|
b _080AAE8E
|
|
_080AAE84:
|
|
movs r0, 0x7
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl sub_809B1C0
|
|
_080AAE8E:
|
|
movs r4, 0x90
|
|
lsls r4, 1
|
|
adds r0, r5, r4
|
|
movs r1, 0x5
|
|
bl sub_809CD8C
|
|
b _080AAEC0
|
|
_080AAE9C:
|
|
add r4, sp, 0x1C
|
|
ldr r2, _080AAEB4
|
|
movs r0, 0
|
|
adds r1, r4, 0
|
|
bl GetFunctionScript
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl _ExecutePlayerScript
|
|
b _080AAEC0
|
|
.align 2, 0
|
|
_080AAEB4: .4byte 0x00000195
|
|
_080AAEB8:
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_80AAF68
|
|
_080AAEC0:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
ldr r6, [sp, 0x78]
|
|
cmp r6, r0
|
|
beq _080AAF04
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
adds r2, r5, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
cmp r6, r0
|
|
beq _080AAF04
|
|
movs r3, 0xAE
|
|
lsls r3, 1
|
|
adds r1, r5, r3
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
movs r4, 0xB8
|
|
lsls r4, 1
|
|
adds r0, r5, r4
|
|
strh r6, [r2]
|
|
movs r1, 0xA1
|
|
lsls r1, 1
|
|
adds r3, r5, r1
|
|
ldrb r1, [r3]
|
|
subs r4, 0x13
|
|
adds r2, r5, r4
|
|
strb r1, [r2]
|
|
movs r2, 0
|
|
ldrsb r2, [r3, r2]
|
|
ldr r1, [sp, 0x78]
|
|
bl sub_80A6EFC
|
|
b _080AAF54
|
|
_080AAF04:
|
|
movs r6, 0xAE
|
|
lsls r6, 1
|
|
adds r2, r5, r6
|
|
ldrb r0, [r2]
|
|
cmp r0, 0
|
|
bne _080AAF2A
|
|
ldr r0, _080AAF64
|
|
adds r1, r5, r0
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r1, r0
|
|
beq _080AAF54
|
|
_080AAF2A:
|
|
movs r0, 0
|
|
strb r0, [r2]
|
|
movs r4, 0xB8
|
|
lsls r4, 1
|
|
adds r0, r5, r4
|
|
movs r6, 0xB4
|
|
lsls r6, 1
|
|
adds r1, r5, r6
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
adds r4, r5, r3
|
|
ldrb r2, [r4]
|
|
subs r6, 0xB
|
|
adds r3, r5, r6
|
|
strb r2, [r3]
|
|
movs r2, 0
|
|
ldrsb r2, [r4, r2]
|
|
bl sub_80A6EFC
|
|
_080AAF54:
|
|
add sp, 0x80
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AAF64: .4byte 0x0000015d
|
|
thumb_func_end sub_80AAAE8
|
|
|
|
thumb_func_start sub_80AAF68
|
|
sub_80AAF68:
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x8E
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AB002
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0x1
|
|
bl sub_80A93F0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AAFD0
|
|
movs r1, 0xE4
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bne _080AAFA6
|
|
movs r0, 0xB5
|
|
lsls r0, 1
|
|
adds r1, r4, r0
|
|
adds r0, 0x4C
|
|
b _080AAFB4
|
|
_080AAFA6:
|
|
movs r0, 0xDB
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
beq _080AAFC2
|
|
subs r0, 0x4C
|
|
adds r1, r4, r0
|
|
adds r0, 0x56
|
|
_080AAFB4:
|
|
strh r0, [r1]
|
|
movs r2, 0xB6
|
|
lsls r2, 1
|
|
adds r1, r4, r2
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [r1]
|
|
_080AAFC2:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
bl sub_80A8750
|
|
b _080AB002
|
|
_080AAFD0:
|
|
movs r2, 0xE4
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, 0xDB
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bne _080AAFF6
|
|
subs r0, 0x4C
|
|
adds r1, r4, r0
|
|
adds r0, 0x56
|
|
strh r0, [r1]
|
|
movs r2, 0xB6
|
|
lsls r2, 1
|
|
adds r1, r4, r2
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [r1]
|
|
_080AAFF6:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
bl sub_80A86C8
|
|
_080AB002:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AAF68
|
|
|
|
thumb_func_start CallbackLivesGetIndex
|
|
CallbackLivesGetIndex:
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
thumb_func_end CallbackLivesGetIndex
|
|
|
|
thumb_func_start CallbackLivesGetSize
|
|
CallbackLivesGetSize:
|
|
ldr r2, [r0, 0xC]
|
|
ldr r3, [r0, 0x10]
|
|
str r2, [r1]
|
|
str r3, [r1, 0x4]
|
|
bx lr
|
|
thumb_func_end CallbackLivesGetSize
|
|
|
|
thumb_func_start CallbackLivesSetHitboxPos
|
|
CallbackLivesSetHitboxPos:
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
adds r4, r1, 0
|
|
cmp r4, 0
|
|
beq _080AB05C
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r1, [r4]
|
|
ldr r0, [r3, 0x14]
|
|
subs r0, r1, r0
|
|
str r0, [r2]
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r0, [r3, 0x14]
|
|
adds r1, r0
|
|
str r1, [r2]
|
|
movs r0, 0xA4
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r1, [r4, 0x4]
|
|
ldr r0, [r3, 0x18]
|
|
subs r0, r1, r0
|
|
str r0, [r2]
|
|
movs r0, 0xA8
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r0, [r3, 0x18]
|
|
adds r1, r0
|
|
str r1, [r2]
|
|
b _080AB0C2
|
|
_080AB05C:
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r0, [r3, 0x20]
|
|
ldr r1, [r3, 0x14]
|
|
subs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0xA6
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r0, [r3, 0x20]
|
|
ldr r1, [r3, 0x14]
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0xA4
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r0, [r3, 0x24]
|
|
ldr r1, [r3, 0x18]
|
|
subs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0xA8
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
ldr r0, [r3, 0x24]
|
|
ldr r1, [r3, 0x18]
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
movs r2, 0xAA
|
|
lsls r2, 1
|
|
adds r1, r3, r2
|
|
adds r2, 0x4
|
|
adds r0, r3, r2
|
|
str r4, [r0]
|
|
str r4, [r1]
|
|
movs r0, 0xA1
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
movs r1, 0
|
|
ldrsb r1, [r2, r1]
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r3, r0]
|
|
cmp r1, r0
|
|
beq _080AB0BE
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r3, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080AB0BE:
|
|
ldrb r0, [r3, 0x1C]
|
|
strb r0, [r2]
|
|
_080AB0C2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesSetHitboxPos
|
|
|
|
thumb_func_start CallbackLivesSetPositionBounds
|
|
CallbackLivesSetPositionBounds:
|
|
push {r4,lr}
|
|
ldr r3, [r1]
|
|
ldr r4, [r1, 0x4]
|
|
str r3, [r0, 0x28]
|
|
str r4, [r0, 0x2C]
|
|
ldr r1, [r2]
|
|
ldr r2, [r2, 0x4]
|
|
str r1, [r0, 0x30]
|
|
str r2, [r0, 0x34]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesSetPositionBounds
|
|
|
|
thumb_func_start CallbackLivesGetHitboxCenter
|
|
CallbackLivesGetHitboxCenter:
|
|
adds r3, r0, 0
|
|
movs r2, 0xA2
|
|
lsls r2, 1
|
|
adds r0, r3, r2
|
|
ldr r0, [r0]
|
|
ldr r2, [r3, 0x14]
|
|
adds r0, r2
|
|
str r0, [r1]
|
|
movs r2, 0xA4
|
|
lsls r2, 1
|
|
adds r0, r3, r2
|
|
ldr r0, [r0]
|
|
ldr r2, [r3, 0x18]
|
|
adds r0, r2
|
|
str r0, [r1, 0x4]
|
|
bx lr
|
|
thumb_func_end CallbackLivesGetHitboxCenter
|
|
|
|
thumb_func_start CallbackLivesMoveReal
|
|
CallbackLivesMoveReal:
|
|
push {lr}
|
|
bl sub_80A9F20
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CallbackLivesMoveReal
|
|
|
|
thumb_func_start CallbackLivesGetPosHeightAndUnk
|
|
CallbackLivesGetPosHeightAndUnk:
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
movs r4, 0xAA
|
|
lsls r4, 1
|
|
adds r0, r3, r4
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
movs r1, 0xAC
|
|
lsls r1, 1
|
|
adds r0, r3, r1
|
|
ldr r0, [r0]
|
|
str r0, [r2]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesGetPosHeightAndUnk
|
|
|
|
thumb_func_start CallbackLivesSetPosHeight
|
|
CallbackLivesSetPosHeight:
|
|
movs r2, 0xAA
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
str r1, [r0]
|
|
bx lr
|
|
thumb_func_end CallbackLivesSetPosHeight
|
|
|
|
thumb_func_start CallbackLivesGetDirection
|
|
CallbackLivesGetDirection:
|
|
movs r2, 0xA1
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
bx lr
|
|
thumb_func_end CallbackLivesGetDirection
|
|
|
|
thumb_func_start CallbackLivesSetDirection
|
|
CallbackLivesSetDirection:
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080AB17C
|
|
movs r0, 0xA1
|
|
lsls r0, 1
|
|
adds r2, r3, r0
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
strb r0, [r2]
|
|
ldr r2, _080AB180
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r1, r0
|
|
beq _080AB17C
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
adds r1, r3, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080AB17C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AB180: .4byte 0x0000015d
|
|
thumb_func_end CallbackLivesSetDirection
|
|
|
|
thumb_func_start CallbackLivesSetEventIndex
|
|
CallbackLivesSetEventIndex:
|
|
push {lr}
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
bl sub_80A9750
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesSetEventIndex
|
|
|
|
thumb_func_start CallbackLivesSetUnk_80AB194
|
|
CallbackLivesSetUnk_80AB194:
|
|
push {lr}
|
|
mov r12, r0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r3, r1, 0
|
|
cmp r1, 0
|
|
bne _080AB1A8
|
|
movs r0, 0xE0
|
|
lsls r0, 1
|
|
adds r3, r0, 0
|
|
_080AB1A8:
|
|
movs r0, 0xB5
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strh r3, [r0]
|
|
movs r0, 0xB6
|
|
lsls r0, 1
|
|
add r0, r12
|
|
str r2, [r0]
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesSetUnk_80AB194
|
|
|
|
thumb_func_start nullsub_211
|
|
nullsub_211:
|
|
bx lr
|
|
thumb_func_end nullsub_211
|
|
|
|
thumb_func_start CallbackLivesSpriteRelatedCheck_80AB1C0
|
|
CallbackLivesSpriteRelatedCheck_80AB1C0:
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r2, 0xAE
|
|
lsls r2, 1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _080AB1DE
|
|
adds r2, 0x14
|
|
adds r0, r1, r2
|
|
bl sub_80A66F8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _080AB1E0
|
|
_080AB1DE:
|
|
movs r0, 0x1
|
|
_080AB1E0:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CallbackLivesSpriteRelatedCheck_80AB1C0
|
|
|
|
thumb_func_start CallbackLivesSpriteRelated_80AB1E4
|
|
CallbackLivesSpriteRelated_80AB1E4:
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r2, 0xB5
|
|
lsls r2, 1
|
|
adds r0, r1, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
bne _080AB206
|
|
movs r2, 0xB8
|
|
lsls r2, 1
|
|
adds r0, r1, r2
|
|
bl sub_80A671C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _080AB208
|
|
_080AB206:
|
|
movs r0, 0x1
|
|
_080AB208:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CallbackLivesSpriteRelated_80AB1E4
|
|
|
|
thumb_func_start CallbackLivesGetFlags
|
|
CallbackLivesGetFlags:
|
|
movs r2, 0x8E
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
bx lr
|
|
thumb_func_end CallbackLivesGetFlags
|
|
|
|
thumb_func_start CallbackLivesSetFlags
|
|
CallbackLivesSetFlags:
|
|
push {lr}
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
bl sub_80A86C8
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesSetFlags
|
|
|
|
thumb_func_start CallbackLivesClearFlags
|
|
CallbackLivesClearFlags:
|
|
push {lr}
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
bl sub_80A8750
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesClearFlags
|
|
|
|
thumb_func_start CallbackLivesSpriteRelated_80AB238
|
|
CallbackLivesSpriteRelated_80AB238:
|
|
push {lr}
|
|
movs r2, 0xB8
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
bl sub_80A6EC8
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CallbackLivesSpriteRelated_80AB238
|
|
|
|
thumb_func_start CallbackLivesMoveRelative
|
|
CallbackLivesMoveRelative:
|
|
push {lr}
|
|
bl sub_80A9F94
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CallbackLivesMoveRelative
|
|
|
|
thumb_func_start GroundLives_Action
|
|
GroundLives_Action:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x3C
|
|
ldr r0, _080AB29C
|
|
ldr r5, [r0]
|
|
movs r0, 0
|
|
mov r9, r0
|
|
_080AB266:
|
|
movs r2, 0x2
|
|
ldrsh r1, [r5, r2]
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
mov r8, r3
|
|
adds r0, r3, 0
|
|
cmp r1, r0
|
|
bne _080AB278
|
|
b _080AB47C
|
|
_080AB278:
|
|
adds r4, r5, 0
|
|
adds r4, 0x38
|
|
ldr r1, _080AB2A0
|
|
adds r0, r4, 0
|
|
bl HandleAction
|
|
lsls r0, 16
|
|
asrs r3, r0, 16
|
|
cmp r3, 0
|
|
beq _080AB2A4
|
|
cmp r3, 0x4
|
|
beq _080AB292
|
|
b _080AB44C
|
|
_080AB292:
|
|
mov r0, r9
|
|
bl GroundLives_Delete
|
|
b _080AB47C
|
|
.align 2, 0
|
|
_080AB29C: .4byte gGroundLives
|
|
_080AB2A0: .4byte gUnknown_8118280
|
|
_080AB2A4:
|
|
movs r0, 0x8E
|
|
lsls r0, 1
|
|
adds r2, r5, r0
|
|
ldr r1, [r2]
|
|
movs r0, 0x80
|
|
lsls r0, 4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080AB2B8
|
|
b _080AB42E
|
|
_080AB2B8:
|
|
str r3, [sp, 0xC]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
strb r1, [r0]
|
|
str r3, [sp, 0x10]
|
|
movs r3, 0x90
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
add r1, sp, 0xC
|
|
add r3, sp, 0x10
|
|
add r4, sp, 0x14
|
|
str r4, [sp]
|
|
ldr r2, [r2]
|
|
str r2, [sp, 0x4]
|
|
add r2, sp, 0x8
|
|
bl sub_809CDC8
|
|
subs r0, 0x1
|
|
mov r8, r4
|
|
cmp r0, 0x7
|
|
bls _080AB2E4
|
|
b _080AB44C
|
|
_080AB2E4:
|
|
lsls r0, 2
|
|
ldr r1, _080AB2F0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080AB2F0: .4byte _080AB2F4
|
|
.align 2, 0
|
|
_080AB2F4:
|
|
.4byte _080AB314
|
|
.4byte _080AB314
|
|
.4byte _080AB326
|
|
.4byte _080AB44C
|
|
.4byte _080AB314
|
|
.4byte _080AB44C
|
|
.4byte _080AB44C
|
|
.4byte _080AB314
|
|
_080AB314:
|
|
ldr r1, [sp, 0xC]
|
|
add r0, sp, 0x8
|
|
movs r2, 0
|
|
ldrsb r2, [r0, r2]
|
|
ldr r3, [sp, 0x10]
|
|
adds r0, r5, 0
|
|
bl sub_80AAAE8
|
|
b _080AB44C
|
|
_080AB326:
|
|
add r4, sp, 0x1C
|
|
adds r0, r4, 0
|
|
bl sub_809D248
|
|
ldr r1, [sp, 0x1C]
|
|
ldr r0, [sp, 0x14]
|
|
adds r6, r1, r0
|
|
ldr r1, [r4, 0x4]
|
|
mov r2, r8
|
|
ldr r0, [r2, 0x4]
|
|
adds r7, r1, r0
|
|
movs r3, 0xA2
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldr r1, [r0]
|
|
ldr r0, [r5, 0x14]
|
|
adds r0, r1, r0
|
|
cmp r0, 0
|
|
bge _080AB34E
|
|
adds r0, 0xFF
|
|
_080AB34E:
|
|
asrs r0, 8
|
|
subs r0, r6, r0
|
|
str r0, [sp, 0x24]
|
|
movs r1, 0xA4
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r1, [r0]
|
|
ldr r0, [r5, 0x18]
|
|
adds r0, r1, r0
|
|
cmp r0, 0
|
|
bge _080AB366
|
|
adds r0, 0xFF
|
|
_080AB366:
|
|
asrs r0, 8
|
|
subs r0, r7, r0
|
|
add r1, sp, 0x24
|
|
str r0, [r1, 0x4]
|
|
adds r0, r6, 0
|
|
subs r0, 0x10
|
|
lsls r0, 8
|
|
str r0, [sp, 0x2C]
|
|
adds r0, r6, 0
|
|
adds r0, 0x10
|
|
lsls r0, 8
|
|
str r0, [sp, 0x34]
|
|
subs r0, r7, 0x4
|
|
lsls r0, 8
|
|
add r2, sp, 0x2C
|
|
str r0, [r2, 0x4]
|
|
adds r0, r7, 0
|
|
adds r0, 0x1C
|
|
lsls r0, 8
|
|
add r3, sp, 0x34
|
|
str r0, [r3, 0x4]
|
|
ldr r0, [sp, 0xC]
|
|
adds r4, r1, 0
|
|
cmp r0, 0xC
|
|
bne _080AB3C4
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
bl sub_80AA180
|
|
cmp r0, 0
|
|
bne _080AB44C
|
|
ldr r0, [sp, 0x24]
|
|
adds r0, 0x10
|
|
cmp r0, 0x20
|
|
bhi _080AB44C
|
|
movs r0, 0x1C
|
|
negs r0, r0
|
|
ldr r1, [r4, 0x4]
|
|
cmp r1, r0
|
|
blt _080AB44C
|
|
cmp r1, 0x4
|
|
bgt _080AB44C
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
adds r0, r5, 0
|
|
movs r1, 0x13
|
|
b _080AB426
|
|
_080AB3C4:
|
|
ldr r0, [sp, 0x24]
|
|
adds r0, 0x10
|
|
cmp r0, 0x20
|
|
bhi _080AB3DA
|
|
movs r0, 0x1C
|
|
negs r0, r0
|
|
ldr r1, [r4, 0x4]
|
|
cmp r1, r0
|
|
blt _080AB3DA
|
|
cmp r1, 0x4
|
|
ble _080AB44C
|
|
_080AB3DA:
|
|
adds r0, r4, 0
|
|
bl VecDirection8Radial
|
|
add r1, sp, 0x8
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
movs r1, 0xFF
|
|
lsls r1, 24
|
|
cmp r0, r1
|
|
beq _080AB44C
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0x11
|
|
beq _080AB410
|
|
cmp r0, 0x11
|
|
bhi _080AB3FE
|
|
cmp r0, 0x10
|
|
beq _080AB404
|
|
b _080AB44C
|
|
_080AB3FE:
|
|
cmp r0, 0x12
|
|
beq _080AB41C
|
|
b _080AB44C
|
|
_080AB404:
|
|
add r0, sp, 0x8
|
|
movs r2, 0
|
|
ldrsb r2, [r0, r2]
|
|
adds r0, r5, 0
|
|
movs r1, 0x6
|
|
b _080AB426
|
|
_080AB410:
|
|
add r0, sp, 0x8
|
|
movs r2, 0
|
|
ldrsb r2, [r0, r2]
|
|
adds r0, r5, 0
|
|
movs r1, 0x7
|
|
b _080AB426
|
|
_080AB41C:
|
|
add r0, sp, 0x8
|
|
movs r2, 0
|
|
ldrsb r2, [r0, r2]
|
|
adds r0, r5, 0
|
|
movs r1, 0x8
|
|
_080AB426:
|
|
movs r3, 0
|
|
bl sub_80AAAE8
|
|
b _080AB44C
|
|
_080AB42E:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080AB440
|
|
adds r0, r5, 0
|
|
bl sub_80AB5D4
|
|
b _080AB44C
|
|
_080AB440:
|
|
ldr r3, _080AB4C4
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0x1
|
|
bl ExecutePredefinedScript
|
|
_080AB44C:
|
|
movs r2, 0xAE
|
|
lsls r2, 1
|
|
adds r1, r5, r2
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _080AB47C
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
movs r3, 0xB8
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
adds r2, 0xC
|
|
adds r1, r5, r2
|
|
movs r3, 0
|
|
ldrsh r1, [r1, r3]
|
|
subs r2, 0x26
|
|
adds r4, r5, r2
|
|
ldrb r2, [r4]
|
|
ldr r3, _080AB4C8
|
|
strb r2, [r3, r5]
|
|
movs r2, 0
|
|
ldrsb r2, [r4, r2]
|
|
bl sub_80A6EFC
|
|
_080AB47C:
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
mov r9, r0
|
|
movs r0, 0xF8
|
|
lsls r0, 1
|
|
adds r5, r0
|
|
mov r1, r9
|
|
cmp r1, 0x17
|
|
bgt _080AB494
|
|
b _080AB266
|
|
_080AB494:
|
|
ldr r0, _080AB4CC
|
|
ldr r6, [r0]
|
|
ldr r0, _080AB4D0
|
|
ldr r5, [r0]
|
|
movs r0, 0
|
|
str r0, [r6]
|
|
str r0, [r6, 0x4]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r5, r2]
|
|
subs r0, 0x1
|
|
cmp r1, r0
|
|
beq _080AB4BE
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldr r1, [r0]
|
|
movs r3, 0x80
|
|
lsls r3, 6
|
|
ands r3, r1
|
|
cmp r3, 0
|
|
beq _080AB4D4
|
|
_080AB4BE:
|
|
bl sub_80AB5A4
|
|
b _080AB594
|
|
.align 2, 0
|
|
_080AB4C4: .4byte gUnknown_811828C
|
|
_080AB4C8: .4byte 0x0000015d
|
|
_080AB4CC: .4byte gGroundLivesMeta
|
|
_080AB4D0: .4byte gGroundLives
|
|
_080AB4D4:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080AB590
|
|
ldr r7, [r6, 0x24]
|
|
cmp r7, 0
|
|
bge _080AB51E
|
|
adds r2, r6, 0
|
|
adds r2, 0x2C
|
|
str r3, [r6, 0x24]
|
|
str r3, [r6, 0x2C]
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r0, [r0]
|
|
ldr r1, [r5, 0x14]
|
|
adds r0, r1
|
|
str r0, [r2, 0x4]
|
|
movs r3, 0xA4
|
|
lsls r3, 1
|
|
adds r0, r5, r3
|
|
ldr r0, [r0]
|
|
ldr r1, [r5, 0x18]
|
|
adds r0, r1
|
|
str r0, [r2, 0x8]
|
|
adds r0, r6, 0
|
|
movs r2, 0
|
|
movs r1, 0x2
|
|
_080AB50E:
|
|
str r2, [r0, 0x8]
|
|
str r2, [r0]
|
|
str r2, [r0, 0x4]
|
|
subs r1, 0x1
|
|
adds r0, 0xC
|
|
cmp r1, 0
|
|
bge _080AB50E
|
|
b _080AB594
|
|
_080AB51E:
|
|
adds r2, r7, 0x1
|
|
adds r0, r2, 0
|
|
cmp r2, 0
|
|
bge _080AB52A
|
|
adds r0, r7, 0
|
|
adds r0, 0x40
|
|
_080AB52A:
|
|
asrs r1, r0, 6
|
|
lsls r0, r1, 6
|
|
subs r1, r2, r0
|
|
str r1, [r6, 0x24]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, 0x2C
|
|
adds r0, r6
|
|
mov r8, r0
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r0, r5, r1
|
|
ldr r2, [r0]
|
|
ldr r0, [r5, 0x14]
|
|
adds r2, r0
|
|
mov r3, r8
|
|
str r2, [r3, 0x4]
|
|
adds r1, 0x4
|
|
adds r0, r5, r1
|
|
ldr r1, [r0]
|
|
ldr r0, [r5, 0x18]
|
|
adds r1, r0
|
|
str r1, [r3, 0x8]
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, 0x2C
|
|
adds r0, r6, r0
|
|
ldr r3, [r0, 0x4]
|
|
ldr r0, [r0, 0x8]
|
|
subs r0, r1, r0
|
|
subs r2, r3
|
|
cmp r2, 0
|
|
bge _080AB572
|
|
negs r2, r2
|
|
_080AB572:
|
|
adds r4, r2, 0
|
|
cmp r0, 0
|
|
bge _080AB57A
|
|
negs r0, r0
|
|
_080AB57A:
|
|
cmp r0, r4
|
|
bge _080AB580
|
|
adds r0, r2, 0
|
|
_080AB580:
|
|
mov r2, r8
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bgt _080AB58C
|
|
str r7, [r6, 0x24]
|
|
b _080AB594
|
|
_080AB58C:
|
|
str r0, [r6]
|
|
b _080AB594
|
|
_080AB590:
|
|
bl sub_80AB5A4
|
|
_080AB594:
|
|
add sp, 0x3C
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end GroundLives_Action
|
|
|
|
thumb_func_start sub_80AB5A4
|
|
sub_80AB5A4:
|
|
push {lr}
|
|
ldr r3, _080AB5D0
|
|
ldr r0, [r3]
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
str r2, [r0, 0x24]
|
|
adds r0, 0x28
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
ldr r3, [r3]
|
|
movs r1, 0
|
|
movs r0, 0x2
|
|
_080AB5BC:
|
|
str r2, [r3, 0x8]
|
|
str r1, [r3]
|
|
str r1, [r3, 0x4]
|
|
subs r0, 0x1
|
|
adds r3, 0xC
|
|
cmp r0, 0
|
|
bge _080AB5BC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AB5D0: .4byte gGroundLivesMeta
|
|
thumb_func_end sub_80AB5A4
|
|
|
|
thumb_func_start sub_80AB5D4
|
|
sub_80AB5D4:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
mov r9, r0
|
|
ldr r4, _080AB6BC
|
|
movs r2, 0x9E
|
|
lsls r2, 1
|
|
add r2, r9
|
|
movs r0, 0
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r3, [r4]
|
|
adds r0, r3
|
|
mov r8, r0
|
|
adds r0, r1, 0
|
|
adds r5, r4, 0
|
|
cmp r0, 0
|
|
bne _080AB604
|
|
b _080AB9E6
|
|
_080AB604:
|
|
movs r1, 0xAF
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r1]
|
|
movs r1, 0xB0
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0x1
|
|
strh r0, [r1]
|
|
movs r0, 0x8E
|
|
lsls r0, 1
|
|
add r0, r9
|
|
ldr r2, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080AB6D4
|
|
movs r2, 0xA1
|
|
lsls r2, 1
|
|
add r2, r9
|
|
movs r0, 0
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, 0x4
|
|
bne _080AB64C
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
add r0, r9
|
|
movs r3, 0
|
|
ldrsh r1, [r0, r3]
|
|
movs r0, 0x80
|
|
lsls r0, 4
|
|
cmp r1, r0
|
|
beq _080AB670
|
|
_080AB64C:
|
|
movs r1, 0xB2
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
movs r1, 0xB4
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0x80
|
|
lsls r0, 4
|
|
strh r0, [r1]
|
|
movs r0, 0x4
|
|
strb r0, [r2]
|
|
movs r1, 0xAE
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_080AB670:
|
|
ldr r0, [r5]
|
|
adds r2, r0, 0
|
|
adds r2, 0x28
|
|
movs r1, 0
|
|
ldrsb r1, [r2, r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _080AB69C
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
mov r0, sp
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
str r0, [sp, 0x8]
|
|
str r1, [sp, 0xC]
|
|
add r1, sp, 0x8
|
|
mov r0, r9
|
|
bl sub_80A9F94
|
|
_080AB69C:
|
|
mov r4, r8
|
|
ldr r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
blt _080AB6A6
|
|
b _080AB9E6
|
|
_080AB6A6:
|
|
ldr r0, [r5]
|
|
ldr r0, [r0, 0x24]
|
|
cmp r0, 0
|
|
bge _080AB6B0
|
|
b _080AB9E6
|
|
_080AB6B0:
|
|
str r0, [r4, 0x8]
|
|
movs r0, 0
|
|
str r0, [r4]
|
|
str r0, [r4, 0x4]
|
|
b _080AB9E6
|
|
.align 2, 0
|
|
_080AB6BC: .4byte gGroundLivesMeta
|
|
_080AB6C0:
|
|
ldr r5, [sp, 0x28]
|
|
ldr r0, [r5, 0x4]
|
|
adds r0, r7, r0
|
|
str r0, [r5, 0x4]
|
|
b _080AB7E2
|
|
_080AB6CA:
|
|
ldr r1, [sp, 0x28]
|
|
ldr r0, [r1, 0x4]
|
|
subs r0, r7
|
|
str r0, [r1, 0x4]
|
|
b _080AB7E2
|
|
_080AB6D4:
|
|
movs r0, 0xA2
|
|
lsls r0, 1
|
|
add r0, r9
|
|
ldr r1, [r0]
|
|
mov r5, r9
|
|
ldr r0, [r5, 0x14]
|
|
adds r0, r1, r0
|
|
str r0, [sp, 0x20]
|
|
movs r0, 0xA4
|
|
lsls r0, 1
|
|
add r0, r9
|
|
ldr r1, [r0]
|
|
ldr r0, [r5, 0x18]
|
|
adds r0, r1, r0
|
|
str r0, [sp, 0x24]
|
|
ldr r0, [sp, 0x20]
|
|
ldr r1, [sp, 0x24]
|
|
str r0, [sp, 0x10]
|
|
str r1, [sp, 0x14]
|
|
mov r1, r8
|
|
ldr r0, [r1, 0x8]
|
|
cmp r0, 0
|
|
bge _080AB710
|
|
ldr r0, [r3, 0x24]
|
|
cmp r0, 0
|
|
bge _080AB70A
|
|
b _080AB9E6
|
|
_080AB70A:
|
|
str r0, [r1, 0x8]
|
|
str r2, [r1]
|
|
str r2, [r1, 0x4]
|
|
_080AB710:
|
|
mov r2, r8
|
|
ldr r7, [r2]
|
|
movs r3, 0x1
|
|
mov r10, r3
|
|
mov r5, sp
|
|
adds r5, 0x10
|
|
str r5, [sp, 0x28]
|
|
_080AB71E:
|
|
mov r0, r8
|
|
ldr r1, [r0, 0x8]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, 0x2C
|
|
ldr r2, _080AB754
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
mov r12, r1
|
|
ldr r6, [r1, 0x4]
|
|
ldr r5, [sp, 0x10]
|
|
subs r4, r6, r5
|
|
adds r2, r4, 0
|
|
ldr r1, [r1, 0x8]
|
|
ldr r0, [sp, 0x14]
|
|
subs r3, r1, r0
|
|
cmp r4, 0
|
|
ble _080AB75E
|
|
cmp r2, r7
|
|
ble _080AB758
|
|
adds r0, r7, r5
|
|
str r0, [sp, 0x10]
|
|
movs r4, 0
|
|
mov r10, r4
|
|
b _080AB75A
|
|
.align 2, 0
|
|
_080AB754: .4byte gGroundLivesMeta
|
|
_080AB758:
|
|
str r6, [sp, 0x10]
|
|
_080AB75A:
|
|
adds r1, r2, 0
|
|
b _080AB778
|
|
_080AB75E:
|
|
cmp r4, 0
|
|
bge _080AB776
|
|
cmn r2, r7
|
|
bge _080AB770
|
|
subs r0, r5, r7
|
|
str r0, [sp, 0x10]
|
|
movs r5, 0
|
|
mov r10, r5
|
|
b _080AB772
|
|
_080AB770:
|
|
str r6, [sp, 0x10]
|
|
_080AB772:
|
|
negs r1, r2
|
|
b _080AB778
|
|
_080AB776:
|
|
movs r1, 0
|
|
_080AB778:
|
|
cmp r3, 0
|
|
ble _080AB78E
|
|
cmp r3, r7
|
|
bgt _080AB6C0
|
|
mov r4, r12
|
|
ldr r0, [r4, 0x8]
|
|
str r0, [sp, 0x14]
|
|
cmp r3, r1
|
|
ble _080AB7A2
|
|
adds r1, r3, 0
|
|
b _080AB7A2
|
|
_080AB78E:
|
|
cmp r3, 0
|
|
bge _080AB7A2
|
|
cmn r3, r7
|
|
blt _080AB6CA
|
|
mov r5, r12
|
|
ldr r0, [r5, 0x8]
|
|
str r0, [sp, 0x14]
|
|
cmn r3, r1
|
|
bge _080AB7A2
|
|
negs r1, r3
|
|
_080AB7A2:
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
beq _080AB7E2
|
|
subs r7, r1
|
|
cmp r7, 0
|
|
ble _080AB7E2
|
|
ldr r1, _080AB7D4
|
|
ldr r0, [r1]
|
|
mov r3, r8
|
|
ldr r2, [r3, 0x8]
|
|
ldr r0, [r0, 0x24]
|
|
cmp r2, r0
|
|
beq _080AB7D8
|
|
adds r1, r2, 0x1
|
|
adds r0, r1, 0
|
|
cmp r1, 0
|
|
bge _080AB7C8
|
|
adds r0, r2, 0
|
|
adds r0, 0x40
|
|
_080AB7C8:
|
|
asrs r0, 6
|
|
lsls r0, 6
|
|
subs r0, r1, r0
|
|
mov r4, r8
|
|
str r0, [r4, 0x8]
|
|
b _080AB7DC
|
|
.align 2, 0
|
|
_080AB7D4: .4byte gGroundLivesMeta
|
|
_080AB7D8:
|
|
movs r5, 0
|
|
mov r10, r5
|
|
_080AB7DC:
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bne _080AB71E
|
|
_080AB7E2:
|
|
mov r1, r8
|
|
ldr r0, [r1, 0x8]
|
|
bl sub_80ABA00
|
|
adds r6, r0, 0
|
|
ldr r0, _080AB860
|
|
ldr r7, [r0]
|
|
movs r2, 0x9E
|
|
lsls r2, 1
|
|
add r2, r9
|
|
mov r10, r2
|
|
movs r3, 0
|
|
ldrsh r2, [r2, r3]
|
|
subs r1, r2, 0x1
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r7, 0x4
|
|
adds r1, r0
|
|
ldr r0, _080AB864
|
|
lsls r2, 2
|
|
adds r2, r0
|
|
ldr r1, [r1]
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
mov r12, r1
|
|
mov r4, r8
|
|
ldr r1, [r4, 0x8]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, 0x2C
|
|
adds r0, r7, r0
|
|
ldr r3, [r0, 0x4]
|
|
ldr r2, [sp, 0x10]
|
|
ldr r1, [r0, 0x8]
|
|
ldr r5, [sp, 0x28]
|
|
ldr r0, [r5, 0x4]
|
|
subs r1, r0
|
|
subs r3, r2
|
|
cmp r3, 0
|
|
bge _080AB838
|
|
negs r3, r3
|
|
_080AB838:
|
|
adds r4, r3, 0
|
|
cmp r1, 0
|
|
bge _080AB840
|
|
negs r1, r1
|
|
_080AB840:
|
|
cmp r1, r4
|
|
bge _080AB846
|
|
adds r1, r3, 0
|
|
_080AB846:
|
|
adds r6, r1
|
|
mov r0, r8
|
|
str r6, [r0, 0x4]
|
|
cmp r6, r12
|
|
bgt _080AB86C
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
ble _080AB8B2
|
|
ldr r1, _080AB868
|
|
adds r0, r1
|
|
mov r2, r8
|
|
b _080AB8B0
|
|
.align 2, 0
|
|
_080AB860: .4byte gGroundLivesMeta
|
|
_080AB864: .4byte gUnknown_8118050
|
|
_080AB868: .4byte 0xffffff00
|
|
_080AB86C:
|
|
mov r3, r10
|
|
movs r4, 0
|
|
ldrsh r1, [r3, r4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 11
|
|
cmp r6, r0
|
|
bgt _080AB88E
|
|
mov r5, r8
|
|
ldr r0, [r5]
|
|
cmp r0, 0xFF
|
|
bgt _080AB8B2
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
str r0, [r5]
|
|
b _080AB8B2
|
|
_080AB88E:
|
|
subs r1, 0x1
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0xFF
|
|
bgt _080AB8A2
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
_080AB8A2:
|
|
mov r2, r8
|
|
ldr r1, [r2]
|
|
cmp r1, r0
|
|
bge _080AB8B2
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
adds r0, r1, r3
|
|
_080AB8B0:
|
|
str r0, [r2]
|
|
_080AB8B2:
|
|
ldr r0, _080AB96C
|
|
ldr r3, [r0]
|
|
mov r4, r8
|
|
ldr r0, [r4, 0x8]
|
|
subs r0, 0x40
|
|
ldr r2, [r3, 0x24]
|
|
subs r1, r2, r0
|
|
adds r0, r1, 0
|
|
cmp r1, 0
|
|
bge _080AB8C8
|
|
adds r0, 0x3F
|
|
_080AB8C8:
|
|
asrs r0, 6
|
|
lsls r0, 6
|
|
subs r0, r1, r0
|
|
cmp r0, 0x3B
|
|
ble _080AB8FC
|
|
adds r1, r2, 0x5
|
|
adds r0, r1, 0
|
|
cmp r1, 0
|
|
bge _080AB8DE
|
|
adds r0, r2, 0
|
|
adds r0, 0x44
|
|
_080AB8DE:
|
|
asrs r0, 6
|
|
lsls r0, 6
|
|
subs r0, r1, r0
|
|
mov r5, r8
|
|
str r0, [r5, 0x8]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r0, r3, 0
|
|
adds r0, 0x30
|
|
adds r0, r1
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x10]
|
|
str r1, [sp, 0x14]
|
|
_080AB8FC:
|
|
mov r0, r9
|
|
ldr r1, [sp, 0x28]
|
|
bl sub_80A9F20
|
|
adds r6, r0, 0
|
|
cmp r6, 0
|
|
bne _080AB9E6
|
|
ldr r0, [sp, 0x10]
|
|
ldr r1, [sp, 0x20]
|
|
subs r0, r1
|
|
str r0, [sp, 0x18]
|
|
ldr r2, [sp, 0x28]
|
|
ldr r1, [r2, 0x4]
|
|
ldr r3, [sp, 0x24]
|
|
subs r1, r3
|
|
add r0, sp, 0x18
|
|
str r1, [r0, 0x4]
|
|
movs r5, 0xA1
|
|
lsls r5, 1
|
|
add r5, r9
|
|
movs r4, 0
|
|
ldrsb r4, [r5, r4]
|
|
bl VecDirection8Radial
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_8002B04
|
|
strb r0, [r5]
|
|
mov r4, r8
|
|
ldr r0, [r4]
|
|
cmp r0, 0
|
|
ble _080AB970
|
|
movs r1, 0xB2
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0x4
|
|
str r0, [r1]
|
|
ldr r1, [r4]
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
cmp r1, r0
|
|
ble _080AB95E
|
|
movs r2, 0xA0
|
|
lsls r2, 4
|
|
_080AB95E:
|
|
adds r4, r2, 0
|
|
mov r0, r9
|
|
movs r1, 0x1
|
|
bl sub_80AAF68
|
|
b _080AB982
|
|
.align 2, 0
|
|
_080AB96C: .4byte gGroundLivesMeta
|
|
_080AB970:
|
|
ldr r4, _080AB9F8
|
|
movs r0, 0xB2
|
|
lsls r0, 1
|
|
add r0, r9
|
|
str r6, [r0]
|
|
mov r0, r9
|
|
movs r1, 0
|
|
bl sub_80AAF68
|
|
_080AB982:
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
add r0, r9
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _080AB9B6
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
add r0, r9
|
|
movs r5, 0
|
|
ldrsh r0, [r0, r5]
|
|
cmp r4, r0
|
|
bne _080AB9B6
|
|
ldr r1, _080AB9FC
|
|
add r1, r9
|
|
movs r0, 0xA1
|
|
lsls r0, 1
|
|
add r0, r9
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r1, r0
|
|
beq _080AB9E6
|
|
_080AB9B6:
|
|
movs r1, 0xAE
|
|
lsls r1, 1
|
|
add r1, r9
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
movs r0, 0xB8
|
|
lsls r0, 1
|
|
add r0, r9
|
|
movs r1, 0xB4
|
|
lsls r1, 1
|
|
add r1, r9
|
|
strh r4, [r1]
|
|
movs r3, 0xA1
|
|
lsls r3, 1
|
|
add r3, r9
|
|
ldrb r1, [r3]
|
|
ldr r2, _080AB9FC
|
|
add r2, r9
|
|
strb r1, [r2]
|
|
movs r2, 0
|
|
ldrsb r2, [r3, r2]
|
|
adds r1, r4, 0
|
|
bl sub_80A6EFC
|
|
_080AB9E6:
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AB9F8: .4byte 0x00000807
|
|
_080AB9FC: .4byte 0x0000015d
|
|
thumb_func_end sub_80AB5D4
|
|
|
|
thumb_func_start sub_80ABA00
|
|
sub_80ABA00:
|
|
push {r4,r5,lr}
|
|
adds r1, r0, 0
|
|
movs r4, 0
|
|
ldr r0, _080ABA34
|
|
ldr r2, [r0]
|
|
ldr r3, [r2, 0x24]
|
|
adds r5, r0, 0
|
|
cmp r3, r1
|
|
ble _080ABA38
|
|
adds r1, 0x1
|
|
cmp r1, r3
|
|
bge _080ABA72
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, 0x2C
|
|
adds r2, r0, r2
|
|
subs r1, r3, r1
|
|
_080ABA24:
|
|
ldr r0, [r2]
|
|
adds r4, r0
|
|
adds r2, 0xC
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _080ABA24
|
|
b _080ABA72
|
|
.align 2, 0
|
|
_080ABA34: .4byte gGroundLivesMeta
|
|
_080ABA38:
|
|
cmp r3, r1
|
|
bge _080ABA72
|
|
adds r1, 0x1
|
|
cmp r1, 0x3F
|
|
bgt _080ABA58
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, 0x2C
|
|
adds r2, r0, r2
|
|
_080ABA4C:
|
|
ldr r0, [r2]
|
|
adds r4, r0
|
|
adds r2, 0xC
|
|
adds r1, 0x1
|
|
cmp r1, 0x3F
|
|
ble _080ABA4C
|
|
_080ABA58:
|
|
ldr r1, [r5]
|
|
ldr r0, [r1, 0x24]
|
|
cmp r0, 0
|
|
ble _080ABA72
|
|
adds r2, r1, 0
|
|
adds r2, 0x2C
|
|
adds r1, r0, 0
|
|
_080ABA66:
|
|
ldr r0, [r2]
|
|
adds r4, r0
|
|
adds r2, 0xC
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _080ABA66
|
|
_080ABA72:
|
|
adds r0, r4, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80ABA00
|
|
|
|
thumb_func_start sub_80ABA7C
|
|
sub_80ABA7C:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x8
|
|
ldr r0, _080ABB50
|
|
ldr r5, [r0]
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r4, r5, r1
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
mov r9, r2
|
|
_080ABA9A:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, r9
|
|
beq _080ABB2C
|
|
ldr r0, [r4]
|
|
ldr r1, [r5, 0x14]
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
ldr r0, [r4, 0x4]
|
|
ldr r1, [r5, 0x18]
|
|
adds r0, r1
|
|
str r0, [sp, 0x4]
|
|
ldr r1, [r4, 0x10]
|
|
ldr r0, [r4, 0x14]
|
|
adds r7, r1, r0
|
|
ldr r0, [r4, 0x20]
|
|
cmp r0, 0
|
|
ble _080ABADA
|
|
subs r0, 0x1
|
|
str r0, [r4, 0x20]
|
|
cmp r0, 0
|
|
bgt _080ABADA
|
|
ldrh r0, [r4, 0x1C]
|
|
subs r0, 0x1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _080ABADA
|
|
ldrh r1, [r4, 0x1C]
|
|
adds r0, r5, 0
|
|
bl sub_80A9750
|
|
_080ABADA:
|
|
movs r2, 0xB8
|
|
lsls r2, 1
|
|
adds r6, r5, r2
|
|
adds r0, r6, 0
|
|
bl sub_80A66D4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080ABAFE
|
|
movs r0, 0
|
|
strb r0, [r4, 0x18]
|
|
movs r0, 0x24
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x19
|
|
ldrsb r2, [r4, r2]
|
|
adds r0, r6, 0
|
|
bl sub_80A6EFC
|
|
_080ABAFE:
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080ABB1E
|
|
adds r1, r0, 0
|
|
movs r2, 0xA1
|
|
lsls r2, 1
|
|
adds r0, r5, r2
|
|
movs r2, 0
|
|
ldrsb r2, [r0, r2]
|
|
ldr r3, [r4, 0x28]
|
|
adds r0, r6, 0
|
|
bl sub_80A74F0
|
|
movs r0, 0
|
|
strh r0, [r4, 0x26]
|
|
_080ABB1E:
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
adds r0, r6, 0
|
|
mov r2, sp
|
|
adds r3, r7, 0
|
|
bl sub_80A7524
|
|
_080ABB2C:
|
|
mov r0, r8
|
|
adds r0, 0x1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
mov r8, r0
|
|
movs r1, 0xF8
|
|
lsls r1, 1
|
|
adds r4, r1
|
|
adds r5, r1
|
|
cmp r0, 0x17
|
|
ble _080ABA9A
|
|
add sp, 0x8
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080ABB50: .4byte gGroundLives
|
|
thumb_func_end sub_80ABA7C
|
|
|
|
.align 2,0
|