summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/item_menu.s2
-rw-r--r--asm/map_name_popup.s248
-rw-r--r--asm/secret_base.s2
-rw-r--r--include/asm.inc.h4
-rw-r--r--ld_script.txt2
-rw-r--r--src/map_name_popup.c106
-rw-r--r--src/rom4.c8
-rw-r--r--sym_ewram.txt4
8 files changed, 117 insertions, 259 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 4270b4954..b5ed56b69 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -7539,7 +7539,7 @@ _080A6D14:
thumb_func_start sub_80A6D1C
sub_80A6D1C: @ 80A6D1C
push {r4,r5,lr}
- bl HideMapNamePopUpWindow
+ bl HideMapNamePopup
ldr r0, _080A6D70 @ =gSaveBlock1
ldr r1, _080A6D74 @ =0x00000496
adds r4, r0, r1
diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s
deleted file mode 100644
index b488e5f73..000000000
--- a/asm/map_name_popup.s
+++ /dev/null
@@ -1,248 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_80A2F44
-unref_sub_80A2F44: @ 80A2F44
- push {lr}
- bl CloseMenu
- bl AddMapNamePopUpWindowTask
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end unref_sub_80A2F44
-
- thumb_func_start AddMapNamePopUpWindowTask
-AddMapNamePopUpWindowTask: @ 80A2F54
- push {r4,r5,lr}
- movs r0, 0x80
- lsls r0, 7
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A2FE4
- ldr r4, _080A2FAC @ =sub_80A2FF4
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080A2FBC
- adds r0, r4, 0
- movs r1, 0x5A
- bl CreateTask
- ldr r4, _080A2FB0 @ =gUnknown_02038538
- strb r0, [r4]
- ldr r1, _080A2FB4 @ =REG_BG0VOFS
- movs r0, 0x20
- strh r0, [r1]
- bl sub_80A30E0
- ldr r2, _080A2FB8 @ =gTasks
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- strh r5, [r0, 0x8]
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x20
- strh r1, [r0, 0xC]
- b _080A2FE4
- .align 2, 0
-_080A2FAC: .4byte sub_80A2FF4
-_080A2FB0: .4byte gUnknown_02038538
-_080A2FB4: .4byte REG_BG0VOFS
-_080A2FB8: .4byte gTasks
-_080A2FBC:
- ldr r3, _080A2FEC @ =gTasks
- ldr r2, _080A2FF0 @ =gUnknown_02038538
- ldrb r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- movs r4, 0x8
- ldrsh r0, [r1, r4]
- cmp r0, 0x2
- beq _080A2FD6
- movs r0, 0x2
- strh r0, [r1, 0x8]
-_080A2FD6:
- ldrb r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080A2FE4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2FEC: .4byte gTasks
-_080A2FF0: .4byte gUnknown_02038538
- thumb_func_end AddMapNamePopUpWindowTask
-
- thumb_func_start sub_80A2FF4
-sub_80A2FF4: @ 80A2FF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r3, _080A3018 @ =gTasks
- adds r4, r1, r3
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0x1
- beq _080A304C
- cmp r2, 0x1
- bgt _080A301C
- cmp r2, 0
- beq _080A3026
- b _080A3092
- .align 2, 0
-_080A3018: .4byte gTasks
-_080A301C:
- cmp r2, 0x2
- beq _080A3064
- cmp r2, 0x4
- beq _080A308C
- b _080A3092
-_080A3026:
- ldrh r0, [r4, 0xC]
- subs r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bgt _080A3092
- movs r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080A3048 @ =gUnknown_02038538
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- strh r2, [r0, 0xA]
- b _080A3092
- .align 2, 0
-_080A3048: .4byte gUnknown_02038538
-_080A304C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080A3092
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080A3092
-_080A3064:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- movs r5, 0
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- ble _080A3092
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A3086
- bl sub_80A30E0
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xE]
- b _080A3092
-_080A3086:
- movs r0, 0x4
- strh r0, [r4, 0x8]
- b _080A3098
-_080A308C:
- bl HideMapNamePopUpWindow
- b _080A3098
-_080A3092:
- ldr r1, _080A30A0 @ =REG_BG0VOFS
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
-_080A3098:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A30A0: .4byte REG_BG0VOFS
- thumb_func_end sub_80A2FF4
-
- thumb_func_start HideMapNamePopUpWindow
-HideMapNamePopUpWindow: @ 80A30A4
- push {lr}
- ldr r0, _080A30D4 @ =sub_80A2FF4
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _080A30D0
- bl MenuLoadTextWindowGraphics
- movs r0, 0
- movs r1, 0
- movs r2, 0xD
- movs r3, 0x3
- bl MenuZeroFillWindowRect
- ldr r1, _080A30D8 @ =REG_BG0VOFS
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080A30DC @ =gUnknown_02038538
- ldrb r0, [r0]
- bl DestroyTask
-_080A30D0:
- pop {r0}
- bx r0
- .align 2, 0
-_080A30D4: .4byte sub_80A2FF4
-_080A30D8: .4byte REG_BG0VOFS
-_080A30DC: .4byte gUnknown_02038538
- thumb_func_end HideMapNamePopUpWindow
-
- thumb_func_start sub_80A30E0
-sub_80A30E0: @ 80A30E0
- push {lr}
- sub sp, 0x14
- movs r0, 0
- bl MenuLoadTextWindowGraphics_OverrideFrameType
- ldr r0, _080A3114 @ =gMapHeader
- ldrb r1, [r0, 0x14]
- mov r0, sp
- movs r2, 0
- bl sub_80FBFB4
- movs r0, 0
- movs r1, 0
- movs r2, 0xD
- movs r3, 0x3
- bl MenuDrawTextWindow
- mov r0, sp
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x60
- bl sub_8072BD8
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_080A3114: .4byte gMapHeader
- thumb_func_end sub_80A30E0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/secret_base.s b/asm/secret_base.s
index 139375998..bfa0e573d 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -943,7 +943,7 @@ sub_80BBB90: @ 80BBB90
push {r4,lr}
sub sp, 0x4
bl ScriptContext2_Enable
- bl HideMapNamePopUpWindow
+ bl HideMapNamePopup
mov r4, sp
adds r4, 0x2
movs r2, 0x88
diff --git a/include/asm.inc.h b/include/asm.inc.h
index 6f78b2a08..036cf0266 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -245,8 +245,8 @@ void sub_80A2B18(void);
u16 sub_80A2D64(u16, u8 *);
// asm/map_name_popup.o
-void AddMapNamePopUpWindowTask(void);
-void HideMapNamePopUpWindow();
+void ShowMapNamePopup(void);
+void HideMapNamePopup();
// asm/item_menu.o
void sub_80A3684(void);
diff --git a/ld_script.txt b/ld_script.txt
index d11d25d15..7585234a5 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -141,7 +141,7 @@ SECTIONS {
asm/script_movement.o(.text);
asm/fldeff_cut.o(.text);
asm/mail_data.o(.text);
- asm/map_name_popup.o(.text);
+ src/map_name_popup.o(.text);
asm/item_menu.o(.text);
src/battle_anim_80A7E7C.o(.text);
src/item.o(.text);
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:
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 1d1d7ced9..3081b670d 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -667,9 +667,9 @@ gUnknown_020384F4: @ 20384F4
gUnknown_020384F8: @ 20384F8
.space 0x40
-gUnknown_02038538: @ 2038538
- .space 0x4
+ .include "src/map_name_popup.o"
+ .align 2
gUnknown_0203853C: @ 203853C
.space 0x4