mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-11-24 13:49:45 +00:00
3546 lines
61 KiB
ArmAsm
3546 lines
61 KiB
ArmAsm
#include "constants/sndseq.h"
|
|
#include "constants/moves.h"
|
|
#include "constants/std_script.h"
|
|
#include "constants/species.h"
|
|
#include "constants/sprites.h"
|
|
#include "constants/maps.h"
|
|
#include "constants/mmodel.h"
|
|
#include "constants/items.h"
|
|
#include "msgdata/msg/msg_0096_D31R0201.h"
|
|
#include "msgdata/msg/msg_0066_D23R0102.h"
|
|
.include "asm/macros.inc"
|
|
.include "overlay_01_021F72DC.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start ov01_021F72DC
|
|
ov01_021F72DC: ; 0x021F72DC
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl MapObject_GetGfxID
|
|
cmp r0, #0xf8
|
|
bgt _021F7356
|
|
bge _021F737E
|
|
cmp r0, #0x62
|
|
bgt _021F7308
|
|
cmp r0, #0x61
|
|
blt _021F72FA
|
|
beq _021F737E
|
|
cmp r0, #0x62
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F72FA:
|
|
cmp r0, #0
|
|
bgt _021F7302
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F7302:
|
|
cmp r0, #0x15
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F7308:
|
|
cmp r0, #0xb0
|
|
bgt _021F7310
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F7310:
|
|
add r1, r0, #0
|
|
sub r1, #0xb1
|
|
cmp r1, #0x18
|
|
bhi _021F7388
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021F7324: ; jump table
|
|
.short _021F737E - _021F7324 - 2 ; case 0
|
|
.short _021F737E - _021F7324 - 2 ; case 1
|
|
.short _021F737E - _021F7324 - 2 ; case 2
|
|
.short _021F737E - _021F7324 - 2 ; case 3
|
|
.short _021F737E - _021F7324 - 2 ; case 4
|
|
.short _021F7388 - _021F7324 - 2 ; case 5
|
|
.short _021F7388 - _021F7324 - 2 ; case 6
|
|
.short _021F7388 - _021F7324 - 2 ; case 7
|
|
.short _021F7388 - _021F7324 - 2 ; case 8
|
|
.short _021F7388 - _021F7324 - 2 ; case 9
|
|
.short _021F7388 - _021F7324 - 2 ; case 10
|
|
.short _021F737E - _021F7324 - 2 ; case 11
|
|
.short _021F737E - _021F7324 - 2 ; case 12
|
|
.short _021F7388 - _021F7324 - 2 ; case 13
|
|
.short _021F7388 - _021F7324 - 2 ; case 14
|
|
.short _021F7388 - _021F7324 - 2 ; case 15
|
|
.short _021F7388 - _021F7324 - 2 ; case 16
|
|
.short _021F7388 - _021F7324 - 2 ; case 17
|
|
.short _021F7388 - _021F7324 - 2 ; case 18
|
|
.short _021F737E - _021F7324 - 2 ; case 19
|
|
.short _021F737E - _021F7324 - 2 ; case 20
|
|
.short _021F737E - _021F7324 - 2 ; case 21
|
|
.short _021F737E - _021F7324 - 2 ; case 22
|
|
.short _021F737E - _021F7324 - 2 ; case 23
|
|
.short _021F737E - _021F7324 - 2 ; case 24
|
|
_021F7356:
|
|
ldr r2, _021F73C0 ; =0x00000103
|
|
cmp r0, r2
|
|
bgt _021F736E
|
|
bge _021F737E
|
|
cmp r0, #0xf9
|
|
bgt _021F7366
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F7366:
|
|
sub r1, r2, #1
|
|
cmp r0, r1
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F736E:
|
|
add r1, r2, #1
|
|
cmp r0, r1
|
|
bgt _021F7378
|
|
beq _021F737E
|
|
b _021F7388
|
|
_021F7378:
|
|
add r1, r2, #2
|
|
cmp r0, r1
|
|
bne _021F7388
|
|
_021F737E:
|
|
add r0, r4, #0
|
|
bl sub_0205F40C
|
|
ldr r0, [r0, #4]
|
|
pop {r4, pc}
|
|
_021F7388:
|
|
mov r1, #0x6b
|
|
lsl r1, r1, #2
|
|
cmp r0, r1
|
|
blt _021F73A0
|
|
ldr r1, _021F73C4 ; =0x000003E1
|
|
cmp r0, r1
|
|
bgt _021F73A0
|
|
add r0, r4, #0
|
|
bl sub_0205F40C
|
|
ldr r0, [r0]
|
|
pop {r4, pc}
|
|
_021F73A0:
|
|
ldr r1, _021F73C8 ; =0x00000106
|
|
cmp r0, r1
|
|
blt _021F73B4
|
|
add r1, r1, #7
|
|
cmp r0, r1
|
|
bgt _021F73B4
|
|
add r0, r4, #0
|
|
bl sub_02064084
|
|
pop {r4, pc}
|
|
_021F73B4:
|
|
add r0, r4, #0
|
|
bl sub_0205F40C
|
|
ldr r0, [r0, #4]
|
|
pop {r4, pc}
|
|
nop
|
|
_021F73C0: .word 0x00000103
|
|
_021F73C4: .word 0x000003E1
|
|
_021F73C8: .word 0x00000106
|
|
thumb_func_end ov01_021F72DC
|
|
|
|
thumb_func_start ov01_021F73CC
|
|
ov01_021F73CC: ; 0x021F73CC
|
|
push {r3, r4, r5, lr}
|
|
mov r1, #0x14
|
|
add r5, r0, #0
|
|
bl sub_0205F3E8
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
strb r0, [r4, #2]
|
|
add r0, r5, #0
|
|
add r1, r4, #4
|
|
bl ov01_021F9510
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021F73F2
|
|
add r0, r5, #0
|
|
bl sub_0205F484
|
|
_021F73F2:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F73CC
|
|
|
|
thumb_func_start ov01_021F73F4
|
|
ov01_021F73F4: ; 0x021F73F4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
add r1, r1, #4
|
|
bl ov01_021F95A8
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F73F4
|
|
|
|
thumb_func_start ov01_021F7408
|
|
ov01_021F7408: ; 0x021F7408
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021F7420
|
|
add r1, r4, #0
|
|
add r1, #8
|
|
bl ov01_021F9610
|
|
_021F7420:
|
|
add r0, r5, #0
|
|
add r1, r4, #4
|
|
bl ov01_021F95A8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_SetFlagsBits
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F7408
|
|
|
|
thumb_func_start ov01_021F7434
|
|
ov01_021F7434: ; 0x021F7434
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7476
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _021F7456
|
|
add r0, r5, #0
|
|
add r1, r4, #4
|
|
bl ov01_021F9510
|
|
_021F7456:
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021F7476
|
|
add r1, r4, #0
|
|
add r1, #8
|
|
bl ov01_021F9630
|
|
ldr r1, [r4, #4]
|
|
add r0, r5, #0
|
|
bl ov01_021FA3E8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_ClearFlagsBits
|
|
_021F7476:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F7434
|
|
|
|
thumb_func_start ov01_021F7478
|
|
ov01_021F7478: ; 0x021F7478
|
|
push {r3, r4, r5, lr}
|
|
mov r1, #0x18
|
|
add r5, r0, #0
|
|
bl sub_0205F3E8
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
strb r0, [r4, #0x10]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F9510
|
|
mov r0, #0
|
|
strb r0, [r4, #0x15]
|
|
ldrb r1, [r4, #0x17]
|
|
mov r0, #2
|
|
bic r1, r0
|
|
strb r1, [r4, #0x17]
|
|
ldrb r1, [r4, #0x17]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
strb r1, [r4, #0x17]
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _021F74B2
|
|
add r0, r5, #0
|
|
bl sub_0205F484
|
|
_021F74B2:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F7478
|
|
|
|
thumb_func_start ov01_021F74B4
|
|
ov01_021F74B4: ; 0x021F74B4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl ov01_021F95A8
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F74B4
|
|
|
|
thumb_func_start ov01_021F74C8
|
|
ov01_021F74C8: ; 0x021F74C8
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _021F74DE
|
|
add r1, r4, #4
|
|
bl ov01_021F9610
|
|
_021F74DE:
|
|
ldrb r1, [r4, #0x17]
|
|
mov r0, #2
|
|
bic r1, r0
|
|
strb r1, [r4, #0x17]
|
|
ldrb r1, [r4, #0x17]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
strb r1, [r4, #0x17]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F95A8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_SetFlagsBits
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F74C8
|
|
|
|
thumb_func_start ov01_021F7504
|
|
ov01_021F7504: ; 0x021F7504
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x3c
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #0x17]
|
|
lsl r0, r0, #0x1e
|
|
lsr r0, r0, #0x1f
|
|
bne _021F7522
|
|
add r0, r5, #0
|
|
bl MapObject_GetID
|
|
cmp r0, #0xfd
|
|
beq _021F7524
|
|
_021F7522:
|
|
b _021F7654
|
|
_021F7524:
|
|
add r0, r5, #0
|
|
bl MapObject_GetManager
|
|
bl MapObjectManager_GetFieldSysPtr
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [r0, #0xc]
|
|
bl SaveArray_PlayerParty_Get
|
|
bl GetFirstAliveMonInParty_CrashIfNone
|
|
str r0, [sp, #0xc]
|
|
mov r1, #5
|
|
mov r2, #0
|
|
bl GetMonData
|
|
add r7, r0, #0
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, #0x70
|
|
mov r2, #0
|
|
bl GetMonData
|
|
add r6, r0, #0
|
|
ldr r0, [sp, #0xc]
|
|
bl GetMonGender
|
|
str r0, [sp, #8]
|
|
lsl r1, r6, #0x10
|
|
ldr r2, [sp, #8]
|
|
add r0, r7, #0
|
|
lsr r1, r1, #0x10
|
|
bl FollowingPokemon_GetSpriteID
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0xc]
|
|
bl MonIsShiny
|
|
str r0, [sp, #4]
|
|
lsl r2, r6, #0x18
|
|
ldrb r1, [r4, #0x17]
|
|
mov r0, #2
|
|
lsr r2, r2, #0x18
|
|
orr r0, r1
|
|
strb r0, [r4, #0x17]
|
|
ldr r3, [sp, #4]
|
|
add r0, r5, #0
|
|
add r1, r7, #0
|
|
bl FollowPokeMapObjectSetParams
|
|
ldr r1, [sp, #0x14]
|
|
add r0, r5, #0
|
|
bl MapObject_SetGfxID
|
|
add r0, r5, #0
|
|
bl sub_0205FCD4
|
|
add r0, r5, #0
|
|
mov r1, #4
|
|
bl MapObject_SetFlagsBits
|
|
add r0, r5, #0
|
|
add r1, sp, #0x30
|
|
bl MapObject_GetPositionVec
|
|
add r0, r5, #0
|
|
bl MapObject_GetCurrentX
|
|
add r1, r0, #0
|
|
mov r0, #2
|
|
lsl r2, r1, #0x10
|
|
lsl r0, r0, #0xe
|
|
add r0, r2, r0
|
|
str r0, [sp, #0x30]
|
|
add r0, r5, #0
|
|
bl MapObject_SetPrevX
|
|
add r0, r5, #0
|
|
bl MapObject_GetCurrentHeight
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_SetPrevHeight
|
|
add r0, r5, #0
|
|
bl MapObject_GetCurrentY
|
|
add r1, r0, #0
|
|
mov r0, #2
|
|
lsl r2, r1, #0x10
|
|
lsl r0, r0, #0xe
|
|
add r0, r2, r0
|
|
str r0, [sp, #0x38]
|
|
add r0, r5, #0
|
|
bl MapObject_SetPrevY
|
|
add r0, r5, #0
|
|
add r1, sp, #0x30
|
|
bl MapObject_SetPositionVec
|
|
add r0, r5, #0
|
|
bl MapObject_ClearHeldMovement
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0xf4
|
|
ldr r0, [r0]
|
|
cmp r0, r7
|
|
bne _021F761C
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0xfc
|
|
ldrh r0, [r0]
|
|
cmp r0, r6
|
|
bne _021F761C
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0xfb
|
|
ldrb r1, [r0]
|
|
ldr r0, [sp, #4]
|
|
cmp r1, r0
|
|
bne _021F761C
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0xf8
|
|
ldrb r1, [r0]
|
|
ldr r0, [sp, #8]
|
|
cmp r1, r0
|
|
beq _021F7636
|
|
_021F761C:
|
|
ldr r0, [sp, #8]
|
|
lsl r2, r6, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r3, [sp, #4]
|
|
add r1, r7, #0
|
|
lsr r2, r2, #0x18
|
|
bl FollowPokeFsysParamSet
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_ForceSetFacingDirection
|
|
_021F7636:
|
|
mov r1, #0
|
|
ldr r0, [sp, #0xc]
|
|
add r2, r1, #0
|
|
bl GetMonData
|
|
add r3, r0, #0
|
|
mov r1, #0x42
|
|
lsl r2, r7, #0x10
|
|
ldr r0, [sp, #0x10]
|
|
lsl r1, r1, #2
|
|
ldr r0, [r0, r1]
|
|
ldr r1, [sp, #0xc]
|
|
lsr r2, r2, #0x10
|
|
bl FsysUnkSub108_Set
|
|
_021F7654:
|
|
add r0, r5, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7700
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
bne _021F766C
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F9510
|
|
_021F766C:
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _021F7700
|
|
ldrb r1, [r4, #0x17]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #0x17]
|
|
add r1, sp, #0x18
|
|
mov r0, #0
|
|
str r0, [r1]
|
|
str r0, [r1, #4]
|
|
str r0, [r1, #8]
|
|
add r0, r5, #0
|
|
add r1, sp, #0x24
|
|
bl MapObject_GetFacingVec
|
|
add r0, r5, #0
|
|
bl MapObject_GetGfxID
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
add r2, sp, #0x18
|
|
bl ov01_021F8E70
|
|
ldr r0, [sp, #0x18]
|
|
add r1, sp, #0x24
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [sp, #0x20]
|
|
str r0, [sp, #0x2c]
|
|
add r0, r5, #0
|
|
bl MapObject_SetFacingVec
|
|
add r0, r5, #0
|
|
bl ov01_02205564
|
|
cmp r0, #0
|
|
beq _021F76CC
|
|
ldr r2, [r4]
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
bl ov01_0220589C
|
|
b _021F76E0
|
|
_021F76CC:
|
|
add r0, r5, #0
|
|
bl ov01_0220553C
|
|
cmp r0, #0
|
|
beq _021F76E0
|
|
ldr r2, [r4]
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
bl ov01_02205808
|
|
_021F76E0:
|
|
ldr r0, [r4]
|
|
add r1, r4, #4
|
|
bl ov01_021F9630
|
|
ldr r1, [r4]
|
|
add r0, r5, #0
|
|
bl ov01_021FA3E8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_ClearFlagsBits
|
|
add r0, r5, #0
|
|
bl sub_0205F484
|
|
_021F7700:
|
|
add sp, #0x3c
|
|
pop {r4, r5, r6, r7, pc}
|
|
thumb_func_end ov01_021F7504
|
|
|
|
thumb_func_start ov01_021F7704
|
|
ov01_021F7704: ; 0x021F7704
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
mov r1, #0
|
|
strb r1, [r0, #0x15]
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingVecPtr
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F7704
|
|
|
|
thumb_func_start ov01_021F771C
|
|
ov01_021F771C: ; 0x021F771C
|
|
push {r3, lr}
|
|
mov r1, #0xfd
|
|
bl GetMapObjectByID
|
|
bl sub_0205F40C
|
|
ldr r0, [r0]
|
|
pop {r3, pc}
|
|
thumb_func_end ov01_021F771C
|
|
|
|
thumb_func_start ov01_021F772C
|
|
ov01_021F772C: ; 0x021F772C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
str r0, [sp]
|
|
ldr r7, [r0, #4]
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F779C
|
|
cmp r7, #0
|
|
beq _021F779C
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
add r5, r0, #0
|
|
cmp r5, #9
|
|
blt _021F7760
|
|
bl GF_AssertFail
|
|
_021F7760:
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F77A0 ; =ov01_02208AC0
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
ldr r5, [r5, r6]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
blx r5
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingVecPtr
|
|
mov r1, #2
|
|
lsl r1, r1, #0xa
|
|
str r1, [r0, #8]
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp]
|
|
strb r1, [r0, #2]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
ldr r1, [sp]
|
|
strb r0, [r1, #3]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F779C:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021F77A0: .word ov01_02208AC0
|
|
thumb_func_end ov01_021F772C
|
|
|
|
thumb_func_start ov01_021F77A4
|
|
ov01_021F77A4: ; 0x021F77A4
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F77CE
|
|
ldr r5, [r5, #4]
|
|
cmp r5, #0
|
|
beq _021F77CE
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl ov01_021F8C88
|
|
_021F77CE:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F77A4
|
|
|
|
thumb_func_start ov01_021F77D0
|
|
ov01_021F77D0: ; 0x021F77D0
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F780E
|
|
ldr r5, [r5, #4]
|
|
cmp r5, #0
|
|
beq _021F780E
|
|
add r0, r4, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F77FE
|
|
mov r1, #1
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F77FE:
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl ov01_021F8C88
|
|
_021F780E:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F77D0
|
|
|
|
thumb_func_start ov01_021F7810
|
|
ov01_021F7810: ; 0x021F7810
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
ldr r6, [r4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7890
|
|
cmp r6, #0
|
|
beq _021F7890
|
|
ldrb r1, [r4, #0x17]
|
|
lsl r0, r1, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
bne _021F7866
|
|
mov r0, #1
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #0x17]
|
|
add r0, r5, #0
|
|
bl ov01_02205564
|
|
cmp r0, #0
|
|
beq _021F7852
|
|
ldr r2, [r4]
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
bl ov01_0220589C
|
|
b _021F7866
|
|
_021F7852:
|
|
add r0, r5, #0
|
|
bl ov01_0220553C
|
|
cmp r0, #0
|
|
beq _021F7866
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
add r2, r6, #0
|
|
bl ov01_02205808
|
|
_021F7866:
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r7, r0, #0
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
add r2, r4, #0
|
|
add r3, r7, #0
|
|
bl ov01_021F8D80
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
strb r7, [r4, #0x10]
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl ov01_021F8C88
|
|
_021F7890:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7810
|
|
|
|
thumb_func_start ov01_021F7894
|
|
ov01_021F7894: ; 0x021F7894
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
ldr r6, [r4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7914
|
|
cmp r6, #0
|
|
beq _021F7914
|
|
ldrb r1, [r4, #0x17]
|
|
lsl r0, r1, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
bne _021F78EA
|
|
mov r0, #1
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #0x17]
|
|
add r0, r5, #0
|
|
bl ov01_02205564
|
|
cmp r0, #0
|
|
beq _021F78D6
|
|
ldr r2, [r4]
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
bl ov01_0220589C
|
|
b _021F78EA
|
|
_021F78D6:
|
|
add r0, r5, #0
|
|
bl ov01_0220553C
|
|
cmp r0, #0
|
|
beq _021F78EA
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
add r2, r6, #0
|
|
bl ov01_02205808
|
|
_021F78EA:
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r7, r0, #0
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
add r2, r4, #0
|
|
add r3, r7, #0
|
|
bl ov01_021F8D80
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
strb r7, [r4, #0x10]
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl ov01_021F8C88
|
|
_021F7914:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7894
|
|
|
|
thumb_func_start ov01_021F7918
|
|
ov01_021F7918: ; 0x021F7918
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7968
|
|
ldr r6, [r4]
|
|
cmp r6, #0
|
|
beq _021F7968
|
|
ldrb r1, [r4, #0x17]
|
|
lsl r0, r1, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
bne _021F7958
|
|
mov r0, #1
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #0x17]
|
|
add r0, r5, #0
|
|
bl ov01_0220553C
|
|
cmp r0, #0
|
|
beq _021F7958
|
|
mov r0, #1
|
|
add r1, r5, #0
|
|
add r2, r6, #0
|
|
bl ov01_02205808
|
|
_021F7958:
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl ov01_021F8C88
|
|
_021F7968:
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7918
|
|
|
|
thumb_func_start ov01_021F796C
|
|
ov01_021F796C: ; 0x021F796C
|
|
push {r4, lr}
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7990
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F7996
|
|
_021F7990:
|
|
add r0, r4, #0
|
|
bl ov01_021F8C30
|
|
_021F7996:
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F796C
|
|
|
|
thumb_func_start ov01_021F79A0
|
|
ov01_021F79A0: ; 0x021F79A0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F79C4
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F79C4:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F79D8
|
|
mov r1, #2
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xa
|
|
bl sub_02023F04
|
|
_021F79D8:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F79A0
|
|
|
|
thumb_func_start ov01_021F79DC
|
|
ov01_021F79DC: ; 0x021F79DC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7A00
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F7A00:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7A14
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F7A14:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F79DC
|
|
|
|
thumb_func_start ov01_021F7A18
|
|
ov01_021F7A18: ; 0x021F7A18
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7A3C
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F7A3C:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7A50
|
|
mov r1, #2
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F7A50:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7A18
|
|
|
|
thumb_func_start ov01_021F7A54
|
|
ov01_021F7A54: ; 0x021F7A54
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7A78
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F7A78:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7A8C
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xe
|
|
bl sub_02023F04
|
|
_021F7A8C:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7A54
|
|
|
|
thumb_func_start ov01_021F7A90
|
|
ov01_021F7A90: ; 0x021F7A90
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0x1c
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7ABC
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
_021F7ABC:
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #6
|
|
beq _021F7AC8
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
_021F7AC8:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7B0C
|
|
ldr r6, _021F7B10 ; =ov01_02208A64
|
|
add r3, sp, #0
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #0
|
|
str r0, [r3]
|
|
ldrsh r1, [r4, r1]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
bl sub_02023F04
|
|
mov r0, #0
|
|
ldrsh r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strh r1, [r4]
|
|
ldrsh r1, [r4, r0]
|
|
lsl r2, r1, #2
|
|
add r1, sp, #0
|
|
ldr r1, [r1, r2]
|
|
cmp r1, #0
|
|
bne _021F7B0C
|
|
strh r0, [r4]
|
|
_021F7B0C:
|
|
add sp, #0x1c
|
|
pop {r3, r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_021F7B10: .word ov01_02208A64
|
|
thumb_func_end ov01_021F7A90
|
|
|
|
thumb_func_start ov01_021F7B14
|
|
ov01_021F7B14: ; 0x021F7B14
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x10
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7B40
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
_021F7B40:
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #7
|
|
beq _021F7B4C
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
_021F7B4C:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7B88
|
|
ldr r6, _021F7B8C ; =ov01_02208A08
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
mov r1, #0
|
|
ldrsh r1, [r4, r1]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
bl sub_02023F04
|
|
mov r0, #0
|
|
ldrsh r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strh r1, [r4]
|
|
ldrsh r1, [r4, r0]
|
|
lsl r2, r1, #2
|
|
add r1, sp, #0
|
|
ldr r1, [r1, r2]
|
|
cmp r1, #0
|
|
bne _021F7B88
|
|
strh r0, [r4]
|
|
_021F7B88:
|
|
add sp, #0x10
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_021F7B8C: .word ov01_02208A08
|
|
thumb_func_end ov01_021F7B14
|
|
|
|
thumb_func_start ov01_021F7B90
|
|
ov01_021F7B90: ; 0x021F7B90
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x20
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7BBC
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
_021F7BBC:
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #8
|
|
beq _021F7BC8
|
|
mov r0, #0
|
|
strh r0, [r4]
|
|
_021F7BC8:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7C0C
|
|
ldr r6, _021F7C10 ; =ov01_02208A80
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
mov r1, #0
|
|
ldrsh r1, [r4, r1]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
bl sub_02023F04
|
|
mov r0, #0
|
|
ldrsh r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strh r1, [r4]
|
|
ldrsh r1, [r4, r0]
|
|
lsl r2, r1, #2
|
|
add r1, sp, #0
|
|
ldr r1, [r1, r2]
|
|
cmp r1, #0
|
|
bne _021F7C0C
|
|
strh r0, [r4]
|
|
_021F7C0C:
|
|
add sp, #0x20
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_021F7C10: .word ov01_02208A80
|
|
thumb_func_end ov01_021F7B90
|
|
|
|
thumb_func_start ov01_021F7C14
|
|
ov01_021F7C14: ; 0x021F7C14
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
str r0, [sp]
|
|
ldr r7, [r0, #4]
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7C78
|
|
cmp r7, #0
|
|
beq _021F7C78
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
add r5, r0, #0
|
|
cmp r5, #0xa
|
|
blt _021F7C48
|
|
bl GF_AssertFail
|
|
_021F7C48:
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F7C7C ; =ov01_02208B0C
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
ldr r5, [r5, r6]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
blx r5
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp]
|
|
strb r1, [r0, #2]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
ldr r1, [sp]
|
|
strb r0, [r1, #3]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F7C78:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021F7C7C: .word ov01_02208B0C
|
|
thumb_func_end ov01_021F7C14
|
|
|
|
thumb_func_start ov01_021F7C80
|
|
ov01_021F7C80: ; 0x021F7C80
|
|
push {r4, lr}
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F7C94
|
|
mov r0, #3
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #9
|
|
bne _021F7CAC
|
|
_021F7C94:
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F7CB2
|
|
_021F7CAC:
|
|
add r0, r4, #0
|
|
bl ov01_021F8C30
|
|
_021F7CB2:
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F7C80
|
|
|
|
thumb_func_start ov01_021F7CBC
|
|
ov01_021F7CBC: ; 0x021F7CBC
|
|
push {r4, lr}
|
|
mov r0, #3
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r0, #9
|
|
beq _021F7CD8
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F7CD8:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F7CBC
|
|
|
|
thumb_func_start ov01_021F7CE4
|
|
ov01_021F7CE4: ; 0x021F7CE4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r4, [r6, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7DA2
|
|
cmp r4, #0
|
|
beq _021F7DA2
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
cmp r0, #0
|
|
bne _021F7D56
|
|
cmp r7, #1
|
|
bls _021F7D1C
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
b _021F7D20
|
|
_021F7D1C:
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
_021F7D20:
|
|
add r0, r4, #0
|
|
bl sub_02023EF4
|
|
ldr r1, [sp, #4]
|
|
cmp r1, r0
|
|
bne _021F7D34
|
|
mov r0, #3
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, #0
|
|
bne _021F7D4C
|
|
_021F7D34:
|
|
ldr r1, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
_021F7D4C:
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
b _021F7D88
|
|
_021F7D56:
|
|
cmp r7, #1
|
|
bls _021F7D60
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
b _021F7D64
|
|
_021F7D60:
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
_021F7D64:
|
|
add r0, r4, #0
|
|
bl sub_02023EF4
|
|
ldr r1, [sp]
|
|
cmp r1, r0
|
|
beq _021F7D7E
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F7D7E:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F7D88:
|
|
strb r7, [r6, #2]
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
strb r0, [r6, #3]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F8C88
|
|
_021F7DA2:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7CE4
|
|
|
|
thumb_func_start ov01_021F7DA8
|
|
ov01_021F7DA8: ; 0x021F7DA8
|
|
push {r3, r4, r5, lr}
|
|
mov r1, #0x14
|
|
add r5, r0, #0
|
|
bl sub_0205F3E8
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
strb r0, [r4]
|
|
add r0, r5, #0
|
|
add r1, r4, #4
|
|
bl ov01_021F9510
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021F7DCE
|
|
add r0, r5, #0
|
|
bl sub_0205F484
|
|
_021F7DCE:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F7DA8
|
|
|
|
thumb_func_start ov01_021F7DD0
|
|
ov01_021F7DD0: ; 0x021F7DD0
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r2, sp, #0
|
|
mov r1, #0
|
|
str r1, [r2]
|
|
str r1, [r2, #4]
|
|
add r4, r0, #0
|
|
str r1, [r2, #8]
|
|
bl sub_0205F40C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
add r1, r1, #4
|
|
bl ov01_021F95A8
|
|
add r0, r4, #0
|
|
add r1, sp, #0
|
|
bl MapObject_SetFacingVec
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7DD0
|
|
|
|
thumb_func_start ov01_021F7DFC
|
|
ov01_021F7DFC: ; 0x021F7DFC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021F7E14
|
|
add r1, r4, #0
|
|
add r1, #8
|
|
bl ov01_021F9610
|
|
_021F7E14:
|
|
add r0, r5, #0
|
|
add r1, r4, #4
|
|
bl ov01_021F95A8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_SetFlagsBits
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F7DFC
|
|
|
|
thumb_func_start ov01_021F7E28
|
|
ov01_021F7E28: ; 0x021F7E28
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7E6A
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _021F7E4A
|
|
add r0, r5, #0
|
|
add r1, r4, #4
|
|
bl ov01_021F9510
|
|
_021F7E4A:
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021F7E6A
|
|
add r1, r4, #0
|
|
add r1, #8
|
|
bl ov01_021F9630
|
|
ldr r1, [r4, #4]
|
|
add r0, r5, #0
|
|
bl ov01_021FA3E8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_ClearFlagsBits
|
|
_021F7E6A:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F7E28
|
|
|
|
thumb_func_start ov01_021F7E6C
|
|
ov01_021F7E6C: ; 0x021F7E6C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
str r0, [sp]
|
|
ldr r7, [r0, #4]
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F7EDC
|
|
cmp r7, #0
|
|
beq _021F7EDC
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
add r5, r0, #0
|
|
cmp r5, #0xa
|
|
blt _021F7EA0
|
|
bl GF_AssertFail
|
|
_021F7EA0:
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F7EE0 ; =ov01_02208B34
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
ldr r5, [r5, r6]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
blx r5
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingVecPtr
|
|
mov r1, #2
|
|
lsl r1, r1, #0xa
|
|
str r1, [r0, #8]
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp]
|
|
strb r1, [r0]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
ldr r1, [sp]
|
|
strb r0, [r1, #2]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F7EDC:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021F7EE0: .word ov01_02208B34
|
|
thumb_func_end ov01_021F7E6C
|
|
|
|
thumb_func_start ov01_021F7EE4
|
|
ov01_021F7EE4: ; 0x021F7EE4
|
|
push {r3, r4, r5, lr}
|
|
add r4, r2, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7F12
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
strb r1, [r4, #3]
|
|
pop {r3, r4, r5, pc}
|
|
_021F7F12:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #9
|
|
bne _021F7F28
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #3]
|
|
pop {r3, r4, r5, pc}
|
|
_021F7F28:
|
|
ldrb r0, [r4, #3]
|
|
lsl r0, r0, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
cmp r0, #1
|
|
bne _021F7F4A
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021F8C64
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
strb r1, [r4, #3]
|
|
pop {r3, r4, r5, pc}
|
|
_021F7F4A:
|
|
add r0, r5, #0
|
|
bl ov01_021F8C30
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7EE4
|
|
|
|
thumb_func_start ov01_021F7F54
|
|
ov01_021F7F54: ; 0x021F7F54
|
|
push {r4, r5, r6, lr}
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7F7C
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F7FB2
|
|
_021F7F7C:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #9
|
|
bne _021F7F92
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #3]
|
|
pop {r4, r5, r6, pc}
|
|
_021F7F92:
|
|
ldrb r0, [r4, #3]
|
|
lsl r0, r0, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
cmp r0, #1
|
|
bne _021F7FB2
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021F8C64
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
bic r1, r0
|
|
strb r1, [r4, #3]
|
|
_021F7FB2:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F7FC6
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xa
|
|
bl sub_02023F04
|
|
_021F7FC6:
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end ov01_021F7F54
|
|
|
|
thumb_func_start ov01_021F7FC8
|
|
ov01_021F7FC8: ; 0x021F7FC8
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F7FEE
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F8004
|
|
_021F7FEE:
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #9
|
|
bne _021F8004
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl ov01_021F8C64
|
|
_021F8004:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F8018
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F8018:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F7FC8
|
|
|
|
thumb_func_start ov01_021F801C
|
|
ov01_021F801C: ; 0x021F801C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F8042
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F8058
|
|
_021F8042:
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #9
|
|
bne _021F8058
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl ov01_021F8C64
|
|
_021F8058:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F806C
|
|
mov r1, #2
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F806C:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F801C
|
|
|
|
thumb_func_start ov01_021F8070
|
|
ov01_021F8070: ; 0x021F8070
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F8096
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F80AC
|
|
_021F8096:
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #9
|
|
bne _021F80AC
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl ov01_021F8C64
|
|
_021F80AC:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F80C0
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xe
|
|
bl sub_02023F04
|
|
_021F80C0:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8070
|
|
|
|
thumb_func_start ov01_021F80C4
|
|
ov01_021F80C4: ; 0x021F80C4
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0x1c
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F80F2
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
b _021F8108
|
|
_021F80F2:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #9
|
|
bne _021F8108
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021F8C64
|
|
_021F8108:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #6
|
|
beq _021F8114
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_021F8114:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F815A
|
|
ldr r6, _021F8160 ; =ov01_02208A48
|
|
add r3, sp, #0
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #1
|
|
str r0, [r3]
|
|
ldrsb r1, [r4, r1]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
bl sub_02023F04
|
|
mov r0, #1
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #1]
|
|
ldrsb r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
add r0, sp, #0
|
|
ldr r0, [r0, r1]
|
|
cmp r0, #0
|
|
bne _021F815A
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_021F815A:
|
|
add sp, #0x1c
|
|
pop {r3, r4, r5, r6, pc}
|
|
nop
|
|
_021F8160: .word ov01_02208A48
|
|
thumb_func_end ov01_021F80C4
|
|
|
|
thumb_func_start ov01_021F8164
|
|
ov01_021F8164: ; 0x021F8164
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x10
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F8192
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
b _021F81A8
|
|
_021F8192:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #9
|
|
bne _021F81A8
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021F8C64
|
|
_021F81A8:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #7
|
|
beq _021F81B4
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_021F81B4:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F81F2
|
|
ldr r6, _021F81F8 ; =ov01_022089D8
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
mov r1, #1
|
|
ldrsb r1, [r4, r1]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
bl sub_02023F04
|
|
mov r0, #1
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #1]
|
|
ldrsb r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
add r0, sp, #0
|
|
ldr r0, [r0, r1]
|
|
cmp r0, #0
|
|
bne _021F81F2
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_021F81F2:
|
|
add sp, #0x10
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021F81F8: .word ov01_022089D8
|
|
thumb_func_end ov01_021F8164
|
|
|
|
thumb_func_start ov01_021F81FC
|
|
ov01_021F81FC: ; 0x021F81FC
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x20
|
|
add r6, r0, #0
|
|
add r4, r2, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
beq _021F822A
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
b _021F8240
|
|
_021F822A:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #9
|
|
bne _021F8240
|
|
add r0, r3, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021F8C64
|
|
_021F8240:
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #8
|
|
beq _021F824C
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_021F824C:
|
|
add r0, r6, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F8292
|
|
ldr r6, _021F8298 ; =ov01_02208AA0
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
mov r1, #1
|
|
ldrsb r1, [r4, r1]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
bl sub_02023F04
|
|
mov r0, #1
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #1]
|
|
ldrsb r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
add r0, sp, #0
|
|
ldr r0, [r0, r1]
|
|
cmp r0, #0
|
|
bne _021F8292
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_021F8292:
|
|
add sp, #0x20
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021F8298: .word ov01_02208AA0
|
|
thumb_func_end ov01_021F81FC
|
|
|
|
thumb_func_start ov01_021F829C
|
|
ov01_021F829C: ; 0x021F829C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
beq _021F82C2
|
|
add r0, r3, #0
|
|
bl ov01_021FA458
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F82DA
|
|
_021F82C2:
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #9
|
|
beq _021F82DA
|
|
add r0, r3, #0
|
|
bl ov01_021FA458
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
mov r2, #4
|
|
bl ov01_021F8C3C
|
|
_021F82DA:
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F82EE
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F82EE:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021F829C
|
|
|
|
thumb_func_start ov01_021F82F0
|
|
ov01_021F82F0: ; 0x021F82F0
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
add r7, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
str r0, [sp]
|
|
add r0, r7, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F836C
|
|
ldr r0, [sp]
|
|
cmp r0, #0
|
|
beq _021F836C
|
|
add r0, r7, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #8]
|
|
add r0, r7, #0
|
|
bl sub_0205F330
|
|
str r0, [sp, #4]
|
|
cmp r0, #0xc
|
|
blt _021F8328
|
|
bl GF_AssertFail
|
|
_021F8328:
|
|
mov r1, #2
|
|
ldrsb r2, [r4, r1]
|
|
cmp r2, #0
|
|
bne _021F8342
|
|
ldr r0, [sp, #4]
|
|
cmp r0, r2
|
|
beq _021F8342
|
|
ldrb r0, [r4, #3]
|
|
lsl r0, r0, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
bne _021F8342
|
|
sub r0, r1, #3
|
|
strb r0, [r4]
|
|
_021F8342:
|
|
ldr r5, [sp, #4]
|
|
ldr r1, [sp]
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F8370 ; =ov01_02208AE4
|
|
ldr r3, [sp, #8]
|
|
ldr r5, [r5, r6]
|
|
add r0, r7, #0
|
|
add r2, r4, #0
|
|
blx r5
|
|
ldr r0, [sp, #8]
|
|
ldr r1, [sp]
|
|
strb r0, [r4]
|
|
ldr r0, [sp, #4]
|
|
strb r0, [r4, #2]
|
|
add r0, r7, #0
|
|
bl ov01_021FA3E8
|
|
ldr r1, [sp]
|
|
add r0, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F836C:
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021F8370: .word ov01_02208AE4
|
|
thumb_func_end ov01_021F82F0
|
|
|
|
thumb_func_start ov01_021F8374
|
|
ov01_021F8374: ; 0x021F8374
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r6, r3, #0
|
|
add r4, r2, #0
|
|
add r2, sp, #0
|
|
ldr r3, _021F83FC ; =ov01_02208A38
|
|
add r5, r1, #0
|
|
add r7, r2, #0
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
lsl r0, r6, #2
|
|
ldr r1, [r7, r0]
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r6, r0
|
|
beq _021F83B2
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
add sp, #0x10
|
|
bic r1, r0
|
|
strb r1, [r4, #3]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021F83B2:
|
|
mov r2, #2
|
|
ldrsb r0, [r4, r2]
|
|
cmp r0, #0
|
|
beq _021F83CA
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
add sp, #0x10
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
strb r0, [r4, #3]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021F83CA:
|
|
ldrb r0, [r4, #3]
|
|
lsl r0, r0, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
cmp r0, #1
|
|
bne _021F83EE
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #1
|
|
add sp, #0x10
|
|
bic r1, r0
|
|
strb r1, [r4, #3]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021F83EE:
|
|
add r0, r5, #0
|
|
lsl r1, r2, #0xb
|
|
bl sub_02023F04
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021F83FC: .word ov01_02208A38
|
|
thumb_func_end ov01_021F8374
|
|
|
|
thumb_func_start ov01_021F8400
|
|
ov01_021F8400: ; 0x021F8400
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r0, r3, #0
|
|
add r5, r1, #0
|
|
add r6, r2, #0
|
|
str r3, [sp]
|
|
bl ov01_021FA464
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
ldrsb r1, [r6, r0]
|
|
ldr r0, [sp]
|
|
cmp r0, r1
|
|
bne _021F8424
|
|
mov r0, #2
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, #0
|
|
beq _021F8436
|
|
_021F8424:
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F8466
|
|
_021F8436:
|
|
cmp r0, #0xa
|
|
beq _021F844C
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F8466
|
|
_021F844C:
|
|
add r0, r5, #0
|
|
bl sub_02023EF4
|
|
cmp r4, r0
|
|
beq _021F8466
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8466:
|
|
add r0, r7, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F847A
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xa
|
|
bl sub_02023F04
|
|
_021F847A:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov01_021F8400
|
|
|
|
thumb_func_start ov01_021F847C
|
|
ov01_021F847C: ; 0x021F847C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r0, r3, #0
|
|
add r5, r1, #0
|
|
add r6, r2, #0
|
|
str r3, [sp]
|
|
bl ov01_021FA464
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
ldrsb r1, [r6, r0]
|
|
ldr r0, [sp]
|
|
cmp r0, r1
|
|
beq _021F84AA
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F84DE
|
|
_021F84AA:
|
|
mov r0, #2
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, #0xb
|
|
beq _021F84C4
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _021F84DE
|
|
_021F84C4:
|
|
add r0, r5, #0
|
|
bl sub_02023EF4
|
|
cmp r4, r0
|
|
beq _021F84DE
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F84DE:
|
|
add r0, r7, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _021F84F2
|
|
mov r1, #1
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F84F2:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov01_021F847C
|
|
|
|
thumb_func_start ov01_021F84F4
|
|
ov01_021F84F4: ; 0x021F84F4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
ldr r7, [r0, #4]
|
|
str r0, [sp]
|
|
cmp r7, #0
|
|
beq _021F8562
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F8562
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
add r5, r0, #0
|
|
cmp r5, #4
|
|
blt _021F8528
|
|
bl GF_AssertFail
|
|
_021F8528:
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F8568 ; =ov01_022089E8
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
ldr r5, [r5, r6]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
blx r5
|
|
ldr r2, [sp, #4]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8708
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp]
|
|
strb r1, [r0]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
ldr r1, [sp]
|
|
strb r0, [r1, #2]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F8562:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021F8568: .word ov01_022089E8
|
|
thumb_func_end ov01_021F84F4
|
|
|
|
thumb_func_start ov01_021F856C
|
|
ov01_021F856C: ; 0x021F856C
|
|
push {r4, lr}
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F8580
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #0
|
|
beq _021F8596
|
|
_021F8580:
|
|
ldr r1, _021F85B8 ; =ov01_022089F8
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
mov r1, #0xf
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F40
|
|
_021F8596:
|
|
add r0, r4, #0
|
|
bl sub_02023F70
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
sub r1, r0, r1
|
|
bpl _021F85A6
|
|
mov r1, #0
|
|
_021F85A6:
|
|
add r0, r4, #0
|
|
bl sub_02023F40
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
nop
|
|
_021F85B8: .word ov01_022089F8
|
|
thumb_func_end ov01_021F856C
|
|
|
|
thumb_func_start ov01_021F85BC
|
|
ov01_021F85BC: ; 0x021F85BC
|
|
push {r4, lr}
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F85D0
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #1
|
|
beq _021F85E4
|
|
_021F85D0:
|
|
ldr r1, _021F85F0 ; =ov01_022089F8
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F85E4:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021F85F0: .word ov01_022089F8
|
|
thumb_func_end ov01_021F85BC
|
|
|
|
thumb_func_start ov01_021F85F4
|
|
ov01_021F85F4: ; 0x021F85F4
|
|
push {r3, r4, r5, lr}
|
|
add r4, r2, #0
|
|
mov r0, #0
|
|
ldrsb r0, [r4, r0]
|
|
add r5, r1, #0
|
|
cmp r3, r0
|
|
bne _021F860A
|
|
mov r0, #2
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #2
|
|
beq _021F8628
|
|
_021F860A:
|
|
ldr r1, _021F86B4 ; =ov01_022089F8
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
mov r1, #0xf
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F40
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #0xfe
|
|
bic r1, r0
|
|
strb r1, [r4, #3]
|
|
_021F8628:
|
|
add r0, r5, #0
|
|
bl sub_02023F70
|
|
add r1, r0, #0
|
|
ldrb r0, [r4, #3]
|
|
lsl r2, r0, #0x18
|
|
lsr r2, r2, #0x19
|
|
beq _021F8642
|
|
cmp r2, #1
|
|
beq _021F8664
|
|
cmp r2, #2
|
|
beq _021F868A
|
|
b _021F86A4
|
|
_021F8642:
|
|
mov r3, #1
|
|
lsl r3, r3, #0xc
|
|
sub r1, r1, r3
|
|
mov r3, #0xa
|
|
lsl r3, r3, #0xc
|
|
cmp r1, r3
|
|
bgt _021F86A4
|
|
add r2, r2, #1
|
|
lsl r2, r2, #0x18
|
|
lsr r2, r2, #0x18
|
|
mov r3, #0xfe
|
|
lsl r2, r2, #0x19
|
|
bic r0, r3
|
|
lsr r2, r2, #0x18
|
|
orr r0, r2
|
|
strb r0, [r4, #3]
|
|
b _021F86A4
|
|
_021F8664:
|
|
mov r3, #1
|
|
lsl r3, r3, #0xc
|
|
add r1, r1, r3
|
|
mov r3, #0xf
|
|
lsl r3, r3, #0xc
|
|
cmp r1, r3
|
|
blt _021F86A4
|
|
add r2, r2, #1
|
|
lsl r2, r2, #0x18
|
|
lsr r2, r2, #0x18
|
|
mov r3, #0xfe
|
|
lsl r2, r2, #0x19
|
|
bic r0, r3
|
|
lsr r2, r2, #0x18
|
|
orr r0, r2
|
|
strb r0, [r4, #3]
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
b _021F86A4
|
|
_021F868A:
|
|
mov r0, #1
|
|
ldrsb r2, [r4, r0]
|
|
add r2, r2, #1
|
|
strb r2, [r4, #1]
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #0x1e
|
|
blt _021F86A4
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
ldrb r2, [r4, #3]
|
|
mov r0, #0xfe
|
|
bic r2, r0
|
|
strb r2, [r4, #3]
|
|
_021F86A4:
|
|
add r0, r5, #0
|
|
bl sub_02023F40
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_021F86B4: .word ov01_022089F8
|
|
thumb_func_end ov01_021F85F4
|
|
|
|
thumb_func_start ov01_021F86B8
|
|
ov01_021F86B8: ; 0x021F86B8
|
|
push {r4, lr}
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F86CC
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #3
|
|
beq _021F86E2
|
|
_021F86CC:
|
|
ldr r1, _021F8704 ; =ov01_022089F8
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
mov r1, #0xf
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F40
|
|
_021F86E2:
|
|
add r0, r4, #0
|
|
bl sub_02023F70
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
sub r1, r0, r1
|
|
bpl _021F86F2
|
|
mov r1, #0
|
|
_021F86F2:
|
|
add r0, r4, #0
|
|
bl sub_02023F40
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
nop
|
|
_021F8704: .word ov01_022089F8
|
|
thumb_func_end ov01_021F86B8
|
|
|
|
thumb_func_start ov01_021F8708
|
|
ov01_021F8708: ; 0x021F8708
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
add r4, r2, #0
|
|
add r2, sp, #0
|
|
mov r0, #0
|
|
str r0, [r2]
|
|
str r0, [r2, #4]
|
|
str r0, [r2, #8]
|
|
add r0, r1, #0
|
|
bl sub_02023F30
|
|
asr r1, r0, #0xb
|
|
lsr r1, r1, #0x14
|
|
add r1, r0, r1
|
|
asr r0, r1, #0xc
|
|
cmp r4, #3
|
|
bhi _021F876E
|
|
add r1, r4, r4
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021F8738: ; jump table
|
|
.short _021F876E - _021F8738 - 2 ; case 0
|
|
.short _021F8740 - _021F8738 - 2 ; case 1
|
|
.short _021F874C - _021F8738 - 2 ; case 2
|
|
.short _021F875E - _021F8738 - 2 ; case 3
|
|
_021F8740:
|
|
cmp r0, #0x18
|
|
blt _021F876E
|
|
mov r0, #6
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #8]
|
|
b _021F876E
|
|
_021F874C:
|
|
cmp r0, #0x28
|
|
bge _021F8758
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp]
|
|
b _021F876E
|
|
_021F8758:
|
|
ldr r0, _021F8784 ; =0xFFFFB000
|
|
str r0, [sp]
|
|
b _021F876E
|
|
_021F875E:
|
|
cmp r0, #0x38
|
|
bge _021F8768
|
|
ldr r0, _021F8788 ; =0xFFFFF000
|
|
str r0, [sp]
|
|
b _021F876E
|
|
_021F8768:
|
|
mov r0, #5
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp]
|
|
_021F876E:
|
|
mov r0, #2
|
|
ldr r1, [sp, #8]
|
|
lsl r0, r0, #0xa
|
|
add r0, r1, r0
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
bl MapObject_SetFacingVec
|
|
add sp, #0xc
|
|
pop {r4, r5, pc}
|
|
.balign 4, 0
|
|
_021F8784: .word 0xFFFFB000
|
|
_021F8788: .word 0xFFFFF000
|
|
thumb_func_end ov01_021F8708
|
|
|
|
thumb_func_start ov01_021F878C
|
|
ov01_021F878C: ; 0x021F878C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
ldr r7, [r0, #4]
|
|
str r0, [sp]
|
|
cmp r7, #0
|
|
beq _021F87FA
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F87FA
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
add r5, r0, #0
|
|
cmp r5, #2
|
|
blt _021F87C0
|
|
bl GF_AssertFail
|
|
_021F87C0:
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F8800 ; =ov01_022089CC + 4
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
ldr r5, [r5, r6]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
blx r5
|
|
ldr r2, [sp, #4]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8874
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp]
|
|
strb r1, [r0]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
ldr r1, [sp]
|
|
strb r0, [r1, #2]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F87FA:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021F8800: .word ov01_022089CC + 4
|
|
thumb_func_end ov01_021F878C
|
|
|
|
thumb_func_start ov01_021F8804
|
|
ov01_021F8804: ; 0x021F8804
|
|
push {r4, lr}
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F8818
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #0
|
|
beq _021F882C
|
|
_021F8818:
|
|
ldr r1, _021F8838 ; =ov01_02208A18
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F882C:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021F8838: .word ov01_02208A18
|
|
thumb_func_end ov01_021F8804
|
|
|
|
thumb_func_start ov01_021F883C
|
|
ov01_021F883C: ; 0x021F883C
|
|
push {r4, lr}
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F8850
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #1
|
|
beq _021F8864
|
|
_021F8850:
|
|
ldr r1, _021F8870 ; =ov01_02208A18
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8864:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021F8870: .word ov01_02208A18
|
|
thumb_func_end ov01_021F883C
|
|
|
|
thumb_func_start ov01_021F8874
|
|
ov01_021F8874: ; 0x021F8874
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
add r4, r2, #0
|
|
add r2, sp, #0
|
|
mov r0, #0
|
|
str r0, [r2]
|
|
str r0, [r2, #4]
|
|
str r0, [r2, #8]
|
|
add r0, r1, #0
|
|
bl sub_02023F30
|
|
asr r1, r0, #0xb
|
|
lsr r1, r1, #0x14
|
|
add r1, r0, r1
|
|
asr r0, r1, #0xc
|
|
cmp r4, #3
|
|
bhi _021F88DA
|
|
add r1, r4, r4
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021F88A4: ; jump table
|
|
.short _021F88DA - _021F88A4 - 2 ; case 0
|
|
.short _021F88AC - _021F88A4 - 2 ; case 1
|
|
.short _021F88B8 - _021F88A4 - 2 ; case 2
|
|
.short _021F88CA - _021F88A4 - 2 ; case 3
|
|
_021F88AC:
|
|
cmp r0, #0x18
|
|
blt _021F88DA
|
|
mov r0, #6
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #8]
|
|
b _021F88DA
|
|
_021F88B8:
|
|
cmp r0, #0x28
|
|
bge _021F88C4
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp]
|
|
b _021F88DA
|
|
_021F88C4:
|
|
ldr r0, _021F88E8 ; =0xFFFFB000
|
|
str r0, [sp]
|
|
b _021F88DA
|
|
_021F88CA:
|
|
cmp r0, #0x38
|
|
bge _021F88D4
|
|
ldr r0, _021F88EC ; =0xFFFFF000
|
|
str r0, [sp]
|
|
b _021F88DA
|
|
_021F88D4:
|
|
mov r0, #5
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp]
|
|
_021F88DA:
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
bl MapObject_SetFacingVec
|
|
add sp, #0xc
|
|
pop {r4, r5, pc}
|
|
nop
|
|
_021F88E8: .word 0xFFFFB000
|
|
_021F88EC: .word 0xFFFFF000
|
|
thumb_func_end ov01_021F8874
|
|
|
|
thumb_func_start ov01_021F88F0
|
|
ov01_021F88F0: ; 0x021F88F0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r4, [r6, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F894A
|
|
cmp r4, #0
|
|
beq _021F894A
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r7, r0, #0
|
|
strb r7, [r6]
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
strb r0, [r6, #2]
|
|
add r0, r7, #0
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F8C88
|
|
_021F894A:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov01_021F88F0
|
|
|
|
thumb_func_start ov01_021F894C
|
|
ov01_021F894C: ; 0x021F894C
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r4, [r6, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F89B6
|
|
cmp r4, #0
|
|
beq _021F89B6
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
strb r0, [r6]
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
strb r0, [r6, #2]
|
|
add r0, r4, #0
|
|
bl sub_02023EF4
|
|
cmp r0, #0
|
|
beq _021F8990
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8990:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingVecPtr
|
|
mov r1, #2
|
|
lsl r1, r1, #0xa
|
|
str r1, [r0, #8]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F8C88
|
|
_021F89B6:
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end ov01_021F894C
|
|
|
|
thumb_func_start ov01_021F89B8
|
|
ov01_021F89B8: ; 0x021F89B8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r4, [r6, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F8A48
|
|
cmp r4, #0
|
|
beq _021F8A48
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
cmp r0, #0
|
|
bne _021F8A0A
|
|
add r0, r4, #0
|
|
bl sub_02023EF4
|
|
cmp r0, #1
|
|
beq _021F89FE
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F89FE:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
b _021F8A2E
|
|
_021F8A0A:
|
|
add r0, r4, #0
|
|
bl sub_02023EF4
|
|
cmp r0, #0
|
|
beq _021F8A24
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8A24:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_021F8A2E:
|
|
strb r7, [r6]
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
strb r0, [r6, #2]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F8C88
|
|
_021F8A48:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F89B8
|
|
|
|
thumb_func_start ov01_021F8A4C
|
|
ov01_021F8A4C: ; 0x021F8A4C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r6, #0
|
|
ldr r5, [r4, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F8AAE
|
|
cmp r5, #0
|
|
beq _021F8AAE
|
|
add r0, r6, #0
|
|
bl MapObject_GetFacingDirection
|
|
mov r1, #0
|
|
ldrsb r1, [r4, r1]
|
|
add r7, r0, #0
|
|
cmp r7, r1
|
|
beq _021F8A8A
|
|
bl ov01_021FA44C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8A8A:
|
|
mov r1, #1
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
add r0, r6, #0
|
|
add r1, r5, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r6, #0
|
|
add r1, r5, #0
|
|
bl ov01_021F8C88
|
|
add r0, r6, #0
|
|
strb r7, [r4]
|
|
bl sub_0205F330
|
|
strb r0, [r4, #2]
|
|
_021F8AAE:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov01_021F8A4C
|
|
|
|
thumb_func_start ov01_021F8AB0
|
|
ov01_021F8AB0: ; 0x021F8AB0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r4, [r6, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F8B2C
|
|
cmp r4, #0
|
|
beq _021F8B2C
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp]
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
add r7, r0, #0
|
|
mov r0, #2
|
|
ldrsb r0, [r6, r0]
|
|
cmp r7, r0
|
|
beq _021F8B00
|
|
cmp r7, #0
|
|
bne _021F8AF0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023EE0
|
|
b _021F8AF8
|
|
_021F8AF0:
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl sub_02023EE0
|
|
_021F8AF8:
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8B00:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingVecPtr
|
|
mov r1, #2
|
|
lsl r1, r1, #0xa
|
|
str r1, [r0, #8]
|
|
ldr r0, [sp]
|
|
add r1, r4, #0
|
|
strb r0, [r6]
|
|
add r0, r5, #0
|
|
strb r7, [r6, #2]
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl ov01_021F8C88
|
|
_021F8B2C:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8AB0
|
|
|
|
thumb_func_start ov01_021F8B30
|
|
ov01_021F8B30: ; 0x021F8B30
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
ldr r7, [r0, #4]
|
|
str r0, [sp]
|
|
cmp r7, #0
|
|
beq _021F8B9E
|
|
add r0, r4, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _021F8B9E
|
|
add r0, r4, #0
|
|
bl MapObject_GetFacingDirection
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
add r5, r0, #0
|
|
cmp r5, #1
|
|
blt _021F8B64
|
|
bl GF_AssertFail
|
|
_021F8B64:
|
|
lsl r6, r5, #2
|
|
ldr r5, _021F8BA4 ; =ov01_022089CC
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
ldr r5, [r5, r6]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
blx r5
|
|
ldr r2, [sp, #4]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8BE0
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp]
|
|
strb r1, [r0]
|
|
add r0, r4, #0
|
|
bl sub_0205F330
|
|
ldr r1, [sp]
|
|
strb r0, [r1, #2]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl ov01_021F8C88
|
|
_021F8B9E:
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021F8BA4: .word ov01_022089CC
|
|
thumb_func_end ov01_021F8B30
|
|
|
|
thumb_func_start ov01_021F8BA8
|
|
ov01_021F8BA8: ; 0x021F8BA8
|
|
push {r4, lr}
|
|
mov r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
add r4, r1, #0
|
|
cmp r3, r0
|
|
bne _021F8BBC
|
|
mov r0, #2
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, #0
|
|
beq _021F8BD0
|
|
_021F8BBC:
|
|
ldr r1, _021F8BDC ; =ov01_02208A28
|
|
lsl r2, r3, #2
|
|
ldr r1, [r1, r2]
|
|
add r0, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_021F8BD0:
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021F8BDC: .word ov01_02208A28
|
|
thumb_func_end ov01_021F8BA8
|
|
|
|
thumb_func_start ov01_021F8BE0
|
|
ov01_021F8BE0: ; 0x021F8BE0
|
|
push {lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0
|
|
mov r2, #0
|
|
str r2, [r1]
|
|
str r2, [r1, #4]
|
|
str r2, [r1, #8]
|
|
mov r2, #2
|
|
ldr r3, [sp, #8]
|
|
lsl r2, r2, #0xa
|
|
add r2, r3, r2
|
|
str r2, [sp, #8]
|
|
bl MapObject_SetFacingVec
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end ov01_021F8BE0
|
|
|
|
thumb_func_start ov01_021F8C00
|
|
ov01_021F8C00: ; 0x021F8C00
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
add r6, r1, #0
|
|
bl sub_02023F70
|
|
asr r1, r0, #0xb
|
|
lsr r1, r1, #0x14
|
|
add r1, r0, r1
|
|
asr r4, r1, #0xc
|
|
add r0, r4, #0
|
|
add r1, r6, #0
|
|
bl _s32_div_f
|
|
sub r1, r4, r1
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F40
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_02023F04
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8C00
|
|
|
|
thumb_func_start ov01_021F8C30
|
|
ov01_021F8C30: ; 0x021F8C30
|
|
ldr r3, _021F8C38 ; =ov01_021F8C00
|
|
mov r1, #8
|
|
bx r3
|
|
nop
|
|
_021F8C38: .word ov01_021F8C00
|
|
thumb_func_end ov01_021F8C30
|
|
|
|
thumb_func_start ov01_021F8C3C
|
|
ov01_021F8C3C: ; 0x021F8C3C
|
|
push {r4, r5, r6, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r1, r2, #0
|
|
bl ov01_021F8C00
|
|
add r0, r5, #0
|
|
bl sub_02023F70
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl sub_02023F40
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8C3C
|
|
|
|
thumb_func_start ov01_021F8C64
|
|
ov01_021F8C64: ; 0x021F8C64
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
bl ov01_021F8C30
|
|
add r0, r5, #0
|
|
bl sub_02023F70
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_02023EE0
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl sub_02023F40
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end ov01_021F8C64
|
|
|
|
thumb_func_start ov01_021F8C88
|
|
ov01_021F8C88: ; 0x021F8C88
|
|
push {r4, r5, r6, lr}
|
|
mov r4, #1
|
|
add r6, r1, #0
|
|
lsl r1, r4, #9
|
|
add r5, r0, #0
|
|
bl MapObject_TestFlagsBits
|
|
cmp r0, #1
|
|
bne _021F8C9C
|
|
mov r4, #0
|
|
_021F8C9C:
|
|
mov r1, #1
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl MapObject_TestFlagsBits
|
|
cmp r0, #1
|
|
bne _021F8CBA
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xc
|
|
bl MapObject_TestFlagsBits
|
|
cmp r0, #0
|
|
bne _021F8CBA
|
|
mov r4, #0
|
|
_021F8CBA:
|
|
lsl r1, r4, #0x18
|
|
add r0, r6, #0
|
|
lsr r1, r1, #0x18
|
|
bl sub_02023EA4
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8C88
|
|
|
|
thumb_func_start ov01_021F8CC8
|
|
ov01_021F8CC8: ; 0x021F8CC8
|
|
push {r4, lr}
|
|
ldr r3, _021F8CF4 ; =ov01_022073D8
|
|
add r2, r1, #0
|
|
ldr r4, [r3]
|
|
ldr r1, _021F8CF8 ; =0x0000FFFF
|
|
cmp r4, r1
|
|
beq _021F8CEE
|
|
_021F8CD6:
|
|
cmp r4, r0
|
|
bne _021F8CE6
|
|
add r3, r3, #4
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
str r0, [r2]
|
|
pop {r4, pc}
|
|
_021F8CE6:
|
|
add r3, #0x10
|
|
ldr r4, [r3]
|
|
cmp r4, r1
|
|
bne _021F8CD6
|
|
_021F8CEE:
|
|
bl GF_AssertFail
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021F8CF4: .word ov01_022073D8
|
|
_021F8CF8: .word 0x0000FFFF
|
|
thumb_func_end ov01_021F8CC8
|
|
|
|
thumb_func_start ov01_021F8CFC
|
|
ov01_021F8CFC: ; 0x021F8CFC
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
mov r1, #4
|
|
bl sub_0205F3E8
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_GetGfxID
|
|
add r1, sp, #0
|
|
bl ov01_021F8CC8
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
bl ov01_021FD2EC
|
|
str r0, [r4]
|
|
add sp, #0xc
|
|
pop {r4, r5, pc}
|
|
thumb_func_end ov01_021F8CFC
|
|
|
|
thumb_func_start ov01_021F8D24
|
|
ov01_021F8D24: ; 0x021F8D24
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8D24
|
|
|
|
thumb_func_start ov01_021F8D28
|
|
ov01_021F8D28: ; 0x021F8D28
|
|
push {r4, lr}
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _021F8D3E
|
|
bl ov01_021F1640
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
_021F8D3E:
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F8D28
|
|
|
|
thumb_func_start ov01_021F8D40
|
|
ov01_021F8D40: ; 0x021F8D40
|
|
push {r4, lr}
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _021F8D56
|
|
bl ov01_021F1640
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
_021F8D56:
|
|
pop {r4, pc}
|
|
thumb_func_end ov01_021F8D40
|
|
|
|
thumb_func_start ov01_021F8D58
|
|
ov01_021F8D58: ; 0x021F8D58
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_GetGfxID
|
|
add r1, sp, #0
|
|
bl ov01_021F8CC8
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
bl ov01_021FD2EC
|
|
str r0, [r4]
|
|
add sp, #0xc
|
|
pop {r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021F8D58
|
|
|
|
.rodata
|
|
|
|
ov01_022089CC: ; 0x022089CC
|
|
.word ov01_021F8BA8
|
|
.word ov01_021F8804
|
|
.word ov01_021F883C
|
|
|
|
ov01_022089D8: ; 0x022089D8
|
|
.byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
|
|
.byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_022089E8: ; 0x022089E8
|
|
.word ov01_021F856C
|
|
.word ov01_021F85BC
|
|
.word ov01_021F85F4
|
|
.word ov01_021F86B8
|
|
|
|
ov01_022089F8: ; 0x022089F8
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A08: ; 0x02208A08
|
|
.byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
|
|
.byte 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A18: ; 0x02208A18
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A28: ; 0x02208A28
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A38: ; 0x02208A38
|
|
.byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
|
|
.byte 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A48: ; 0x02208A48
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
|
.byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A64: ; 0x02208A64
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208A80: ; 0x02208A80
|
|
.byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208AA0: ; 0x02208AA0
|
|
.byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02208AC0: ; 0x02208AC0
|
|
.word ov01_021F796C
|
|
.word ov01_021F79A0
|
|
.word ov01_021F79A0
|
|
.word ov01_021F79DC
|
|
.word ov01_021F7A18
|
|
.word ov01_021F7A54
|
|
.word ov01_021F7A90
|
|
.word ov01_021F7B14
|
|
.word ov01_021F7B90
|
|
|
|
ov01_02208AE4: ; 0x02208AE4
|
|
.word ov01_021F8374
|
|
.word ov01_021F7F54
|
|
.word ov01_021F7F54
|
|
.word ov01_021F7FC8
|
|
.word ov01_021F801C
|
|
.word ov01_021F80C4
|
|
.word ov01_021F80C4
|
|
.word ov01_021F80C4
|
|
.word ov01_021F8400
|
|
.word ov01_021F847C
|
|
|
|
ov01_02208B0C: ; 0x02208B0C
|
|
.word ov01_021F7C80
|
|
.word ov01_021F79A0
|
|
.word ov01_021F79A0
|
|
.word ov01_021F79DC
|
|
.word ov01_021F7A18
|
|
.word ov01_021F7A54
|
|
.word ov01_021F7A90
|
|
.word ov01_021F7B14
|
|
.word ov01_021F7B90
|
|
.word ov01_021F7CBC
|
|
|
|
ov01_02208B34: ; 0x02208B34
|
|
.word ov01_021F7EE4
|
|
.word ov01_021F7F54
|
|
.word ov01_021F7F54
|
|
.word ov01_021F7FC8
|
|
.word ov01_021F801C
|
|
.word ov01_021F8070
|
|
.word ov01_021F80C4
|
|
.word ov01_021F8164
|
|
.word ov01_021F81FC
|
|
.word ov01_021F829C
|