diff options
author | YamaArashi <shadow962@live.com> | 2017-01-14 18:03:33 -0800 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2017-01-14 18:03:33 -0800 |
commit | 3f044a459b45d6e75abf4d99b736e5289a54a807 (patch) | |
tree | 7f814e3cf17226f2d937db6f6fd865b48a910dbe | |
parent | 9049b839ca3b5b65f4530226f56f35322a3bcae7 (diff) |
decompile fldeff_teleport.h
-rw-r--r-- | asm/fldeff_teleport.s | 93 | ||||
-rw-r--r-- | include/rom4.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/fldeff_teleport.c | 50 |
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(); +} |