diff options
-rw-r--r-- | asm/field_fadetransition.s | 2391 | ||||
-rw-r--r-- | include/cable_club.h | 1 | ||||
-rw-r--r-- | include/field_effect.h | 4 | ||||
-rw-r--r-- | include/field_fadetransition.h | 2 | ||||
-rw-r--r-- | include/field_map_obj.h | 4 | ||||
-rw-r--r-- | include/field_player_avatar.h | 5 | ||||
-rw-r--r-- | include/field_screen_effect.h | 2 | ||||
-rw-r--r-- | include/fldeff.h | 2 | ||||
-rw-r--r-- | include/link.h | 2 | ||||
-rw-r--r-- | include/map_preview_screen.h | 2 | ||||
-rw-r--r-- | include/overworld.h | 5 | ||||
-rw-r--r-- | include/quest_log.h | 1 | ||||
-rw-r--r-- | include/start_menu.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/field_fadetransition.c | 965 | ||||
-rw-r--r-- | src/map_preview_screen.c | 2 |
16 files changed, 999 insertions, 2393 deletions
diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s deleted file mode 100644 index 4b707a46a..000000000 --- a/asm/field_fadetransition.s +++ /dev/null @@ -1,2391 +0,0 @@ - .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. 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_effect.h b/include/field_effect.h index 0ab2d0475..8c89f8c9c 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -85,5 +85,9 @@ void FieldEffectActiveListRemove(u8 id); void sub_8085620(void); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); +void sub_8084454(void); +void sub_8084784(u8 a0, u8 a1); +void sub_8084F2C(u8 a0); +void sub_80853CC(u8 a0); #endif //GUARD_FIELD_EFFECTS_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..baed87ac6 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -52,9 +52,12 @@ u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); void sub_8093038(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); +void CameraObjectReset2(void); void FieldObjectSetGraphicsId(struct MapObject *, u8); void FieldObjectTurn(struct MapObject *, u8); void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); +void FieldObjectForceSetSpecialAnim(struct MapObject *, u8); +u8 sub_8064270(u8 a0); const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); void gpu_pal_allocator_reset__manage_upper_four(void); @@ -90,6 +93,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..2c408afc9 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -28,5 +28,10 @@ u8 GetPlayerAvatarObjectId(void); u8 PlayerGetZCoord(void); u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void sub_805CB70(void); +void sub_805CB04(bool8); +void sub_805DC04(void); +void sub_805DAB0(void); +bool32 sub_805DAD0(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..1b8044592 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -7,5 +7,7 @@ void sub_80AF79C(void); void sub_807F028(u8); void sub_80B0244(void); void sub_807E3EC(void); +void sub_807F114(void); +void sub_807F204(u8 taskId); #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..d5d3f08a3 100644 --- a/include/link.h +++ b/include/link.h @@ -213,5 +213,7 @@ void sub_8054A28(void); void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); +void sub_8009FE8(void); +void sub_800A068(void); #endif // GUARD_LINK_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 6590019e2..5ab5584e5 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -47,5 +47,7 @@ struct MapPreviewScreen u16 sub_80F8318(u8 id); void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); +bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); +bool32 sub_80F83B0(void); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/overworld.h b/include/overworld.h index 8c5dde2b0..92b0f6001 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -133,6 +133,11 @@ 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 sub_8055F88(void); +void sub_8056788(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..131b6b4e9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -119,7 +119,7 @@ SECTIONS { src/reset_save_heap.o(.text); asm/field_weather.o(.text); asm/field_weather_effects.o(.text); - asm/field_fadetransition.o(.text); + src/field_fadetransition.o(.text);; asm/field_screen_effect.o(.text); asm/battle_setup.o(.text); asm/cable_club.o(.text); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c new file mode 100644 index 000000000..b8ed41c06 --- /dev/null +++ b/src/field_fadetransition.c @@ -0,0 +1,965 @@ +#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_effect.h" +#include "field_screen_effect.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "field_specials.h" +#include "map_obj_lock.h" +#include "start_menu.h" +#include "constants/songs.h" + +static void sub_807DF4C(u8 a0); +static void sub_807DFBC(u8 taskId); +static void task_map_chg_seq_0807E20C(u8 taskId); +static void task_map_chg_seq_0807E2CC(u8 taskId); +static void sub_807E31C(u8 taskId); +static void sub_807E718(u8 taskId); +static void sub_807E784(u8 taskId); +static void sub_807E80C(u8 taskId); +static void sub_807E980(u8 taskId); +static void sub_807EB64(u16, s16*, s16*); +static void sub_807EBBC(u8 a0, s16 *a1, s16 *a2); +static void sub_807EAC4(s16, s16, s16*, s16*, s16*); +static void sub_807EC34(u8 taskId); +static void sub_807ECBC(s16 *, s16 *, s16 *, s16 *, s16 *); +static bool8 sub_807EDA0(s16 *, s16 *, s16 *, s16 *, s16 *); + +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; + } +} + +static 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; + } + } +} + +static 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; + } +} + +static void sub_807DCB0(bool8 arg) +{ + sub_805CB04(!arg); +} + +static 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); +} + +static 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); +} + +static 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); +} + +static 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); +} + +static 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); +} + +static 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(); +} + +static void sub_807DF94(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_maplights(); + sub_8111CF0(); + PlaySE(SE_RU_GASHIN); + CreateTask(sub_807E31C, 10); + ScriptContext2_Enable(); +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; +} + +static void task_mpl_807E3C8(u8 taskId) +{ + if (sub_807E418() == TRUE) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + sub_80696C0(); + } +} + +void sub_807E3EC(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + sub_807DC00(); + CreateTask(task_mpl_807E3C8, 10); +} + +static bool32 sub_807E40C(void) +{ + return gPaletteFade.active; +} + +bool32 sub_807E418(void) +{ + if (sub_807AA70() == TRUE && sub_80F83B0()) + return TRUE; + else + return FALSE; +} + +void DoWarp(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + sub_807DC18(); + PlayRainStoppingSoundEffect(); + PlaySE(SE_KAIDAN); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E718, 10); +} + +void DoDiveWarp(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + sub_807DC18(); + PlayRainStoppingSoundEffect(); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E718, 10); +} + +void sub_807E4A0(u16 a, u16 b) +{ + u8 taskId = CreateTask(sub_807E980, 10); + gTasks[taskId].data[1] = a; + gTasks[taskId].data[15] = b; + sub_807E980(taskId); +} + +void DoDoorWarp(void) +{ + ScriptContext2_Enable(); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E80C, 10); +} + +void sub_807E500(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_807E718, 10); + gFieldCallback = sub_807DF94; +} + +void sub_807E524(void) +{ + ScriptContext2_Enable(); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E784, 10); +} + +void DoFallWarp(void) +{ + DoDiveWarp(); + gFieldCallback = sub_8084454; +} + +void sub_807E560(u8 a0) +{ + ScriptContext2_Enable(); + sub_8084784(a0, 10); +} + +void sub_807E57C(void) +{ + ScriptContext2_Enable(); + sub_8084F2C(10); +} + +void sub_807E58C(void) +{ + ScriptContext2_Enable(); + sub_80853CC(10); +} + +void sub_807E59C(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + CreateTask(sub_807E784, 10); + gFieldCallback = sub_807DF94; +} + +void sub_807E5C4(void) +{ + ScriptContext2_Enable(); + sub_807DC18(); + CreateTask(sub_807E718, 10); + gFieldCallback = nullsub_60; +} + +static void sub_807E5EC(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_807E40C() && sub_8055FC4()) + task->data[0]++; + break; + case 2: + WarpIntoMap(); + SetMainCallback2(sub_8056788); + DestroyTask(taskId); + break; + } +} + +void sub_807E654(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + sub_807DC18(); + PlaySE(SE_KAIDAN); + CreateTask(sub_807E5EC, 10); +} + +static void sub_807E678(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + switch (data[0]) + { + case 0: + sub_800A068(); + fade_screen(1, 0); + sub_8055F88(); + PlaySE(SE_KAIDAN); + data[0]++; + break; + case 1: + if (!sub_807E40C() && sub_8055FC4()) + { + sub_800AAC0(); + data[0]++; + } + break; + case 2: + if (gReceivedRemoteLinkPlayers == 0) + { + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + } + break; + } +} + +void sub_807E704(void) +{ + CreateTask(sub_807E678, 10); +} + +static void sub_807E718(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_807E40C() && sub_8055FC4()) + task->data[0]++; + break; + case 2: + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +static void sub_807E784(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + PlaySE(SE_FU_ZUZUZU); + sub_805DAB0(); + task->data[0]++; + break; + case 1: + if (!sub_805DAD0()) + { + sub_807DC18(); + task->data[0]++; + } + break; + case 2: + if (!sub_807E40C() && sub_8055FC4()) + task->data[0]++; + break; + case 3: + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +static void sub_807E80C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 * xp = &task->data[2]; + s16 * yp = &task->data[3]; + switch (task->data[0]) + { + case 0: + player_bitmagic(); + PlayerGetDestCoords(xp, yp); + PlaySE(GetDoorSoundEffect(*xp, *yp - 1)); + task->data[1] = FieldAnimateDoorOpen(*xp, *yp - 1); + task->data[0] = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], 17); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + task->data[1] = FieldAnimateDoorClose(*xp, *yp - 1); + FieldObjectClearHeldMovementIfFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + sub_807DCB0(FALSE); + 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: + sub_8055F88(); + sub_807DC18(); + PlayRainStoppingSoundEffect(); + task->data[0] = 0; + task->func = sub_807E718; + break; + case 5: + sub_8055F88(); + PlayRainStoppingSoundEffect(); + task->data[0] = 0; + task->func = sub_807E718; + break; + } +} + +static void sub_807E980(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + struct Sprite *playerSpr = &gSprites[gPlayerAvatar.spriteId]; + switch (data[0]) + { + case 0: + ScriptContext2_Enable(); + player_bitmagic(); + CameraObjectReset2(); + data[0]++; + break; + case 1: + if (!FieldObjectIsMovementOverridden(playerObj) || FieldObjectClearHeldMovementIfFinished(playerObj)) + { + if (data[15] != 0) + data[15]--; + else + { + sub_8055F88(); + PlayRainStoppingSoundEffect(); + playerSpr->oam.priority = 1; + sub_807EB64(data[1], &data[2], &data[3]); + PlaySE(SE_KAIDAN); + data[0]++; + } + } + break; + case 2: + sub_807EAC4(data[2], data[3], &data[4], &data[5], &data[6]); + data[15]++; + if (data[15] >= 12) + { + sub_807DC18(); + data[0]++; + } + break; + case 3: + sub_807EAC4(data[2], data[3], &data[4], &data[5], &data[6]); + if (!sub_807E40C() && sub_8055FC4()) + data[0]++; + break; + default: + gFieldCallback = sub_807DF64; + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +static void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) +{ + struct Sprite *playerSpr = &gSprites[gPlayerAvatar.spriteId]; + struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + if (a1 > 0 || *a4 > 6) + *a3 += a1; + *a2 += a0; + (*a4)++; + playerSpr->pos2.x = *a2 >> 5; + playerSpr->pos2.y = *a3 >> 5; + if (playerObj->mapobj_bit_7) + { + FieldObjectForceSetSpecialAnim(playerObj, GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); + } +} + +static void sub_807EB64(u16 a0, s16 *a1, s16 *a2) +{ + FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); + sub_807EBBC(a0, a1, a2); +} + +static void sub_807EBBC(u8 a0, s16 *a1, s16 *a2) +{ + if (MetatileBehavior_IsUnknownWarp6C(a0)) + { + *a1 = 16; + *a2 = -10; + } + else if (MetatileBehavior_IsUnknownWarp6D(a0)) + { + *a1 = -17; + *a2 = -10; + } + else if (MetatileBehavior_IsUnknownWarp6E(a0)) + { + *a1 = 17; + *a2 = 3; + } + else if (MetatileBehavior_IsUnknownWarp6F(a0)) + { + *a1 = -17; + *a2 = 3; + } + else + { + *a1 = 0; + *a2 = 0; + } +} + +static void sub_807EC34(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + switch (data[0]) + { + default: + if (sub_807E418() == TRUE) + { + CameraObjectReset1(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + case 0: + Overworld_PlaySpecialMapMusic(); + pal_fill_for_maplights(); + ScriptContext2_Enable(); + sub_807ECBC(&data[1], &data[2], &data[3], &data[4], &data[5]); + data[0]++; + break; + case 1: + if (!sub_807EDA0(&data[1], &data[2], &data[3], &data[4], &data[5])) + data[0]++; + break; + } +} + +static void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) +{ + s16 x, y; + u8 behavior; + s32 r1; + struct Sprite *sprite; + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsUnknownWarp6E(behavior) || MetatileBehavior_IsUnknownWarp6C(behavior)) + r1 = 3; + else + r1 = 4; + FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], sub_8064270(r1)); + sub_807EBBC(behavior, a0, a1); + *a2 = *a0 * 16; + *a3 = *a1 * 16; + *a4 = 16; + sprite = &gSprites[gPlayerAvatar.spriteId]; + sprite->pos2.x = *a2 >> 5; + sprite->pos2.y = *a3 >> 5; + *a0 *= -1; + *a1 *= -1; +} + +static bool8 sub_807EDA0(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) +{ + struct Sprite *sprite; + sprite = &gSprites[gPlayerAvatar.spriteId]; + if (*a4 != 0) + { + *a2 += *a0; + *a3 += *a1; + sprite->pos2.x = *a2 >> 5; + sprite->pos2.y = *a3 >> 5; + (*a4)--; + return TRUE; + } + else + { + sprite->pos2.x = 0; + sprite->pos2.y = 0; + return FALSE; + } +} diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index a17f37802..7d9fa935e 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -461,7 +461,7 @@ u16 sub_80F8318(u8 mapsec) return windowId; } -bool8 sub_80F83B0(void) +bool32 sub_80F83B0(void) { if (FuncIsActiveTask(sub_80F83D0) == TRUE) { |