diff options
author | tgsm <doodrabbit@hotmail.com> | 2021-03-22 05:50:30 -0400 |
---|---|---|
committer | tgsm <doodrabbit@hotmail.com> | 2021-03-22 06:18:09 -0400 |
commit | 343729e9c8b63c5804852933df33e743d722ad6b (patch) | |
tree | 2f16663dac4797aa23aa1b69205f21dba569cebd | |
parent | 9bd613f6243fb50d2f1f9125803fa666d1ad5711 (diff) |
decompile scrcmd_15 -> scrcmd_money
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/scrcmd_15.s | 198 | ||||
-rw-r--r-- | arm9/asm/unk_02038C78.s | 16 | ||||
-rw-r--r-- | arm9/global.inc | 16 | ||||
-rw-r--r-- | arm9/src/scrcmd_money.c | 115 | ||||
-rw-r--r-- | include/scrcmd.h | 10 |
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); |