diff options
-rw-r--r-- | ewram_syms.txt | 4 | ||||
-rw-r--r-- | include/field_message_box.h | 12 | ||||
-rw-r--r-- | iwram_syms.txt | 2 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/field_message_box.c | 77 |
5 files changed, 56 insertions, 43 deletions
diff --git a/ewram_syms.txt b/ewram_syms.txt index bf91d795a..2c029956f 100644 --- a/ewram_syms.txt +++ b/ewram_syms.txt @@ -39,7 +39,7 @@ gMapHeader = 0x202E828; gPlayerAvatar = 0x202E858; -unk_202E87C = 0x202E87C; +gFieldMessageBoxWindow = 0x202E87C; gUnknown_0202E8AC = 0x202E8AC; gUnknown_0202E8B0 = 0x202E8B0; @@ -56,7 +56,7 @@ gScriptResult = 0x202E8DC; gUnknown_0202E8E0 = 0x202E8E0; gMenuWindow = 0x202E908; -word_202E9D2 = 0x202E9D2; +gFieldMessageBoxBaseTileNum = 0x202E9D2; gMenuWindowPtr = 0x202E9C8; gMenuMultistepInitState = 0x202E9CC; gMenuTextTileOffset = 0x202E9CE; diff --git a/include/field_message_box.h b/include/field_message_box.h new file mode 100644 index 000000000..9d5e3a037 --- /dev/null +++ b/include/field_message_box.h @@ -0,0 +1,12 @@ +#ifndef GUARD_FIELD_MESSAGE_BOX_H +#define GUARD_FIELD_MESSAGE_BOX_H + +enum +{ + FIELD_MESSAGE_BOX_HIDDEN, + FIELD_MESSAGE_BOX_UNUSED, + FIELD_MESSAGE_BOX_NORMAL, + FIELD_MESSAGE_BOX_AUTO_SCROLL, +}; + +#endif // GUARD_FIELD_MESSAGE_BOX_H diff --git a/iwram_syms.txt b/iwram_syms.txt index 6cc38d974..6cb0e63b9 100644 --- a/iwram_syms.txt +++ b/iwram_syms.txt @@ -2,8 +2,6 @@ gPlayTimeCounterState = 0x300057C; -byte_30005A8 = 0x30005A8; - sScriptContext1Status = 0x30005B0; sScriptContext1 = 0x30005B8; sScriptContext2 = 0x3000630; diff --git a/ld_script.txt b/ld_script.txt index c7c1c9e4d..904d0172f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -33,7 +33,9 @@ SECTIONS { src/link.o(.bss); src/rtc.o(.bss); - . = 0x5AC; + . = 0x5A8; + src/field_message_box.o(.bss); + . = ALIGN(4); src/text_window.o(.bss); . = 0x6B0; diff --git a/src/field_message_box.c b/src/field_message_box.c index 34670f956..9873f3cd1 100644 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -3,22 +3,23 @@ #include "text_window.h" #include "task.h" #include "string_util.h" +#include "field_message_box.h" -extern struct Window unk_202E87C; -extern u16 word_202E9D2; +extern struct Window gFieldMessageBoxWindow; +extern u16 gFieldMessageBoxBaseTileNum; extern u16 gMenuTextTileOffset; -extern u8 byte_30005A8; +static u8 sMessageBoxMode; void textbox_fdecode_auto_and_task_add(u8 *); void textbox_auto_and_task_add(void); void sub_8064A74(void) { - byte_30005A8 = 0; - SetMessageBoxBaseTileNum(word_202E9D2); - InitWindowFromConfig(&unk_202E87C, (struct WindowConfig *)&gWindowConfig_81E6CE4); + sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; + SetMessageBoxBaseTileNum(gFieldMessageBoxBaseTileNum); + InitWindowFromConfig(&gFieldMessageBoxWindow, (struct WindowConfig *)&gWindowConfig_81E6CE4); } void sub_8064AA0(u8 taskId) @@ -27,26 +28,26 @@ void sub_8064AA0(u8 taskId) switch (task->data[0]) { case 0: - LoadMessageBoxTiles(&unk_202E87C); + LoadMessageBoxTiles(&gFieldMessageBoxWindow); task->data[0]++; break; case 1: - DrawStandardMessageBox(&unk_202E87C); + DrawStandardMessageBox(&gFieldMessageBoxWindow); task->data[0]++; break; case 2: - switch (byte_30005A8) + switch (sMessageBoxMode) { - case 2: - if (!sub_80035AC(&unk_202E87C)) + case FIELD_MESSAGE_BOX_NORMAL: + if (!sub_80035AC(&gFieldMessageBoxWindow)) return; break; - case 3: - if (!sub_8003778(&unk_202E87C)) + case FIELD_MESSAGE_BOX_AUTO_SCROLL: + if (!sub_8003778(&gFieldMessageBoxWindow)) return; break; } - byte_30005A8 = 0; + sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; DestroyTask(taskId); } } @@ -63,83 +64,83 @@ void task_del_textbox() DestroyTask(taskId); } -bool8 box_related_two__2(u8 *a1) +bool8 box_related_two__2(u8 *message) { - if (byte_30005A8) + if (sMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) { return FALSE; } else { - textbox_fdecode_auto_and_task_add(a1); - byte_30005A8 = 2; + textbox_fdecode_auto_and_task_add(message); + sMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL; return TRUE; } } -bool8 box_related_two__3(u8 *a1) +bool8 box_related_two__3(u8 *message) { - if (byte_30005A8) + if (sMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) { return FALSE; } else { - byte_30005A8 = 3; - textbox_fdecode_auto_and_task_add(a1); + sMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL; + textbox_fdecode_auto_and_task_add(message); return TRUE; } } -bool8 unref_sub_8064BB8(u8 *a1) +bool8 unref_sub_8064BB8(u8 *message) { - byte_30005A8 = 3; - textbox_fdecode_auto_and_task_add(a1); + sMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL; + textbox_fdecode_auto_and_task_add(message); return TRUE; } -bool8 unref_sub_8064BD0(u8 *a1) +bool8 unref_sub_8064BD0(u8 *message) { - if (byte_30005A8) + if (sMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) { return FALSE; } else { - byte_30005A8 = 2; + sMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL; textbox_auto_and_task_add(); return TRUE; } } -void textbox_fdecode_auto_and_task_add(u8 *a1) +void textbox_fdecode_auto_and_task_add(u8 *message) { - StringExpandPlaceholders(gStringVar4, a1); - sub_8002EB0(&unk_202E87C, gStringVar4, gMenuTextTileOffset, 2, 15); + StringExpandPlaceholders(gStringVar4, message); + sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); task_add_textbox(); } void textbox_auto_and_task_add(void) { - sub_8002EB0(&unk_202E87C, gStringVar4, gMenuTextTileOffset, 2, 15); + sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); task_add_textbox(); } void textbox_close() { task_del_textbox(); - sub_806536C(&unk_202E87C); - byte_30005A8 = 0; + sub_806536C(&gFieldMessageBoxWindow); + sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } u8 textbox_any_visible() { - return byte_30005A8; + return sMessageBoxMode; } bool8 sub_8064C84() { - if (byte_30005A8 == 0) + if (sMessageBoxMode == FIELD_MESSAGE_BOX_HIDDEN) return TRUE; else return FALSE; @@ -148,6 +149,6 @@ bool8 sub_8064C84() void unref_sub_8064CA0() { task_del_textbox(); - DrawStandardMessageBox(&unk_202E87C); - byte_30005A8 = 0; + DrawStandardMessageBox(&gFieldMessageBoxWindow); + sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } |