diff options
author | YamaArashi <shadow962@live.com> | 2017-01-14 18:30:15 -0800 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2017-01-14 18:40:05 -0800 |
commit | 370b2b3c3e355040982404dc4bf17e1b765ff5a0 (patch) | |
tree | 0f2a382837a11f97891534081528327b3cabe573 /src | |
parent | 3f044a459b45d6e75abf4d99b736e5289a54a807 (diff) |
decompile map_name_popup.c
Diffstat (limited to 'src')
-rw-r--r-- | src/map_name_popup.c | 106 | ||||
-rw-r--r-- | src/rom4.c | 8 |
2 files changed, 110 insertions, 4 deletions
diff --git a/src/map_name_popup.c b/src/map_name_popup.c new file mode 100644 index 000000000..65766c130 --- /dev/null +++ b/src/map_name_popup.c @@ -0,0 +1,106 @@ +#include "global.h" +#include "menu.h" +#include "event_data.h" +#include "task.h" +#include "asm.h" + +EWRAM_DATA static u8 sTaskId = 0; + +static void Task_MapNamePopup(u8); +static void DrawMapNamePopup(void); + +bool8 unref_sub_80A2F44(void) +{ + CloseMenu(); + ShowMapNamePopup(); + return 1; +} + +void ShowMapNamePopup(void) +{ + if (FlagGet(0x4000) != TRUE) + { + if (!FuncIsActiveTask(Task_MapNamePopup)) + { + sTaskId = CreateTask(Task_MapNamePopup, 90); + REG_BG0VOFS = 32; + DrawMapNamePopup(); + gTasks[sTaskId].data[0] = 0; + gTasks[sTaskId].data[2] = 32; + } + else + { + if (gTasks[sTaskId].data[0] != 2) + gTasks[sTaskId].data[0] = 2; + gTasks[sTaskId].data[3] = 1; + } + } +} + +void Task_MapNamePopup(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[2] -= 2; + if (task->data[2] <= 0 ) + { + task->data[0] = 1; + gTasks[sTaskId].data[1] = 0; + } + break; + case 1: + task->data[1]++; + if (task->data[1] > 120 ) + { + task->data[1] = 0; + task->data[0] = 2; + } + break; + case 2: + task->data[2] += 2; + if (task->data[2] > 31) + { + if (task->data[3]) + { + DrawMapNamePopup(); + task->data[0] = 0; + task->data[3] = 0; + } + else + { + task->data[0] = 4; + return; + } + } + break; + case 4: + HideMapNamePopup(); + return; + } + + REG_BG0VOFS = task->data[2]; +} + +void HideMapNamePopup(void) +{ + if (FuncIsActiveTask(Task_MapNamePopup)) + { + MenuLoadTextWindowGraphics(); + MenuZeroFillWindowRect(0, 0, 13, 3); + REG_BG0VOFS = 0; + DestroyTask(sTaskId); + } +} + +void DrawMapNamePopup(void) +{ + u8 name[20]; + + MenuLoadTextWindowGraphics_OverrideFrameType(0); + sub_80FBFB4(name, gMapHeader.name, 0); + MenuDrawTextWindow(0, 0, 13, 3); + sub_8072BD8(name, 1, 1, 0x60); +} diff --git a/src/rom4.c b/src/rom4.c index f711a5a0e..521f07a48 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -539,7 +539,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) DoCurrentWeather(); ResetFieldTasksArgs(); mapheader_run_script_with_tag_x5(); - AddMapNamePopUpWindowTask(); + ShowMapNamePopup(); } void sub_8053994(u32 a1) @@ -1029,7 +1029,7 @@ void c1_overworld_normal(u16 newKeys, u16 heldKeys) if (sub_8068024(&inputStruct) == 1) { ScriptContext2_Enable(); - HideMapNamePopUpWindow(); + HideMapNamePopup(); } else { @@ -1254,7 +1254,7 @@ void sub_80546F0(void) void sub_805470C(void) { if (gMapHeader.flags == 1 && sub_80BBB24() == 1) - AddMapNamePopUpWindowTask(); + ShowMapNamePopup(); sub_8080B60(); } @@ -1449,7 +1449,7 @@ bool32 sub_805493C(u8 *a1, u32 a2) break; case 11: if (gMapHeader.flags == 1 && sub_80BBB24() == 1) - AddMapNamePopUpWindowTask(); + ShowMapNamePopup(); (*a1)++; break; case 12: |