summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/scrcmd_asm.s895
-rw-r--r--arm9/asm/unk_02038C78.s38
-rw-r--r--arm9/global.inc38
-rw-r--r--arm9/src/scrcmd.c566
-rw-r--r--arm9/src/script.c6
-rw-r--r--include/scrcmd.h19
-rw-r--r--include/script.h21
-rwxr-xr-xtools/asm_processor/compile.sh3
8 files changed, 579 insertions, 1007 deletions
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index c2751ee2..dcf84948 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -15,901 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- 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 VarGet
- 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 VarGet
- 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 VarGet
- 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}
- ldr r1, _0203A468 ; =FUN_0203A46C
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0203A468: .word FUN_0203A46C
-
- thumb_func_start FUN_0203A46C
-FUN_0203A46C: ; 0x0203A46C
- ldr r0, _0203A480 ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #0x3
- tst r0, r1
- beq _0203A47A
- mov r0, #0x1
- bx lr
-_0203A47A:
- mov r0, #0x0
- bx lr
- nop
-_0203A480: .word gMain
-
- thumb_func_start FUN_0203A484
-FUN_0203A484: ; 0x0203A484
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- str r0, [r4, #0x64]
- ldr r1, _0203A4A8 ; =FUN_0203A4AC
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- nop
-_0203A4A8: .word FUN_0203A4AC
-
- thumb_func_start FUN_0203A4AC
-FUN_0203A4AC: ; 0x0203A4AC
- ldr r1, _0203A4CC ; =gMain
- ldr r2, [r1, #0x48]
- mov r1, #0x3
- tst r1, r2
- beq _0203A4BA
- mov r0, #0x1
- bx lr
-_0203A4BA:
- ldr r1, [r0, #0x64]
- sub r1, r1, #0x1
- str r1, [r0, #0x64]
- bne _0203A4C6
- mov r0, #0x1
- bx lr
-_0203A4C6:
- mov r0, #0x0
- bx lr
- nop
-_0203A4CC: .word gMain
-
- thumb_func_start FUN_0203A4D0
-FUN_0203A4D0: ; 0x0203A4D0
- push {r3, lr}
- ldr r1, _0203A4DC ; =FUN_0203A4E0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0203A4DC: .word FUN_0203A4E0
-
- thumb_func_start FUN_0203A4E0
-FUN_0203A4E0: ; 0x0203A4E0
- push {r4, lr}
- ldr r1, _0203A55C ; =gMain
- ldr r2, [r1, #0x48]
- mov r1, #0x3
- add r3, r2, #0x0
- tst r3, r1
- beq _0203A4F2
- mov r0, #0x1
- pop {r4, pc}
-_0203A4F2:
- mov r3, #0x40
- tst r3, r2
- beq _0203A506
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- ldr r0, [r0, #0x38]
- bl FUN_02055304
- b _0203A556
-_0203A506:
- mov r3, #0x80
- tst r3, r2
- beq _0203A51A
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- ldr r0, [r0, #0x38]
- bl FUN_02055304
- b _0203A556
-_0203A51A:
- mov r3, #0x20
- tst r3, r2
- beq _0203A52E
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x2
- ldr r0, [r0, #0x38]
- bl FUN_02055304
- b _0203A556
-_0203A52E:
- mov r3, #0x10
- add r4, r2, #0x0
- tst r4, r3
- beq _0203A542
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x38]
- bl FUN_02055304
- b _0203A556
-_0203A542:
- lsl r1, r3, #0x6
- tst r1, r2
- beq _0203A552
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl FUN_02039460
- b _0203A556
-_0203A552:
- mov r0, #0x0
- pop {r4, pc}
-_0203A556:
- mov r0, #0x1
- pop {r4, pc}
- nop
-_0203A55C: .word gMain
-
- thumb_func_start FUN_0203A560
-FUN_0203A560: ; 0x0203A560
- push {r3, lr}
- ldr r1, _0203A56C ; =FUN_0203A570
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0203A56C: .word FUN_0203A570
-
- thumb_func_start FUN_0203A570
-FUN_0203A570: ; 0x0203A570
- ldr r0, _0203A58C ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #0x3
- tst r0, r1
- beq _0203A57E
- mov r0, #0x1
- bx lr
-_0203A57E:
- mov r0, #0xf0
- tst r0, r1
- beq _0203A588
- mov r0, #0x1
- bx lr
-_0203A588:
- mov r0, #0x0
- bx lr
- .balign 4
-_0203A58C: .word gMain
-
- thumb_func_start FUN_0203A590
-FUN_0203A590: ; 0x0203A590
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x6
- add r0, r4, #0x0
- bl FUN_02039438
- add r6, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x1
- bl FUN_02039438
- add r1, r0, #0x0
- ldr r0, [r4, #0x8]
- mov r2, #0x3
- bl FUN_020545B8
- add r0, r4, #0x0
- mov r1, #0x1
- bl FUN_02039438
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl FUN_02054608
- mov r0, #0x1
- strb r0, [r6, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0203A5D8
-FUN_0203A5D8: ; 0x0203A5D8
- push {r3-r5, lr}
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x1
- add r0, r4, #0x0
- bl FUN_02039438
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x6
- bl FUN_02039438
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x0
- bl FUN_0200D0E0
- add r0, r5, #0x0
- bl FUN_02019178
- mov r0, #0x0
- strb r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0203A608
-FUN_0203A608: ; 0x0203A608
- push {r3-r5, lr}
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x1
- add r0, r4, #0x0
- bl FUN_02039438
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x6
- bl FUN_02039438
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02019178
- mov r0, #0x0
- strb r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0203A630
-FUN_0203A630: ; 0x0203A630
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x31
- add r0, r4, #0x0
- bl FUN_02039438
- add r6, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x2d
- bl FUN_02039438
- add r7, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x32
- bl FUN_02039438
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- mov r1, #0x33
- bl FUN_02039438
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r1, #0x2e
- bl FUN_02039438
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- mov r1, #0x34
- bl FUN_02039438
- ldr r2, [r5, #0x8]
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- strh r1, [r6, #0x0]
- ldr r2, [r5, #0x8]
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- strh r1, [r7, #0x0]
- ldr r2, [r5, #0x8]
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r2, [r2, #0x0]
- ldr r1, [sp, #0x0]
- strh r2, [r1, #0x0]
- ldr r2, [r5, #0x8]
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r2, [r2, #0x0]
- ldr r1, [sp, #0x4]
- strh r2, [r1, #0x0]
- ldr r2, [r5, #0x8]
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r2, [r2, #0x0]
- ldr r1, [sp, #0x8]
- strh r2, [r1, #0x0]
- ldr r2, [r5, #0x8]
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- strh r1, [r0, #0x0]
- ldr r1, _0203A6C4 ; =FUN_0203A6C8
- add r0, r5, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_0203A6C4: .word FUN_0203A6C8
-
- thumb_func_start FUN_0203A6C8
-FUN_0203A6C8: ; 0x0203A6C8
- push {r4-r7, lr}
- sub sp, #0xc
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x31
- add r0, r4, #0x0
- bl FUN_02039438
- add r7, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x32
- bl FUN_02039438
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- mov r1, #0x33
- bl FUN_02039438
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r1, #0x34
- bl FUN_02039438
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- mov r1, #0x2d
- bl FUN_02039438
- add r6, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x2e
- bl FUN_02039438
- add r5, r0, #0x0
- ldrh r0, [r6, #0x0]
- cmp r0, #0x0
- bne _0203A71E
- ldrh r0, [r5, #0x0]
- cmp r0, #0x0
- bne _0203A71E
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0203A71E:
- ldrh r3, [r7, #0x0]
- cmp r3, #0x0
- beq _0203A740
- ldr r0, [sp, #0x8]
- ldrh r0, [r0, #0x0]
- cmp r0, #0x0
- ldr r0, [r4, #0x8]
- bne _0203A738
- mov r1, #0x3
- mov r2, #0x1
- bl FUN_020179E0
- b _0203A740
-_0203A738:
- mov r1, #0x3
- mov r2, #0x2
- bl FUN_020179E0
-_0203A740:
- ldr r0, [sp, #0x4]
- ldrh r3, [r0, #0x0]
- cmp r3, #0x0
- beq _0203A764
- ldr r0, [sp, #0x0]
- ldrh r0, [r0, #0x0]
- cmp r0, #0x0
- ldr r0, [r4, #0x8]
- bne _0203A75C
- mov r1, #0x3
- mov r2, #0x4
- bl FUN_020179E0
- b _0203A764
-_0203A75C:
- mov r1, #0x3
- mov r2, #0x5
- bl FUN_020179E0
-_0203A764:
- ldrh r0, [r6, #0x0]
- cmp r0, #0x0
- beq _0203A76E
- sub r0, r0, #0x1
- strh r0, [r6, #0x0]
-_0203A76E:
- ldrh r0, [r5, #0x0]
- cmp r0, #0x0
- beq _0203A778
- sub r0, r0, #0x1
- strh r0, [r5, #0x0]
-_0203A778:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0203A780
-FUN_0203A780: ; 0x0203A780
- push {r4-r7, lr}
- sub sp, #0x1c
- add r5, r0, #0x0
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x11
- add r0, r4, #0x0
- bl FUN_02039438
- str r0, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x10
- bl FUN_02039438
- add r7, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0xf
- bl FUN_02039438
- str r0, [sp, #0x14]
- ldr r0, [r5, #0x8]
- add r1, r0, #0x1
- str r1, [r5, #0x8]
- ldrb r0, [r0, #0x0]
- str r0, [sp, #0xc]
- add r0, r1, #0x1
- str r0, [r5, #0x8]
- ldrb r0, [r1, #0x0]
- str r0, [sp, #0x10]
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- cmp r6, #0x0
- bne _0203A7E0
- add r0, r4, #0x0
- mov r1, #0xa
- bl FUN_02039438
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- bl FUN_02058510
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
-_0203A7E0:
- ldr r0, [r4, #0x60]
- ldr r1, [sp, #0x10]
- add r2, r6, #0x0
- bl MOD05_021E8128
- ldr r0, [r4, #0x60]
- mov r1, #0x1
- bl MOD05_021E8130
- add r0, r4, #0x0
- bl MOD05_021E8158
- ldr r2, [sp, #0x18]
- ldr r0, [r5, #0x78]
- ldr r1, [sp, #0xc]
- ldr r2, [r2, #0x0]
- bl ReadMsgDataIntoString
- ldr r0, [sp, #0x14]
- ldr r2, [sp, #0x18]
- ldr r0, [r0, #0x0]
- ldr r1, [r7, #0x0]
- ldr r2, [r2, #0x0]
- bl StringExpandPlaceholders
- ldr r0, [r4, #0x60]
- bl MOD05_021E8140
- mov r3, #0x0
- str r3, [sp, #0x0]
- str r3, [sp, #0x4]
- str r3, [sp, #0x8]
- ldr r2, [r7, #0x0]
- mov r1, #0x1
- bl AddTextPrinterParameterized
- mov r0, #0x1
- add sp, #0x1c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0203A830
-FUN_0203A830: ; 0x0203A830
- push {r3-r5, lr}
- add r1, r0, #0x0
- add r1, #0x80
- ldr r2, [r0, #0x8]
- ldr r4, [r1, #0x0]
- add r1, r2, #0x1
- str r1, [r0, #0x8]
- ldrb r5, [r2, #0x0]
- bl ScriptReadHalfword
- add r2, r0, #0x0
- ldr r0, [r4, #0x60]
- add r1, r5, #0x0
- bl MOD05_021E8128
- ldr r0, [r4, #0x60]
- mov r1, #0x1
- bl MOD05_021E8130
- mov r0, #0x1
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0203A85C
-FUN_0203A85C: ; 0x0203A85C
- push {r3, lr}
- add r1, r0, #0x0
- add r1, #0x80
- ldr r2, [r0, #0x8]
- ldr r3, [r1, #0x0]
- add r1, r2, #0x1
- str r1, [r0, #0x8]
- ldrb r1, [r2, #0x0]
- ldr r0, [r3, #0x60]
- bl MOD05_021E8130
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0203A878
-FUN_0203A878: ; 0x0203A878
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x60]
- bl MOD05_021E8148
- cmp r0, #0x1
- bne _0203A88E
- mov r0, #0x0
- pop {r4, pc}
-_0203A88E:
- ldr r1, _0203A89C ; =FUN_0203A8A0
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- nop
-_0203A89C: .word FUN_0203A8A0
-
- thumb_func_start FUN_0203A8A0
-FUN_0203A8A0: ; 0x0203A8A0
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x60]
- bl MOD05_021E8148
- cmp r0, #0x1
- bne _0203A8B4
- mov r0, #0x1
- pop {r3, pc}
-_0203A8B4:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_0203A8B8
-FUN_0203A8B8: ; 0x0203A8B8
- push {r3-r7, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- add r0, #0x80
- ldr r4, [r0, #0x0]
- mov r1, #0x3
- add r0, r4, #0x0
- bl FUN_02039438
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r1, #0x11
- bl FUN_02039438
- add r6, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x10
- bl FUN_02039438
- add r7, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0xf
- bl FUN_02039438
- ldr r1, [r5, #0x8]
- str r0, [sp, #0x8]
- add r0, r1, #0x1
- str r0, [r5, #0x8]
- ldrb r0, [r1, #0x0]
- str r0, [sp, #0x0]
- add r0, r5, #0x0
- bl ScriptReadHalfword
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x78]
- ldr r1, [sp, #0x0]
- ldr r2, [r6, #0x0]
- bl ReadMsgDataIntoString
- ldr r0, [sp, #0x8]
- ldr r1, [r7, #0x0]
- ldr r0, [r0, #0x0]
- ldr r2, [r6, #0x0]
- bl StringExpandPlaceholders
- ldr r0, [r4, #0x60]
- bl MOD05_021E8140
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r2, r0, #0x0
- ldr r1, [r7, #0x0]
- add r0, r4, #0x0
- mov r3, #0x1
- bl FUN_02054658
- ldr r1, [sp, #0x4]
- strb r0, [r1, #0x0]
- ldr r0, [sp, #0xc]
- ldr r1, _0203A948 ; =FUN_0203A94C
- str r0, [r5, #0x64]
- add r0, r5, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-_0203A948: .word FUN_0203A94C
-
- thumb_func_start FUN_0203A94C
-FUN_0203A94C: ; 0x0203A94C
- push {r3-r7, lr}
- add r7, r0, #0x0
- add r0, #0x80
- ldr r5, [r0, #0x0]
- mov r1, #0x3
- add r0, r5, #0x0
- bl FUN_02039438
- ldr r1, [r7, #0x64]
- add r6, r0, #0x0
- lsl r1, r1, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- bl GetVarPointer
- add r4, r0, #0x0
- ldr r0, [r5, #0x60]
- bl MOD05_021E8144
- ldrb r0, [r6, #0x0]
- ldr r5, _0203A9E8 ; =0x0000FFFF
- bl FUN_020546C8
- cmp r0, #0x1
- bne _0203A986
- mov r0, #0x2
- strh r0, [r4, #0x0]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0203A986:
- ldr r0, _0203A9EC ; =gMain
- mov r1, #0x40
- ldr r0, [r0, #0x48]
- tst r1, r0
- beq _0203A994
- mov r5, #0x0
- b _0203A9B0
-_0203A994:
- mov r1, #0x80
- tst r1, r0
- beq _0203A99E
- mov r5, #0x1
- b _0203A9B0
-_0203A99E:
- mov r1, #0x20
- tst r1, r0
- beq _0203A9A8
- mov r5, #0x2
- b _0203A9B0
-_0203A9A8:
- mov r1, #0x10
- tst r1, r0
- beq _0203A9B0
- mov r5, #0x3
-_0203A9B0:
- ldr r1, _0203A9E8 ; =0x0000FFFF
- cmp r5, r1
- beq _0203A9D0
- ldrb r0, [r6, #0x0]
- bl FUN_0201BD7C
- add r7, #0x80
- ldr r0, [r7, #0x0]
- add r1, r5, #0x0
- ldr r0, [r0, #0x38]
- bl FUN_02055304
- mov r0, #0x0
- strh r0, [r4, #0x0]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0203A9D0:
- mov r1, #0x1
- lsl r1, r1, #0xa
- tst r0, r1
- beq _0203A9E4
- ldrb r0, [r6, #0x0]
- bl FUN_0201BD7C
- mov r0, #0x1
- strh r0, [r4, #0x0]
- pop {r3-r7, pc}
-_0203A9E4:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-_0203A9E8: .word 0x0000FFFF
-_0203A9EC: .word gMain
-
- thumb_func_start FUN_0203A9F0
-FUN_0203A9F0: ; 0x0203A9F0
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- str r0, [r4, #0x64]
- ldr r1, _0203AA08 ; =FUN_0203AA0C
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- nop
-_0203AA08: .word FUN_0203AA0C
-
thumb_func_start FUN_0203AA0C
FUN_0203AA0C: ; 0x0203AA0C
push {r3-r5, lr}
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 3978d8c1..95ca2106 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -194,23 +194,23 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_SetOrCopyVar
.word ScrCmd_Message
.word ScrCmd_Unk002C
- .word FUN_0203A304
- .word FUN_0203A388
- .word FUN_0203A400
- .word FUN_0203A45C
- .word FUN_0203A4D0
- .word FUN_0203A560
- .word FUN_0203A590
- .word FUN_0203A5D8
- .word FUN_0203A608
- .word FUN_0203A780
- .word FUN_0203A830
- .word FUN_0203A85C
- .word FUN_0203A878
- .word FUN_0203A8B8
- .word FUN_0203A9F0
+ .word ScrCmd_Unk002D
+ .word ScrCmd_Unk002E
+ .word ScrCmd_Unk002F
+ .word ScrCmd_WaitButtonAB
+ .word ScrCmd_WaitButton
+ .word ScrCmd_Unk0032
+ .word ScrCmd_Unk0033
+ .word ScrCmd_Unk0034
+ .word ScrCmd_Unk0035
+ .word ScrCmd_CreateMessageBox
+ .word ScrCmd_Unk0037
+ .word ScrCmd_Unk0038
+ .word ScrCmd_Unk0039
+ .word ScrCmd_Unk003A
+ .word ScrCmd_Unk003B
.word FUN_0203AA90
- .word FUN_0203A630
+ .word ScrCmd_ScrollBg
.word FUN_0203AAA0
.word FUN_0203DEA8
.word FUN_0203AB8C
@@ -549,7 +549,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203AB44
.word FUN_0203AB74
.word FUN_0203DBD4
- .word FUN_0203A484
+ .word ScrCmd_WaitButtonABTime
.word FUN_0203B8E4
.word FUN_0203B944
.word FUN_0203B968
@@ -673,7 +673,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203BE50
.word FUN_0203BECC
.word FUN_0203BF00
- .word FUN_0203A3C4
+ .word ScrCmd_Unk020C
.word FUN_0203E684
.word FUN_0203E6B4
.word FUN_0203E6C4
@@ -853,7 +853,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203D0A4
.word FUN_0203FC58
.word FUN_0203CAE8
- .word FUN_0203A340
+ .word ScrCmd_Unk02C0
.word FUN_0203FC80
.word FUN_0203FCB0
.word FUN_0203FCDC
diff --git a/arm9/global.inc b/arm9/global.inc
index 337d2c0c..c8834374 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2751,25 +2751,25 @@
.extern ScrCmd_Unk01FF
.extern ScrCmd_Unk026D
.extern ScrCmd_Unk002C
-.extern FUN_0203A304
-.extern FUN_0203A340
-.extern FUN_0203A388
-.extern FUN_0203A3C4
-.extern FUN_0203A400
-.extern FUN_0203A45C
-.extern FUN_0203A484
-.extern FUN_0203A4D0
-.extern FUN_0203A560
-.extern FUN_0203A590
-.extern FUN_0203A5D8
-.extern FUN_0203A608
-.extern FUN_0203A630
-.extern FUN_0203A780
-.extern FUN_0203A830
-.extern FUN_0203A85C
-.extern FUN_0203A878
-.extern FUN_0203A8B8
-.extern FUN_0203A9F0
+.extern ScrCmd_Unk002D
+.extern ScrCmd_Unk02C0
+.extern ScrCmd_Unk002E
+.extern ScrCmd_Unk020C
+.extern ScrCmd_Unk002F
+.extern ScrCmd_WaitButtonAB
+.extern ScrCmd_WaitButtonABTime
+.extern ScrCmd_WaitButton
+.extern ScrCmd_Unk0032
+.extern ScrCmd_Unk0033
+.extern ScrCmd_Unk0034
+.extern ScrCmd_Unk0035
+.extern ScrCmd_ScrollBg
+.extern ScrCmd_CreateMessageBox
+.extern ScrCmd_Unk0037
+.extern ScrCmd_Unk0038
+.extern ScrCmd_Unk0039
+.extern ScrCmd_Unk003A
+.extern ScrCmd_Unk003B
.extern FUN_0203AA90
.extern FUN_0203AAA0
.extern FUN_0203AB44
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index 9e6a337a..870d6353 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -1,5 +1,9 @@
#include "scrcmd.h"
#include "unk_0204639C.h"
+#include "main.h"
+#include "options.h"
+#include "player_data.h"
+#include "text.h"
extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16);
extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk);
@@ -19,35 +23,61 @@ extern struct ScrStrBufs *MOD06_02244210(struct SaveBlock2 *sav, u16 poke, u16 s
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);
+extern u32 FUN_02058488(u32 param0);
+extern BOOL FUN_02030F40(void);
+extern void FUN_02055304(u32 param0, u32 param1);
+extern void FUN_02039460(struct UnkSavStruct80 *arg);
+extern void FUN_02055304(u32 param0, u32 param1);
+extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2);
+extern void FUN_02054608(u8 *param0, struct Options *options);
+extern void FUN_0200D0E0(u32 *param0, u32 param1);
+extern void FUN_02019178(u32 *param0);
+extern void FUN_020179E0(u32 param0, u32 param1, u32 param2, u16 val);
+extern u32 FUN_02058510(u32 param0, u32 param1);
+extern void MOD05_021E8128(u32 param0, u8 type, u16 map);
+extern void MOD05_021E8130(u32 param0, u32 param1);
+extern void MOD05_021E8158(struct UnkSavStruct80 *unk80);
+extern u32 MOD05_021E8140(u32 param0);
+extern BOOL MOD05_021E8148(u32 param0);
+extern u8 FUN_02054658(u32 param0, struct String *str, struct Options *opt, u32 param3);
+extern void MOD05_021E8144(u32 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);
+static BOOL FUN_02039CC8(struct ScriptContext *ctx);
+/*static*/ BOOL FUN_0203A2F0(struct ScriptContext *ctx);
+static BOOL FUN_0203A46C(struct ScriptContext *ctx);
+static BOOL FUN_0203A4AC(struct ScriptContext *ctx);
+static BOOL FUN_0203A4E0(struct ScriptContext *ctx);
+static BOOL FUN_0203A570(struct ScriptContext *ctx);
+static BOOL FUN_0203A6C8(struct ScriptContext *ctx);
+static BOOL FUN_0203A8A0(struct ScriptContext *ctx);
+static BOOL FUN_0203A94C(struct ScriptContext *ctx);
+/*static*/ BOOL FUN_0203AA0C(struct ScriptContext *ctx);
extern u8 sScriptConditionTable[6][3];
-THUMB_FUNC BOOL ScrCmd_Nop(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Nop(struct ScriptContext *ctx)
{
#pragma unused(ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Dummy(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Dummy(struct ScriptContext *ctx)
{
#pragma unused(ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext *ctx)
{
StopScript(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext *ctx)
{
- struct UnkSavStruct80* arg = ctx->unk80;
+ struct UnkSavStruct80 *arg = ctx->unk80;
u16 num = ScriptReadHalfword(ctx);
u16 wk = ScriptReadHalfword(ctx);
u16* VarPointer = GetVarPointer(arg, wk);
@@ -57,56 +87,56 @@ THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC static BOOL RunPauseTimer(struct ScriptContext* ctx)
+THUMB_FUNC static BOOL RunPauseTimer(struct ScriptContext *ctx)
{
u16* VarPointer = GetVarPointer(ctx->unk80, (u16)ctx->data[0]);
*VarPointer = (u16)(*VarPointer - 1);
return !(*VarPointer);
}
-THUMB_FUNC BOOL ScrCmd_DebugWatch(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_DebugWatch(struct ScriptContext *ctx)
{
u16 wk = ScriptReadHalfword(ctx);
VarGet(ctx->unk80, wk);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_LoadByte(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_LoadByte(struct ScriptContext *ctx)
{
u8 index = ScriptReadByte(ctx);
ctx->data[index] = ScriptReadByte(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_LoadWord(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_LoadWord(struct ScriptContext *ctx)
{
u8 index = ScriptReadByte(ctx);
ctx->data[index] = ScriptReadWord(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_LoadByteFromAddr(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_LoadByteFromAddr(struct ScriptContext *ctx)
{
u8 index = ScriptReadByte(ctx);
ctx->data[index] = *(u8 *)ScriptReadWord(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_WriteByteToAddr(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_WriteByteToAddr(struct ScriptContext *ctx)
{
u8* ptr = (u8*)ScriptReadWord(ctx);
*ptr = ScriptReadByte(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SetPtrByte(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetPtrByte(struct ScriptContext *ctx)
{
u8* ptr = (u8*)ScriptReadWord(ctx);
*ptr = (u8)ctx->data[ScriptReadByte(ctx)];
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext *ctx)
{
u8 index_store = ScriptReadByte(ctx);
u8 index_load = ScriptReadByte(ctx);
@@ -114,7 +144,7 @@ THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CopyByte(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CopyByte(struct ScriptContext *ctx)
{
u8 *target = (u8 *)ScriptReadWord(ctx);
u8 *source = (u8 *)ScriptReadWord(ctx);
@@ -138,7 +168,7 @@ THUMB_FUNC static u32 Compare(u16 a, u16 b)
}
}
-THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext *ctx)
{
u8 a = (u8)ctx->data[ScriptReadByte(ctx)];
u8 b = (u8)ctx->data[ScriptReadByte(ctx)];
@@ -146,7 +176,7 @@ THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext *ctx)
{
u8 a = (u8)ctx->data[ScriptReadByte(ctx)];
u8 b = ScriptReadByte(ctx);
@@ -154,7 +184,7 @@ THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext *ctx)
{
u8 a = (u8)ctx->data[ScriptReadByte(ctx)];
u8 b = *(u8*)ScriptReadWord(ctx);
@@ -162,7 +192,7 @@ THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext *ctx)
{
u8 a = *(u8*)ScriptReadWord(ctx);
u8 b = (u8)ctx->data[ScriptReadByte(ctx)];
@@ -170,7 +200,7 @@ THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext *ctx)
{
u8 a = *(u8*)ScriptReadWord(ctx);
u8 b = (u8)ScriptReadByte(ctx);
@@ -178,7 +208,7 @@ THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext *ctx)
{
u8 a = *(u8*)ScriptReadWord(ctx);
u8 b = *(u8*)ScriptReadWord(ctx);
@@ -186,7 +216,7 @@ THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext *ctx)
{
u16 a = *GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u16 b = ScriptReadHalfword(ctx);
@@ -194,7 +224,7 @@ THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext *ctx)
{
u16 *a = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u16 *b = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -202,9 +232,9 @@ THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext *ctx)
{
- struct UnkSavStruct80* unk80 = ctx->unk80;
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x7);
u32 **unk2 = (u32 **)FUN_02039438(unk80, 0xe);
u16 id = ScriptReadHalfword(ctx);
@@ -214,9 +244,9 @@ THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext *ctx)
{
- struct UnkSavStruct80* unk80 = ctx->unk80;
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x5);
u8 *unk2 = (u8 *)FUN_02039438(unk80, 0x7);
u32 **unk3 = (u32 **)FUN_02039438(unk80, 0xe);
@@ -230,7 +260,7 @@ THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext* ctx)
+THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext *ctx)
{
u8* unk = FUN_02039438(ctx->unk80, 0x5);
@@ -241,7 +271,7 @@ THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext *ctx)
{
u8* unk = (u8 *)FUN_02039438(ctx->unk80, 0x5);
@@ -249,14 +279,14 @@ THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_GoTo(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GoTo(struct ScriptContext *ctx)
{
s32 offset = (s32)ScriptReadWord(ctx);
ScriptJump(ctx, ctx->scriptPtr + offset);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext *ctx)
{
u32* unk = FUN_02039438(ctx->unk80, 0xa);
u8 id = ScriptReadByte(ctx);
@@ -268,7 +298,7 @@ THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext *ctx)
{
u32 bgId = FUN_02046534(ctx->unk74);
u8 id = ScriptReadByte(ctx);
@@ -281,7 +311,7 @@ THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext *ctx)
{
u32 *playerDirection = FUN_02039438(ctx->unk80, 0x9);
u8 dir = ScriptReadByte(ctx);
@@ -294,20 +324,20 @@ THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Call(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Call(struct ScriptContext *ctx)
{
s32 offset = (s32)ScriptReadWord(ctx);
ScriptCall(ctx, ctx->scriptPtr + offset);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Return(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Return(struct ScriptContext *ctx)
{
ScriptReturn(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext *ctx)
{
u8 compareType = ScriptReadByte(ctx);
s32 offset = (s32)ScriptReadWord(ctx);
@@ -319,7 +349,7 @@ THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext *ctx)
{
u8 compareType = ScriptReadByte(ctx);
s32 offset = (s32)ScriptReadWord(ctx);
@@ -331,7 +361,7 @@ THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 flag = ScriptReadHalfword(ctx);
@@ -339,7 +369,7 @@ THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 flag = ScriptReadHalfword(ctx);
@@ -347,7 +377,7 @@ THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 flag = ScriptReadHalfword(ctx);
@@ -355,7 +385,7 @@ THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -364,7 +394,7 @@ THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -372,7 +402,7 @@ THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -380,7 +410,7 @@ THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -388,7 +418,7 @@ THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -396,7 +426,7 @@ THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext *ctx)
{
u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -404,7 +434,7 @@ THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext *ctx)
{
u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -412,14 +442,14 @@ THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SetVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetVar(struct ScriptContext *ctx)
{
u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
*wk = ScriptReadHalfword(ctx);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext *ctx)
{
u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u16 *wk2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -427,7 +457,7 @@ THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext *ctx)
{
u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -435,14 +465,14 @@ THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Message(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Message(struct ScriptContext *ctx)
{
u8 id = ScriptReadByte(ctx);
MOD05_ShowMessageInField(ctx, ctx->msgData, id);
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext *ctx)
{
u16 arc = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -452,7 +482,7 @@ THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext *ctx)
{
u16 arc = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -463,7 +493,7 @@ THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext *ctx)
{
u16 typ = ScriptReadHalfword(ctx);
u16 id = ScriptReadHalfword(ctx);
@@ -474,7 +504,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext *ctx)
{
u16 typ = ScriptReadHalfword(ctx);
u16 id = ScriptReadHalfword(ctx);
@@ -486,7 +516,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext *ctx)
{
u8 id = ScriptReadByte(ctx);
@@ -510,7 +540,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext *ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
u8 msg = ScriptReadByte(ctx);
@@ -527,7 +557,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext* ctx) //message unown font?
+THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext *ctx) //message unown font?
{
struct UnkStruct_0203A288 myLocalStruct;
u16 msg = ScriptReadHalfword(ctx);
@@ -541,7 +571,7 @@ THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext* ctx) //message unown font?
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext *ctx)
{
u8 msg = ScriptReadByte(ctx);
MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL);
@@ -549,8 +579,418 @@ THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC /*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx)
+THUMB_FUNC /*static*/ BOOL FUN_0203A2F0(struct ScriptContext *ctx)
{
u8 *unk = (u8 *)FUN_02039438(ctx->unk80, 3);
return FUN_020546C8(*unk);
}
+
+THUMB_FUNC BOOL ScrCmd_Unk002D(struct ScriptContext *ctx)
+{
+ u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ MOD05_021E2BD0(ctx, ctx->msgData, (u8)msg, 1, NULL);
+ SetupNativeScript(ctx, FUN_0203A2F0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk02C0(struct ScriptContext *ctx)
+{
+ struct UnkStruct_0203A288 myLocalStruct;
+ u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ MOD05_021E2BB8(&myLocalStruct, ctx);
+ myLocalStruct.unk1 = 1;
+
+ MOD05_021E2BD0(ctx, ctx->msgData, (u8)msg, 1, &myLocalStruct);
+ SetupNativeScript(ctx, FUN_0203A2F0);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk002E(struct ScriptContext *ctx)
+{
+ u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ MOD05_021E2BD0(ctx, ctx->msgData, (u8)msg, 0, NULL);
+ SetupNativeScript(ctx, FUN_0203A2F0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk020C(struct ScriptContext *ctx)
+{
+ u32 *unk = FUN_02039438(ctx->unk80, 0xa);
+ u8 msg = (u8)FUN_02058488(*unk);
+ MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL);
+ SetupNativeScript(ctx, FUN_0203A2F0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk002F(struct ScriptContext *ctx)
+{
+ u8 msg = ScriptReadByte(ctx);
+
+ if (!FUN_02030F40())
+ {
+ MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL);
+ }
+ else
+ {
+ struct UnkStruct_0203A288 myLocalStruct;
+ MOD05_021E2BB8(&myLocalStruct, ctx);
+ myLocalStruct.unk0 = 1;
+ myLocalStruct.unk1 = 1;
+ MOD05_021E2BD0(ctx, ctx->msgData, msg, 0, &myLocalStruct);
+ }
+
+ SetupNativeScript(ctx, FUN_0203A2F0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_WaitButtonAB(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, FUN_0203A46C);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A46C(struct ScriptContext *ctx)
+{
+#pragma unused(ctx)
+ if (gMain.unk48 & 0x3) // Mask (A | B) ?
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx)
+{
+ ctx->data[0] = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ SetupNativeScript(ctx, FUN_0203A4AC);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A4AC(struct ScriptContext *ctx)
+{
+ if (gMain.unk48 & 0x3) // Mask (A | B) ?
+ {
+ return TRUE;
+ }
+ ctx->data[0] = ctx->data[0] - 1;
+
+ if (ctx->data[0] == 0)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_WaitButton(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, FUN_0203A4E0);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx)
+{
+ if (gMain.unk48 & 3)
+ {
+ return TRUE;
+ }
+ else if (gMain.unk48 & 0x40)
+ {
+ FUN_02055304(ctx->unk80->unk38, 0);
+ }
+ else if (gMain.unk48 & 0x80)
+ {
+ FUN_02055304(ctx->unk80->unk38, 1);
+ }
+ else if (gMain.unk48 & 0x20)
+ {
+ FUN_02055304(ctx->unk80->unk38, 2);
+ }
+ else if (gMain.unk48 & 0x10)
+ {
+ FUN_02055304(ctx->unk80->unk38, 3);
+ }
+ else if (gMain.unk48 & 0x400)
+ {
+ FUN_02039460(ctx->unk80);
+ }
+ else
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, FUN_0203A570);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A570(struct ScriptContext *ctx)
+{
+#pragma unused(ctx)
+ if (gMain.unk48 & 0x3)
+ {
+ return TRUE;
+ }
+ else if (gMain.unk48 & 0xf0)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u8 *unk = (u8 *)FUN_02039438(unk80, 6);
+ FUN_020545B8(unk80->unk08, FUN_02039438(unk80, 1), 3);
+ FUN_02054608(FUN_02039438(unk80, 1), Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2));
+ *unk = 1;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u32 *unk = FUN_02039438(unk80, 0x1); //windowID?
+ u8 *unk2 = FUN_02039438(unk80, 0x6);
+ FUN_0200D0E0(unk, 0); //clear window?
+ FUN_02019178(unk);
+ *unk2 = 0;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0035(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u32 *unk = FUN_02039438(unk80, 0x1); //windowID?
+ u8 *unk2 = FUN_02039438(unk80, 0x6);
+ FUN_02019178(unk);
+ *unk2 = 0;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_ScrollBg(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u16 *xval = FUN_02039438(unk80, 0x31);
+ u16 *xcnt = FUN_02039438(unk80, 0x2d);
+ u16 *xdir = FUN_02039438(unk80, 0x32);
+ u16 *yval = FUN_02039438(unk80, 0x33);
+ u16 *ycnt = FUN_02039438(unk80, 0x2e);
+ u16 *ydir = FUN_02039438(unk80, 0x34);
+
+ *xval = ScriptReadByte(ctx);
+ *xcnt = ScriptReadByte(ctx);
+ *xdir = ScriptReadByte(ctx);
+ *yval = ScriptReadByte(ctx);
+ *ycnt = ScriptReadByte(ctx);
+ *ydir = ScriptReadByte(ctx);
+
+ SetupNativeScript(ctx, FUN_0203A6C8);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A6C8(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u16 *xval = FUN_02039438(unk80, 0x31);
+ u16 *xdir = FUN_02039438(unk80, 0x32);
+ u16 *yval = FUN_02039438(unk80, 0x33);
+ u16 *ydir = FUN_02039438(unk80, 0x34);
+ u16 *xcnt = FUN_02039438(unk80, 0x2d);
+ u16 *ycnt = FUN_02039438(unk80, 0x2e);
+
+ if (*xcnt == 0 && *ycnt == 0)
+ {
+ return TRUE;
+ }
+
+ if (*xval != 0)
+ {
+ if (*xdir == 0)
+ {
+ FUN_020179E0(unk80->unk08, 3, 1, *xval);
+ }
+ else
+ {
+ FUN_020179E0(unk80->unk08, 3, 2, *xval);
+ }
+ }
+
+ if (*yval != 0)
+ {
+ if (*ydir == 0)
+ {
+ FUN_020179E0(unk80->unk08, 3, 4, *yval);
+ }
+ else
+ {
+ FUN_020179E0(unk80->unk08, 3, 5, *yval);
+ }
+ }
+
+ if (*xcnt != 0)
+ {
+ *xcnt = (u16)(*xcnt - 1);
+ }
+
+ if (*ycnt != 0)
+ {
+ *ycnt = (u16)(*ycnt - 1);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ struct String **unk1 = FUN_02039438(unk80, 0x11);
+ struct String **unk2 = FUN_02039438(unk80, 0x10);
+ struct ScrStrBufs **unk3 = FUN_02039438(unk80, 0x0f);
+ u8 typ, msg;
+ u16 wk, map;
+
+ msg = ScriptReadByte(ctx);
+ typ = ScriptReadByte(ctx);
+ map = ScriptReadHalfword(ctx);
+ wk = ScriptReadHalfword(ctx);
+
+ if (map == 0)
+ {
+ u32 *unk4 = FUN_02039438(unk80, 10);
+ map = (u16)FUN_02058510(*unk4, 0);
+ }
+
+ MOD05_021E8128(unk80->unk60, typ, map);
+ MOD05_021E8130(unk80->unk60, 1);
+ MOD05_021E8158(unk80);
+ ReadMsgDataIntoString(ctx->msgData, msg, *unk1);
+ StringExpandPlaceholders(*unk3, *unk2, *unk1);
+ AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, (u16 *)*unk2, 0, 0, 0, NULL);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0037(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u8 typ = ScriptReadByte(ctx);
+ u16 map = ScriptReadHalfword(ctx);
+
+ MOD05_021E8128(unk80->unk60, typ, map);
+ MOD05_021E8130(unk80->unk60, 1);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0038(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u8 req = ScriptReadByte(ctx);
+ MOD05_021E8130(unk80->unk60, req);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0039(struct ScriptContext *ctx)
+{
+ if (MOD05_021E8148(ctx->unk80->unk60) == TRUE)
+ {
+ return FALSE;
+ }
+
+ SetupNativeScript(ctx, FUN_0203A8A0);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A8A0(struct ScriptContext *ctx)
+{
+ if (MOD05_021E8148(ctx->unk80->unk60) == TRUE)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk003A(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u8 *unk1 = FUN_02039438(unk80, 3);
+ struct String **unk2 = FUN_02039438(unk80, 17);
+ struct String **unk3 = FUN_02039438(unk80, 16);
+ struct ScrStrBufs **unk4 = FUN_02039438(unk80, 15);
+
+ u8 msg = ScriptReadByte(ctx);
+ u16 wk = ScriptReadHalfword(ctx);
+
+ ReadMsgDataIntoString(ctx->msgData, msg, *unk2);
+ StringExpandPlaceholders(*unk4, *unk3, *unk2);
+
+ *unk1 = FUN_02054658(MOD05_021E8140(unk80->unk60), *unk3, Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2), 1);
+ ctx->data[0] = wk;
+ SetupNativeScript(ctx, FUN_0203A94C);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u8 *unk1 = FUN_02039438(unk80, 3);
+ u16 *varPtr = GetVarPointer(unk80, (u16)ctx->data[0]);
+ MOD05_021E8144(unk80->unk60);
+
+ u32 tmp = 0xFFFF;
+ if (FUN_020546C8(*unk1) == TRUE)
+ {
+ *varPtr = 2;
+ return TRUE;
+ }
+
+ if (gMain.unk48 & 0x40)
+ {
+ tmp = 0;
+ }
+ else if (gMain.unk48 & 0x80)
+ {
+ tmp = 1;
+ }
+ else if (gMain.unk48 & 0x20)
+ {
+ tmp = 2;
+ }
+ else if (gMain.unk48 & 0x10)
+ {
+ tmp = 3;
+ }
+
+ if (tmp != 0xFFFF)
+ {
+ FUN_0201BD7C(*unk1);
+ FUN_02055304(ctx->unk80->unk38, tmp);
+ *varPtr = 0;
+ return TRUE;
+ }
+ else
+ {
+ if (gMain.unk48 & 0x400)
+ {
+ FUN_0201BD7C(*unk1);
+ *varPtr = 1;
+ return TRUE;
+ }
+ return FALSE;
+ }
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk003B(struct ScriptContext *ctx)
+{
+ ctx->data[0] = ScriptReadHalfword(ctx);
+
+ SetupNativeScript(ctx, FUN_0203AA0C);
+ return TRUE;
+}
diff --git a/arm9/src/script.c b/arm9/src/script.c
index d067ac79..2fa80058 100644
--- a/arm9/src/script.c
+++ b/arm9/src/script.c
@@ -17,7 +17,7 @@ THUMB_FUNC void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, u32
for (i = 0; i < NELEMS(ctx->stack); i++)
ctx->stack[i] = NULL;
- ctx->unk74 = 0;
+ ctx->unk74 = NULL;
}
THUMB_FUNC u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr)
@@ -39,9 +39,9 @@ THUMB_FUNC void StopScript(struct ScriptContext *ctx)
ctx->scriptPtr = 0;
}
-THUMB_FUNC void FUN_02038B6C(struct ScriptContext *ctx, s32 r1)
+THUMB_FUNC void FUN_02038B6C(struct ScriptContext *ctx, struct UnkStruct_0204639C *r1)
{
- ctx->unk74 = (u32)r1;
+ ctx->unk74 = r1;
}
THUMB_FUNC u8 RunScriptCommand(struct ScriptContext *ctx)
diff --git a/include/scrcmd.h b/include/scrcmd.h
index f40f7841..1e09095a 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -65,6 +65,25 @@ BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx);
BOOL ScrCmd_Unk026D(struct ScriptContext* ctx);
BOOL ScrCmd_Unk002C(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk002D(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk02C0(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk002E(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk020C(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk002F(struct ScriptContext* ctx);
+BOOL ScrCmd_WaitButtonAB(struct ScriptContext* ctx);
+BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx);
+BOOL ScrCmd_WaitButton(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0032(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0033(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0034(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0035(struct ScriptContext* ctx);
+BOOL ScrCmd_ScrollBg(struct ScriptContext* ctx);
+BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0037(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0038(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0039(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk003A(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk003B(struct ScriptContext *ctx);
//scrcmd_18.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
diff --git a/include/script.h b/include/script.h
index 5da251b5..ab126e09 100644
--- a/include/script.h
+++ b/include/script.h
@@ -25,11 +25,16 @@ struct UnkStruct_02046444
struct UnkSavStruct80
{
- u8 padding[0xC];
- struct SaveBlock2 *saveBlock2;
+ u8 padding[0x8];
+ u32 unk08;
+ struct SaveBlock2 *saveBlock2; //0xC
u8 padding2[0xC];
- u32 *mapId;
- u8 padding3[0x88];
+ u32 *mapId; //0x1C
+ u8 padding3[0x18];
+ u32 unk38;
+ u8 padding4[0x24];
+ u32 unk60;
+ u8 padding5[0x44];
struct UnkStruct_02046444 * unkA8;
};
@@ -44,10 +49,10 @@ struct ScriptContext
ScrCmdFunc *cmdTable;
u32 cmdCount;
u32 data[4];
- struct UnkStruct_0204639C * unk74;
- struct MsgData * msgData;
+ struct UnkStruct_0204639C *unk74;
+ struct MsgData *msgData;
u8 *unk7C;
- struct UnkSavStruct80 * unk80;
+ struct UnkSavStruct80 *unk80;
};
#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))
@@ -56,7 +61,7 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, u32 cmdCount);
u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
void SetupNativeScript(struct ScriptContext *ctx, BOOL (*ptr)(struct ScriptContext *));
void StopScript(struct ScriptContext *ctx);
-void FUN_02038B6C(struct ScriptContext *ctx, s32 r1);
+void FUN_02038B6C(struct ScriptContext *ctx, struct UnkStruct_0204639C *r1);
u8 RunScriptCommand(struct ScriptContext *ctx);
u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
const u8 *ScriptPop(struct ScriptContext *ctx);
diff --git a/tools/asm_processor/compile.sh b/tools/asm_processor/compile.sh
index e10c9334..feef7fc9 100755
--- a/tools/asm_processor/compile.sh
+++ b/tools/asm_processor/compile.sh
@@ -25,3 +25,6 @@ arm-none-eabi-objcopy --remove-section .comment "$PADDED_OBJ" "$OBJ"
rm "$PADDED_SRC"
rm "$PADDED_OBJ"
rm "$PRELUDE"
+rm output.txt
+rm asm_processor_temp.s
+rm asm_processor_temp.o