summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortgsm <doodrabbit@hotmail.com>2021-03-22 05:50:30 -0400
committertgsm <doodrabbit@hotmail.com>2021-03-22 06:18:09 -0400
commit343729e9c8b63c5804852933df33e743d722ad6b (patch)
tree2f16663dac4797aa23aa1b69205f21dba569cebd
parent9bd613f6243fb50d2f1f9125803fa666d1ad5711 (diff)
decompile scrcmd_15 -> scrcmd_money
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/scrcmd_15.s198
-rw-r--r--arm9/asm/unk_02038C78.s16
-rw-r--r--arm9/global.inc16
-rw-r--r--arm9/src/scrcmd_money.c115
-rw-r--r--include/scrcmd.h10
6 files changed, 142 insertions, 215 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 9bd6cb07..9b12ab46 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -166,7 +166,7 @@ Static arm9
Object scrcmd_12.o
Object scrcmd_13.o
Object scrcmd_14.o
- Object scrcmd_15.o
+ Object scrcmd_money.o
Object scrcmd_16.o
Object scrcmd_17.o
Object scrcmd_18_c.o
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/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index d880340e..53d41e3b 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -260,12 +260,12 @@ 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 ScrCmd_GiveMoney
+ .word ScrCmd_TakeMoneyImmediate
+ .word ScrCmd_HasEnoughMoneyImmediate
+ .word ScrCmd_Unk0072
+ .word ScrCmd_Unk0073
+ .word ScrCmd_Unk0074
.word FUN_02043A44
.word FUN_02043A94
.word FUN_02043AAC
@@ -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
diff --git a/arm9/global.inc b/arm9/global.inc
index 69746e05..057a0ad3 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3292,14 +3292,14 @@
.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_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
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 04e22867..174e14cd 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -85,6 +85,16 @@ BOOL ScrCmd_Unk0039(struct ScriptContext* ctx);
BOOL ScrCmd_Unk003A(struct ScriptContext* ctx);
BOOL ScrCmd_Unk003B(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);