summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorultima-soul <akshayjhanji@hotmail.com>2019-04-17 14:09:54 -0700
committerultima-soul <akshayjhanji@hotmail.com>2019-04-17 14:09:54 -0700
commitd74dda011ad0fc50d3ffb1a98213308e114933cf (patch)
treea15d93cfa9e2029e0cd07722595ae77006302276
parentf4b867393892d435b09f796c98e57e10a1ba0717 (diff)
Port fldeff_teleport
-rw-r--r--asm/field_effect.s6
-rw-r--r--asm/fldeff_cut.s24
-rw-r--r--asm/fldeff_flash.s12
-rw-r--r--asm/fldeff_strength.s12
-rw-r--r--asm/fldeff_sweetscent.s12
-rw-r--r--asm/fldeff_teleport.s92
-rw-r--r--asm/item_use.s4
-rw-r--r--asm/overworld.s32
-rw-r--r--asm/party_menu.s52
-rw-r--r--asm/rom6.s24
-rw-r--r--asm/start_menu.s4
-rw-r--r--include/field_effect.h4
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/fldeff.h7
-rw-r--r--include/overworld.h4
-rw-r--r--include/party_menu.h5
-rw-r--r--ld_script.txt2
-rw-r--r--src/fldeff_teleport.c42
-rw-r--r--src/quest_log.c6
-rw-r--r--sym_common.txt2
-rw-r--r--sym_ewram.txt2
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