diff options
author | Revo <projectrevotpp@hotmail.com> | 2021-03-21 18:02:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-21 18:02:05 -0400 |
commit | 9e4080cdfb082a9738a8c159ad9cf1c317a60873 (patch) | |
tree | a2a12e99bdb459c1d0916a2424d7b93207bb3440 | |
parent | 98aafed459ae6869e00462f265effa77bb76d8a4 (diff) | |
parent | a48d4ca5662481736ae0228f2633928c338c9e8f (diff) |
Merge pull request #337 from red031000/master
more scrcmd
-rw-r--r-- | arm9/asm/scrcmd_asm.s | 895 | ||||
-rw-r--r-- | arm9/asm/unk_02038C78.s | 38 | ||||
-rw-r--r-- | arm9/global.inc | 38 | ||||
-rw-r--r-- | arm9/src/scrcmd.c | 566 | ||||
-rw-r--r-- | arm9/src/script.c | 6 | ||||
-rw-r--r-- | include/scrcmd.h | 19 | ||||
-rw-r--r-- | include/script.h | 21 | ||||
-rwxr-xr-x | tools/asm_processor/compile.sh | 3 |
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 |