ScrCmd_waitbuttonpress
This commit is contained in:
-342
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user