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);
|
||||
void DrawHelpMessageWindowWithText(const u8 * text);
|
||||
void DestroyHelpMessageWindow_(void);
|
||||
void sub_80F79A4(void);
|
||||
void LoadSignPostWindowFrameGfx(void);
|
||||
void SetDefaultFontsPointer(void);
|
||||
|
||||
#endif // GUARD_NEW_MENU_HELPERS_H
|
||||
|
||||
+1
-1
@@ -95,7 +95,7 @@ SECTIONS {
|
||||
asm/field_player_avatar.o(.text);
|
||||
asm/event_object_movement.o(.text);
|
||||
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/text_window_graphics.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);
|
||||
}
|
||||
|
||||
void sub_80F79A4(void)
|
||||
void LoadSignPostWindowFrameGfx(void)
|
||||
{
|
||||
Menu_LoadStdPal();
|
||||
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
|
||||
.space 0x2
|
||||
|
||||
gUnknown_203709C: @ 203709C
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "src/field_message_box.o"
|
||||
.align 2
|
||||
.include "src/script.o"
|
||||
.align 2
|
||||
|
||||
Reference in New Issue
Block a user