Merge pull request #290 from PikalaxALT/field_message_box
Decompile field_message_box
This commit is contained in:
@@ -1,306 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start sub_8069348
|
|
||||||
sub_8069348: @ 8069348
|
|
||||||
ldr r1, _08069368 @ =gUnknown_203709C
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r2, _0806936C @ =gTextFlags
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, 0x2
|
|
||||||
negs r0, r0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, 0x3
|
|
||||||
negs r1, r1
|
|
||||||
ands r0, r1
|
|
||||||
subs r1, 0x2
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_08069368: .4byte gUnknown_203709C
|
|
||||||
_0806936C: .4byte gTextFlags
|
|
||||||
thumb_func_end sub_8069348
|
|
||||||
|
|
||||||
thumb_func_start sub_8069370
|
|
||||||
sub_8069370: @ 8069370
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
ldr r1, _08069394 @ =gTasks
|
|
||||||
adds r5, r0, r1
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _080693DA
|
|
||||||
cmp r0, 0x1
|
|
||||||
bgt _08069398
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0806939E
|
|
||||||
b _08069402
|
|
||||||
.align 2, 0
|
|
||||||
_08069394: .4byte gTasks
|
|
||||||
_08069398:
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _080693EA
|
|
||||||
b _08069402
|
|
||||||
_0806939E:
|
|
||||||
ldr r0, _080693BC @ =gQuestLogState
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0x2
|
|
||||||
bne _080693C4
|
|
||||||
ldr r2, _080693C0 @ =gTextFlags
|
|
||||||
ldrb r0, [r2]
|
|
||||||
movs r1, 0x4
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
movs r1, 0x80
|
|
||||||
lsls r1, 2
|
|
||||||
movs r0, 0
|
|
||||||
bl TextWindow_LoadTilesStdFrame1
|
|
||||||
b _080693E2
|
|
||||||
.align 2, 0
|
|
||||||
_080693BC: .4byte gQuestLogState
|
|
||||||
_080693C0: .4byte gTextFlags
|
|
||||||
_080693C4:
|
|
||||||
bl IsMsgSignPost
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080693D4
|
|
||||||
bl LoadStdWindowFrameGfx
|
|
||||||
b _080693E2
|
|
||||||
_080693D4:
|
|
||||||
bl sub_80F79A4
|
|
||||||
b _080693E2
|
|
||||||
_080693DA:
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
bl DrawDialogueFrame
|
|
||||||
_080693E2:
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
b _08069402
|
|
||||||
_080693EA:
|
|
||||||
bl RunTextPrinters_CheckPrinter0Active
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _08069402
|
|
||||||
ldr r1, _08069408 @ =gUnknown_203709C
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl DestroyTask
|
|
||||||
_08069402:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08069408: .4byte gUnknown_203709C
|
|
||||||
thumb_func_end sub_8069370
|
|
||||||
|
|
||||||
thumb_func_start task_add_textbox
|
|
||||||
task_add_textbox: @ 806940C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0806941C @ =sub_8069370
|
|
||||||
movs r1, 0x50
|
|
||||||
bl CreateTask
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0806941C: .4byte sub_8069370
|
|
||||||
thumb_func_end task_add_textbox
|
|
||||||
|
|
||||||
thumb_func_start task_del_textbox
|
|
||||||
task_del_textbox: @ 8069420
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _08069438 @ =sub_8069370
|
|
||||||
bl FindTaskIdByFunc
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0xFF
|
|
||||||
beq _08069434
|
|
||||||
bl DestroyTask
|
|
||||||
_08069434:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08069438: .4byte sub_8069370
|
|
||||||
thumb_func_end task_del_textbox
|
|
||||||
|
|
||||||
thumb_func_start ShowFieldMessage
|
|
||||||
ShowFieldMessage: @ 806943C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r4, _08069458 @ =gUnknown_203709C
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806945C
|
|
||||||
adds r0, r1, 0
|
|
||||||
bl textbox_fdecode_auto_and_task_add
|
|
||||||
movs r0, 0x2
|
|
||||||
strb r0, [r4]
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0806945E
|
|
||||||
.align 2, 0
|
|
||||||
_08069458: .4byte gUnknown_203709C
|
|
||||||
_0806945C:
|
|
||||||
movs r0, 0
|
|
||||||
_0806945E:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ShowFieldMessage
|
|
||||||
|
|
||||||
thumb_func_start ShowFieldAutoScrollMessage
|
|
||||||
ShowFieldAutoScrollMessage: @ 8069464
|
|
||||||
push {lr}
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r2, _08069480 @ =gUnknown_203709C
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08069484
|
|
||||||
movs r0, 0x3
|
|
||||||
strb r0, [r2]
|
|
||||||
adds r0, r1, 0
|
|
||||||
bl textbox_fdecode_auto_and_task_add
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08069486
|
|
||||||
.align 2, 0
|
|
||||||
_08069480: .4byte gUnknown_203709C
|
|
||||||
_08069484:
|
|
||||||
movs r0, 0
|
|
||||||
_08069486:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ShowFieldAutoScrollMessage
|
|
||||||
|
|
||||||
thumb_func_start sub_806948C
|
|
||||||
sub_806948C: @ 806948C
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _080694A0 @ =gUnknown_203709C
|
|
||||||
movs r1, 0x3
|
|
||||||
strb r1, [r2]
|
|
||||||
bl textbox_fdecode_auto_and_task_add
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080694A0: .4byte gUnknown_203709C
|
|
||||||
thumb_func_end sub_806948C
|
|
||||||
|
|
||||||
thumb_func_start sub_80694A4
|
|
||||||
sub_80694A4: @ 80694A4
|
|
||||||
push {lr}
|
|
||||||
ldr r1, _080694BC @ =gUnknown_203709C
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080694C0
|
|
||||||
movs r0, 0x2
|
|
||||||
strb r0, [r1]
|
|
||||||
bl textbox_auto_and_task_add
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080694C2
|
|
||||||
.align 2, 0
|
|
||||||
_080694BC: .4byte gUnknown_203709C
|
|
||||||
_080694C0:
|
|
||||||
movs r0, 0
|
|
||||||
_080694C2:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80694A4
|
|
||||||
|
|
||||||
thumb_func_start textbox_fdecode_auto_and_task_add
|
|
||||||
textbox_fdecode_auto_and_task_add: @ 80694C8
|
|
||||||
push {lr}
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, _080694E0 @ =gStringVar4
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x1
|
|
||||||
bl AddTextPrinterDiffStyle
|
|
||||||
bl task_add_textbox
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080694E0: .4byte gStringVar4
|
|
||||||
thumb_func_end textbox_fdecode_auto_and_task_add
|
|
||||||
|
|
||||||
thumb_func_start textbox_auto_and_task_add
|
|
||||||
textbox_auto_and_task_add: @ 80694E4
|
|
||||||
push {lr}
|
|
||||||
movs r0, 0x1
|
|
||||||
bl AddTextPrinterDiffStyle
|
|
||||||
bl task_add_textbox
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end textbox_auto_and_task_add
|
|
||||||
|
|
||||||
thumb_func_start HideFieldMessageBox
|
|
||||||
HideFieldMessageBox: @ 80694F4
|
|
||||||
push {lr}
|
|
||||||
bl task_del_textbox
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
bl ClearDialogWindowAndFrame
|
|
||||||
ldr r1, _0806950C @ =gUnknown_203709C
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0806950C: .4byte gUnknown_203709C
|
|
||||||
thumb_func_end HideFieldMessageBox
|
|
||||||
|
|
||||||
thumb_func_start textbox_any_visible
|
|
||||||
textbox_any_visible: @ 8069510
|
|
||||||
ldr r0, _08069518 @ =gUnknown_203709C
|
|
||||||
ldrb r0, [r0]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_08069518: .4byte gUnknown_203709C
|
|
||||||
thumb_func_end textbox_any_visible
|
|
||||||
|
|
||||||
thumb_func_start IsFieldMessageBoxHidden
|
|
||||||
IsFieldMessageBoxHidden: @ 806951C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0806952C @ =gUnknown_203709C
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08069530
|
|
||||||
movs r0, 0
|
|
||||||
b _08069532
|
|
||||||
.align 2, 0
|
|
||||||
_0806952C: .4byte gUnknown_203709C
|
|
||||||
_08069530:
|
|
||||||
movs r0, 0x1
|
|
||||||
_08069532:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end IsFieldMessageBoxHidden
|
|
||||||
|
|
||||||
thumb_func_start sub_8069538
|
|
||||||
sub_8069538: @ 8069538
|
|
||||||
push {lr}
|
|
||||||
bl task_del_textbox
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
bl DrawStdWindowFrame
|
|
||||||
ldr r1, _08069550 @ =gUnknown_203709C
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08069550: .4byte gUnknown_203709C
|
|
||||||
thumb_func_end sub_8069538
|
|
||||||
|
|
||||||
.align 2, 0 @ Don't pad with nop.
|
|
||||||
@@ -47,7 +47,7 @@ void RemoveStartMenuWindow(void);
|
|||||||
u16 GetStdWindowBaseTileNum(void);
|
u16 GetStdWindowBaseTileNum(void);
|
||||||
void DrawHelpMessageWindowWithText(const u8 * text);
|
void DrawHelpMessageWindowWithText(const u8 * text);
|
||||||
void DestroyHelpMessageWindow_(void);
|
void DestroyHelpMessageWindow_(void);
|
||||||
void sub_80F79A4(void);
|
void LoadSignPostWindowFrameGfx(void);
|
||||||
void SetDefaultFontsPointer(void);
|
void SetDefaultFontsPointer(void);
|
||||||
|
|
||||||
#endif // GUARD_NEW_MENU_HELPERS_H
|
#endif // GUARD_NEW_MENU_HELPERS_H
|
||||||
|
|||||||
+1
-1
@@ -95,7 +95,7 @@ SECTIONS {
|
|||||||
asm/field_player_avatar.o(.text);
|
asm/field_player_avatar.o(.text);
|
||||||
asm/event_object_movement.o(.text);
|
asm/event_object_movement.o(.text);
|
||||||
src/event_object_80688E4.o(.text); /* event_object_movement */
|
src/event_object_80688E4.o(.text); /* event_object_movement */
|
||||||
asm/field_message_box.o(.text);
|
src/field_message_box.o(.text);
|
||||||
src/event_object_lock.o(.text);
|
src/event_object_lock.o(.text);
|
||||||
src/text_window_graphics.o(.text);
|
src/text_window_graphics.o(.text);
|
||||||
src/script.o(.text);
|
src/script.o(.text);
|
||||||
|
|||||||
@@ -0,0 +1,140 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "gflib.h"
|
||||||
|
#include "new_menu_helpers.h"
|
||||||
|
#include "quest_log.h"
|
||||||
|
#include "script.h"
|
||||||
|
#include "text_window.h"
|
||||||
|
|
||||||
|
static EWRAM_DATA u8 sMessageBoxType = 0;
|
||||||
|
|
||||||
|
static void textbox_fdecode_auto_and_task_add(const u8 *str);
|
||||||
|
static void textbox_auto_and_task_add(void);
|
||||||
|
|
||||||
|
void sub_8069348(void)
|
||||||
|
{
|
||||||
|
sMessageBoxType = 0;
|
||||||
|
gTextFlags.canABSpeedUpPrint = FALSE;
|
||||||
|
gTextFlags.useAlternateDownArrow = FALSE;
|
||||||
|
gTextFlags.autoScroll = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Task_RunFieldMessageBoxPrinter(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task * task = &gTasks[taskId];
|
||||||
|
switch (task->data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if (gQuestLogState == QL_STATE_2)
|
||||||
|
{
|
||||||
|
gTextFlags.autoScroll = TRUE;
|
||||||
|
TextWindow_LoadTilesStdFrame1(0, 0x200);
|
||||||
|
}
|
||||||
|
else if (!IsMsgSignPost())
|
||||||
|
{
|
||||||
|
LoadStdWindowFrameGfx();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LoadSignPostWindowFrameGfx();
|
||||||
|
}
|
||||||
|
task->data[0]++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
DrawDialogueFrame(0, TRUE);
|
||||||
|
task->data[0]++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (RunTextPrinters_CheckPrinter0Active() != TRUE)
|
||||||
|
{
|
||||||
|
sMessageBoxType = 0;
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void task_add_textbox(void)
|
||||||
|
{
|
||||||
|
CreateTask(Task_RunFieldMessageBoxPrinter, 80);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void task_del_textbox(void)
|
||||||
|
{
|
||||||
|
u8 taskId = FindTaskIdByFunc(Task_RunFieldMessageBoxPrinter);
|
||||||
|
if (taskId != 0xFF)
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 ShowFieldMessage(const u8 *str)
|
||||||
|
{
|
||||||
|
if (sMessageBoxType != 0)
|
||||||
|
return FALSE;
|
||||||
|
textbox_fdecode_auto_and_task_add(str);
|
||||||
|
sMessageBoxType = 2;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 ShowFieldAutoScrollMessage(const u8 *str)
|
||||||
|
{
|
||||||
|
if (sMessageBoxType != 0)
|
||||||
|
return FALSE;
|
||||||
|
sMessageBoxType = 3;
|
||||||
|
textbox_fdecode_auto_and_task_add(str);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_806948C(const u8 *str)
|
||||||
|
{
|
||||||
|
sMessageBoxType = 3;
|
||||||
|
textbox_fdecode_auto_and_task_add(str);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_80694A4(const u8 *str)
|
||||||
|
{
|
||||||
|
if (sMessageBoxType != 0)
|
||||||
|
return FALSE;
|
||||||
|
sMessageBoxType = 2;
|
||||||
|
textbox_auto_and_task_add();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void textbox_fdecode_auto_and_task_add(const u8 *str)
|
||||||
|
{
|
||||||
|
StringExpandPlaceholders(gStringVar4, str);
|
||||||
|
AddTextPrinterDiffStyle(TRUE);
|
||||||
|
task_add_textbox();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void textbox_auto_and_task_add(void)
|
||||||
|
{
|
||||||
|
AddTextPrinterDiffStyle(TRUE);
|
||||||
|
task_add_textbox();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HideFieldMessageBox(void)
|
||||||
|
{
|
||||||
|
task_del_textbox();
|
||||||
|
ClearDialogWindowAndFrame(0, TRUE);
|
||||||
|
sMessageBoxType = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 textbox_any_visible(void)
|
||||||
|
{
|
||||||
|
return sMessageBoxType;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 IsFieldMessageBoxHidden(void)
|
||||||
|
{
|
||||||
|
if (sMessageBoxType == 0)
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8069538(void)
|
||||||
|
{
|
||||||
|
task_del_textbox();
|
||||||
|
DrawStdWindowFrame(0, TRUE);
|
||||||
|
sMessageBoxType = 0;
|
||||||
|
}
|
||||||
@@ -716,7 +716,7 @@ void DestroyHelpMessageWindow_(void)
|
|||||||
DestroyHelpMessageWindow(2);
|
DestroyHelpMessageWindow(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80F79A4(void)
|
void LoadSignPostWindowFrameGfx(void)
|
||||||
{
|
{
|
||||||
Menu_LoadStdPal();
|
Menu_LoadStdPal();
|
||||||
sub_814FEEC(0, DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM);
|
sub_814FEEC(0, DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM);
|
||||||
|
|||||||
+216
-216
File diff suppressed because it is too large
Load Diff
+2
-3
@@ -100,9 +100,8 @@ gUnknown_2037098: @ 2037098
|
|||||||
gUnknown_203709A: @ 203709A
|
gUnknown_203709A: @ 203709A
|
||||||
.space 0x2
|
.space 0x2
|
||||||
|
|
||||||
gUnknown_203709C: @ 203709C
|
.align 2
|
||||||
.space 0x4
|
.include "src/field_message_box.o"
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
.include "src/script.o"
|
.include "src/script.o"
|
||||||
.align 2
|
.align 2
|
||||||
|
|||||||
Reference in New Issue
Block a user