summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/scrcmd_20.s56
-rw-r--r--arm9/asm/unk_02038C78.s2
-rw-r--r--arm9/global.inc2
-rw-r--r--arm9/src/scrcmd_20.c38
-rw-r--r--include/scrcmd.h3
5 files changed, 43 insertions, 58 deletions
diff --git a/arm9/asm/scrcmd_20.s b/arm9/asm/scrcmd_20.s
deleted file mode 100644
index 31de1e77..00000000
--- a/arm9/asm/scrcmd_20.s
+++ /dev/null
@@ -1,56 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F4528
-UNK_020F4528: ; 0x020F4528
- .byte 0xFB, 0x00
-
- .global UNK_020F452A
-UNK_020F452A: ; 0x020F452A
- .byte 0xE8, 0x03, 0x09, 0x01, 0xE8, 0x03, 0x14, 0x01, 0xE8, 0x03, 0x15, 0x01, 0xE8, 0x03, 0xA1, 0x01
- .byte 0xD0, 0x07, 0x81, 0x01, 0xD0, 0x07, 0x92, 0x01, 0xA0, 0x0F, 0x67, 0x01, 0xA0, 0x0F, 0x73, 0x01
- .byte 0x70, 0x17, 0xA0, 0x01, 0x70, 0x17, 0x51, 0x01, 0x70, 0x17, 0x62, 0x01, 0x40, 0x1F, 0x5C, 0x01
- .byte 0x40, 0x1F, 0x6A, 0x01, 0x10, 0x27, 0x5F, 0x01, 0x10, 0x27, 0x54, 0x01, 0x10, 0x27, 0x64, 0x01
- .byte 0x10, 0x27, 0x91, 0x01, 0x98, 0x3A, 0x8B, 0x01, 0x20, 0x4E
-
- .text
-
- thumb_func_start FUN_020453A0
-FUN_020453A0: ; 0x020453A0
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- ldr r1, _020453EC ; =UNK_020F4528
- lsl r2, r4, #0x2
- ldrh r1, [r1, r2]
- strh r1, [r6, #0x0]
- ldr r1, _020453F0 ; =UNK_020F452A
- ldrh r1, [r1, r2]
- strh r1, [r0, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-_020453EC: .word UNK_020F4528
-_020453F0: .word UNK_020F452A
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index c876dcc6..d880340e 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -827,7 +827,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203F988
.word FUN_0203F9B0
.word FUN_0203B914
- .word FUN_020453A0
+ .word ScrCmd_Unk02A6
.word FUN_0203FA14
.word FUN_02043B54
.word FUN_02043BD0
diff --git a/arm9/global.inc b/arm9/global.inc
index cac00e2d..69746e05 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3361,7 +3361,7 @@
.extern ScrCmd_Unk01F5
.extern ScrCmd_Unk01F2
.extern ScrCmd_Unk01F3
-.extern FUN_020453A0
+.extern ScrCmd_Unk02A6
.extern FUN_020453F4
.extern FUN_02045424
.extern FUN_02045438
diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c
new file mode 100644
index 00000000..bf4fb7f1
--- /dev/null
+++ b/arm9/src/scrcmd_20.c
@@ -0,0 +1,38 @@
+#include "scrcmd.h"
+
+extern u16 VarGet(struct UnkSavStruct80* arg, u16);
+extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
+
+const u16 UNK_020F452A[19][2] = {
+ { 0x00FB, 0x03E8 },
+ { 0x0109, 0x03E8 },
+ { 0x0114, 0x03E8 },
+ { 0x0115, 0x03E8 },
+ { 0x01A1, 0x07D0 },
+ { 0x0181, 0x07D0 },
+ { 0x0192, 0x0FA0 },
+ { 0x0167, 0x0FA0 },
+ { 0x0173, 0x1770 },
+ { 0x01A0, 0x1770 },
+ { 0x0151, 0x1770 },
+ { 0x0162, 0x1F40 },
+ { 0x015C, 0x1F40 },
+ { 0x016A, 0x2710 },
+ { 0x015F, 0x2710 },
+ { 0x0154, 0x2710 },
+ { 0x0164, 0x2710 },
+ { 0x0191, 0x3A98 },
+ { 0x018B, 0x4E20 },
+};
+
+THUMB_FUNC BOOL ScrCmd_Unk02A6(struct ScriptContext * ctx)
+{
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr1 = UNK_020F452A[idx][0];
+ *ret_ptr2 = UNK_020F452A[idx][1];
+
+ return FALSE;
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 35d1a45d..04e22867 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -95,6 +95,9 @@ BOOL ScrCmd_Unk01F5(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01F2(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx);
+//scrcmd_20.c
+BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx);
+
//scrcmd_25.c
BOOL ScrCmd_Unk02EF(struct ScriptContext* ctx);
BOOL ScrCmd_Unk02F0(struct ScriptContext* ctx);