summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRevo <projectrevotpp@hotmail.com>2021-03-22 10:41:51 -0400
committerGitHub <noreply@github.com>2021-03-22 10:41:51 -0400
commit11fdf1d630a743f3236135028ea51e818331210f (patch)
tree32b91930861e8ff8910a59d00e41b4377d844734
parent9e4080cdfb082a9738a8c159ad9cf1c317a60873 (diff)
parentfb9ded97a1f966f1e5d389e0332b62fe3422c4e3 (diff)
Merge pull request #343 from tgsm/scrcmds
decompile scrcmd 14, 15, 19, 20, 25
-rw-r--r--arm9/arm9.lsf4
-rw-r--r--arm9/asm/scrcmd_14.s267
-rw-r--r--arm9/asm/scrcmd_15.s198
-rw-r--r--arm9/asm/scrcmd_19.s175
-rw-r--r--arm9/asm/scrcmd_20.s56
-rw-r--r--arm9/asm/scrcmd_25.s30
-rw-r--r--arm9/asm/unk_02038C78.s56
-rw-r--r--arm9/global.inc56
-rw-r--r--arm9/src/scrcmd_19.c89
-rw-r--r--arm9/src/scrcmd_20.c38
-rw-r--r--arm9/src/scrcmd_25.c27
-rw-r--r--arm9/src/scrcmd_coins.c140
-rw-r--r--arm9/src/scrcmd_money.c115
-rw-r--r--include/scrcmd.h38
14 files changed, 505 insertions, 784 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 9bd6cb07..d0ea254a 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -165,8 +165,8 @@ Static arm9
Object scrcmd_11.o
Object scrcmd_12.o
Object scrcmd_13.o
- Object scrcmd_14.o
- Object scrcmd_15.o
+ Object scrcmd_coins.o
+ Object scrcmd_money.o
Object scrcmd_16.o
Object scrcmd_17.o
Object scrcmd_18_c.o
diff --git a/arm9/asm/scrcmd_14.s b/arm9/asm/scrcmd_14.s
deleted file mode 100644
index 1fd34357..00000000
--- a/arm9/asm/scrcmd_14.s
+++ /dev/null
@@ -1,267 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02043A44
-FUN_02043A44: ; 0x02043A44
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x26
- bl FUN_02039438
- lsl r1, r6, #0x18
- lsl r2, r7, #0x18
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- lsr r1, r1, #0x18
- lsr r2, r2, #0x18
- bl MOD05_021E2950
- str r0, [r5, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02043A94
-FUN_02043A94: ; 0x02043A94
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x26
- bl FUN_02039438
- ldr r0, [r0, #0x0]
- bl MOD05_021E29B4
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02043AAC
-FUN_02043AAC: ; 0x02043AAC
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x26
- bl FUN_02039438
- add r1, r0, #0x0
- add r4, #0x80
- ldr r0, [r4, #0x0]
- ldr r1, [r1, #0x0]
- bl MOD05_021E29C8
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02043ACC
-FUN_02043ACC: ; 0x02043ACC
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl CheckCoins
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02043AFC
-FUN_02043AFC: ; 0x02043AFC
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl GiveCoins
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02043B28
-FUN_02043B28: ; 0x02043B28
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl TakeCoins
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02043B54
-FUN_02043B54: ; 0x02043B54
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r1, r0, #0x0
- ldrh r1, [r1, #0x0]
- add r0, r4, #0x0
- bl TakeCoins
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02043B84
-FUN_02043B84: ; 0x02043B84
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r5, [r0, #0x0]
- add r0, r5, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- ldr r0, [r5, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadWord
- add r4, r0, #0x0
- add r0, r6, #0x0
- bl CheckCoins
- cmp r0, r4
- bhs _02043BC8
- mov r0, #0x0
- b _02043BCA
-_02043BC8:
- mov r0, #0x1
-_02043BCA:
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02043BD0
-FUN_02043BD0: ; 0x02043BD0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r4, [r0, #0x0]
- add r0, r4, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- ldr r0, [r4, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- ldrh r5, [r0, #0x0]
- add r0, r6, #0x0
- bl CheckCoins
- cmp r0, r5
- bhs _02043C1E
- mov r0, #0x0
- b _02043C20
-_02043C1E:
- mov r0, #0x1
-_02043C20:
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02043C28
-FUN_02043C28: ; 0x02043C28
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetCoinsAddr
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r1, r0, #0x0
- add r0, r6, #0x0
- bl CanGiveCoins
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_15.s b/arm9/asm/scrcmd_15.s
deleted file mode 100644
index e5630b08..00000000
--- a/arm9/asm/scrcmd_15.s
+++ /dev/null
@@ -1,198 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02043C6C
-FUN_02043C6C: ; 0x02043C6C
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadWord
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl PlayerProfile_AddMoney
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02043C90
-FUN_02043C90: ; 0x02043C90
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadWord
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl PlayerProfile_SubMoney
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02043CB4
-FUN_02043CB4: ; 0x02043CB4
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl PlayerProfile_SubMoney
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02043CE4
-FUN_02043CE4: ; 0x02043CE4
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadWord
- add r4, r0, #0x0
- add r0, r6, #0x0
- bl PlayerProfile_GetMoney
- cmp r0, r4
- bhs _02043D20
- mov r0, #0x0
- b _02043D22
-_02043D20:
- mov r0, #0x1
-_02043D22:
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02043D28
-FUN_02043D28: ; 0x02043D28
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r6, #0x0
- bl PlayerProfile_GetMoney
- cmp r0, r4
- bhs _02043D6E
- mov r0, #0x0
- b _02043D70
-_02043D6E:
- mov r0, #0x1
-_02043D70:
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02043D78
-FUN_02043D78: ; 0x02043D78
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x27
- bl FUN_02039438
- lsl r1, r6, #0x18
- lsl r2, r7, #0x18
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- lsr r1, r1, #0x18
- lsr r2, r2, #0x18
- bl MOD05_021E27E8
- str r0, [r5, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02043DC8
-FUN_02043DC8: ; 0x02043DC8
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x27
- bl FUN_02039438
- ldr r0, [r0, #0x0]
- bl MOD05_021E288C
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02043DE0
-FUN_02043DE0: ; 0x02043DE0
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x27
- bl FUN_02039438
- add r1, r0, #0x0
- add r4, #0x80
- ldr r0, [r4, #0x0]
- ldr r1, [r1, #0x0]
- bl MOD05_021E28A0
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_19.s b/arm9/asm/scrcmd_19.s
deleted file mode 100644
index 863006b1..00000000
--- a/arm9/asm/scrcmd_19.s
+++ /dev/null
@@ -1,175 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F450C
-UNK_020F450C: ; 0x020F450C
- .byte 0x67, 0x00
-
- .global UNK_020F450E
-UNK_020F450E: ; 0x020F450E
- .byte 0x8E, 0x00, 0x65, 0x00, 0x8A, 0x00, 0x66, 0x00, 0x8C, 0x00, 0x63, 0x00, 0x59, 0x01, 0x64, 0x00
- .byte 0x5B, 0x01, 0x68, 0x00, 0x9A, 0x01, 0x69, 0x00, 0x98, 0x01
-
- .text
-
- thumb_func_start FUN_02045268
-FUN_02045268: ; 0x02045268
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- mov r4, #0x0
- ldr r7, _020452B0 ; =UNK_020F450C
- str r0, [sp, #0x0]
- add r5, r4, #0x0
-_02045288:
- ldr r0, [r6, #0xc]
- bl Sav2_Bag_get
- lsl r1, r4, #0x2
- ldrh r1, [r7, r1]
- mov r2, #0x4
- bl Bag_GetQuantity
- add r0, r5, r0
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x7
- blo _02045288
- ldr r0, [sp, #0x0]
- strh r5, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-_020452B0: .word UNK_020F450C
-
- thumb_func_start FUN_020452B4
-FUN_020452B4: ; 0x020452B4
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- mov r5, #0x0
- ldr r2, _02045300 ; =UNK_020F450C
- strh r5, [r4, #0x0]
-_020452E0:
- lsl r3, r5, #0x2
- ldrh r1, [r2, r3]
- cmp r0, r1
- bne _020452F0
- ldr r0, _02045304 ; =UNK_020F450E
- ldrh r0, [r0, r3]
- strh r0, [r4, #0x0]
- b _020452FA
-_020452F0:
- add r1, r5, #0x1
- lsl r1, r1, #0x10
- lsr r5, r1, #0x10
- cmp r5, #0x7
- blo _020452E0
-_020452FA:
- mov r0, #0x0
- pop {r3-r5, pc}
- nop
-_02045300: .word UNK_020F450C
-_02045304: .word UNK_020F450E
-
- thumb_func_start FUN_02045308
-FUN_02045308: ; 0x02045308
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- mov r4, #0x0
- ldr r0, [sp, #0x8]
- add r6, r4, #0x0
- strh r4, [r0, #0x0]
- ldr r0, [sp, #0x4]
- strh r4, [r0, #0x0]
-_02045358:
- ldr r0, [r7, #0xc]
- lsl r5, r4, #0x2
- bl Sav2_Bag_get
- ldr r1, _02045394 ; =UNK_020F450C
- mov r2, #0x4
- ldrh r1, [r1, r5]
- bl Bag_GetQuantity
- add r0, r6, r0
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- ldr r0, [sp, #0x0]
- cmp r6, r0
- blo _02045384
- ldr r0, _02045394 ; =UNK_020F450C
- ldrh r1, [r0, r5]
- ldr r0, [sp, #0x8]
- strh r1, [r0, #0x0]
- ldr r0, [sp, #0x4]
- strh r4, [r0, #0x0]
- b _0204538E
-_02045384:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x7
- blo _02045358
-_0204538E:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_02045394: .word UNK_020F450C
-
- thumb_func_start FUN_02045398
-FUN_02045398: ; 0x02045398
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_0204539C
-FUN_0204539C: ; 0x0204539C
- mov r0, #0x0
- bx lr
diff --git a/arm9/asm/scrcmd_20.s b/arm9/asm/scrcmd_20.s
deleted file mode 100644
index 31de1e77..00000000
--- a/arm9/asm/scrcmd_20.s
+++ /dev/null
@@ -1,56 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F4528
-UNK_020F4528: ; 0x020F4528
- .byte 0xFB, 0x00
-
- .global UNK_020F452A
-UNK_020F452A: ; 0x020F452A
- .byte 0xE8, 0x03, 0x09, 0x01, 0xE8, 0x03, 0x14, 0x01, 0xE8, 0x03, 0x15, 0x01, 0xE8, 0x03, 0xA1, 0x01
- .byte 0xD0, 0x07, 0x81, 0x01, 0xD0, 0x07, 0x92, 0x01, 0xA0, 0x0F, 0x67, 0x01, 0xA0, 0x0F, 0x73, 0x01
- .byte 0x70, 0x17, 0xA0, 0x01, 0x70, 0x17, 0x51, 0x01, 0x70, 0x17, 0x62, 0x01, 0x40, 0x1F, 0x5C, 0x01
- .byte 0x40, 0x1F, 0x6A, 0x01, 0x10, 0x27, 0x5F, 0x01, 0x10, 0x27, 0x54, 0x01, 0x10, 0x27, 0x64, 0x01
- .byte 0x10, 0x27, 0x91, 0x01, 0x98, 0x3A, 0x8B, 0x01, 0x20, 0x4E
-
- .text
-
- thumb_func_start FUN_020453A0
-FUN_020453A0: ; 0x020453A0
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- ldr r1, _020453EC ; =UNK_020F4528
- lsl r2, r4, #0x2
- ldrh r1, [r1, r2]
- strh r1, [r6, #0x0]
- ldr r1, _020453F0 ; =UNK_020F452A
- ldrh r1, [r1, r2]
- strh r1, [r0, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-_020453EC: .word UNK_020F4528
-_020453F0: .word UNK_020F452A
diff --git a/arm9/asm/scrcmd_25.s b/arm9/asm/scrcmd_25.s
deleted file mode 100644
index ab6d4787..00000000
--- a/arm9/asm/scrcmd_25.s
+++ /dev/null
@@ -1,30 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02046010
-FUN_02046010: ; 0x02046010
- push {r3, lr}
- bl ErrorHandling
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204601C
-FUN_0204601C: ; 0x0204601C
- push {r3, lr}
- bl ErrorHandling
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02046028
-FUN_02046028: ; 0x02046028
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_0204602C
-FUN_0204602C: ; 0x0204602C
- mov r0, #0x0
- bx lr
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 95ca2106..c9a8bdd6 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -260,18 +260,18 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203B724
.word FUN_0203B758
.word FUN_0203B7D8
- .word FUN_02043C6C
- .word FUN_02043C90
- .word FUN_02043CE4
- .word FUN_02043D78
- .word FUN_02043DC8
- .word FUN_02043DE0
- .word FUN_02043A44
- .word FUN_02043A94
- .word FUN_02043AAC
- .word FUN_02043ACC
- .word FUN_02043AFC
- .word FUN_02043B28
+ .word ScrCmd_GiveMoney
+ .word ScrCmd_TakeMoneyImmediate
+ .word ScrCmd_HasEnoughMoneyImmediate
+ .word ScrCmd_Unk0072
+ .word ScrCmd_Unk0073
+ .word ScrCmd_Unk0074
+ .word ScrCmd_Unk0075
+ .word ScrCmd_Unk0076
+ .word ScrCmd_Unk0077
+ .word ScrCmd_GetCoins
+ .word ScrCmd_GiveCoins
+ .word ScrCmd_TakeCoinsImmediate
.word FUN_02045784
.word FUN_020457DC
.word FUN_02045834
@@ -568,7 +568,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203DE4C
.word FUN_0203DE58
.word FUN_0203DE80
- .word FUN_02043CB4
+ .word ScrCmd_TakeMoneyAddress
.word FUN_02043E9C
.word FUN_02044120
.word FUN_02044138
@@ -576,7 +576,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_02043E50
.word FUN_02043E68
.word FUN_02043EFC
- .word FUN_02043D28
+ .word ScrCmd_HasEnoughMoneyAddress
.word FUN_0203DD50
.word FUN_02044140
.word FUN_02043F50
@@ -646,11 +646,11 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_02044ED8
.word FUN_0203E4D8
.word FUN_02044F20
- .word FUN_02045268
- .word FUN_02045398
- .word FUN_0204539C
- .word FUN_020452B4
- .word FUN_02045308
+ .word ScrCmd_Unk01F1
+ .word ScrCmd_Unk01F2
+ .word ScrCmd_Unk01F3
+ .word ScrCmd_Unk01F4
+ .word ScrCmd_Unk01F5
.word ScrCmd_countpartymonsatorbelowlevel
.word ScrCmd_survivepsn
.word FUN_0203BC2C
@@ -724,10 +724,10 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203EB48
.word FUN_0203EB88
.word FUN_02042D1C
- .word FUN_02046010
- .word FUN_0204601C
- .word FUN_02046028
- .word FUN_0204602C
+ .word ScrCmd_Unk02EF
+ .word ScrCmd_Unk02F0
+ .word ScrCmd_Unk02F1
+ .word ScrCmd_Unk02F2
.word FUN_0203C5BC
.word FUN_0203C614
.word FUN_0203C680
@@ -777,9 +777,9 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203C58C
.word FUN_02040DEC
.word FUN_0203F2AC
- .word FUN_02043B84
+ .word ScrCmd_HasEnoughCoinsImmediate
.word FUN_0203F2E4
- .word FUN_02043C28
+ .word ScrCmd_CanGiveCoins
.word FUN_0203F31C
.word ScrCmd_getpartymonlevel
.word FUN_0203F348
@@ -827,10 +827,10 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203F988
.word FUN_0203F9B0
.word FUN_0203B914
- .word FUN_020453A0
+ .word ScrCmd_Unk02A6
.word FUN_0203FA14
- .word FUN_02043B54
- .word FUN_02043BD0
+ .word ScrCmd_TakeCoinsAddress
+ .word ScrCmd_HasEnoughCoinsAddress
.word FUN_0203FA58
.word FUN_0203B7F0
.word FUN_0203FB4C
diff --git a/arm9/global.inc b/arm9/global.inc
index c8834374..c7d3bd73 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3282,24 +3282,24 @@
.extern FUN_020438D0
.extern FUN_02043918
.extern FUN_020439B4
-.extern FUN_02043A44
-.extern FUN_02043A94
-.extern FUN_02043AAC
-.extern FUN_02043ACC
-.extern FUN_02043AFC
-.extern FUN_02043B28
-.extern FUN_02043B54
-.extern FUN_02043B84
-.extern FUN_02043BD0
-.extern FUN_02043C28
-.extern FUN_02043C6C
-.extern FUN_02043C90
-.extern FUN_02043CB4
-.extern FUN_02043CE4
-.extern FUN_02043D28
-.extern FUN_02043D78
-.extern FUN_02043DC8
-.extern FUN_02043DE0
+.extern ScrCmd_Unk0075
+.extern ScrCmd_Unk0076
+.extern ScrCmd_Unk0077
+.extern ScrCmd_GetCoins
+.extern ScrCmd_GiveCoins
+.extern ScrCmd_TakeCoinsImmediate
+.extern ScrCmd_TakeCoinsAddress
+.extern ScrCmd_HasEnoughCoinsImmediate
+.extern ScrCmd_HasEnoughCoinsAddress
+.extern ScrCmd_CanGiveCoins
+.extern ScrCmd_GiveMoney
+.extern ScrCmd_TakeMoneyImmediate
+.extern ScrCmd_TakeMoneyAddress
+.extern ScrCmd_HasEnoughMoneyImmediate
+.extern ScrCmd_HasEnoughMoneyAddress
+.extern ScrCmd_Unk0072
+.extern ScrCmd_Unk0073
+.extern ScrCmd_Unk0074
.extern FUN_02043E00
.extern FUN_02043E20
.extern FUN_02043E50
@@ -3356,12 +3356,12 @@
.extern FUN_02045170
.extern FUN_020451D0
.extern FUN_02045264
-.extern FUN_02045268
-.extern FUN_020452B4
-.extern FUN_02045308
-.extern FUN_02045398
-.extern FUN_0204539C
-.extern FUN_020453A0
+.extern ScrCmd_Unk01F1
+.extern ScrCmd_Unk01F4
+.extern ScrCmd_Unk01F5
+.extern ScrCmd_Unk01F2
+.extern ScrCmd_Unk01F3
+.extern ScrCmd_Unk02A6
.extern FUN_020453F4
.extern FUN_02045424
.extern FUN_02045438
@@ -3416,10 +3416,10 @@
.extern FUN_02045F84
.extern FUN_02045F88
.extern FUN_02045FCC
-.extern FUN_02046010
-.extern FUN_0204601C
-.extern FUN_02046028
-.extern FUN_0204602C
+.extern ScrCmd_Unk02EF
+.extern ScrCmd_Unk02F0
+.extern ScrCmd_Unk02F1
+.extern ScrCmd_Unk02F2
.extern FUN_02046030
.extern SavArray_Flags_sizeof
.extern SavArray_Flags_init
diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c
new file mode 100644
index 00000000..f0fb9b42
--- /dev/null
+++ b/arm9/src/scrcmd_19.c
@@ -0,0 +1,89 @@
+#include "scrcmd.h"
+#include "bag.h"
+
+extern u16 VarGet(struct UnkSavStruct80* arg, u16);
+extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
+
+const u16 UNK_020F450C[7][2] = {
+ { 0x0067, 0x008E },
+ { 0x0065, 0x008A },
+ { 0x0066, 0x008C },
+ { 0x0063, 0x0159 },
+ { 0x0064, 0x015B },
+ { 0x0068, 0x019A },
+ { 0x0069, 0x0198 },
+};
+
+THUMB_FUNC BOOL ScrCmd_Unk01F1(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80 * sav_ptr = ctx->unk80;
+
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u8 i;
+ u16 total;
+ for (i = 0, total = 0; i < 7; i++)
+ {
+ total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4);
+ }
+
+ *ret_ptr = total;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx)
+{
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = 0;
+
+ for (u16 i = 0; i < 7; i++)
+ {
+ if (UNK_020F450C[i][0] == unk)
+ {
+ *ret_ptr = UNK_020F450C[i][1];
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 needed_amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr1 = 0;
+ *ret_ptr2 = 0;
+
+ u8 i = 0;
+ u16 total = 0;
+ for (; i < 7; i++)
+ {
+ total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4);
+ if (total >= needed_amount)
+ {
+ *ret_ptr1 = UNK_020F450C[i][0];
+ *ret_ptr2 = i;
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F2(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F3(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c
new file mode 100644
index 00000000..bf4fb7f1
--- /dev/null
+++ b/arm9/src/scrcmd_20.c
@@ -0,0 +1,38 @@
+#include "scrcmd.h"
+
+extern u16 VarGet(struct UnkSavStruct80* arg, u16);
+extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
+
+const u16 UNK_020F452A[19][2] = {
+ { 0x00FB, 0x03E8 },
+ { 0x0109, 0x03E8 },
+ { 0x0114, 0x03E8 },
+ { 0x0115, 0x03E8 },
+ { 0x01A1, 0x07D0 },
+ { 0x0181, 0x07D0 },
+ { 0x0192, 0x0FA0 },
+ { 0x0167, 0x0FA0 },
+ { 0x0173, 0x1770 },
+ { 0x01A0, 0x1770 },
+ { 0x0151, 0x1770 },
+ { 0x0162, 0x1F40 },
+ { 0x015C, 0x1F40 },
+ { 0x016A, 0x2710 },
+ { 0x015F, 0x2710 },
+ { 0x0154, 0x2710 },
+ { 0x0164, 0x2710 },
+ { 0x0191, 0x3A98 },
+ { 0x018B, 0x4E20 },
+};
+
+THUMB_FUNC BOOL ScrCmd_Unk02A6(struct ScriptContext * ctx)
+{
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr1 = UNK_020F452A[idx][0];
+ *ret_ptr2 = UNK_020F452A[idx][1];
+
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_25.c b/arm9/src/scrcmd_25.c
new file mode 100644
index 00000000..e3638675
--- /dev/null
+++ b/arm9/src/scrcmd_25.c
@@ -0,0 +1,27 @@
+#include "scrcmd.h"
+
+THUMB_FUNC BOOL ScrCmd_Unk02EF(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ GF_ASSERT(FALSE);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk02F0(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ GF_ASSERT(FALSE);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk02F1(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk02F2(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c
new file mode 100644
index 00000000..de4e993e
--- /dev/null
+++ b/arm9/src/scrcmd_coins.c
@@ -0,0 +1,140 @@
+#include "scrcmd.h"
+#include "coins.h"
+
+extern u16 VarGet(struct UnkSavStruct80* arg, u16);
+extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
+extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk);
+
+extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx);
+
+extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8);
+extern MOD05_021E29B4();
+extern MOD05_021E29C8();
+
+THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 ** unk_ret_ptr = FUN_02039438(sav_ptr, 0x26);
+
+ u32 unk3 = MOD05_021E2950(ctx->unk80, (u8)unk1, (u8)unk2);
+ *unk_ret_ptr = unk3;
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0076(struct ScriptContext * ctx)
+{
+ u16 ** unk = FUN_02039438(ctx->unk80, 0x26);
+ MOD05_021E29B4(*unk);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0077(struct ScriptContext * ctx)
+{
+ u16 ** unk = FUN_02039438(ctx->unk80, 0x26);
+ MOD05_021E29C8(ctx->unk80, *unk);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetCoins(struct ScriptContext * ctx)
+{
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2);
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = CheckCoins(coins_ptr);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveCoins(struct ScriptContext * ctx)
+{
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2);
+ u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ GiveCoins(coins_ptr, amount);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext * ctx)
+{
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2);
+ u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ TakeCoins(coins_ptr, amount);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_TakeCoinsAddress(struct ScriptContext * ctx)
+{
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2);
+ u16 * amount = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ TakeCoins(coins_ptr, *amount);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasEnoughCoinsImmediate(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr);
+ // Created, but discarded.
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(sav_ptr->saveBlock2);
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u32 amount = ScriptReadWord(ctx);
+ u16 coins = CheckCoins(coins_ptr);
+
+ if (coins < amount)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 1;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasEnoughCoinsAddress(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr);
+ // Created, but discarded
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(sav_ptr->saveBlock2);
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u16 amount = *(u16*)GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 coins = CheckCoins(coins_ptr);
+
+ if (coins < amount)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 1;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CanGiveCoins(struct ScriptContext * ctx)
+{
+ u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2);
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = CanGiveCoins(coins_ptr, amount);
+
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c
new file mode 100644
index 00000000..b61a7ff7
--- /dev/null
+++ b/arm9/src/scrcmd_money.c
@@ -0,0 +1,115 @@
+#include "scrcmd.h"
+#include "player_data.h"
+
+extern u16 VarGet(struct UnkSavStruct80* arg, u16);
+extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
+extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk);
+
+extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx);
+
+extern u32 MOD05_021E27E8(struct UnkSavStruct80* arg, u8, u8);
+extern void MOD05_021E288C(u32 *);
+extern void MOD05_021E28A0(struct UnkSavStruct80* arg, u32 *);
+
+THUMB_FUNC BOOL ScrCmd_GiveMoney(struct ScriptContext * ctx)
+{
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80);
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+
+ u32 amount = ScriptReadWord(ctx);
+ PlayerProfile_AddMoney(player, amount);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_TakeMoneyImmediate(struct ScriptContext * ctx)
+{
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80);
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+
+ u32 amount = ScriptReadWord(ctx);
+ PlayerProfile_SubMoney(player, amount);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_TakeMoneyAddress(struct ScriptContext * ctx)
+{
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80);
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+
+ u32 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ PlayerProfile_SubMoney(player, amount);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasEnoughMoneyImmediate(struct ScriptContext * ctx)
+{
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80);
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u32 amount = ScriptReadWord(ctx);
+ u32 money = PlayerProfile_GetMoney(player);
+
+ if (money < amount)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 1;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext * ctx)
+{
+ struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80);
+ struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2);
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u32 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 money = PlayerProfile_GetMoney(player);
+
+ if (money < amount)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 1;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0072(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80 * sav_ptr = ctx->unk80;
+ u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 *unk_ret_ptr = FUN_02039438(sav_ptr, 0x27);
+
+ *unk_ret_ptr = MOD05_021E27E8(ctx->unk80, (u8)unk1, (u8)unk2);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0073(struct ScriptContext * ctx)
+{
+ u32 ** unk = FUN_02039438(ctx->unk80, 0x27);
+ MOD05_021E288C(*unk);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0074(struct ScriptContext * ctx)
+{
+ u32 ** unk = FUN_02039438(ctx->unk80, 0x27);
+ MOD05_021E28A0(ctx->unk80, *unk);
+
+ return FALSE;
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 1e09095a..2dacb9fb 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -85,7 +85,45 @@ BOOL ScrCmd_Unk0039(struct ScriptContext* ctx);
BOOL ScrCmd_Unk003A(struct ScriptContext* ctx);
BOOL ScrCmd_Unk003B(struct ScriptContext *ctx);
+//scrcmd_coins.c
+BOOL ScrCmd_Unk0075(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0076(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0077(struct ScriptContext* ctx);
+BOOL ScrCmd_GetCoins(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveCoins(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeCoinsAddress(struct ScriptContext* ctx);
+BOOL ScrCmd_HasEnoughCoinsImmediate(struct ScriptContext* ctx);
+BOOL ScrCmd_HasEnoughCoinsAddress(struct ScriptContext* ctx);
+BOOL ScrCmd_CanGiveCoins(struct ScriptContext* ctx);
+
+//scrcmd_money.c
+BOOL ScrCmd_GiveMoney(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeMoneyImmediate(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeMoneyAddress(struct ScriptContext* ctx);
+BOOL ScrCmd_HasEnoughMoneyImmediate(struct ScriptContext* ctx);
+BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0072(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0073(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0074(struct ScriptContext* ctx);
+
//scrcmd_18.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
+//scrcmd_19.c
+BOOL ScrCmd_Unk01F1(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F4(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F5(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F2(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx);
+
+//scrcmd_20.c
+BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx);
+
+//scrcmd_25.c
+BOOL ScrCmd_Unk02EF(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk02F0(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk02F1(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk02F2(struct ScriptContext* ctx);
+
#endif //POKEDIAMOND_SCRCMD_H