Msg related commands

This commit is contained in:
Martmists 2020-06-05 01:13:50 +02:00
parent 81f366007a
commit fd489fdec4
5 changed files with 183 additions and 395 deletions

View File

@ -8,6 +8,7 @@
.extern CompareUtil
.extern gUnknown21C48B8
.extern gUnk021C4918
.extern FUN_0203A2F0
.section .bss
@ -17,354 +18,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
thumb_func_start FUN_0203A188
FUN_0203A188: ; 0x0203A188
push {r4-r6, lr}
sub sp, #0x8
add r5, r0, #0x0
ldr r2, [r5, #0x8]
add r1, r2, #0x1
str r1, [r5, #0x8]
add r1, r5, #0x0
add r1, #0x80
ldr r1, [r1, #0x0]
ldrb r3, [r2, #0x0]
add r1, #0xa8
ldr r2, [r1, #0x0]
cmp r2, #0x0
bne _0203A1AA
add sp, #0x8
mov r0, #0x0
pop {r4-r6, pc}
_0203A1AA:
lsl r1, r3, #0x4
add r1, r3, r1
add r2, #0x90
lsl r1, r1, #0x4
add r4, r2, r1
ldrh r1, [r2, r1]
ldr r2, _0203A204 ; =0x0000FFFF
cmp r1, r2
bne _0203A1E2
ldr r2, _0203A208 ; =0x0000022B
mov r0, #0x1
mov r1, #0x1a
mov r3, #0x20
bl FUN_0200A86C
add r6, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
ldrh r2, [r4, #0x2]
add r0, r5, #0x0
add r1, r6, #0x0
mov r3, #0x1
bl MOD05_021E2BD0
add r0, r6, #0x0
bl FUN_0200A8B8
b _0203A1F4
_0203A1E2:
mov r2, #0x6
ldrsh r2, [r4, r2]
str r2, [sp, #0x0]
mov r2, #0x1
str r2, [sp, #0x4]
ldrh r2, [r4, #0x2]
ldrh r3, [r4, #0x4]
bl MOD05_021E2C58
_0203A1F4:
ldr r1, _0203A20C ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x8
pop {r4-r6, pc}
nop
_0203A204: .word 0x0000FFFF
_0203A208: .word 0x0000022B
_0203A20C: .word FUN_0203A2F0
thumb_func_start FUN_0203A210
FUN_0203A210: ; 0x0203A210
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
add r1, r5, #0x0
add r1, #0x80
ldr r2, [r5, #0x8]
ldr r6, [r1, #0x0]
add r1, r2, #0x1
str r1, [r5, #0x8]
ldrb r4, [r2, #0x0]
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl FUN_020394F0
add r7, r0, #0x0
add r0, r5, #0x0
bl ScriptReadHalfword
ldr r1, [r5, #0x8]
add r2, r0, #0x0
add r0, r1, #0x1
str r0, [r5, #0x8]
ldrb r3, [r1, #0x0]
mov r1, #0x0
add r0, sp, #0x4
strb r1, [r0, #0x0]
add r0, sp, #0x4
str r0, [sp, #0x0]
ldr r0, [r6, #0xc]
add r1, r7, #0x0
bl MOD06_02244210
add r6, r0, #0x0
add r2, sp, #0x4
ldrb r2, [r2, #0x0]
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r4, r2
lsl r2, r2, #0x18
lsr r2, r2, #0x18
mov r3, #0x1
bl MOD05_021E2CBC
add r0, r6, #0x0
bl FUN_0200AB18
ldr r1, _0203A284 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x8
pop {r3-r7, pc}
nop
_0203A284: .word FUN_0203A2F0
thumb_func_start FUN_0203A288
FUN_0203A288: ; 0x0203A288
push {r3-r5, lr}
sub sp, #0x8
add r5, r0, #0x0
bl ScriptReadHalfword
add r4, r0, #0x0
add r0, sp, #0x4
add r1, r5, #0x0
bl MOD05_021E2BB8
mov r1, #0x3
add r0, sp, #0x4
strb r1, [r0, #0x2]
add r0, sp, #0x4
str r0, [sp, #0x0]
ldr r1, [r5, #0x78]
add r0, r5, #0x0
add r2, r4, #0x0
mov r3, #0x0
bl MOD05_021E2BD0
ldr r1, _0203A2C0 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x8
pop {r3-r5, pc}
.balign 4
_0203A2C0: .word FUN_0203A2F0
thumb_func_start FUN_0203A2C4
FUN_0203A2C4: ; 0x0203A2C4
push {r3-r4, lr}
sub sp, #0x4
add r4, r0, #0x0
ldr r2, [r4, #0x8]
mov r3, #0x1
add r1, r2, #0x1
str r1, [r4, #0x8]
mov r1, #0x0
str r1, [sp, #0x0]
ldrb r2, [r2, #0x0]
ldr r1, [r4, #0x78]
bl MOD05_021E2BD0
ldr r1, _0203A2EC ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
.balign 4
_0203A2EC: .word FUN_0203A2F0
thumb_func_start FUN_0203A2F0
FUN_0203A2F0: ; 0x0203A2F0
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
mov r1, #0x3
bl FUN_02039438
ldrb r0, [r0, #0x0]
bl FUN_020546C8
pop {r3, pc}
thumb_func_start FUN_0203A304
FUN_0203A304: ; 0x0203A304
push {r3-r4, lr}
sub sp, #0x4
add r4, r0, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl FUN_020394F0
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
lsl r2, r2, #0x18
ldr r1, [r4, #0x78]
add r0, r4, #0x0
lsr r2, r2, #0x18
mov r3, #0x1
bl MOD05_021E2BD0
ldr r1, _0203A33C ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
.balign 4
_0203A33C: .word FUN_0203A2F0
thumb_func_start FUN_0203A340
FUN_0203A340: ; 0x0203A340
push {r3-r5, lr}
sub sp, #0x8
add r5, r0, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl FUN_020394F0
add r4, r0, #0x0
add r0, sp, #0x4
add r1, r5, #0x0
bl MOD05_021E2BB8
lsl r2, r4, #0x18
mov r3, #0x1
add r0, sp, #0x4
strb r3, [r0, #0x1]
add r0, sp, #0x4
str r0, [sp, #0x0]
ldr r1, [r5, #0x78]
add r0, r5, #0x0
lsr r2, r2, #0x18
bl MOD05_021E2BD0
ldr r1, _0203A384 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x8
pop {r3-r5, pc}
.balign 4
_0203A384: .word FUN_0203A2F0
thumb_func_start FUN_0203A388
FUN_0203A388: ; 0x0203A388
push {r3-r4, lr}
sub sp, #0x4
add r4, r0, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl FUN_020394F0
add r2, r0, #0x0
mov r3, #0x0
str r3, [sp, #0x0]
lsl r2, r2, #0x18
ldr r1, [r4, #0x78]
add r0, r4, #0x0
lsr r2, r2, #0x18
bl MOD05_021E2BD0
ldr r1, _0203A3C0 ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
nop
_0203A3C0: .word FUN_0203A2F0
thumb_func_start FUN_0203A3C4
FUN_0203A3C4: ; 0x0203A3C4
push {r3-r4, lr}
sub sp, #0x4
add r4, r0, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
mov r1, #0xa
bl FUN_02039438
ldr r0, [r0, #0x0]
bl FUN_02058488
lsl r0, r0, #0x18
lsr r2, r0, #0x18
mov r0, #0x0
str r0, [sp, #0x0]
ldr r1, [r4, #0x78]
add r0, r4, #0x0
mov r3, #0x1
bl MOD05_021E2BD0
ldr r1, _0203A3FC ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
nop
_0203A3FC: .word FUN_0203A2F0
thumb_func_start FUN_0203A400
FUN_0203A400: ; 0x0203A400
push {r3-r5, lr}
sub sp, #0x8
add r5, r0, #0x0
ldr r1, [r5, #0x8]
add r0, r1, #0x1
str r0, [r5, #0x8]
ldrb r4, [r1, #0x0]
bl FUN_02030F40
cmp r0, #0x0
bne _0203A428
mov r0, #0x0
str r0, [sp, #0x0]
ldr r1, [r5, #0x78]
add r0, r5, #0x0
add r2, r4, #0x0
mov r3, #0x1
bl MOD05_021E2BD0
b _0203A448
_0203A428:
add r0, sp, #0x4
add r1, r5, #0x0
bl MOD05_021E2BB8
mov r1, #0x1
add r0, sp, #0x4
strb r1, [r0, #0x0]
strb r1, [r0, #0x1]
add r0, sp, #0x4
str r0, [sp, #0x0]
ldr r1, [r5, #0x78]
add r0, r5, #0x0
add r2, r4, #0x0
mov r3, #0x0
bl MOD05_021E2BD0
_0203A448:
ldr r1, _0203A458 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
mov r0, #0x1
add sp, #0x8
pop {r3-r5, pc}
nop
_0203A458: .word FUN_0203A2F0
thumb_func_start FUN_0203A45C
FUN_0203A45C: ; 0x0203A45C
push {r3, lr}

View File

@ -198,10 +198,10 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_LoadWkWk
.word ScrCmd_LoadWkWkValue
.word ScrCmd_TalkMsgAllPut
.word FUN_0203A2C4
.word FUN_0203A304
.word FUN_0203A388
.word FUN_0203A400
.word ScrCmd_TalkMsg
.word ScrCmd_TalkMsgSp
.word ScrCmd_TalkMsgNoSkip
.word ScrCmd_TalkConSioMsg
.word FUN_0203A45C
.word FUN_0203A4D0
.word FUN_0203A560
@ -664,8 +664,8 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_TalkMsgOtherArc
.word ScrCmd_TalkMsgAllPutPMS
.word ScrCmd_TalkMsgPMS
.word FUN_0203A188
.word FUN_0203A210
.word ScrCmd_TalkMsgTowerApper
.word ScrCmd_TalkMsgNgPokeName
.word FUN_0203C7F4
.word FUN_0203C820
.word FUN_0203E5DC
@ -678,7 +678,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203BE50
.word FUN_0203BECC
.word FUN_0203BF00
.word FUN_0203A3C4
.word ScrCmd_MsgAutoGet
.word FUN_0203E684
.word FUN_0203E6B4
.word FUN_0203E6C4
@ -775,7 +775,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203F110
.word FUN_0203F174
.word FUN_0203F19C
.word FUN_0203A288
.word ScrCmd_TalkMsgUnknownFont
.word FUN_0203F234
.word FUN_0203F254
.word FUN_0203F26C
@ -858,7 +858,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203D0A4
.word FUN_0203FC58
.word FUN_0203CAE8
.word FUN_0203A340
.word ScrCmd_TalkMsgSpAuto
.word FUN_0203FC80
.word FUN_0203FCB0
.word FUN_0203FCDC

View File

@ -2727,15 +2727,15 @@
.extern ScrCmd_TalkMsgOtherArc
.extern ScrCmd_TalkMsgAllPutPMS
.extern ScrCmd_TalkMsgPMS
.extern FUN_0203A188
.extern FUN_0203A210
.extern FUN_0203A288
.extern FUN_0203A2C4
.extern FUN_0203A304
.extern FUN_0203A340
.extern FUN_0203A388
.extern FUN_0203A3C4
.extern FUN_0203A400
.extern ScrCmd_TalkMsgTowerApper
.extern ScrCmd_TalkMsgNgPokeName
.extern ScrCmd_TalkMsgUnknownFont
.extern ScrCmd_TalkMsg
.extern ScrCmd_TalkMsgSp
.extern ScrCmd_TalkMsgSpAuto
.extern ScrCmd_TalkMsgNoSkip
.extern ScrCmd_MsgAutoGet
.extern ScrCmd_TalkConSioMsg
.extern FUN_0203A45C
.extern FUN_0203A484
.extern FUN_0203A4D0

View File

@ -7,29 +7,35 @@
extern u8 ConditionLookup[6][3];
// External funcs
extern u16* FUN_020394B8(u32 arg, u16 wk);
extern u16 FUN_020394F0(u32 arg, u16 wk);
extern void* FUN_02039438(u32 arg, u16 id);
extern void* FUN_02038EB0(u32 arg, u16 id);
extern u16* FUN_020394B8(struct UnkStruct80* arg, u16 wk);
extern u16 FUN_020394F0(struct UnkStruct80* arg, u16 wk);
extern void* FUN_02039438(struct UnkStruct80* arg, u32 id);
extern void* FUN_02038EB0(struct UnkStruct80* arg, u16 id);
extern u8 FUN_02058448(u32 arg);
extern u32 FUN_02046534(u32 arg);
extern void FUN_0203953C(u32 arg, u16 flag);
extern void FUN_02039550(u32 arg, u16 flag);
extern BOOL FUN_02039528(u32 arg, u16 flag);
extern void FUN_0203965C(u32 arg, u16 wk);
extern void FUN_02039678(u32 arg, u16 wk);
extern BOOL FUN_02039640(u32 arg, u16 wk);
extern void FUN_0203953C(struct UnkStruct80* arg, u16 flag);
extern void FUN_02039550(struct UnkStruct80* arg, u16 flag);
extern BOOL FUN_02039528(struct UnkStruct80* arg, u16 flag);
extern void FUN_0203965C(struct UnkStruct80* arg, u16 wk);
extern void FUN_02039678(struct UnkStruct80* arg, u16 wk);
extern BOOL FUN_02039640(struct UnkStruct80* arg, u16 wk);
extern void MOD05_021E2C24(struct ScriptContext* ctx, u32 arg, u16 id);
extern void MOD05_021E2BD0(struct ScriptContext* ctx, u32 arg, u16 id, u8 unk1, u32 unk2);
extern void MOD05_021E2BD0(struct ScriptContext* ctx, u32 arg, u16 id, u8 unk1, struct UnkStruct* unk2);
extern void MOD05_021E2C58(struct ScriptContext* ctx, u16 typ, u16 id, u16 word1, s16 word2, u8 unk);
extern u32 FUN_0200A86C(u32 a, u32 b, u32 id, u32 d);
extern void FUN_0200A8B8(u32 arg);
extern BOOL FUN_020546C8(u8 arg);
extern u32 MOD06_02244210(u32 unkC, u16 poke, u16 sex, u8 flag, u8* unk);
extern void MOD05_021E2CBC(struct ScriptContext* ctx, u32 unk, u8 unk2, u8 unk3);
extern void FUN_0200AB18(u32 unk);
extern void MOD05_021E2BB8(struct UnkStruct* unk, struct ScriptContext* ctx);
extern u32 FUN_02058488(u32);
extern BOOL FUN_02030F40();
// Early definitions
BOOL FUN_020399E8(struct ScriptContext* ctx);
BOOL FUN_02039CC8(struct ScriptContext* ctx);
extern BOOL FUN_0203A2F0(struct ScriptContext* ctx);
BOOL FUN_0203A2F0(struct ScriptContext* ctx);
// Functions
// Names taken from
@ -49,7 +55,7 @@ THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext* ctx) {
}
THUMB_FUNC BOOL ScrCmd_TimeWait(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 num = ScriptReadHalfword(ctx);
u16 wk = ScriptReadHalfword(ctx);
u16* unk = FUN_020394B8(unk80, wk);
@ -190,7 +196,7 @@ THUMB_FUNC BOOL ScrCmd_CmpWkWk(struct ScriptContext* ctx) {
}
THUMB_FUNC BOOL ScrCmd_VMMachineAdd(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u8* unk1 = FUN_02039438(unk80, 0x7);
u32** unk2 = FUN_02039438(unk80, 0xe);
u16 id = ScriptReadHalfword(ctx);
@ -201,7 +207,7 @@ THUMB_FUNC BOOL ScrCmd_VMMachineAdd(struct ScriptContext* ctx) {
}
THUMB_FUNC BOOL ScrCmd_ChangeCommonScr(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u8* unk_flag_0x5 = FUN_02039438(unk80, 0x5);
u8* unk2 = FUN_02039438(unk80, 0x7);
u32** unk3 = FUN_02039438(unk80, 0xe);
@ -302,7 +308,7 @@ THUMB_FUNC BOOL ScrCmd_IfCall(struct ScriptContext* ctx) {
}
THUMB_FUNC BOOL ScrCmd_FlagSet(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 flag = ScriptReadHalfword(ctx);
FUN_0203953C(unk80, flag);
return FALSE;
@ -310,21 +316,21 @@ THUMB_FUNC BOOL ScrCmd_FlagSet(struct ScriptContext* ctx) {
THUMB_FUNC BOOL ScrCmd_FlagReset(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 flag = ScriptReadHalfword(ctx);
FUN_02039550(unk80, flag);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_FlagCheck(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 flag = ScriptReadHalfword(ctx);
ctx->comparisonResult = FUN_02039528(unk80, flag);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_FlagCheckWk(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16* wk1 = FUN_020394B8(ctx->unk80, ScriptReadHalfword(ctx));
u16* wk2 = FUN_020394B8(ctx->unk80, ScriptReadHalfword(ctx));
*wk2 = FUN_02039528(unk80, *wk1);
@ -332,21 +338,21 @@ THUMB_FUNC BOOL ScrCmd_FlagCheckWk(struct ScriptContext* ctx) {
}
THUMB_FUNC BOOL ScrCmd_FlagSetWk(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16* wk = FUN_020394B8(ctx->unk80, ScriptReadHalfword(ctx));
FUN_0203953C(unk80, *wk);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_TrainerFlagSet(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 wk = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
FUN_0203965C(unk80, wk);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_TrainerFlagReset(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 wk = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
FUN_02039678(unk80, wk);
return FALSE;
@ -354,7 +360,7 @@ THUMB_FUNC BOOL ScrCmd_TrainerFlagReset(struct ScriptContext* ctx) {
THUMB_FUNC BOOL ScrCmd_TrainerFlagCheck(struct ScriptContext* ctx) {
u32 unk80 = ctx->unk80;
struct UnkStruct80* unk80 = ctx->unk80;
u16 wk = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
ctx->comparisonResult = FUN_02039640(unk80, wk);
return FALSE;
@ -413,7 +419,7 @@ THUMB_FUNC BOOL ScrCmd_TalkMsgOtherArc(struct ScriptContext* ctx) {
u16 arc = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
u16 msg = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
u32 unk = FUN_0200A86C(0x1, 0x1a, arc, 0x20);
MOD05_021E2BD0(ctx, unk, msg, 1, 0);
MOD05_021E2BD0(ctx, unk, msg, 1, NULL);
FUN_0200A8B8(unk);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
@ -440,10 +446,115 @@ THUMB_FUNC BOOL ScrCmd_TalkMsgPMS(struct ScriptContext* ctx) {
return TRUE;
}
/*
// Commented out as it comes later in the file
BOOL FUN_0203A2F0(struct ScriptContext* ctx) {
THUMB_FUNC u8 ScrCmd_TalkMsgTowerApper(struct ScriptContext* ctx) {
u8 id = ScriptReadByte(ctx); // Even though this returns an u8 storing as u16 matches better?
if (ctx->unk80->unkA8 == NULL) {
return FALSE;
}
u16 *unkArr = ctx->unk80->unkA8->unksubstruct[id].unk0;
if (unkArr[0] == 0xFFFF) {
u32 unk3 = FUN_0200A86C(0x1, 0x1a, 0x22b, 0x20);
MOD05_021E2BD0(ctx, unk3, unkArr[1], 1, NULL);
FUN_0200A8B8(unk3);
} else {
MOD05_021E2C58(ctx, unkArr[0], unkArr[1], unkArr[2], unkArr[3], 1);
}
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_TalkMsgNgPokeName(struct ScriptContext* ctx) {
struct UnkStruct80* unk80 = ctx->unk80;
u8 msg = ScriptReadByte(ctx);
u16 poke = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
u16 sex = ScriptReadHalfword(ctx);
u8 flag = ScriptReadByte(ctx);
u8 unk = 0;
u32 unk2 = MOD06_02244210(unk80->unkC, poke, sex, flag, &unk);
MOD05_021E2CBC(ctx, unk2, msg + unk, 1);
FUN_0200AB18(unk2);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_TalkMsgUnknownFont(struct ScriptContext* ctx) {
struct UnkStruct myLocalStruct;
u16 msg = ScriptReadHalfword(ctx);
MOD05_021E2BB8(&myLocalStruct, ctx);
myLocalStruct.unk2 = 3;
MOD05_021E2BD0(ctx, ctx->unk78, msg, 0, &myLocalStruct);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_TalkMsg(struct ScriptContext* ctx) {
u8 msg = ScriptReadByte(ctx);
MOD05_021E2BD0(ctx, ctx->unk78, msg, 1, NULL);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL FUN_0203A2F0(struct ScriptContext* ctx) {
u8* unk = FUN_02039438(ctx->unk80, 0x3);
return FUN_020546C8(*unk);
}
*/
THUMB_FUNC BOOL ScrCmd_TalkMsgSp(struct ScriptContext* ctx) {
u16 msg = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
MOD05_021E2BD0(ctx, ctx->unk78, (u8)msg, 1, NULL);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_TalkMsgSpAuto(struct ScriptContext* ctx) {
struct UnkStruct myLocalStruct;
u16 msg = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
MOD05_021E2BB8(&myLocalStruct, ctx);
myLocalStruct.unk1 = 1;
MOD05_021E2BD0(ctx, ctx->unk78, (u8)msg, 1, &myLocalStruct);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_TalkMsgNoSkip(struct ScriptContext* ctx) {
u16 msg = FUN_020394F0(ctx->unk80, ScriptReadHalfword(ctx));
MOD05_021E2BD0(ctx, ctx->unk78, (u8)msg, 0, NULL);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_MsgAutoGet(struct ScriptContext* ctx) {
u32* unk = FUN_02039438(ctx->unk80, 0xa);
u8 msg = FUN_02058488(*unk);
MOD05_021E2BD0(ctx, ctx->unk78, (u8)msg, 1, NULL);
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
THUMB_FUNC BOOL ScrCmd_TalkConSioMsg(struct ScriptContext* ctx) {
u8 msg = ScriptReadByte(ctx);
if (FUN_02030F40() == FALSE) {
MOD05_021E2BD0(ctx, ctx->unk78, msg, 1, NULL);
} else {
struct UnkStruct myLocalStruct;
MOD05_021E2BB8(&myLocalStruct, ctx);
myLocalStruct.unk0 = 1;
myLocalStruct.unk1 = 1;
MOD05_021E2BD0(ctx, ctx->unk78, msg, 0, &myLocalStruct);
}
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}

View File

@ -8,6 +8,30 @@ struct ScriptContext;
typedef u8 (*ScrCmdFunc)(struct ScriptContext *);
typedef u8 Script[];
struct UnkStruct {
u8 unk0;
u8 unk1;
u8 unk2;
};
struct UnkSubStruct90 {
u16 unk0[4];
u8 filler8[0x108];
}; // size = 0x110
struct UnkSubStructA8 {
u8 filler0[0x90];
struct UnkSubStruct90 unksubstruct[1]; // unk size
};
// TODO: What is this struct?
struct UnkStruct80 {
u8 filler0[0xC];
u32 unkC;
u8 filler10[0x98];
struct UnkSubStructA8 *unkA8;
};
struct ScriptContext
{
u8 stackDepth;
@ -22,7 +46,7 @@ struct ScriptContext
u32 unk74;
u32 unk78;
u32 unk7C;
u32 unk80;
struct UnkStruct80* unk80;
};
#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))