pokefirered/asm/field_fadetransition.s
2019-08-24 09:37:41 +08:00

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.