ScrCmd_waitbuttonpress

This commit is contained in:
scnorton
2019-01-06 14:52:00 -05:00
parent bc97743759
commit 607d6e13d4
5 changed files with 164 additions and 342 deletions
-342
View File
@@ -5,348 +5,6 @@
.text
thumb_func_start ScrCmd_message
ScrCmd_message: @ 806B80C
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
cmp r0, 0
bne _0806B81A
ldr r0, [r4, 0x64]
_0806B81A:
bl ShowFieldMessage
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end ScrCmd_message
thumb_func_start ScrCmd_cmdC8
ScrCmd_cmdC8: @ 806B828
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
cmp r0, 0
bne _0806B836
ldr r0, [r4, 0x64]
_0806B836:
bl sub_80F7974
bl GetStartMenuWindowId
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
bl CopyWindowToVram
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end ScrCmd_cmdC8
thumb_func_start ScrCmd_cmdC9
ScrCmd_cmdC9: @ 806B850
push {lr}
bl sub_80F7998
movs r0, 0
pop {r1}
bx r1
thumb_func_end ScrCmd_cmdC9
thumb_func_start ScrCmd_messageautoscroll
ScrCmd_messageautoscroll: @ 806B85C
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
cmp r0, 0
bne _0806B86A
ldr r0, [r4, 0x64]
_0806B86A:
bl ShowFieldAutoScrollMessage
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end ScrCmd_messageautoscroll
thumb_func_start ScrCmd_waitmessage
ScrCmd_waitmessage: @ 806B878
push {lr}
ldr r1, _0806B888 @ =IsFieldMessageBoxHidden
bl SetupNativeScript
movs r0, 0x1
pop {r1}
bx r1
.align 2, 0
_0806B888: .4byte IsFieldMessageBoxHidden
thumb_func_end ScrCmd_waitmessage
thumb_func_start ScrCmd_closemessage
ScrCmd_closemessage: @ 806B88C
push {lr}
bl HideFieldMessageBox
movs r0, 0
pop {r1}
bx r1
thumb_func_end ScrCmd_closemessage
thumb_func_start sub_806B898
sub_806B898: @ 806B898
push {r4,lr}
ldr r0, _0806B8F0 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0806B922
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0806B922
ldr r4, _0806B8F4 @ =gUnknown_3005070
ldr r0, [r4]
bl sub_806B93C
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0806B906
ldr r0, [r4]
bl sub_806B96C
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
bl sub_8069998
cmp r4, 0
beq _0806B906
ldr r0, _0806B8F8 @ =gUnknown_203ADFA
ldrb r0, [r0]
cmp r0, 0x2
beq _0806B906
bl sub_80699F8
adds r0, r4, 0
subs r0, 0x9
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bls _0806B8FC
bl sub_8069964
b _0806B922
.align 2, 0
_0806B8F0: .4byte gMain
_0806B8F4: .4byte gUnknown_3005070
_0806B8F8: .4byte gUnknown_203ADFA
_0806B8FC:
bl sub_80699A4
bl sub_8069970
b _0806B922
_0806B906:
bl sub_8112CAC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0806B91A
ldr r0, _0806B928 @ =gUnknown_203ADFA
ldrb r0, [r0]
cmp r0, 0x2
bne _0806B934
_0806B91A:
ldr r1, _0806B92C @ =gUnknown_20370AC
ldrb r0, [r1]
cmp r0, 0x78
bne _0806B930
_0806B922:
movs r0, 0x1
b _0806B936
.align 2, 0
_0806B928: .4byte gUnknown_203ADFA
_0806B92C: .4byte gUnknown_20370AC
_0806B930:
adds r0, 0x1
strb r0, [r1]
_0806B934:
movs r0, 0
_0806B936:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_806B898
thumb_func_start sub_806B93C
sub_806B93C: @ 806B93C
push {lr}
adds r2, r0, 0
ldr r0, [r2, 0x8]
ldrb r0, [r0]
cmp r0, 0x3
bne _0806B958
ldrb r1, [r2]
subs r1, 0x1
lsls r1, 2
adds r0, r2, 0
adds r0, 0xC
adds r0, r1
ldr r0, [r0]
ldrb r0, [r0]
_0806B958:
subs r0, 0x6B
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _0806B966
movs r0, 0x1
b _0806B968
_0806B966:
movs r0, 0
_0806B968:
pop {r1}
bx r1
thumb_func_end sub_806B93C
thumb_func_start sub_806B96C
sub_806B96C: @ 806B96C
push {lr}
ldr r2, _0806B988 @ =gMain
ldrh r1, [r2, 0x2C]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0806B990
ldr r0, _0806B98C @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x2
beq _0806B990
movs r0, 0x1
b _0806BA36
.align 2, 0
_0806B988: .4byte gMain
_0806B98C: .4byte gSpecialVar_Facing
_0806B990:
ldrh r1, [r2, 0x2C]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0806B9AC
ldr r0, _0806B9A8 @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x1
beq _0806B9AC
movs r0, 0x2
b _0806BA36
.align 2, 0
_0806B9A8: .4byte gSpecialVar_Facing
_0806B9AC:
ldrh r1, [r2, 0x2C]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _0806B9C8
ldr r0, _0806B9C4 @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x3
beq _0806B9C8
movs r0, 0x3
b _0806BA36
.align 2, 0
_0806B9C4: .4byte gSpecialVar_Facing
_0806B9C8:
ldrh r1, [r2, 0x2C]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _0806B9E4
ldr r0, _0806B9E0 @ =gSpecialVar_Facing
ldrh r0, [r0]
cmp r0, 0x4
beq _0806B9E4
movs r0, 0x4
b _0806BA36
.align 2, 0
_0806B9E0: .4byte gSpecialVar_Facing
_0806B9E4:
ldrh r1, [r2, 0x2E]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
beq _0806B9F4
movs r0, 0x5
b _0806BA36
_0806B9F4:
ldrh r2, [r2, 0x2C]
movs r0, 0x80
lsls r0, 1
ands r0, r2
cmp r0, 0
beq _0806BA04
movs r0, 0x6
b _0806BA36
_0806BA04:
movs r0, 0x8
ands r0, r2
cmp r0, 0
beq _0806BA10
movs r0, 0x7
b _0806BA36
_0806BA10:
movs r0, 0x4
ands r0, r2
cmp r0, 0
beq _0806BA1C
movs r0, 0x8
b _0806BA36
_0806BA1C:
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806BA28
movs r0, 0x9
b _0806BA36
_0806BA28:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0806BA34
movs r0, 0
b _0806BA36
_0806BA34:
movs r0, 0xA
_0806BA36:
pop {r1}
bx r1
thumb_func_end sub_806B96C
thumb_func_start ScrCmd_waitbuttonpress
ScrCmd_waitbuttonpress: @ 806BA3C
push {r4,lr}
adds r4, r0, 0
ldr r0, _0806BA70 @ =gUnknown_3005070
str r4, [r0]
bl sub_8112CAC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0806BA58
ldr r0, _0806BA74 @ =gUnknown_203ADFA
ldrb r0, [r0]
cmp r0, 0x2
bne _0806BA5E
_0806BA58:
ldr r1, _0806BA78 @ =gUnknown_20370AC
movs r0, 0
strb r0, [r1]
_0806BA5E:
ldr r1, _0806BA7C @ =sub_806B898
adds r0, r4, 0
bl SetupNativeScript
movs r0, 0x1
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0806BA70: .4byte gUnknown_3005070
_0806BA74: .4byte gUnknown_203ADFA
_0806BA78: .4byte gUnknown_20370AC
_0806BA7C: .4byte sub_806B898
thumb_func_end ScrCmd_waitbuttonpress
thumb_func_start ScrCmd_yesnobox
ScrCmd_yesnobox: @ 806BA80
push {lr}
+3
View File
@@ -19,5 +19,8 @@ void sub_80F6F54(u8, u8);
u8 sub_80F78A8(void);
void sub_80F6E9C(void);
void sub_80F6EE4(u8 windowId, bool8 transfer);
void sub_80F7974(const u8 *);
u8 GetStartMenuWindowId(void);
void sub_80F7998(void);
#endif // GUARD_NEW_MENU_HELPERS_H
+1
View File
@@ -22,6 +22,7 @@ extern struct UnkStruct_203AE98 * gUnknown_3005E94;
void sub_8112720(u8);
void sub_8113550(u16, const u16 *);
void sub_8115748(u16);
u8 sub_8112CAC(void);
extern u8 gUnknown_203ADFA;
+5
View File
@@ -65,6 +65,11 @@ void sub_80992A0(u8 *script, u16 scriptSize);
bool32 sub_8069DFC(void);
void sub_8069EA4(u8 * script, u16 scriptSize);
u8 * sub_8069E48(void);
void sub_8069998(u8 var);
void sub_80699F8(void);
void sub_8069964(void);
void sub_80699A4(void);
void sub_8069970(void);
extern const u8 *gRAMScriptPtr;
+155
View File
@@ -20,6 +20,9 @@
#include "field_map_obj_helpers.h"
#include "map_obj_lock.h"
#include "field_message_box.h"
#include "new_menu_helpers.h"
#include "window.h"
#include "start_menu.h"
extern u16 (*const gSpecials[])(void);
extern u16 (*const gSpecialsEnd[])(void);
@@ -1252,3 +1255,155 @@ SCRCMD_DEF(cmdC7)
gUnknown_20370DA = ScriptReadByte(ctx);
return FALSE;
}
SCRCMD_DEF(message)
{
const u8 *msg = (const u8 *)ScriptReadWord(ctx);
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
ShowFieldMessage(msg);
return FALSE;
}
SCRCMD_DEF(cmdC8)
{
const u8 *msg = (const u8 *)ScriptReadWord(ctx);
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
sub_80F7974(msg);
CopyWindowToVram(GetStartMenuWindowId(), 1);
return FALSE;
}
SCRCMD_DEF(cmdC9)
{
sub_80F7998();
return FALSE;
}
SCRCMD_DEF(messageautoscroll)
{
const u8 *msg = (const u8 *)ScriptReadWord(ctx);
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
ShowFieldAutoScrollMessage(msg);
return FALSE;
}
SCRCMD_DEF(waitmessage)
{
SetupNativeScript(ctx, IsFieldMessageBoxHidden);
return TRUE;
}
SCRCMD_DEF(closemessage)
{
HideFieldMessageBox();
return FALSE;
}
extern IWRAM_DATA struct ScriptContext * gUnknown_3005070;
bool8 sub_806B93C(struct ScriptContext * ctx);
u8 sub_806B96C(struct ScriptContext * ctx);
bool8 WaitForAorBPress(void)
{
if (gMain.newKeys & A_BUTTON)
return TRUE;
if (gMain.newKeys & B_BUTTON)
return TRUE;
if (sub_806B93C(gUnknown_3005070) == TRUE)
{
u8 r4 = sub_806B96C(gUnknown_3005070);
sub_8069998(r4);
if (r4)
{
if (gUnknown_203ADFA != 2)
{
sub_80699F8();
if (r4 < 9 || r4 > 10)
sub_8069964();
else
{
sub_80699A4();
sub_8069970();
}
return TRUE;
}
}
}
if (sub_8112CAC() == 1 || gUnknown_203ADFA == 2)
{
if (gUnknown_20370AC == 120)
return TRUE;
else
gUnknown_20370AC++;
}
return FALSE;
}
bool8 sub_806B93C(struct ScriptContext * ctx)
{
const u8 * script = ctx->scriptPtr;
u8 nextCmd = *script;
if (nextCmd == 3) // return
{
script = ctx->stack[ctx->stackDepth - 1];
nextCmd = *script;
}
if (nextCmd < 0x6B || nextCmd > 0x6C) // releaseall or release
return FALSE;
else
return TRUE;
}
u8 sub_806B96C(struct ScriptContext * ctx)
{
if (gMain.heldKeys & DPAD_UP && gSpecialVar_Facing != 2)
return 1;
if (gMain.heldKeys & DPAD_DOWN && gSpecialVar_Facing != 1)
return 2;
if (gMain.heldKeys & DPAD_LEFT && gSpecialVar_Facing != 3)
return 3;
if (gMain.heldKeys & DPAD_RIGHT && gSpecialVar_Facing != 4)
return 4;
if (gMain.newKeys & L_BUTTON)
return 5;
if (gMain.heldKeys & R_BUTTON)
return 6;
if (gMain.heldKeys & START_BUTTON)
return 7;
if (gMain.heldKeys & SELECT_BUTTON)
return 8;
if (gMain.newKeys & A_BUTTON)
return 9;
if (gMain.newKeys & B_BUTTON)
return 10;
return 0;
}
SCRCMD_DEF(waitbuttonpress)
{
gUnknown_3005070 = ctx;
if (sub_8112CAC() == 1 || gUnknown_203ADFA == 2)
gUnknown_20370AC = 0;
SetupNativeScript(ctx, WaitForAorBPress);
return TRUE;
}