summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/scrcmd_asm.s120
-rw-r--r--arm9/asm/unk_02038C78.s6
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/src/scrcmd.c55
-rw-r--r--include/scrcmd.h10
5 files changed, 69 insertions, 128 deletions
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index 19159d18..c2751ee2 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -2,10 +2,10 @@
.include "global.inc"
.extern UNK_020F34E0
- .extern sScriptConditionTable
.extern UNK_020F34FC
.extern UNK_020F3538
.extern gMain
+ .extern FUN_0203A2F0
.section .bss
@@ -15,124 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- 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 VarGet
- 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 ScrStrBufs_delete
- 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}
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 7011ab90..3978d8c1 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -193,7 +193,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_CopyVar
.word ScrCmd_SetOrCopyVar
.word ScrCmd_Message
- .word FUN_0203A2C4
+ .word ScrCmd_Unk002C
.word FUN_0203A304
.word FUN_0203A388
.word FUN_0203A400
@@ -660,7 +660,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk01FC
.word ScrCmd_Unk01FD
.word ScrCmd_Unk01FE
- .word FUN_0203A210
+ .word ScrCmd_Unk01FF
.word FUN_0203C7F4
.word FUN_0203C820
.word FUN_0203E5DC
@@ -770,7 +770,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203F110
.word FUN_0203F174
.word FUN_0203F19C
- .word FUN_0203A288
+ .word ScrCmd_Unk026D
.word FUN_0203F234
.word FUN_0203F254
.word FUN_0203F26C
diff --git a/arm9/global.inc b/arm9/global.inc
index 82e4a51b..0190b134 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2749,9 +2749,9 @@
.extern ScrCmd_Unk01FC
.extern ScrCmd_Unk01FD
.extern ScrCmd_Unk01FE
-.extern FUN_0203A210
-.extern FUN_0203A288
-.extern FUN_0203A2C4
+.extern ScrCmd_Unk01FF
+.extern ScrCmd_Unk026D
+.extern ScrCmd_Unk002C
.extern FUN_0203A304
.extern FUN_0203A340
.extern FUN_0203A388
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index 86f5069a..9e6a337a 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -14,12 +14,16 @@ extern void TrainerFlagClear(struct UnkSavStruct80 *arg, u16 flag);
extern u8 TrainerFlagCheck(struct UnkSavStruct80 *arg, u16 flag);
extern void MOD05_ShowMessageInField(struct ScriptContext *ctx, struct MsgData *msgData, u16 id);
extern void MOD05_021E2BD0(struct ScriptContext *ctx, struct MsgData *msgData, u16 msgId, u32 param4, void *param5);
-extern BOOL FUN_0203A2F0(struct ScriptContext *ctx);
extern void MOD05_021E2C58(struct ScriptContext *ctx, u16 typ, u16 id, u16 word1, s16 word2, u8 param5);
+extern struct ScrStrBufs *MOD06_02244210(struct SaveBlock2 *sav, u16 poke, u16 sex, u8 flag, u8 *unk);
+extern void MOD05_021E2CBC(struct ScriptContext *ctx, struct ScrStrBufs *str, u8 param2, u32 param3);
+extern void MOD05_021E2BB8(void *param0, struct ScriptContext *ctx);
+extern BOOL FUN_020546C8(u8 param0);
static BOOL RunPauseTimer(struct ScriptContext* ctx);
static u32 Compare(u16 a, u16 b);
static BOOL FUN_02039CC8(struct ScriptContext* ctx);
+/*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx);
extern u8 sScriptConditionTable[6][3];
@@ -464,7 +468,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx)
u16 typ = ScriptReadHalfword(ctx);
u16 id = ScriptReadHalfword(ctx);
u16 word1 = ScriptReadHalfword(ctx);
- u16 word2 = ScriptReadHalfword(ctx);
+ s16 word2 = (s16)ScriptReadHalfword(ctx);
MOD05_021E2C58(ctx, typ, id, word1, word2, 0xff);
return FALSE;
@@ -475,7 +479,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx)
u16 typ = ScriptReadHalfword(ctx);
u16 id = ScriptReadHalfword(ctx);
u16 word1 = ScriptReadHalfword(ctx);
- u16 word2 = ScriptReadHalfword(ctx);
+ s16 word2 = (s16)ScriptReadHalfword(ctx);
MOD05_021E2C58(ctx, typ, id, word1, word2, 1);
SetupNativeScript(ctx, FUN_0203A2F0);
@@ -505,3 +509,48 @@ THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx)
SetupNativeScript(ctx, FUN_0203A2F0);
return TRUE;
}
+
+THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u8 msg = ScriptReadByte(ctx);
+ u16 poke = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 sex = ScriptReadHalfword(ctx);
+ u8 flag = ScriptReadByte(ctx);
+ u8 unk = 0;
+
+ struct ScrStrBufs *str = MOD06_02244210(unk80->saveBlock2, poke, sex, flag, &unk);
+ MOD05_021E2CBC(ctx, str, (u8)(msg + unk), 1);
+ ScrStrBufs_delete(str);
+
+ SetupNativeScript(ctx, FUN_0203A2F0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext* ctx) //message unown font?
+{
+ struct UnkStruct_0203A288 myLocalStruct;
+ u16 msg = ScriptReadHalfword(ctx);
+
+ MOD05_021E2BB8(&myLocalStruct, ctx);
+ myLocalStruct.unk2 = 3;
+
+ MOD05_021E2BD0(ctx, ctx->msgData, msg, 0, &myLocalStruct);
+ SetupNativeScript(ctx, FUN_0203A2F0);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext* ctx)
+{
+ u8 msg = ScriptReadByte(ctx);
+ MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL);
+ SetupNativeScript(ctx, FUN_0203A2F0);
+ return TRUE;
+}
+
+THUMB_FUNC /*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx)
+{
+ u8 *unk = (u8 *)FUN_02039438(ctx->unk80, 3);
+ return FUN_020546C8(*unk);
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 16a58556..f40f7841 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -4,6 +4,13 @@
#include "global.h"
#include "script.h"
+struct UnkStruct_0203A288 {
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 padding[1];
+};
+
//scrcmd.c
BOOL ScrCmd_Nop(struct ScriptContext* ctx);
BOOL ScrCmd_Dummy(struct ScriptContext* ctx);
@@ -55,6 +62,9 @@ BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk026D(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk002C(struct ScriptContext* ctx);
//scrcmd_18.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);