diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-25 17:16:57 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-25 17:16:57 -0400 |
commit | bdeea4ca2855696db8c6ca51872ec7d19783636f (patch) | |
tree | 65f54eef5a0e8e3fba024ea3d5f0e7aebacf61eb | |
parent | 931bf4ce4b4fd7ea63d00f36adfd2bf720831a80 (diff) |
field_fadetransition begin
-rw-r--r-- | asm/field_fadetransition.s | 1085 | ||||
-rw-r--r-- | include/cable_club.h | 1 | ||||
-rw-r--r-- | include/field_fadetransition.h | 2 | ||||
-rw-r--r-- | include/field_map_obj.h | 1 | ||||
-rw-r--r-- | include/field_player_avatar.h | 3 | ||||
-rw-r--r-- | include/field_screen_effect.h | 1 | ||||
-rw-r--r-- | include/fldeff.h | 2 | ||||
-rw-r--r-- | include/link.h | 1 | ||||
-rw-r--r-- | include/map_preview_screen.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 3 | ||||
-rw-r--r-- | include/quest_log.h | 1 | ||||
-rw-r--r-- | include/start_menu.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/field_fadetransition.c | 488 |
14 files changed, 507 insertions, 1085 deletions
diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 4b707a46a..0c248ba6c 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -5,1091 +5,6 @@ .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} diff --git a/include/cable_club.h b/include/cable_club.h index 401cfacf1..5375c2210 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -9,5 +9,6 @@ // Exported ROM declarations void sub_8081A90(u8 taskId); +u8 sub_8081150(void); #endif //GUARD_CABLE_CLUB_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 4ba350491..fe67fec30 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -16,4 +16,6 @@ void sub_807DC18(void); void FieldCallback_ReturnToEventScript2(void); void sub_807DC00(void); +bool32 sub_807E418(void); + #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 83cc263e5..7228b9318 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -90,6 +90,7 @@ u8 sub_805EB44(u8, u8, s16, s16); void npc_paltag_set_load(u8 mode); bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject); u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject); +u8 sub_8063F84(u8 direction); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index b87de3fef..00a3b7978 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -28,5 +28,8 @@ u8 GetPlayerAvatarObjectId(void); u8 PlayerGetZCoord(void); u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void sub_805CB70(void); +void sub_805CB04(bool8); +void sub_805DC04(void); +bool32 sub_805DC24(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index d1fde7eac..0c6cc35cb 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -7,5 +7,6 @@ void sub_80AF79C(void); void sub_807F028(u8); void sub_80B0244(void); void sub_807E3EC(void); +void sub_807F114(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/fldeff.h b/include/fldeff.h index e5e7e5f7d..e3f703947 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -13,6 +13,8 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); u8 oei_task_add(void); // flash +u8 sub_80C9DCC(u8 lightLevel, u8 mapType); +u8 sub_80C9D7C(u8 mapType1, u8 mapType2); // cut diff --git a/include/link.h b/include/link.h index 5f8d8f161..950c48d3f 100644 --- a/include/link.h +++ b/include/link.h @@ -213,5 +213,6 @@ void sub_8054A28(void); void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); +void sub_8009FE8(void); #endif // GUARD_LINK_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 6590019e2..71015aacf 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -47,5 +47,6 @@ struct MapPreviewScreen u16 sub_80F8318(u8 id); void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); +bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/overworld.h b/include/overworld.h index 8c5dde2b0..2b6013217 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -133,6 +133,9 @@ void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); u8 GetCurrentMapType(void); +u8 get_map_light_from_warp0(void); +const struct MapHeader *warp1_get_mapheader(void); + void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/quest_log.h b/include/quest_log.h index 858ea593a..0690dd282 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -32,6 +32,7 @@ void sub_8112EDC(u8 a0); u8 sub_8112EB4(void); void sub_8113018(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); +void sub_8111CF0(void); extern u8 gUnknown_203ADFA; diff --git a/include/start_menu.h b/include/start_menu.h index f5b38ee5e..c4a3ce19d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -4,5 +4,7 @@ #include "global.h" void AppendToList(u8* list, u8* pos, u8 newEntry); +void sub_806F1F0(u8 taskId); +void sub_806F1D4(void); #endif // GUARD_START_MENU_H diff --git a/ld_script.txt b/ld_script.txt index 7952b2cd8..6aa4426c1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -119,6 +119,7 @@ SECTIONS { src/reset_save_heap.o(.text); asm/field_weather.o(.text); asm/field_weather_effects.o(.text); + src/field_fadetransition.o(.text); asm/field_fadetransition.o(.text); asm/field_screen_effect.o(.text); asm/battle_setup.o(.text); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c new file mode 100644 index 000000000..50f7fe8c9 --- /dev/null +++ b/src/field_fadetransition.c @@ -0,0 +1,488 @@ +#include "global.h" +#include "palette.h" +#include "field_fadetransition.h" +#include "overworld.h" +#include "fldeff.h" +#include "field_weather.h" +#include "map_preview_screen.h" +#include "field_player_avatar.h" +#include "task.h" +#include "script.h" +#include "cable_club.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "quest_log.h" +#include "link.h" +#include "map_obj_80688E4.h" +#include "sound.h" +#include "field_door.h" +#include "field_screen_effect.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "map_obj_lock.h" +#include "start_menu.h" +#include "constants/songs.h" + +void sub_807DF4C(u8 a0); +void sub_807DFBC(u8 taskId); +void task_map_chg_seq_0807E20C(u8 taskId); +void task_map_chg_seq_0807E2CC(u8 taskId); +void sub_807E31C(u8 taskId); +void sub_807EC34(u8 taskId); +void sub_807F204(u8 taskId); + +void palette_bg_faded_fill_white(void) +{ + CpuFastFill16(RGB_WHITE, gPlttBufferFaded, 0x400); +} + +void palette_bg_faded_fill_black(void) +{ + CpuFastFill16(RGB_BLACK, gPlttBufferFaded, 0x400); +} + +void pal_fill_for_maplights(void) +{ + switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) + { + case 0: + palette_bg_faded_fill_black(); + fade_screen(0, 0); + palette_bg_faded_fill_black(); + break; + case 1: + palette_bg_faded_fill_white(); + fade_screen(2, 0); + palette_bg_faded_fill_white(); + break; + } +} + +void sub_807DBAC(void) +{ + switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) + { + case 0: + palette_bg_faded_fill_black(); + fade_screen(0, 3); + palette_bg_faded_fill_black(); + break; + case 1: + palette_bg_faded_fill_white(); + fade_screen(2, 3); + palette_bg_faded_fill_white(); + break; + } +} + +void sub_807DC00(void) +{ + palette_bg_faded_fill_black(); + fade_screen(0, 0); + palette_bg_faded_fill_black(); +} + +void sub_807DC18(void) +{ + const struct MapHeader *header = warp1_get_mapheader(); + if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE)) + fade_screen(1, 0); + else + { + switch (sub_80C9D7C(GetCurrentMapType(), header->mapType)) + { + case 0: + fade_screen(1, 0); + break; + case 1: + fade_screen(3, 0); + break; + } + } +} + +void sub_807DC70(void) +{ + switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType)) + { + case 0: + fade_screen(1, 3); + break; + case 1: + fade_screen(3, 3); + break; + } +} + +void sub_807DCB0(bool8 arg) +{ + sub_805CB04(!arg); +} + +void task0A_nop_for_a_while(u8 taskId) +{ + if (sub_807E418() == TRUE) + DestroyTask(taskId); +} + +void sub_807DCE4(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + sub_807DC00(); + CreateTask(task0A_nop_for_a_while, 10); +} + +void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskId) +{ + if (sub_807E418() == TRUE) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} + +void FieldCallback_ReturnToEventScript2(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + sub_807DC00(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void sub_807DD44(void) +{ + ScriptContext2_Enable(); + sub_807DC00(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void task_mpl_807DD60(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + task->data[1] = sub_8081150(); + task->data[0]++; + break; + case 1: + if (gTasks[task->data[1]].isActive != TRUE) + { + pal_fill_for_maplights(); + task->data[0]++; + } + break; + case 2: + if (sub_807E418() == TRUE) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807DDD0(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_faded_fill_black(); + CreateTask(task_mpl_807DD60, 10); +} + +void sub_807DDF0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + sub_800AB9C(); + task->data[0]++; + break; + case 1: + if (IsLinkTaskFinished()) + { + pal_fill_for_maplights(); + task->data[0]++; + } + break; + case 2: + if (sub_807E418() == TRUE) + { + sub_8009FE8(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807DE58(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_faded_fill_black(); + CreateTask(sub_807DDF0, 10); +} + +void sub_807DE78(bool8 a0) +{ + s16 x, y; + u32 behavior; + TaskFunc func; + + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsWarpDoor_2(behavior) == TRUE) + { + func = sub_807DFBC; + switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) + { + case 0: + palette_bg_faded_fill_black(); + break; + case 1: + palette_bg_faded_fill_white(); + break; + } + } + else + { + sub_807DF4C(a0); + if (MetatileBehavior_IsCaveDoor(behavior) == TRUE) + func = task_map_chg_seq_0807E20C; + else if (MetatileBehavior_IsUnknownWarp6C_to_6F(behavior) == TRUE) + { + u8 tmp = gUnknown_2031DE0; + func = task_map_chg_seq_0807E2CC; + if (!tmp) + func = sub_807EC34; + } + else + func = task_map_chg_seq_0807E2CC; + } + gUnknown_2031DE0 = FALSE; + CreateTask(func, 10); +} + +void sub_807DF4C(bool8 a0) +{ + if (!a0) + pal_fill_for_maplights(); + else + sub_807DC00(); +} + +void sub_807DF64(void) +{ + Overworld_PlaySpecialMapMusic(); + sub_8111CF0(); + sub_807DE78(FALSE); + ScriptContext2_Enable(); +} + +void sub_807DF7C(void) +{ + Overworld_PlaySpecialMapMusic(); + sub_8111CF0(); + sub_807DE78(TRUE); + ScriptContext2_Enable(); +} + +void sub_807DF94(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_maplights(); + sub_8111CF0(); + PlaySE(SE_RU_GASHIN); + CreateTask(sub_807E31C, 10); + ScriptContext2_Enable(); +} + +void sub_807DFBC(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + if (task->data[0] == 0) + task->data[0] = 5; + + switch (task->data[0]) + { + case 0: // Never reached + sub_807DCB0(0); + player_bitmagic(); + PlayerGetDestCoords(x, y); + FieldSetDoorOpened(*x, *y); + task->data[0] = 1; + break; + case 5: + sub_807DCB0(0); + player_bitmagic(); + sub_807F114(); + sub_807DBAC(); + task->data[0] = 6; + break; + case 6: + task->data[15]++; + if (task->data[15] == 25) + { + PlayerGetDestCoords(x, y); + PlaySE(GetDoorSoundEffect(*x, *y)); + FieldAnimateDoorOpen(*x, *y); + task->data[0] = 7; + } + break; + case 7: + if (!FieldIsDoorAnimationRunning()) + { + PlayerGetDestCoords(&task->data[12], &task->data[13]); + sub_807DCB0(TRUE); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], 16); + task->data[0] = 8; + } + break; + case 8: + task->data[14]++; + if (task->data[14] == 14) + { + FieldAnimateDoorClose(task->data[12], task->data[13]); + task->data[0] = 9; + } + break; + case 9: + if (sub_807E418() && walkrun_is_standing_still() && !FieldIsDoorAnimationRunning() && !FuncIsActiveTask(sub_807F204)) + { + FieldObjectClearHeldMovementIfFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + task->data[0] = 4; + } + break; + // Legacy RS + case 1: + if (sub_807E418()) + { + sub_807DCB0(TRUE); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], 16); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + task->data[1] = FieldAnimateDoorClose(*x, *y); + FieldObjectClearHeldMovementIfFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + task->data[0] = 4; + break; + case 4: + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E20C(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + sub_807DCB0(0); + player_bitmagic(); + PlayerGetDestCoords(x, y); + task->data[0] = 1; + break; + case 1: + if (sub_807E418()) + { + sub_807DCB0(TRUE); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], sub_8063F84(GetPlayerFacingDirection())); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + task->data[0] = 3; + } + break; + case 3: + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E2CC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_807E418()) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807E31C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + sub_805DC04(); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_807E418() && sub_805DC24() != TRUE) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807E378(u8 taskId) +{ + if (sub_807E418() == TRUE) + { + DestroyTask(taskId); + CreateTask(sub_806F1F0, 80); + } +} + +void sub_807E3A0(void) +{ + sub_807DC00(); + CreateTask(sub_807E378, 80); + ScriptContext2_Enable(); +} + +bool32 sub_807E3BC(void) +{ + sub_806F1D4(); + return FALSE; +} |