summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2017-01-14 18:03:33 -0800
committerYamaArashi <shadow962@live.com>2017-01-14 18:03:33 -0800
commit3f044a459b45d6e75abf4d99b736e5289a54a807 (patch)
tree7f814e3cf17226f2d937db6f6fd865b48a910dbe
parent9049b839ca3b5b65f4530226f56f35322a3bcae7 (diff)
decompile fldeff_teleport.h
-rw-r--r--asm/fldeff_teleport.s93
-rw-r--r--include/rom4.h4
-rw-r--r--ld_script.txt4
-rw-r--r--src/fldeff_teleport.c50
4 files changed, 54 insertions, 97 deletions
diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s
deleted file mode 100644
index 335aed789..000000000
--- a/asm/fldeff_teleport.s
+++ /dev/null
@@ -1,93 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpFieldMove_Teleport
-SetUpFieldMove_Teleport: @ 814A374
- push {lr}
- ldr r0, _0814A38C @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_1_2_3_or_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0814A390
- movs r0, 0
- b _0814A39E
- .align 2, 0
-_0814A38C: .4byte gMapHeader
-_0814A390:
- ldr r1, _0814A3A4 @ =gUnknown_0300485C
- ldr r0, _0814A3A8 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0814A3AC @ =gUnknown_03005CE4
- ldr r0, _0814A3B0 @ =hm_teleport_run_dp02scr
- str r0, [r1]
- movs r0, 0x1
-_0814A39E:
- pop {r1}
- bx r1
- .align 2, 0
-_0814A3A4: .4byte gUnknown_0300485C
-_0814A3A8: .4byte sub_808AB90
-_0814A3AC: .4byte gUnknown_03005CE4
-_0814A3B0: .4byte hm_teleport_run_dp02scr
- thumb_func_end SetUpFieldMove_Teleport
-
- thumb_func_start hm_teleport_run_dp02scr
-hm_teleport_run_dp02scr: @ 814A3B4
- push {lr}
- bl new_game
- movs r0, 0x3F
- bl FieldEffectStart
- ldr r0, _0814A3CC @ =gUnknown_0202FF84
- ldr r1, _0814A3D0 @ =gUnknown_03005CE0
- ldrb r1, [r1]
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0814A3CC: .4byte gUnknown_0202FF84
-_0814A3D0: .4byte gUnknown_03005CE0
- thumb_func_end hm_teleport_run_dp02scr
-
- thumb_func_start FldEff_UseTeleport
-FldEff_UseTeleport: @ 814A3D4
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814A3FC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _0814A400 @ =sub_814A404
- 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
-_0814A3FC: .4byte gTasks
-_0814A400: .4byte sub_814A404
- thumb_func_end FldEff_UseTeleport
-
- thumb_func_start sub_814A404
-sub_814A404: @ 814A404
- push {lr}
- movs r0, 0x3F
- bl FieldEffectActiveListRemove
- bl sub_8087BA8
- pop {r0}
- bx r0
- thumb_func_end sub_814A404
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/rom4.h b/include/rom4.h
index 215c7ff17..82d6e4f38 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -19,7 +19,7 @@ struct LinkPlayerMapObject
// sub_8052F5C
// flag_var_implications_of_teleport_
-// new_game
+void new_game(void);
// sub_8053014
void sub_8053050(void);
// sub_805308C
@@ -102,7 +102,7 @@ u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
u8 sav1_map_get_light_level(void);
// get_map_light_from_warp0
bool8 is_light_level_1_2_3_5_or_6(u8 a1);
-// is_light_level_1_2_3_or_6
+bool8 is_light_level_1_2_3_or_6(u8 a1);
u8 is_light_level_8_or_9(u8);
// unref_sub_8054260
u8 sav1_map_get_name();
diff --git a/ld_script.txt b/ld_script.txt
index 50630c9fb..d11d25d15 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -61,7 +61,7 @@ SECTIONS {
src/rng.o(.text);
asm/util.o(.text);
src/blend_palette.o(.text);
- src/daycare.o(.text);
+ src/daycare.o(.text);
asm/daycare.o(.text);
asm/egg_hatch.o(.text);
asm/rom_804373C.o(.text);
@@ -241,7 +241,7 @@ SECTIONS {
asm/intro_credits_graphics.o(.text);
asm/evolution_graphics.o(.text);
src/bard_music.o(.text);
- asm/fldeff_teleport.o(.text);
+ src/fldeff_teleport.o(.text);
asm/unknown_debug_menu.o(.text);
src/name_string_util.o(.text);
src/menu_cursor.o(.text);
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
new file mode 100644
index 000000000..906832766
--- /dev/null
+++ b/src/fldeff_teleport.c
@@ -0,0 +1,50 @@
+#include "global.h"
+#include "field_effect.h"
+#include "rom4.h"
+#include "asm.h"
+#include "field_player_avatar.h"
+
+extern void sub_8087BA8(void);
+
+extern u32 gUnknown_0202FF84;
+
+extern void (*gUnknown_0300485C)(void);
+extern u8 gUnknown_03005CE0;
+extern void (*gUnknown_03005CE4)(void);
+
+void hm_teleport_run_dp02scr(void);
+void sub_814A404(void);
+
+bool8 SetUpFieldMove_Teleport(void)
+{
+ if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE)
+ {
+ gUnknown_0300485C = sub_808AB90;
+ gUnknown_03005CE4 = hm_teleport_run_dp02scr;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void hm_teleport_run_dp02scr(void)
+{
+ new_game();
+ FieldEffectStart(63);
+ gUnknown_0202FF84 = gUnknown_03005CE0;
+}
+
+bool8 FldEff_UseTeleport(void)
+{
+ u8 taskId = oei_task_add();
+ gTasks[taskId].data[8] = (u32)sub_814A404 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_814A404;
+ SetPlayerAvatarTransitionFlags(1);
+ return 0;
+}
+
+void sub_814A404(void)
+{
+ FieldEffectActiveListRemove(63);
+ sub_8087BA8();
+}