mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 13:47:12 -05:00
2392 lines
40 KiB
ArmAsm
2392 lines
40 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start palette_bg_faded_fill_white
|
|
palette_bg_faded_fill_white: @ 807DB14
|
|
push {lr}
|
|
sub sp, 0x4
|
|
ldr r0, _0807DB2C @ =0x7fff7fff
|
|
str r0, [sp]
|
|
ldr r1, _0807DB30 @ =gPlttBufferFaded
|
|
ldr r2, _0807DB34 @ =0x01000100
|
|
mov r0, sp
|
|
bl CpuFastSet
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DB2C: .4byte 0x7fff7fff
|
|
_0807DB30: .4byte gPlttBufferFaded
|
|
_0807DB34: .4byte 0x01000100
|
|
thumb_func_end palette_bg_faded_fill_white
|
|
|
|
thumb_func_start palette_bg_faded_fill_black
|
|
palette_bg_faded_fill_black: @ 807DB38
|
|
push {lr}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r1, _0807DB50 @ =gPlttBufferFaded
|
|
ldr r2, _0807DB54 @ =0x01000100
|
|
mov r0, sp
|
|
bl CpuFastSet
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DB50: .4byte gPlttBufferFaded
|
|
_0807DB54: .4byte 0x01000100
|
|
thumb_func_end palette_bg_faded_fill_black
|
|
|
|
thumb_func_start pal_fill_for_maplights
|
|
pal_fill_for_maplights: @ 807DB58
|
|
push {r4,lr}
|
|
bl get_map_light_from_warp0
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl GetCurrentMapType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_80C9DCC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807DB82
|
|
cmp r0, 0x1
|
|
beq _0807DB94
|
|
b _0807DBA4
|
|
_0807DB82:
|
|
bl palette_bg_faded_fill_black
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl fade_screen
|
|
bl palette_bg_faded_fill_black
|
|
b _0807DBA4
|
|
_0807DB94:
|
|
bl palette_bg_faded_fill_white
|
|
movs r0, 0x2
|
|
movs r1, 0
|
|
bl fade_screen
|
|
bl palette_bg_faded_fill_white
|
|
_0807DBA4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end pal_fill_for_maplights
|
|
|
|
thumb_func_start sub_807DBAC
|
|
sub_807DBAC: @ 807DBAC
|
|
push {r4,lr}
|
|
bl get_map_light_from_warp0
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl GetCurrentMapType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_80C9DCC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807DBD6
|
|
cmp r0, 0x1
|
|
beq _0807DBE8
|
|
b _0807DBF8
|
|
_0807DBD6:
|
|
bl palette_bg_faded_fill_black
|
|
movs r0, 0
|
|
movs r1, 0x3
|
|
bl fade_screen
|
|
bl palette_bg_faded_fill_black
|
|
b _0807DBF8
|
|
_0807DBE8:
|
|
bl palette_bg_faded_fill_white
|
|
movs r0, 0x2
|
|
movs r1, 0x3
|
|
bl fade_screen
|
|
bl palette_bg_faded_fill_white
|
|
_0807DBF8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DBAC
|
|
|
|
thumb_func_start sub_807DC00
|
|
sub_807DC00: @ 807DC00
|
|
push {lr}
|
|
bl palette_bg_faded_fill_black
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl fade_screen
|
|
bl palette_bg_faded_fill_black
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DC00
|
|
|
|
thumb_func_start sub_807DC18
|
|
sub_807DC18: @ 807DC18
|
|
push {r4,lr}
|
|
bl warp1_get_mapheader
|
|
adds r4, r0, 0
|
|
ldr r1, _0807DC54 @ =gMapHeader
|
|
ldrb r0, [r4, 0x14]
|
|
ldrb r1, [r1, 0x14]
|
|
cmp r0, r1
|
|
beq _0807DC36
|
|
movs r1, 0
|
|
bl sub_80F8110
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807DC58
|
|
_0807DC36:
|
|
bl GetCurrentMapType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r4, 0x17]
|
|
bl sub_80C9D7C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807DC58
|
|
cmp r0, 0x1
|
|
beq _0807DC62
|
|
b _0807DC6A
|
|
.align 2, 0
|
|
_0807DC54: .4byte gMapHeader
|
|
_0807DC58:
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
bl fade_screen
|
|
b _0807DC6A
|
|
_0807DC62:
|
|
movs r0, 0x3
|
|
movs r1, 0
|
|
bl fade_screen
|
|
_0807DC6A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DC18
|
|
|
|
thumb_func_start sub_807DC70
|
|
sub_807DC70: @ 807DC70
|
|
push {r4,lr}
|
|
bl GetCurrentMapType
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl warp1_get_mapheader
|
|
ldrb r1, [r0, 0x17]
|
|
adds r0, r4, 0
|
|
bl sub_80C9D7C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807DC96
|
|
cmp r0, 0x1
|
|
beq _0807DCA0
|
|
b _0807DCA8
|
|
_0807DC96:
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
bl fade_screen
|
|
b _0807DCA8
|
|
_0807DCA0:
|
|
movs r0, 0x3
|
|
movs r1, 0x3
|
|
bl fade_screen
|
|
_0807DCA8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DC70
|
|
|
|
thumb_func_start sub_807DCB0
|
|
sub_807DCB0: @ 807DCB0
|
|
push {lr}
|
|
lsls r0, 24
|
|
movs r1, 0
|
|
cmp r0, 0
|
|
bne _0807DCBC
|
|
movs r1, 0x1
|
|
_0807DCBC:
|
|
adds r0, r1, 0
|
|
bl sub_805CB04
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DCB0
|
|
|
|
thumb_func_start task0A_nop_for_a_while
|
|
task0A_nop_for_a_while: @ 807DCC8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807DCDC
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_0807DCDC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task0A_nop_for_a_while
|
|
|
|
thumb_func_start sub_807DCE4
|
|
sub_807DCE4: @ 807DCE4
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl sub_807DC00
|
|
ldr r0, _0807DD00 @ =task0A_nop_for_a_while
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DD00: .4byte task0A_nop_for_a_while
|
|
thumb_func_end sub_807DCE4
|
|
|
|
thumb_func_start task0A_asap_script_env_2_enable_and_set_ctx_running
|
|
task0A_asap_script_env_2_enable_and_set_ctx_running: @ 807DD04
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807DD1C
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_0807DD1C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running
|
|
|
|
thumb_func_start FieldCallback_ReturnToEventScript2
|
|
FieldCallback_ReturnToEventScript2: @ 807DD24
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl sub_807DC00
|
|
ldr r0, _0807DD40 @ =task0A_asap_script_env_2_enable_and_set_ctx_running
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DD40: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
|
|
thumb_func_end FieldCallback_ReturnToEventScript2
|
|
|
|
thumb_func_start sub_807DD44
|
|
sub_807DD44: @ 807DD44
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl sub_807DC00
|
|
ldr r0, _0807DD5C @ =task0A_asap_script_env_2_enable_and_set_ctx_running
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DD5C: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
|
|
thumb_func_end sub_807DD44
|
|
|
|
thumb_func_start task_mpl_807DD60
|
|
task_mpl_807DD60: @ 807DD60
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r2, _0807DD84 @ =gTasks
|
|
adds r4, r0, r2
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807DD9A
|
|
cmp r0, 0x1
|
|
bgt _0807DD88
|
|
cmp r0, 0
|
|
beq _0807DD8E
|
|
b _0807DDCA
|
|
.align 2, 0
|
|
_0807DD84: .4byte gTasks
|
|
_0807DD88:
|
|
cmp r0, 0x2
|
|
beq _0807DDB8
|
|
b _0807DDCA
|
|
_0807DD8E:
|
|
bl sub_8081150
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0xA]
|
|
b _0807DDB0
|
|
_0807DD9A:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldrb r0, [r1, 0x4]
|
|
cmp r0, 0x1
|
|
beq _0807DDCA
|
|
bl pal_fill_for_maplights
|
|
_0807DDB0:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807DDCA
|
|
_0807DDB8:
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807DDCA
|
|
bl ScriptContext2_Disable
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807DDCA:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task_mpl_807DD60
|
|
|
|
thumb_func_start sub_807DDD0
|
|
sub_807DDD0: @ 807DDD0
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl palette_bg_faded_fill_black
|
|
ldr r0, _0807DDEC @ =task_mpl_807DD60
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DDEC: .4byte task_mpl_807DD60
|
|
thumb_func_end sub_807DDD0
|
|
|
|
thumb_func_start sub_807DDF0
|
|
sub_807DDF0: @ 807DDF0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807DE14 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807DE24
|
|
cmp r0, 0x1
|
|
bgt _0807DE18
|
|
cmp r0, 0
|
|
beq _0807DE1E
|
|
b _0807DE50
|
|
.align 2, 0
|
|
_0807DE14: .4byte gTasks
|
|
_0807DE18:
|
|
cmp r0, 0x2
|
|
beq _0807DE3A
|
|
b _0807DE50
|
|
_0807DE1E:
|
|
bl sub_800AB9C
|
|
b _0807DE32
|
|
_0807DE24:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807DE50
|
|
bl pal_fill_for_maplights
|
|
_0807DE32:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807DE50
|
|
_0807DE3A:
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807DE50
|
|
bl sub_8009FE8
|
|
bl ScriptContext2_Disable
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807DE50:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DDF0
|
|
|
|
thumb_func_start sub_807DE58
|
|
sub_807DE58: @ 807DE58
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl palette_bg_faded_fill_black
|
|
ldr r0, _0807DE74 @ =sub_807DDF0
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DE74: .4byte sub_807DDF0
|
|
thumb_func_end sub_807DE58
|
|
|
|
thumb_func_start sub_807DE78
|
|
sub_807DE78: @ 807DE78
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl PlayerGetDestCoords
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsWarpDoor_2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0807DEE8
|
|
ldr r5, _0807DED8 @ =sub_807DFBC
|
|
bl get_map_light_from_warp0
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl GetCurrentMapType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_80C9DCC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807DEDC
|
|
cmp r0, 0x1
|
|
beq _0807DEE2
|
|
b _0807DF2E
|
|
.align 2, 0
|
|
_0807DED8: .4byte sub_807DFBC
|
|
_0807DEDC:
|
|
bl palette_bg_faded_fill_black
|
|
b _0807DF2E
|
|
_0807DEE2:
|
|
bl palette_bg_faded_fill_white
|
|
b _0807DF2E
|
|
_0807DEE8:
|
|
adds r0, r5, 0
|
|
bl sub_807DF4C
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsCaveDoor
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0807DF04
|
|
ldr r5, _0807DF00 @ =task_map_chg_seq_0807E20C
|
|
b _0807DF2E
|
|
.align 2, 0
|
|
_0807DF00: .4byte task_map_chg_seq_0807E20C
|
|
_0807DF04:
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsUnknownWarp6C_to_6F
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0807DF2C
|
|
ldr r0, _0807DF20 @ =gUnknown_2031DE0
|
|
ldrb r0, [r0]
|
|
ldr r5, _0807DF24 @ =task_map_chg_seq_0807E2CC
|
|
cmp r0, 0
|
|
bne _0807DF2E
|
|
ldr r5, _0807DF28 @ =sub_807EC34
|
|
b _0807DF2E
|
|
.align 2, 0
|
|
_0807DF20: .4byte gUnknown_2031DE0
|
|
_0807DF24: .4byte task_map_chg_seq_0807E2CC
|
|
_0807DF28: .4byte sub_807EC34
|
|
_0807DF2C:
|
|
ldr r5, _0807DF44 @ =task_map_chg_seq_0807E2CC
|
|
_0807DF2E:
|
|
ldr r1, _0807DF48 @ =gUnknown_2031DE0
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
adds r0, r5, 0
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DF44: .4byte task_map_chg_seq_0807E2CC
|
|
_0807DF48: .4byte gUnknown_2031DE0
|
|
thumb_func_end sub_807DE78
|
|
|
|
thumb_func_start sub_807DF4C
|
|
sub_807DF4C: @ 807DF4C
|
|
push {lr}
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807DF5A
|
|
bl pal_fill_for_maplights
|
|
b _0807DF5E
|
|
_0807DF5A:
|
|
bl sub_807DC00
|
|
_0807DF5E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DF4C
|
|
|
|
thumb_func_start sub_807DF64
|
|
sub_807DF64: @ 807DF64
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl sub_8111CF0
|
|
movs r0, 0
|
|
bl sub_807DE78
|
|
bl ScriptContext2_Enable
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DF64
|
|
|
|
thumb_func_start sub_807DF7C
|
|
sub_807DF7C: @ 807DF7C
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl sub_8111CF0
|
|
movs r0, 0x1
|
|
bl sub_807DE78
|
|
bl ScriptContext2_Enable
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DF7C
|
|
|
|
thumb_func_start sub_807DF94
|
|
sub_807DF94: @ 807DF94
|
|
push {lr}
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl sub_8111CF0
|
|
movs r0, 0x28
|
|
bl PlaySE
|
|
ldr r0, _0807DFB8 @ =sub_807E31C
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
bl ScriptContext2_Enable
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807DFB8: .4byte sub_807E31C
|
|
thumb_func_end sub_807DF94
|
|
|
|
thumb_func_start sub_807DFBC
|
|
sub_807DFBC: @ 807DFBC
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807DFF8 @ =gTasks
|
|
adds r4, r0, r1
|
|
adds r6, r4, 0
|
|
adds r6, 0xC
|
|
adds r7, r4, 0
|
|
adds r7, 0xE
|
|
movs r2, 0x8
|
|
ldrsh r0, [r4, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0
|
|
bne _0807DFE2
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x8]
|
|
_0807DFE2:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x9
|
|
bls _0807DFEC
|
|
b _0807E206
|
|
_0807DFEC:
|
|
lsls r0, 2
|
|
ldr r1, _0807DFFC @ =_0807E000
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0807DFF8: .4byte gTasks
|
|
_0807DFFC: .4byte _0807E000
|
|
.align 2, 0
|
|
_0807E000:
|
|
.4byte _0807E028
|
|
.4byte _0807E160
|
|
.4byte _0807E198
|
|
.4byte _0807E1DC
|
|
.4byte _0807E1F8
|
|
.4byte _0807E04C
|
|
.4byte _0807E064
|
|
.4byte _0807E0A2
|
|
.4byte _0807E0EC
|
|
.4byte _0807E10E
|
|
_0807E028:
|
|
movs r0, 0
|
|
bl sub_807DCB0
|
|
bl player_bitmagic
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl PlayerGetDestCoords
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
movs r2, 0
|
|
ldrsh r1, [r7, r2]
|
|
bl FieldSetDoorOpened
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
_0807E04C:
|
|
movs r0, 0
|
|
bl sub_807DCB0
|
|
bl player_bitmagic
|
|
bl sub_807F114
|
|
bl sub_807DBAC
|
|
movs r0, 0x6
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
_0807E064:
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x26]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x19
|
|
beq _0807E074
|
|
b _0807E206
|
|
_0807E074:
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl PlayerGetDestCoords
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r7, r2]
|
|
bl GetDoorSoundEffect
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl PlaySE
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r7, r2]
|
|
bl FieldAnimateDoorOpen
|
|
movs r0, 0x7
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
_0807E0A2:
|
|
bl FieldIsDoorAnimationRunning
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E0AE
|
|
b _0807E206
|
|
_0807E0AE:
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
adds r1, r4, 0
|
|
adds r1, 0x22
|
|
bl PlayerGetDestCoords
|
|
movs r0, 0x1
|
|
bl sub_807DCB0
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E0E8 @ =gMapObjects
|
|
adds r0, r1
|
|
movs r1, 0x10
|
|
bl FieldObjectSetHeldMovement
|
|
movs r0, 0x8
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
.align 2, 0
|
|
_0807E0E8: .4byte gMapObjects
|
|
_0807E0EC:
|
|
ldrh r0, [r4, 0x24]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x24]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xE
|
|
beq _0807E0FC
|
|
b _0807E206
|
|
_0807E0FC:
|
|
movs r1, 0x20
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x22
|
|
ldrsh r1, [r4, r2]
|
|
bl FieldAnimateDoorClose
|
|
movs r0, 0x9
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
_0807E10E:
|
|
bl sub_807E418
|
|
cmp r0, 0
|
|
beq _0807E206
|
|
bl walkrun_is_standing_still
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E206
|
|
bl FieldIsDoorAnimationRunning
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807E206
|
|
ldr r0, _0807E158 @ =sub_807F204
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807E206
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E15C @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
b _0807E1F2
|
|
.align 2, 0
|
|
_0807E158: .4byte sub_807F204
|
|
_0807E15C: .4byte gMapObjects
|
|
_0807E160:
|
|
bl sub_807E418
|
|
cmp r0, 0
|
|
beq _0807E206
|
|
movs r0, 0x1
|
|
bl sub_807DCB0
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E194 @ =gMapObjects
|
|
adds r0, r1
|
|
movs r1, 0x10
|
|
bl FieldObjectSetHeldMovement
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
.align 2, 0
|
|
_0807E194: .4byte gMapObjects
|
|
_0807E198:
|
|
bl walkrun_is_standing_still
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E206
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r7, r2]
|
|
bl FieldAnimateDoorClose
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r4, 0xA]
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E1D8 @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
movs r0, 0x3
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
.align 2, 0
|
|
_0807E1D8: .4byte gMapObjects
|
|
_0807E1DC:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
blt _0807E1F2
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldrb r0, [r1, 0x4]
|
|
cmp r0, 0x1
|
|
beq _0807E206
|
|
_0807E1F2:
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0x8]
|
|
b _0807E206
|
|
_0807E1F8:
|
|
bl UnfreezeMapObjects
|
|
bl ScriptContext2_Disable
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E206:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807DFBC
|
|
|
|
thumb_func_start task_map_chg_seq_0807E20C
|
|
task_map_chg_seq_0807E20C: @ 807E20C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _0807E238 @ =gTasks
|
|
adds r5, r0, r1
|
|
adds r6, r5, 0
|
|
adds r6, 0xC
|
|
adds r7, r5, 0
|
|
adds r7, 0xE
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _0807E25E
|
|
cmp r0, 0x1
|
|
bgt _0807E23C
|
|
cmp r0, 0
|
|
beq _0807E246
|
|
b _0807E2C6
|
|
.align 2, 0
|
|
_0807E238: .4byte gTasks
|
|
_0807E23C:
|
|
cmp r0, 0x2
|
|
beq _0807E2A8
|
|
cmp r0, 0x3
|
|
beq _0807E2B8
|
|
b _0807E2C6
|
|
_0807E246:
|
|
movs r0, 0
|
|
bl sub_807DCB0
|
|
bl player_bitmagic
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl PlayerGetDestCoords
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _0807E2C6
|
|
_0807E25E:
|
|
bl sub_807E418
|
|
cmp r0, 0
|
|
beq _0807E2C6
|
|
movs r0, 0x1
|
|
bl sub_807DCB0
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0807E2A4 @ =gMapObjects
|
|
adds r4, r0
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8063F84
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectSetHeldMovement
|
|
movs r0, 0x2
|
|
strh r0, [r5, 0x8]
|
|
b _0807E2C6
|
|
.align 2, 0
|
|
_0807E2A4: .4byte gMapObjects
|
|
_0807E2A8:
|
|
bl walkrun_is_standing_still
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E2C6
|
|
movs r0, 0x3
|
|
strh r0, [r5, 0x8]
|
|
b _0807E2C6
|
|
_0807E2B8:
|
|
bl UnfreezeMapObjects
|
|
bl ScriptContext2_Disable
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_0807E2C6:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task_map_chg_seq_0807E20C
|
|
|
|
thumb_func_start task_map_chg_seq_0807E2CC
|
|
task_map_chg_seq_0807E2CC: @ 807E2CC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _0807E2EC @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _0807E2F0
|
|
cmp r0, 0x1
|
|
beq _0807E300
|
|
b _0807E316
|
|
.align 2, 0
|
|
_0807E2EC: .4byte gTasks
|
|
_0807E2F0:
|
|
bl player_bitmagic
|
|
bl ScriptContext2_Enable
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807E316
|
|
_0807E300:
|
|
bl sub_807E418
|
|
cmp r0, 0
|
|
beq _0807E316
|
|
bl UnfreezeMapObjects
|
|
bl ScriptContext2_Disable
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E316:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task_map_chg_seq_0807E2CC
|
|
|
|
thumb_func_start sub_807E31C
|
|
sub_807E31C: @ 807E31C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _0807E33C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _0807E340
|
|
cmp r0, 0x1
|
|
beq _0807E354
|
|
b _0807E372
|
|
.align 2, 0
|
|
_0807E33C: .4byte gTasks
|
|
_0807E340:
|
|
bl player_bitmagic
|
|
bl ScriptContext2_Enable
|
|
bl sub_805DC04
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807E372
|
|
_0807E354:
|
|
bl sub_807E418
|
|
cmp r0, 0
|
|
beq _0807E372
|
|
bl sub_805DC24
|
|
cmp r0, 0x1
|
|
beq _0807E372
|
|
bl UnfreezeMapObjects
|
|
bl ScriptContext2_Disable
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E372:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807E31C
|
|
|
|
thumb_func_start sub_807E378
|
|
sub_807E378: @ 807E378
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807E394
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
ldr r0, _0807E39C @ =sub_806F1F0
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
_0807E394:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E39C: .4byte sub_806F1F0
|
|
thumb_func_end sub_807E378
|
|
|
|
thumb_func_start sub_807E3A0
|
|
sub_807E3A0: @ 807E3A0
|
|
push {lr}
|
|
bl sub_807DC00
|
|
ldr r0, _0807E3B8 @ =sub_807E378
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
bl ScriptContext2_Enable
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E3B8: .4byte sub_807E378
|
|
thumb_func_end sub_807E3A0
|
|
|
|
thumb_func_start sub_807E3BC
|
|
sub_807E3BC: @ 807E3BC
|
|
push {lr}
|
|
bl sub_806F1D4
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_807E3BC
|
|
|
|
thumb_func_start task_mpl_807E3C8
|
|
task_mpl_807E3C8: @ 807E3C8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807E3E4
|
|
bl ScriptContext2_Disable
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
bl sub_80696C0
|
|
_0807E3E4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task_mpl_807E3C8
|
|
|
|
thumb_func_start sub_807E3EC
|
|
sub_807E3EC: @ 807E3EC
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl sub_807DC00
|
|
ldr r0, _0807E408 @ =task_mpl_807E3C8
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E408: .4byte task_mpl_807E3C8
|
|
thumb_func_end sub_807E3EC
|
|
|
|
thumb_func_start sub_807E40C
|
|
sub_807E40C: @ 807E40C
|
|
ldr r0, _0807E414 @ =gPaletteFade
|
|
ldrb r0, [r0, 0x7]
|
|
lsrs r0, 7
|
|
bx lr
|
|
.align 2, 0
|
|
_0807E414: .4byte gPaletteFade
|
|
thumb_func_end sub_807E40C
|
|
|
|
thumb_func_start sub_807E418
|
|
sub_807E418: @ 807E418
|
|
push {lr}
|
|
bl sub_807AA70
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0807E432
|
|
bl sub_80F83B0
|
|
cmp r0, 0
|
|
beq _0807E432
|
|
movs r0, 0x1
|
|
b _0807E434
|
|
_0807E432:
|
|
movs r0, 0
|
|
_0807E434:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_807E418
|
|
|
|
thumb_func_start DoWarp
|
|
DoWarp: @ 807E438
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
bl PlayRainStoppingSoundEffect
|
|
movs r0, 0x9
|
|
bl PlaySE
|
|
ldr r0, _0807E464 @ =gFieldCallback
|
|
ldr r1, _0807E468 @ =sub_807DF64
|
|
str r1, [r0]
|
|
ldr r0, _0807E46C @ =sub_807E718
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E464: .4byte gFieldCallback
|
|
_0807E468: .4byte sub_807DF64
|
|
_0807E46C: .4byte sub_807E718
|
|
thumb_func_end DoWarp
|
|
|
|
thumb_func_start DoDiveWarp
|
|
DoDiveWarp: @ 807E470
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
bl PlayRainStoppingSoundEffect
|
|
ldr r0, _0807E494 @ =gFieldCallback
|
|
ldr r1, _0807E498 @ =sub_807DF64
|
|
str r1, [r0]
|
|
ldr r0, _0807E49C @ =sub_807E718
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E494: .4byte gFieldCallback
|
|
_0807E498: .4byte sub_807DF64
|
|
_0807E49C: .4byte sub_807E718
|
|
thumb_func_end DoDiveWarp
|
|
|
|
thumb_func_start sub_807E4A0
|
|
sub_807E4A0: @ 807E4A0
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r6, _0807E4D4 @ =sub_807E980
|
|
adds r0, r6, 0
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _0807E4D8 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r4, [r1, 0xA]
|
|
strh r5, [r1, 0x26]
|
|
bl _call_via_r6
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E4D4: .4byte sub_807E980
|
|
_0807E4D8: .4byte gTasks
|
|
thumb_func_end sub_807E4A0
|
|
|
|
thumb_func_start DoDoorWarp
|
|
DoDoorWarp: @ 807E4DC
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
ldr r0, _0807E4F4 @ =gFieldCallback
|
|
ldr r1, _0807E4F8 @ =sub_807DF64
|
|
str r1, [r0]
|
|
ldr r0, _0807E4FC @ =sub_807E80C
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E4F4: .4byte gFieldCallback
|
|
_0807E4F8: .4byte sub_807DF64
|
|
_0807E4FC: .4byte sub_807E80C
|
|
thumb_func_end DoDoorWarp
|
|
|
|
thumb_func_start sub_807E500
|
|
sub_807E500: @ 807E500
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
ldr r0, _0807E518 @ =sub_807E718
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
ldr r1, _0807E51C @ =gFieldCallback
|
|
ldr r0, _0807E520 @ =sub_807DF94
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E518: .4byte sub_807E718
|
|
_0807E51C: .4byte gFieldCallback
|
|
_0807E520: .4byte sub_807DF94
|
|
thumb_func_end sub_807E500
|
|
|
|
thumb_func_start sub_807E524
|
|
sub_807E524: @ 807E524
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
ldr r0, _0807E53C @ =gFieldCallback
|
|
ldr r1, _0807E540 @ =sub_807DF64
|
|
str r1, [r0]
|
|
ldr r0, _0807E544 @ =sub_807E784
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E53C: .4byte gFieldCallback
|
|
_0807E540: .4byte sub_807DF64
|
|
_0807E544: .4byte sub_807E784
|
|
thumb_func_end sub_807E524
|
|
|
|
thumb_func_start DoFallWarp
|
|
DoFallWarp: @ 807E548
|
|
push {lr}
|
|
bl DoDiveWarp
|
|
ldr r1, _0807E558 @ =gFieldCallback
|
|
ldr r0, _0807E55C @ =sub_8084454
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E558: .4byte gFieldCallback
|
|
_0807E55C: .4byte sub_8084454
|
|
thumb_func_end DoFallWarp
|
|
|
|
thumb_func_start sub_807E560
|
|
sub_807E560: @ 807E560
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl ScriptContext2_Enable
|
|
adds r0, r4, 0
|
|
movs r1, 0xA
|
|
bl sub_8084784
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807E560
|
|
|
|
thumb_func_start sub_807E57C
|
|
sub_807E57C: @ 807E57C
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
movs r0, 0xA
|
|
bl sub_8084F2C
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807E57C
|
|
|
|
thumb_func_start sub_807E58C
|
|
sub_807E58C: @ 807E58C
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
movs r0, 0xA
|
|
bl sub_80853CC
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807E58C
|
|
|
|
thumb_func_start sub_807E59C
|
|
sub_807E59C: @ 807E59C
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl sub_8055F88
|
|
ldr r0, _0807E5B8 @ =sub_807E784
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
ldr r1, _0807E5BC @ =gFieldCallback
|
|
ldr r0, _0807E5C0 @ =sub_807DF94
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E5B8: .4byte sub_807E784
|
|
_0807E5BC: .4byte gFieldCallback
|
|
_0807E5C0: .4byte sub_807DF94
|
|
thumb_func_end sub_807E59C
|
|
|
|
thumb_func_start sub_807E5C4
|
|
sub_807E5C4: @ 807E5C4
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl sub_807DC18
|
|
ldr r0, _0807E5E0 @ =sub_807E718
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
ldr r1, _0807E5E4 @ =gFieldCallback
|
|
ldr r0, _0807E5E8 @ =nullsub_60
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E5E0: .4byte sub_807E718
|
|
_0807E5E4: .4byte gFieldCallback
|
|
_0807E5E8: .4byte nullsub_60
|
|
thumb_func_end sub_807E5C4
|
|
|
|
thumb_func_start sub_807E5EC
|
|
sub_807E5EC: @ 807E5EC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807E610 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807E620
|
|
cmp r0, 0x1
|
|
bgt _0807E614
|
|
cmp r0, 0
|
|
beq _0807E61A
|
|
b _0807E64A
|
|
.align 2, 0
|
|
_0807E610: .4byte gTasks
|
|
_0807E614:
|
|
cmp r0, 0x2
|
|
beq _0807E63A
|
|
b _0807E64A
|
|
_0807E61A:
|
|
bl ScriptContext2_Enable
|
|
b _0807E632
|
|
_0807E620:
|
|
bl sub_807E40C
|
|
cmp r0, 0
|
|
bne _0807E64A
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E64A
|
|
_0807E632:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807E64A
|
|
_0807E63A:
|
|
bl WarpIntoMap
|
|
ldr r0, _0807E650 @ =sub_8056788
|
|
bl SetMainCallback2
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E64A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E650: .4byte sub_8056788
|
|
thumb_func_end sub_807E5EC
|
|
|
|
thumb_func_start sub_807E654
|
|
sub_807E654: @ 807E654
|
|
push {lr}
|
|
bl ScriptContext2_Enable
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
movs r0, 0x9
|
|
bl PlaySE
|
|
ldr r0, _0807E674 @ =sub_807E5EC
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E674: .4byte sub_807E5EC
|
|
thumb_func_end sub_807E654
|
|
|
|
thumb_func_start sub_807E678
|
|
sub_807E678: @ 807E678
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807E69C @ =gTasks+0x8
|
|
adds r4, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807E6BE
|
|
cmp r0, 0x1
|
|
bgt _0807E6A0
|
|
cmp r0, 0
|
|
beq _0807E6A6
|
|
b _0807E6F4
|
|
.align 2, 0
|
|
_0807E69C: .4byte gTasks+0x8
|
|
_0807E6A0:
|
|
cmp r0, 0x2
|
|
beq _0807E6DC
|
|
b _0807E6F4
|
|
_0807E6A6:
|
|
bl sub_800A068
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
bl fade_screen
|
|
bl sub_8055F88
|
|
movs r0, 0x9
|
|
bl PlaySE
|
|
b _0807E6D4
|
|
_0807E6BE:
|
|
bl sub_807E40C
|
|
cmp r0, 0
|
|
bne _0807E6F4
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E6F4
|
|
bl sub_800AAC0
|
|
_0807E6D4:
|
|
ldrh r0, [r4]
|
|
adds r0, 0x1
|
|
strh r0, [r4]
|
|
b _0807E6F4
|
|
_0807E6DC:
|
|
ldr r0, _0807E6FC @ =gReceivedRemoteLinkPlayers
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0807E6F4
|
|
bl WarpIntoMap
|
|
ldr r0, _0807E700 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E6F4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E6FC: .4byte gReceivedRemoteLinkPlayers
|
|
_0807E700: .4byte CB2_LoadMap
|
|
thumb_func_end sub_807E678
|
|
|
|
thumb_func_start sub_807E704
|
|
sub_807E704: @ 807E704
|
|
push {lr}
|
|
ldr r0, _0807E714 @ =sub_807E678
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E714: .4byte sub_807E678
|
|
thumb_func_end sub_807E704
|
|
|
|
thumb_func_start sub_807E718
|
|
sub_807E718: @ 807E718
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807E73C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807E750
|
|
cmp r0, 0x1
|
|
bgt _0807E740
|
|
cmp r0, 0
|
|
beq _0807E746
|
|
b _0807E77A
|
|
.align 2, 0
|
|
_0807E73C: .4byte gTasks
|
|
_0807E740:
|
|
cmp r0, 0x2
|
|
beq _0807E76A
|
|
b _0807E77A
|
|
_0807E746:
|
|
bl player_bitmagic
|
|
bl ScriptContext2_Enable
|
|
b _0807E762
|
|
_0807E750:
|
|
bl sub_807E40C
|
|
cmp r0, 0
|
|
bne _0807E77A
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E77A
|
|
_0807E762:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807E77A
|
|
_0807E76A:
|
|
bl WarpIntoMap
|
|
ldr r0, _0807E780 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E77A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E780: .4byte CB2_LoadMap
|
|
thumb_func_end sub_807E718
|
|
|
|
thumb_func_start sub_807E784
|
|
sub_807E784: @ 807E784
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0807E7A8 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0807E7CA
|
|
cmp r0, 0x1
|
|
bgt _0807E7AC
|
|
cmp r0, 0
|
|
beq _0807E7B6
|
|
b _0807E802
|
|
.align 2, 0
|
|
_0807E7A8: .4byte gTasks
|
|
_0807E7AC:
|
|
cmp r0, 0x2
|
|
beq _0807E7D8
|
|
cmp r0, 0x3
|
|
beq _0807E7F2
|
|
b _0807E802
|
|
_0807E7B6:
|
|
bl player_bitmagic
|
|
bl ScriptContext2_Enable
|
|
movs r0, 0x27
|
|
bl PlaySE
|
|
bl sub_805DAB0
|
|
b _0807E7EA
|
|
_0807E7CA:
|
|
bl sub_805DAD0
|
|
cmp r0, 0
|
|
bne _0807E802
|
|
bl sub_807DC18
|
|
b _0807E7EA
|
|
_0807E7D8:
|
|
bl sub_807E40C
|
|
cmp r0, 0
|
|
bne _0807E802
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E802
|
|
_0807E7EA:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0807E802
|
|
_0807E7F2:
|
|
bl WarpIntoMap
|
|
ldr r0, _0807E808 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0807E802:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E808: .4byte CB2_LoadMap
|
|
thumb_func_end sub_807E784
|
|
|
|
thumb_func_start sub_807E80C
|
|
sub_807E80C: @ 807E80C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _0807E83C @ =gTasks
|
|
adds r5, r1, r0
|
|
adds r4, r5, 0
|
|
adds r4, 0xC
|
|
adds r6, r5, 0
|
|
adds r6, 0xE
|
|
movs r2, 0x8
|
|
ldrsh r1, [r5, r2]
|
|
adds r2, r0, 0
|
|
cmp r1, 0x5
|
|
bls _0807E830
|
|
b _0807E976
|
|
_0807E830:
|
|
lsls r0, r1, 2
|
|
ldr r1, _0807E840 @ =_0807E844
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0807E83C: .4byte gTasks
|
|
_0807E840: .4byte _0807E844
|
|
.align 2, 0
|
|
_0807E844:
|
|
.4byte _0807E85C
|
|
.4byte _0807E898
|
|
.4byte _0807E8F4
|
|
.4byte _0807E940
|
|
.4byte _0807E95C
|
|
.4byte _0807E966
|
|
_0807E85C:
|
|
bl player_bitmagic
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl PlayerGetDestCoords
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r6, r2]
|
|
subs r1, 0x1
|
|
bl GetDoorSoundEffect
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl PlaySE
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r6, r2]
|
|
subs r1, 0x1
|
|
bl FieldAnimateDoorOpen
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r5, 0xA]
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _0807E976
|
|
_0807E898:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
blt _0807E8AE
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldrb r0, [r1, 0x4]
|
|
cmp r0, 0x1
|
|
beq _0807E976
|
|
_0807E8AE:
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _0807E8F0 @ =gMapObjects
|
|
adds r0, r4
|
|
bl FieldObjectClearAnimIfSpecialAnimActive
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0x11
|
|
bl FieldObjectSetHeldMovement
|
|
movs r0, 0x2
|
|
strh r0, [r5, 0x8]
|
|
b _0807E976
|
|
.align 2, 0
|
|
_0807E8F0: .4byte gMapObjects
|
|
_0807E8F4:
|
|
bl walkrun_is_standing_still
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807E976
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0
|
|
ldrsh r1, [r6, r2]
|
|
subs r1, 0x1
|
|
bl FieldAnimateDoorClose
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r5, 0xA]
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetFieldObjectIdByLocalIdAndMap
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E93C @ =gMapObjects
|
|
adds r0, r1
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
movs r0, 0
|
|
bl sub_807DCB0
|
|
movs r0, 0x3
|
|
strh r0, [r5, 0x8]
|
|
b _0807E976
|
|
.align 2, 0
|
|
_0807E93C: .4byte gMapObjects
|
|
_0807E940:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
blt _0807E956
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldrb r0, [r1, 0x4]
|
|
cmp r0, 0x1
|
|
beq _0807E976
|
|
_0807E956:
|
|
movs r0, 0x4
|
|
strh r0, [r5, 0x8]
|
|
b _0807E976
|
|
_0807E95C:
|
|
bl sub_8055F88
|
|
bl sub_807DC18
|
|
b _0807E96A
|
|
_0807E966:
|
|
bl sub_8055F88
|
|
_0807E96A:
|
|
bl PlayRainStoppingSoundEffect
|
|
movs r0, 0
|
|
strh r0, [r5, 0x8]
|
|
ldr r0, _0807E97C @ =sub_807E718
|
|
str r0, [r5]
|
|
_0807E976:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807E97C: .4byte sub_807E718
|
|
thumb_func_end sub_807E80C
|
|
|
|
thumb_func_start sub_807E980
|
|
sub_807E980: @ 807E980
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _0807E9C0 @ =gTasks+0x8
|
|
adds r5, r0, r1
|
|
ldr r2, _0807E9C4 @ =gPlayerAvatar
|
|
ldrb r1, [r2, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E9C8 @ =gMapObjects
|
|
adds r6, r0, r1
|
|
ldrb r1, [r2, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807E9CC @ =gSprites
|
|
adds r7, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _0807E9E8
|
|
cmp r0, 0x1
|
|
bgt _0807E9D0
|
|
cmp r0, 0
|
|
beq _0807E9DA
|
|
b _0807EA9A
|
|
.align 2, 0
|
|
_0807E9C0: .4byte gTasks+0x8
|
|
_0807E9C4: .4byte gPlayerAvatar
|
|
_0807E9C8: .4byte gMapObjects
|
|
_0807E9CC: .4byte gSprites
|
|
_0807E9D0:
|
|
cmp r0, 0x2
|
|
beq _0807EA38
|
|
cmp r0, 0x3
|
|
beq _0807EA66
|
|
b _0807EA9A
|
|
_0807E9DA:
|
|
bl ScriptContext2_Enable
|
|
bl player_bitmagic
|
|
bl CameraObjectReset2
|
|
b _0807EA92
|
|
_0807E9E8:
|
|
adds r0, r6, 0
|
|
bl FieldObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807EA00
|
|
adds r0, r6, 0
|
|
bl FieldObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807EAB0
|
|
_0807EA00:
|
|
ldrh r1, [r5, 0x1E]
|
|
movs r2, 0x1E
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
beq _0807EA10
|
|
subs r0, r1, 0x1
|
|
strh r0, [r5, 0x1E]
|
|
b _0807EAB0
|
|
_0807EA10:
|
|
bl sub_8055F88
|
|
bl PlayRainStoppingSoundEffect
|
|
ldrb r1, [r7, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r7, 0x5]
|
|
ldrh r0, [r5, 0x2]
|
|
adds r1, r5, 0x4
|
|
adds r2, r5, 0x6
|
|
bl sub_807EB64
|
|
movs r0, 0x9
|
|
bl PlaySE
|
|
b _0807EA92
|
|
_0807EA38:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x6
|
|
ldrsh r1, [r5, r2]
|
|
adds r2, r5, 0
|
|
adds r2, 0x8
|
|
adds r3, r5, 0
|
|
adds r3, 0xA
|
|
adds r4, r5, 0
|
|
adds r4, 0xC
|
|
str r4, [sp]
|
|
bl sub_807EAC4
|
|
ldrh r0, [r5, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xB
|
|
ble _0807EAB0
|
|
bl sub_807DC18
|
|
b _0807EA92
|
|
_0807EA66:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x6
|
|
ldrsh r1, [r5, r2]
|
|
adds r2, r5, 0
|
|
adds r2, 0x8
|
|
adds r3, r5, 0
|
|
adds r3, 0xA
|
|
adds r4, r5, 0
|
|
adds r4, 0xC
|
|
str r4, [sp]
|
|
bl sub_807EAC4
|
|
bl sub_807E40C
|
|
cmp r0, 0
|
|
bne _0807EAB0
|
|
bl sub_8055FC4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807EAB0
|
|
_0807EA92:
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
b _0807EAB0
|
|
_0807EA9A:
|
|
ldr r0, _0807EAB8 @ =gFieldCallback
|
|
ldr r1, _0807EABC @ =sub_807DF64
|
|
str r1, [r0]
|
|
bl WarpIntoMap
|
|
ldr r0, _0807EAC0 @ =CB2_LoadMap
|
|
bl SetMainCallback2
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_0807EAB0:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807EAB8: .4byte gFieldCallback
|
|
_0807EABC: .4byte sub_807DF64
|
|
_0807EAC0: .4byte CB2_LoadMap
|
|
thumb_func_end sub_807E980
|
|
|
|
thumb_func_start sub_807EAC4
|
|
sub_807EAC4: @ 807EAC4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r4, r2, 0
|
|
adds r5, r3, 0
|
|
ldr r6, [sp, 0x18]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r12, r0
|
|
ldr r3, _0807EB58 @ =gPlayerAvatar
|
|
ldrb r2, [r3, 0x4]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r2, _0807EB5C @ =gSprites
|
|
adds r7, r0, r2
|
|
ldrb r2, [r3, 0x5]
|
|
lsls r0, r2, 3
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r2, _0807EB60 @ =gMapObjects
|
|
adds r0, r2
|
|
mov r8, r0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0
|
|
bgt _0807EB02
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
cmp r0, 0x6
|
|
ble _0807EB08
|
|
_0807EB02:
|
|
ldrh r0, [r5]
|
|
adds r0, r1, r0
|
|
strh r0, [r5]
|
|
_0807EB08:
|
|
mov r1, r12
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r4]
|
|
adds r0, r2
|
|
strh r0, [r4]
|
|
ldrh r0, [r6]
|
|
adds r0, 0x1
|
|
strh r0, [r6]
|
|
ldrh r0, [r4]
|
|
lsls r0, 16
|
|
asrs r0, 21
|
|
strh r0, [r7, 0x24]
|
|
ldrh r0, [r5]
|
|
lsls r0, 16
|
|
asrs r0, 21
|
|
strh r0, [r7, 0x26]
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
lsrs r0, 7
|
|
cmp r0, 0
|
|
beq _0807EB4C
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetStepInPlaceDelay16AnimId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r0, r8
|
|
bl FieldObjectForceSetSpecialAnim
|
|
_0807EB4C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807EB58: .4byte gPlayerAvatar
|
|
_0807EB5C: .4byte gSprites
|
|
_0807EB60: .4byte gMapObjects
|
|
thumb_func_end sub_807EAC4
|
|
|
|
thumb_func_start sub_807EB64
|
|
sub_807EB64: @ 807EB64
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r5, r0, 0
|
|
adds r6, r1, 0
|
|
mov r8, r2
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r0, _0807EBB4 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0807EBB8 @ =gMapObjects
|
|
adds r4, r0
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetStepInPlaceDelay16AnimId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectForceSetSpecialAnim
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
mov r2, r8
|
|
bl sub_807EBBC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807EBB4: .4byte gPlayerAvatar
|
|
_0807EBB8: .4byte gMapObjects
|
|
thumb_func_end sub_807EB64
|
|
|
|
thumb_func_start sub_807EBBC
|
|
sub_807EBBC: @ 807EBBC
|
|
push {r4-r7,lr}
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r7, r4, 0
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsUnknownWarp6C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807EBE0
|
|
movs r0, 0x10
|
|
strh r0, [r5]
|
|
movs r1, 0xA
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
b _0807EC2A
|
|
_0807EBE0:
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsUnknownWarp6D
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807EBFA
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
strh r0, [r5]
|
|
adds r1, 0x7
|
|
adds r0, r1, 0
|
|
b _0807EC2A
|
|
_0807EBFA:
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsUnknownWarp6E
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807EC0E
|
|
movs r0, 0x11
|
|
strh r0, [r5]
|
|
movs r0, 0x3
|
|
b _0807EC2A
|
|
_0807EC0E:
|
|
adds r0, r7, 0
|
|
bl MetatileBehavior_IsUnknownWarp6F
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0807EC28
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
strh r0, [r5]
|
|
movs r0, 0x3
|
|
b _0807EC2A
|
|
_0807EC28:
|
|
strh r0, [r5]
|
|
_0807EC2A:
|
|
strh r0, [r6]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807EBBC
|
|
|
|
thumb_func_start sub_807EC34
|
|
sub_807EC34: @ 807EC34
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _0807EC6C @ =gTasks+0x8
|
|
adds r5, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _0807EC70
|
|
cmp r0, 0x1
|
|
beq _0807EC92
|
|
bl sub_807E418
|
|
cmp r0, 0x1
|
|
bne _0807ECB2
|
|
bl CameraObjectReset1
|
|
bl ScriptContext2_Disable
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
b _0807ECB2
|
|
.align 2, 0
|
|
_0807EC6C: .4byte gTasks+0x8
|
|
_0807EC70:
|
|
bl Overworld_PlaySpecialMapMusic
|
|
bl pal_fill_for_maplights
|
|
bl ScriptContext2_Enable
|
|
adds r0, r5, 0x2
|
|
adds r1, r5, 0x4
|
|
adds r2, r5, 0x6
|
|
adds r3, r5, 0
|
|
adds r3, 0x8
|
|
adds r4, r5, 0
|
|
adds r4, 0xA
|
|
str r4, [sp]
|
|
bl sub_807ECBC
|
|
b _0807ECAC
|
|
_0807EC92:
|
|
adds r0, r5, 0x2
|
|
adds r1, r5, 0x4
|
|
adds r2, r5, 0x6
|
|
adds r3, r5, 0
|
|
adds r3, 0x8
|
|
adds r4, r5, 0
|
|
adds r4, 0xA
|
|
str r4, [sp]
|
|
bl sub_807EDA0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807ECB2
|
|
_0807ECAC:
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
_0807ECB2:
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_807EC34
|
|
|
|
thumb_func_start sub_807ECBC
|
|
sub_807ECBC: @ 807ECBC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
adds r7, r0, 0
|
|
adds r5, r1, 0
|
|
mov r9, r2
|
|
mov r10, r3
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl PlayerGetDestCoords
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r6, 0
|
|
bl MetatileBehavior_IsUnknownWarp6E
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0807ED06
|
|
adds r0, r6, 0
|
|
bl MetatileBehavior_IsUnknownWarp6C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807ED0A
|
|
_0807ED06:
|
|
movs r1, 0x3
|
|
b _0807ED0C
|
|
_0807ED0A:
|
|
movs r1, 0x4
|
|
_0807ED0C:
|
|
ldr r0, _0807ED94 @ =gPlayerAvatar
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0807ED98 @ =gMapObjects
|
|
adds r4, r0
|
|
adds r0, r1, 0
|
|
bl sub_8064270
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl FieldObjectForceSetSpecialAnim
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
adds r2, r5, 0
|
|
bl sub_807EBBC
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
lsls r0, 4
|
|
mov r2, r9
|
|
strh r0, [r2]
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
lsls r0, 4
|
|
mov r2, r10
|
|
strh r0, [r2]
|
|
movs r1, 0x10
|
|
ldr r0, [sp, 0x24]
|
|
strh r1, [r0]
|
|
mov r1, r8
|
|
ldrb r0, [r1, 0x4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _0807ED9C @ =gSprites
|
|
adds r1, r0
|
|
mov r2, r9
|
|
ldrh r0, [r2]
|
|
lsls r0, 16
|
|
asrs r0, 21
|
|
strh r0, [r1, 0x24]
|
|
mov r2, r10
|
|
ldrh r0, [r2]
|
|
lsls r0, 16
|
|
asrs r0, 21
|
|
strh r0, [r1, 0x26]
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
negs r0, r0
|
|
strh r0, [r7]
|
|
movs r2, 0
|
|
ldrsh r0, [r5, r2]
|
|
negs r0, r0
|
|
strh r0, [r5]
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807ED94: .4byte gPlayerAvatar
|
|
_0807ED98: .4byte gMapObjects
|
|
_0807ED9C: .4byte gSprites
|
|
thumb_func_end sub_807ECBC
|
|
|
|
thumb_func_start sub_807EDA0
|
|
sub_807EDA0: @ 807EDA0
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
adds r6, r1, 0
|
|
ldr r4, [sp, 0x14]
|
|
ldr r0, _0807EDC8 @ =gPlayerAvatar
|
|
ldrb r1, [r0, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0807EDCC @ =gSprites
|
|
adds r1, r0, r1
|
|
movs r7, 0
|
|
ldrsh r0, [r4, r7]
|
|
cmp r0, 0
|
|
bne _0807EDD0
|
|
strh r0, [r1, 0x24]
|
|
strh r0, [r1, 0x26]
|
|
movs r0, 0
|
|
b _0807EDF8
|
|
.align 2, 0
|
|
_0807EDC8: .4byte gPlayerAvatar
|
|
_0807EDCC: .4byte gSprites
|
|
_0807EDD0:
|
|
ldrh r0, [r5]
|
|
ldrh r5, [r2]
|
|
adds r0, r5
|
|
strh r0, [r2]
|
|
ldrh r0, [r6]
|
|
ldrh r7, [r3]
|
|
adds r0, r7
|
|
strh r0, [r3]
|
|
ldrh r0, [r2]
|
|
lsls r0, 16
|
|
asrs r0, 21
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r3]
|
|
lsls r0, 16
|
|
asrs r0, 21
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4]
|
|
subs r0, 0x1
|
|
strh r0, [r4]
|
|
movs r0, 0x1
|
|
_0807EDF8:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_807EDA0
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|