diff options
author | ultima-soul <akshayjhanji@hotmail.com> | 2019-04-17 14:09:54 -0700 |
---|---|---|
committer | ultima-soul <akshayjhanji@hotmail.com> | 2019-04-17 14:09:54 -0700 |
commit | d74dda011ad0fc50d3ffb1a98213308e114933cf (patch) | |
tree | a15d93cfa9e2029e0cd07722595ae77006302276 | |
parent | f4b867393892d435b09f796c98e57e10a1ba0717 (diff) |
Port fldeff_teleport
-rw-r--r-- | asm/field_effect.s | 6 | ||||
-rw-r--r-- | asm/fldeff_cut.s | 24 | ||||
-rw-r--r-- | asm/fldeff_flash.s | 12 | ||||
-rw-r--r-- | asm/fldeff_strength.s | 12 | ||||
-rw-r--r-- | asm/fldeff_sweetscent.s | 12 | ||||
-rw-r--r-- | asm/fldeff_teleport.s | 92 | ||||
-rw-r--r-- | asm/item_use.s | 4 | ||||
-rw-r--r-- | asm/overworld.s | 32 | ||||
-rw-r--r-- | asm/party_menu.s | 52 | ||||
-rw-r--r-- | asm/rom6.s | 24 | ||||
-rw-r--r-- | asm/start_menu.s | 4 | ||||
-rw-r--r-- | include/field_effect.h | 4 | ||||
-rw-r--r-- | include/field_player_avatar.h | 1 | ||||
-rw-r--r-- | include/fldeff.h | 7 | ||||
-rw-r--r-- | include/overworld.h | 4 | ||||
-rw-r--r-- | include/party_menu.h | 5 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/fldeff_teleport.c | 42 | ||||
-rw-r--r-- | src/quest_log.c | 6 | ||||
-rw-r--r-- | sym_common.txt | 2 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
21 files changed, 158 insertions, 191 deletions
diff --git a/asm/field_effect.s b/asm/field_effect.s index 785e36266..798b6920b 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -5156,8 +5156,8 @@ _08085B58: _08085B60: .4byte sub_8085A24 thumb_func_end sub_8085A80 - thumb_func_start sub_8085B64 -sub_8085B64: @ 8085B64 + thumb_func_start CreateTeleportFieldEffectTask +CreateTeleportFieldEffectTask: @ 8085B64 push {lr} ldr r0, _08085B74 @ =sub_8085B78 movs r1, 0 @@ -5166,7 +5166,7 @@ sub_8085B64: @ 8085B64 bx r0 .align 2, 0 _08085B74: .4byte sub_8085B78 - thumb_func_end sub_8085B64 + thumb_func_end CreateTeleportFieldEffectTask thumb_func_start sub_8085B78 sub_8085B78: @ 8085B78 diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index ac5ab0a72..c98cda3b7 100644 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -44,34 +44,34 @@ sub_8097898: @ 8097898 lsrs r0, 24 cmp r0, 0x1 bne _08097904 - ldr r1, _080978D0 @ =gUnknown_3005024 - ldr r0, _080978D4 @ =hm_add_c3_launch_phase_2 + ldr r1, _080978D0 @ =gFieldCallback2 + ldr r0, _080978D4 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080978D8 @ =gUnknown_203B0C4 + ldr r1, _080978D8 @ =gPostMenuFieldCallback ldr r0, _080978DC @ =sub_80979D0 b _080978EC .align 2, 0 _080978CC: .4byte gUnknown_2039874 -_080978D0: .4byte gUnknown_3005024 -_080978D4: .4byte hm_add_c3_launch_phase_2 -_080978D8: .4byte gUnknown_203B0C4 +_080978D0: .4byte gFieldCallback2 +_080978D4: .4byte FieldCallback_PrepareFadeInFromMenu +_080978D8: .4byte gPostMenuFieldCallback _080978DC: .4byte sub_80979D0 _080978E0: strb r0, [r4] _080978E2: - ldr r1, _080978F4 @ =gUnknown_3005024 - ldr r0, _080978F8 @ =hm_add_c3_launch_phase_2 + ldr r1, _080978F4 @ =gFieldCallback2 + ldr r0, _080978F8 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080978FC @ =gUnknown_203B0C4 + ldr r1, _080978FC @ =gPostMenuFieldCallback ldr r0, _08097900 @ =sub_8097984 _080978EC: str r0, [r1] movs r0, 0x1 b _08097970 .align 2, 0 -_080978F4: .4byte gUnknown_3005024 -_080978F8: .4byte hm_add_c3_launch_phase_2 -_080978FC: .4byte gUnknown_203B0C4 +_080978F4: .4byte gFieldCallback2 +_080978F8: .4byte FieldCallback_PrepareFadeInFromMenu +_080978FC: .4byte gPostMenuFieldCallback _08097900: .4byte sub_8097984 _08097904: ldr r4, _0809797C @ =gUnknown_2039A04 diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index 6466c706e..c25978eb1 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -17,10 +17,10 @@ sub_80C9B2C: @ 80C9B2C lsls r0, 24 cmp r0, 0 bne _080C9B6C - ldr r1, _080C9B5C @ =gUnknown_3005024 - ldr r0, _080C9B60 @ =hm_add_c3_launch_phase_2 + ldr r1, _080C9B5C @ =gFieldCallback2 + ldr r0, _080C9B60 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080C9B64 @ =gUnknown_203B0C4 + ldr r1, _080C9B64 @ =gPostMenuFieldCallback ldr r0, _080C9B68 @ =sub_80C9B74 str r0, [r1] movs r0, 0x1 @@ -28,9 +28,9 @@ sub_80C9B2C: @ 80C9B2C .align 2, 0 _080C9B54: .4byte gMapHeader _080C9B58: .4byte 0x00000806 -_080C9B5C: .4byte gUnknown_3005024 -_080C9B60: .4byte hm_add_c3_launch_phase_2 -_080C9B64: .4byte gUnknown_203B0C4 +_080C9B5C: .4byte gFieldCallback2 +_080C9B60: .4byte FieldCallback_PrepareFadeInFromMenu +_080C9B64: .4byte gPostMenuFieldCallback _080C9B68: .4byte sub_80C9B74 _080C9B6C: movs r0, 0 diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s index 778f2c916..ace765f55 100644 --- a/asm/fldeff_strength.s +++ b/asm/fldeff_strength.s @@ -28,10 +28,10 @@ _080D080C: lsls r0, 24 lsrs r0, 24 strh r0, [r4] - ldr r1, _080D0830 @ =gUnknown_3005024 - ldr r0, _080D0834 @ =hm_add_c3_launch_phase_2 + ldr r1, _080D0830 @ =gFieldCallback2 + ldr r0, _080D0834 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080D0838 @ =gUnknown_203B0C4 + ldr r1, _080D0838 @ =gPostMenuFieldCallback ldr r0, _080D083C @ =sub_80D0840 str r0, [r1] movs r0, 0x1 @@ -41,9 +41,9 @@ _080D0826: bx r1 .align 2, 0 _080D082C: .4byte gSpecialVar_Result -_080D0830: .4byte gUnknown_3005024 -_080D0834: .4byte hm_add_c3_launch_phase_2 -_080D0838: .4byte gUnknown_203B0C4 +_080D0830: .4byte gFieldCallback2 +_080D0834: .4byte FieldCallback_PrepareFadeInFromMenu +_080D0838: .4byte gPostMenuFieldCallback _080D083C: .4byte sub_80D0840 thumb_func_end sub_80D07EC diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s index 47b9ef390..aead537d4 100644 --- a/asm/fldeff_sweetscent.s +++ b/asm/fldeff_sweetscent.s @@ -20,18 +20,18 @@ _080DE0C4: .4byte gUnknown_203B0A0 thumb_func_start sub_80DE0C8 sub_80DE0C8: @ 80DE0C8 - ldr r1, _080DE0D8 @ =gUnknown_3005024 - ldr r0, _080DE0DC @ =hm_add_c3_launch_phase_2 + ldr r1, _080DE0D8 @ =gFieldCallback2 + ldr r0, _080DE0DC @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080DE0E0 @ =gUnknown_203B0C4 + ldr r1, _080DE0E0 @ =gPostMenuFieldCallback ldr r0, _080DE0E4 @ =hm2_sweet_scent str r0, [r1] movs r0, 0x1 bx lr .align 2, 0 -_080DE0D8: .4byte gUnknown_3005024 -_080DE0DC: .4byte hm_add_c3_launch_phase_2 -_080DE0E0: .4byte gUnknown_203B0C4 +_080DE0D8: .4byte gFieldCallback2 +_080DE0DC: .4byte FieldCallback_PrepareFadeInFromMenu +_080DE0E0: .4byte gPostMenuFieldCallback _080DE0E4: .4byte hm2_sweet_scent thumb_func_end sub_80DE0C8 diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s deleted file mode 100644 index 698ad4c23..000000000 --- a/asm/fldeff_teleport.s +++ /dev/null @@ -1,92 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start SetUpFieldMove_Teleport -SetUpFieldMove_Teleport: @ 80F66F0 - push {lr} - ldr r0, _080F6708 @ =gMapHeader - ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_or_6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F670C - movs r0, 0 - b _080F671A - .align 2, 0 -_080F6708: .4byte gMapHeader -_080F670C: - ldr r1, _080F6720 @ =gUnknown_3005024 - ldr r0, _080F6724 @ =hm_add_c3_launch_phase_2 - str r0, [r1] - ldr r1, _080F6728 @ =gUnknown_203B0C4 - ldr r0, _080F672C @ =hm_teleport_run_dp02scr - str r0, [r1] - movs r0, 0x1 -_080F671A: - pop {r1} - bx r1 - .align 2, 0 -_080F6720: .4byte gUnknown_3005024 -_080F6724: .4byte hm_add_c3_launch_phase_2 -_080F6728: .4byte gUnknown_203B0C4 -_080F672C: .4byte hm_teleport_run_dp02scr - thumb_func_end SetUpFieldMove_Teleport - - thumb_func_start hm_teleport_run_dp02scr -hm_teleport_run_dp02scr: @ 80F6730 - push {lr} - bl sub_8054D08 - movs r0, 0x3F - bl FieldEffectStart - bl GetCursorSelectionMonId - ldr r1, _080F674C @ =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080F674C: .4byte gFieldEffectArguments - thumb_func_end hm_teleport_run_dp02scr - - thumb_func_start FldEff_UseTeleport -FldEff_UseTeleport: @ 80F6750 - push {lr} - bl oei_task_add - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F6778 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, _080F677C @ =sub_80F6780 - lsrs r0, r2, 16 - strh r0, [r1, 0x18] - strh r2, [r1, 0x1A] - movs r0, 0x1 - bl SetPlayerAvatarTransitionFlags - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080F6778: .4byte gTasks -_080F677C: .4byte sub_80F6780 - thumb_func_end FldEff_UseTeleport - - thumb_func_start sub_80F6780 -sub_80F6780: @ 80F6780 - push {lr} - movs r0, 0x3F - bl FieldEffectActiveListRemove - bl sub_8085B64 - pop {r0} - bx r0 - thumb_func_end sub_80F6780 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_use.s b/asm/item_use.s index 79dcb290a..b05f5be82 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -246,12 +246,12 @@ _080A117E: thumb_func_start sub_80A1184 sub_80A1184: @ 80A1184 - ldr r1, _080A118C @ =gUnknown_3005024 + ldr r1, _080A118C @ =gFieldCallback2 ldr r0, _080A1190 @ =sub_80A1194 str r0, [r1] bx lr .align 2, 0 -_080A118C: .4byte gUnknown_3005024 +_080A118C: .4byte gFieldCallback2 _080A1190: .4byte sub_80A1194 thumb_func_end sub_80A1184 diff --git a/asm/overworld.s b/asm/overworld.s index e44855b46..b7de72a1e 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -154,8 +154,8 @@ _08054D00: .4byte 0x00000808 _08054D04: .4byte 0x0000404d thumb_func_end sub_8054CA0 - thumb_func_start sub_8054D08 -sub_8054D08: @ 8054D08 + thumb_func_start Overworld_ResetStateAfterTeleport +Overworld_ResetStateAfterTeleport: @ 8054D08 push {lr} bl ResetInitialPlayerAvatarState movs r0, 0x83 @@ -191,7 +191,7 @@ _08054D60: .4byte 0x00000805 _08054D64: .4byte 0x00000806 _08054D68: .4byte 0x00000808 _08054D6C: .4byte 0x0000404d - thumb_func_end sub_8054D08 + thumb_func_end Overworld_ResetStateAfterTeleport thumb_func_start sub_8054D70 sub_8054D70: @ 8054D70 @@ -2958,8 +2958,8 @@ _080561F8: bx r1 thumb_func_end is_light_level_1_2_3_5_or_6 - thumb_func_start is_light_level_1_2_3_or_6 -is_light_level_1_2_3_or_6: @ 80561FC + thumb_func_start Overworld_MapTypeAllowsTeleportAndFly +Overworld_MapTypeAllowsTeleportAndFly: @ 80561FC push {lr} lsls r0, 24 lsrs r0, 24 @@ -2979,7 +2979,7 @@ _08056216: _08056218: pop {r1} bx r1 - thumb_func_end is_light_level_1_2_3_or_6 + thumb_func_end Overworld_MapTypeAllowsTeleportAndFly thumb_func_start is_light_level_8_or_9 is_light_level_8_or_9: @ 805621C @@ -3442,7 +3442,7 @@ _080565E8: .4byte gMain thumb_func_start map_post_load_hook_exec map_post_load_hook_exec: @ 80565EC push {r4,lr} - ldr r4, _08056604 @ =gUnknown_3005024 + ldr r4, _08056604 @ =gFieldCallback2 ldr r0, [r4] cmp r0, 0 beq _08056618 @@ -3453,7 +3453,7 @@ map_post_load_hook_exec: @ 80565EC movs r0, 0 b _08056638 .align 2, 0 -_08056604: .4byte gUnknown_3005024 +_08056604: .4byte gFieldCallback2 _08056608: movs r1, 0 str r1, [r4] @@ -3501,7 +3501,7 @@ CB2_NewGame: @ 8056644 ldr r1, _0805668C @ =gUnknown_3005020 ldr r0, _08056690 @ =sub_807DF7C str r0, [r1] - ldr r1, _08056694 @ =gUnknown_3005024 + ldr r1, _08056694 @ =gFieldCallback2 movs r0, 0 str r0, [r1] ldr r0, _08056698 @ =gMain + 0x438 @@ -3516,7 +3516,7 @@ CB2_NewGame: @ 8056644 .align 2, 0 _0805668C: .4byte gUnknown_3005020 _08056690: .4byte sub_807DF7C -_08056694: .4byte gUnknown_3005024 +_08056694: .4byte gFieldCallback2 _08056698: .4byte gMain + 0x438 _0805669C: .4byte sub_8056534 _080566A0: .4byte sub_80565B4 @@ -3758,14 +3758,14 @@ _080568A4: .4byte sub_807DDD0 sub_80568A8: @ 80568A8 push {lr} bl sub_80569BC - ldr r1, _080568BC @ =gUnknown_3005024 + ldr r1, _080568BC @ =gFieldCallback2 ldr r0, _080568C0 @ =sub_807E3BC str r0, [r1] bl c2_exit_to_overworld_2_switch pop {r0} bx r0 .align 2, 0 -_080568BC: .4byte gUnknown_3005024 +_080568BC: .4byte gFieldCallback2 _080568C0: .4byte sub_807E3BC thumb_func_end sub_80568A8 @@ -3847,7 +3847,7 @@ sub_8056938: @ 8056938 bl PlayTimeCounter_Start bl ScriptContext1_Init bl ScriptContext2_Disable - ldr r1, _08056990 @ =gUnknown_3005024 + ldr r1, _08056990 @ =gFieldCallback2 movs r0, 0 str r0, [r1] ldr r1, _08056994 @ =gUnknown_2031DE0 @@ -3863,7 +3863,7 @@ sub_8056938: @ 8056938 bl SetMainCallback2 b _080569AC .align 2, 0 -_08056990: .4byte gUnknown_3005024 +_08056990: .4byte gFieldCallback2 _08056994: .4byte gUnknown_2031DE0 _08056998: .4byte sub_805671C _0805699C: @@ -5314,7 +5314,7 @@ _08057560: bl ScriptContext2_Disable movs r0, 0 bl sub_80565E0 - ldr r1, _08057614 @ =gUnknown_3005024 + ldr r1, _08057614 @ =gFieldCallback2 ldr r0, _08057618 @ =sub_80574EC str r0, [r1] ldr r0, _0805761C @ =gMain @@ -5334,7 +5334,7 @@ _08057604: .4byte 0x0000ffff _08057608: .4byte gUnknown_2031DBC _0805760C: .4byte gUnknown_2031DE8 _08057610: .4byte gPaletteFade -_08057614: .4byte gUnknown_3005024 +_08057614: .4byte gFieldCallback2 _08057618: .4byte sub_80574EC _0805761C: .4byte gMain _08057620: diff --git a/asm/party_menu.s b/asm/party_menu.s index d716165ac..b512bd751 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -11943,10 +11943,10 @@ _0812488C: movs r0, 0x5 bl PlaySE _08124892: - ldr r0, _081248A8 @ =gUnknown_3005024 + ldr r0, _081248A8 @ =gFieldCallback2 movs r1, 0 str r1, [r0] - ldr r0, _081248AC @ =gUnknown_203B0C4 + ldr r0, _081248AC @ =gPostMenuFieldCallback str r1, [r0] adds r0, r4, 0 bl sub_81203B8 @@ -11955,12 +11955,12 @@ _081248A2: pop {r0} bx r0 .align 2, 0 -_081248A8: .4byte gUnknown_3005024 -_081248AC: .4byte gUnknown_203B0C4 +_081248A8: .4byte gFieldCallback2 +_081248AC: .4byte gPostMenuFieldCallback thumb_func_end sub_8124828 - thumb_func_start hm_add_c3_launch_phase_2 -hm_add_c3_launch_phase_2: @ 81248B0 + thumb_func_start FieldCallback_PrepareFadeInFromMenu +FieldCallback_PrepareFadeInFromMenu: @ 81248B0 push {lr} bl sub_807DC00 ldr r0, _081248C4 @ =task_launch_hm_phase_2 @@ -11971,7 +11971,7 @@ hm_add_c3_launch_phase_2: @ 81248B0 bx r1 .align 2, 0 _081248C4: .4byte task_launch_hm_phase_2 - thumb_func_end hm_add_c3_launch_phase_2 + thumb_func_end FieldCallback_PrepareFadeInFromMenu thumb_func_start task_launch_hm_phase_2 task_launch_hm_phase_2: @ 81248C8 @@ -11988,7 +11988,7 @@ task_launch_hm_phase_2: @ 81248C8 lsls r0, 16 lsrs r0, 16 str r0, [r1] - ldr r0, _08124900 @ =gUnknown_203B0C4 + ldr r0, _08124900 @ =gPostMenuFieldCallback ldr r0, [r0] bl _call_via_r0 adds r0, r4, 0 @@ -11999,7 +11999,7 @@ _081248F4: bx r0 .align 2, 0 _081248FC: .4byte gFieldEffectArguments -_08124900: .4byte gUnknown_203B0C4 +_08124900: .4byte gPostMenuFieldCallback thumb_func_end task_launch_hm_phase_2 thumb_func_start brm_get_selected_species @@ -12118,18 +12118,18 @@ sub_8124998: @ 8124998 lsrs r0, 24 cmp r0, 0x1 bne _08124A00 - ldr r1, _081249F0 @ =gUnknown_3005024 - ldr r0, _081249F4 @ =hm_add_c3_launch_phase_2 + ldr r1, _081249F0 @ =gFieldCallback2 + ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _081249F8 @ =gUnknown_203B0C4 + ldr r1, _081249F8 @ =gPostMenuFieldCallback ldr r0, _081249FC @ =hm_surf_run_dp02scr str r0, [r1] movs r0, 0x1 b _08124A02 .align 2, 0 -_081249F0: .4byte gUnknown_3005024 -_081249F4: .4byte hm_add_c3_launch_phase_2 -_081249F8: .4byte gUnknown_203B0C4 +_081249F0: .4byte gFieldCallback2 +_081249F4: .4byte FieldCallback_PrepareFadeInFromMenu +_081249F8: .4byte gPostMenuFieldCallback _081249FC: .4byte hm_surf_run_dp02scr _08124A00: movs r0, 0 @@ -12207,7 +12207,7 @@ sub_8124A8C: @ 8124A8C push {lr} ldr r0, _08124AA4 @ =gMapHeader ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_or_6 + bl Overworld_MapTypeAllowsTeleportAndFly lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -12289,18 +12289,18 @@ hm_prepare_waterfall: @ 8124AF8 lsrs r0, 24 cmp r0, 0x1 bne _08124B54 - ldr r1, _08124B44 @ =gUnknown_3005024 - ldr r0, _08124B48 @ =hm_add_c3_launch_phase_2 + ldr r1, _08124B44 @ =gFieldCallback2 + ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _08124B4C @ =gUnknown_203B0C4 + ldr r1, _08124B4C @ =gPostMenuFieldCallback ldr r0, _08124B50 @ =hm2_waterfall str r0, [r1] movs r0, 0x1 b _08124B56 .align 2, 0 -_08124B44: .4byte gUnknown_3005024 -_08124B48: .4byte hm_add_c3_launch_phase_2 -_08124B4C: .4byte gUnknown_203B0C4 +_08124B44: .4byte gFieldCallback2 +_08124B48: .4byte FieldCallback_PrepareFadeInFromMenu +_08124B4C: .4byte gPostMenuFieldCallback _08124B50: .4byte hm2_waterfall _08124B54: movs r0, 0 @@ -19301,7 +19301,7 @@ _0812836C: .4byte gUnknown_2022B58 sub_8128370: @ 8128370 push {lr} sub sp, 0xC - ldr r1, _08128398 @ =gUnknown_3005024 + ldr r1, _08128398 @ =gFieldCallback2 ldr r0, _0812839C @ =hm_add_c3_without_phase_2 str r0, [r1] movs r0, 0xF @@ -19319,7 +19319,7 @@ sub_8128370: @ 8128370 pop {r0} bx r0 .align 2, 0 -_08128398: .4byte gUnknown_3005024 +_08128398: .4byte gFieldCallback2 _0812839C: .4byte hm_add_c3_without_phase_2 _081283A0: .4byte sub_811FB28 _081283A4: .4byte c2_exit_to_overworld_2_switch @@ -19331,7 +19331,7 @@ sub_81283A8: @ 81283A8 sub sp, 0xC lsls r0, 24 lsrs r0, 24 - ldr r2, _081283D4 @ =gUnknown_3005024 + ldr r2, _081283D4 @ =gFieldCallback2 ldr r1, _081283D8 @ =hm_add_c3_without_phase_2 str r1, [r2] movs r1, 0 @@ -19348,7 +19348,7 @@ sub_81283A8: @ 81283A8 pop {r0} bx r0 .align 2, 0 -_081283D4: .4byte gUnknown_3005024 +_081283D4: .4byte gFieldCallback2 _081283D8: .4byte hm_add_c3_without_phase_2 _081283DC: .4byte sub_811FB28 _081283E0: .4byte c2_exit_to_overworld_2_switch diff --git a/asm/rom6.s b/asm/rom6.s index 06c2d30a2..2ac2cc0a4 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -291,10 +291,10 @@ SetUpFieldMove_RockSmash: @ 80C99D8 movs r0, 0 b _080C99FA _080C99EC: - ldr r1, _080C9A00 @ =gUnknown_3005024 - ldr r0, _080C9A04 @ =hm_add_c3_launch_phase_2 + ldr r1, _080C9A00 @ =gFieldCallback2 + ldr r0, _080C9A04 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080C9A08 @ =gUnknown_203B0C4 + ldr r1, _080C9A08 @ =gPostMenuFieldCallback ldr r0, _080C9A0C @ =sub_80C9A10 str r0, [r1] movs r0, 0x1 @@ -302,9 +302,9 @@ _080C99FA: pop {r1} bx r1 .align 2, 0 -_080C9A00: .4byte gUnknown_3005024 -_080C9A04: .4byte hm_add_c3_launch_phase_2 -_080C9A08: .4byte gUnknown_203B0C4 +_080C9A00: .4byte gFieldCallback2 +_080C9A04: .4byte FieldCallback_PrepareFadeInFromMenu +_080C9A08: .4byte gPostMenuFieldCallback _080C9A0C: .4byte sub_80C9A10 thumb_func_end SetUpFieldMove_RockSmash @@ -373,10 +373,10 @@ SetUpFieldMove_Dig: @ 80C9A78 movs r0, 0 b _080C9A98 _080C9A8A: - ldr r1, _080C9A9C @ =gUnknown_3005024 - ldr r0, _080C9AA0 @ =hm_add_c3_launch_phase_2 + ldr r1, _080C9A9C @ =gFieldCallback2 + ldr r0, _080C9AA0 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080C9AA4 @ =gUnknown_203B0C4 + ldr r1, _080C9AA4 @ =gPostMenuFieldCallback ldr r0, _080C9AA8 @ =hm2_dig str r0, [r1] movs r0, 0x1 @@ -384,9 +384,9 @@ _080C9A98: pop {r1} bx r1 .align 2, 0 -_080C9A9C: .4byte gUnknown_3005024 -_080C9AA0: .4byte hm_add_c3_launch_phase_2 -_080C9AA4: .4byte gUnknown_203B0C4 +_080C9A9C: .4byte gFieldCallback2 +_080C9AA0: .4byte FieldCallback_PrepareFadeInFromMenu +_080C9AA4: .4byte gPostMenuFieldCallback _080C9AA8: .4byte hm2_dig thumb_func_end SetUpFieldMove_Dig diff --git a/asm/start_menu.s b/asm/start_menu.s index 65a1e4402..124f64792 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -568,13 +568,13 @@ sub_806F1D4: @ 806F1D4 movs r0, 0 strb r0, [r1] strb r0, [r1, 0x1] - ldr r1, _0806F1E8 @ =gUnknown_3005024 + ldr r1, _0806F1E8 @ =gFieldCallback2 ldr r0, _0806F1EC @ =sub_806F1B8 str r0, [r1] bx lr .align 2, 0 _0806F1E4: .4byte gUnknown_20370FF -_0806F1E8: .4byte gUnknown_3005024 +_0806F1E8: .4byte gFieldCallback2 _0806F1EC: .4byte sub_806F1B8 thumb_func_end sub_806F1D4 diff --git a/include/field_effect.h b/include/field_effect.h index bb5e0f1d5..979037a8e 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -74,9 +74,13 @@ enum FieldEffectScriptIdx }; extern u32 gFieldEffectArguments[8]; +extern void (*gPostMenuFieldCallback)(void); +extern bool8 (*gFieldCallback2)(void); u8 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); void sub_80B69DC(void); +void CreateTeleportFieldEffectTask(void); +void FieldEffectActiveListRemove(u8 id); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index bb78bd0f3..b365a9d92 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -21,5 +21,6 @@ void SetPlayerAvatarStateMask(u8 mask); void sub_805D9C4(struct Sprite *sprite); void sub_805D154(u8 direction); void sub_805DAE4(u8 direction); +void SetPlayerAvatarTransitionFlags(u16 a); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/fldeff.h b/include/fldeff.h new file mode 100644 index 000000000..70bd25313 --- /dev/null +++ b/include/fldeff.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FLDEFF_H +#define GUARD_FLDEFF_H + +// rock smash +u8 oei_task_add(void); + +#endif // GUARD_FLDEFF_H
\ No newline at end of file diff --git a/include/overworld.h b/include/overworld.h index 8c32d3e06..234fb7c01 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -96,9 +96,11 @@ void sub_80563F0(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; -extern bool8 (* gUnknown_3005024)(void); +extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); void sub_8055864(u8 mapGroup, u8 mapNum); void CB2_NewGame(void); +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); +void Overworld_ResetStateAfterTeleport(void); #endif //GUARD_ROM4_H diff --git a/include/party_menu.h b/include/party_menu.h index 5f7a3a68e..09b160954 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -1,7 +1,8 @@ #ifndef GUARD_PARTY_MENU_H #define GUARD_PARTY_MENU_H -#include "global.h" +#include "main.h" +#include "task.h" enum { AILMENT_NONE, @@ -14,6 +15,7 @@ enum { extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); +bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 MonKnowsMove(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); @@ -23,5 +25,6 @@ void sub_8125B40(u8 taskId, TaskFunc func); void sub_8124C8C(void); void sub_8126EDC(void); void c2_8123744(void); +u8 GetCursorSelectionMonId(void); #endif // GUARD_PARTY_MENU_H diff --git a/ld_script.txt b/ld_script.txt index bd94c2055..2ee7869b6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -201,7 +201,7 @@ SECTIONS { asm/save_failed_screen.o(.text); asm/clear_save_data_screen.o(.text); asm/evolution_graphics.o(.text); - asm/fldeff_teleport.o(.text); + src/fldeff_teleport.o(.text); asm/new_menu_helpers.o(.text); asm/box_party_pokemon_dropdown.o(.text); asm/save_menu_util.o(.text); diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c new file mode 100644 index 000000000..35515e9cb --- /dev/null +++ b/src/fldeff_teleport.c @@ -0,0 +1,42 @@ +#include "global.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "fldeff.h" +#include "party_menu.h" +#include "overworld.h" + +static void FieldCallback_Teleport(void); +static void StartTeleportFieldEffect(void); + +bool8 SetUpFieldMove_Teleport(void) +{ + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) + { + gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gPostMenuFieldCallback = FieldCallback_Teleport; + return TRUE; + } + return FALSE; +} + +static void FieldCallback_Teleport(void) +{ + Overworld_ResetStateAfterTeleport(); + FieldEffectStart(FLDEFF_USE_TELEPORT); + gFieldEffectArguments[0] = (u32)GetCursorSelectionMonId(); +} + +bool8 FldEff_UseTeleport(void) +{ + u8 taskId = oei_task_add(); + gTasks[taskId].data[8] = (u32)StartTeleportFieldEffect >> 16; + gTasks[taskId].data[9] = (u32)StartTeleportFieldEffect; + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); + return FALSE; +} + +static void StartTeleportFieldEffect(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT); + CreateTeleportFieldEffectTask(); +}
\ No newline at end of file diff --git a/src/quest_log.c b/src/quest_log.c index a01cbde2d..340bef957 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -990,14 +990,14 @@ void sub_8111368(void) if (sub_8110AC8() == 1) { sub_8111274(gUnknown_203ADF8, 0); - gUnknown_3005024 = sub_8111038; + gFieldCallback2 = sub_8111038; SetMainCallback2(sub_80572A8); } else { sub_8111274(gUnknown_203ADF8, 1); warp_in(); - gUnknown_3005024 = sub_8111000; + gFieldCallback2 = sub_8111000; SetMainCallback2(sub_805726C); } } @@ -1237,7 +1237,7 @@ void sub_8111984(void) Save_ResetSaveCounters(); Save_LoadGameData(0); SetMainCallback2(sub_8057430); - gUnknown_3005024 = sub_8111F60; + gFieldCallback2 = sub_8111F60; FreeAllWindowBuffers(); gUnknown_203ADFA = 3; gUnknown_203AE8C = NULL; diff --git a/sym_common.txt b/sym_common.txt index 4adfe3bac..1e4d50314 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -148,7 +148,7 @@ gUnknown_300501C: @ 300501C gUnknown_3005020: @ 3005020 .space 0x4 -gUnknown_3005024: @ 3005024 +gFieldCallback2: @ 3005024 .space 0x4 gUnknown_3005028: @ 3005028 diff --git a/sym_ewram.txt b/sym_ewram.txt index 5a9795eb1..56b7300e1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1467,7 +1467,7 @@ gUnknown_203B0C0: @ 203B0C0 gUnknown_203B0C1: @ 203B0C1 .space 0x3 -gUnknown_203B0C4: @ 203B0C4 +gPostMenuFieldCallback: @ 203B0C4 .space 0x4 gUnknown_203B0C8: @ 203B0C8 |