summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ewram_syms.txt4
-rw-r--r--include/field_message_box.h12
-rw-r--r--iwram_syms.txt2
-rw-r--r--ld_script.txt4
-rw-r--r--src/field_message_box.c77
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;
}