From bfd7e311584e2e18a22eb8efac2c7f9c1cd32c59 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 7 Aug 2025 12:57:08 -0400 Subject: [PATCH] Synced coins with pokeheartgold and pokeplatinum --- arm9/asm/unk_020377F0.s | 6 +++--- arm9/global.inc | 12 ++++++------ arm9/overlays/05/asm/ov05_021E1AD8.s | 2 +- arm9/src/bag_view.c | 2 +- arm9/src/coins.c | 13 +++++++------ arm9/src/player_data.c | 2 +- arm9/src/scrcmd_coins.c | 18 +++++++++--------- include/coins.h | 12 ++++++------ 8 files changed, 34 insertions(+), 33 deletions(-) diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index af603f39d..ec8d80e4c 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -2411,7 +2411,7 @@ _02038956: str r0, [sp, #0x4] ldr r0, [sp, #0x0] add r6, r1, #0x0 - bl CheckCoins + bl Coins_GetValue str r0, [sp, #0x8] ldr r0, [r5, #0x4] ldr r1, [r5, #0x8] @@ -2429,7 +2429,7 @@ _02038956: ldr r0, [r4, #0xc] bl Save_PlayerData_GetCoinsAddr ldr r1, [r5, #0x0] - bl SetCoins + bl Coins_SetValue add r0, r7, #0x0 bl sub_0205F6C8 ldr r1, [r5, #0x18] @@ -2467,7 +2467,7 @@ sub_020389CC: ; 0x020389CC str r4, [r4, #0xc] ldr r0, [r5, #0xc] bl Save_PlayerData_GetCoinsAddr - bl CheckCoins + bl Coins_GetValue str r0, [r4, #0x0] bl GF_RTC_DateTimeToSec str r0, [r4, #0x4] diff --git a/arm9/global.inc b/arm9/global.inc index ab48a651d..b9bd6d91c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1892,12 +1892,12 @@ .extern sub_02028854 .extern sub_0202888C .extern sub_020288AC -.extern InitCoins -.extern SetCoins -.extern CheckCoins -.extern GiveCoins -.extern CanGiveCoins -.extern TakeCoins +.extern Coins_Init +.extern Coins_SetValue +.extern Coins_GetValue +.extern Coins_Add +.extern Coins_CanAdd +.extern Coins_Subtract .extern sub_02028980 .extern sub_02028994 .extern sub_020289A4 diff --git a/arm9/overlays/05/asm/ov05_021E1AD8.s b/arm9/overlays/05/asm/ov05_021E1AD8.s index dbf8601bf..37417cc0c 100644 --- a/arm9/overlays/05/asm/ov05_021E1AD8.s +++ b/arm9/overlays/05/asm/ov05_021E1AD8.s @@ -1956,7 +1956,7 @@ ov05_021E29C8: ; 0x021E29C8 str r0, [sp, #0x10] ldr r0, [r6, #0xc] bl Save_PlayerData_GetCoinsAddr - bl CheckCoins + bl Coins_GetValue add r2, r0, #0 mov r0, #1 str r0, [sp] diff --git a/arm9/src/bag_view.c b/arm9/src/bag_view.c index a3a27e2e2..a341b0dbf 100644 --- a/arm9/src/bag_view.c +++ b/arm9/src/bag_view.c @@ -90,7 +90,7 @@ u8 sub_0206E394(BagView *bagView) { } static u16 GetCoinCount(SaveData *saveData) { - return CheckCoins(Save_PlayerData_GetCoinsAddr(saveData)); + return Coins_GetValue(Save_PlayerData_GetCoinsAddr(saveData)); } static u32 GetSealCount(SaveData *saveData) { diff --git a/arm9/src/coins.c b/arm9/src/coins.c index 5eceb0738..c812de43c 100644 --- a/arm9/src/coins.c +++ b/arm9/src/coins.c @@ -2,25 +2,26 @@ #include "global.h" -void InitCoins(u16 *coins) { +void Coins_Init(u16 *coins) { *coins = 0; } -void SetCoins(u16 *coins, u16 value) { +void Coins_SetValue(u16 *coins, u32 value) { GF_ASSERT(value <= MAX_COINS); *coins = value; } -u16 CheckCoins(u16 *coins) { +u16 Coins_GetValue(u16 *coins) { return *coins; } -BOOL GiveCoins(u16 *coins, u16 amount) { +BOOL Coins_Add(u16 *coins, u16 amount) { if (*coins >= MAX_COINS) { return FALSE; } *coins += amount; + if (*coins > MAX_COINS) { *coins = MAX_COINS; } @@ -28,11 +29,11 @@ BOOL GiveCoins(u16 *coins, u16 amount) { return TRUE; } -BOOL CanGiveCoins(u16 *coins, u16 amount) { +BOOL Coins_CanAdd(u16 *coins, u16 amount) { return (u32)(amount + *coins) <= MAX_COINS; } -BOOL TakeCoins(u16 *coins, u16 amount) { +BOOL Coins_Subtract(u16 *coins, u16 amount) { if (*coins < amount) { return FALSE; } diff --git a/arm9/src/player_data.c b/arm9/src/player_data.c index 81c52b802..1b888023b 100644 --- a/arm9/src/player_data.c +++ b/arm9/src/player_data.c @@ -19,7 +19,7 @@ void Save_PlayerData_Init(PlayerData *pds) { MI_CpuClearFast(pds, sizeof(PlayerData)); Options_Init(&pds->options); PlayerProfile_Init(&pds->profile); - InitCoins(&pds->coins); + Coins_Init(&pds->coins); InitIGT(&pds->igt); } diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c index 1d7e3f32f..4c219a2a9 100644 --- a/arm9/src/scrcmd_coins.c +++ b/arm9/src/scrcmd_coins.c @@ -38,12 +38,12 @@ BOOL ScrCmd_UpdateCoinBox(struct ScriptContext *ctx) // 0077 return FALSE; } -BOOL ScrCmd_GetCoins(struct ScriptContext *ctx) // 0078 - todo: CheckCoins instead? +BOOL ScrCmd_GetCoins(struct ScriptContext *ctx) // 0078 - todo: Coins_GetValue instead? { u16 *coins_ptr = Save_PlayerData_GetCoinsAddr(ctx->fieldSystem->saveData); u16 *ret_ptr = ScriptGetVarPointer(ctx); - *ret_ptr = CheckCoins(coins_ptr); + *ret_ptr = Coins_GetValue(coins_ptr); return FALSE; } @@ -53,17 +53,17 @@ BOOL ScrCmd_GiveCoins(struct ScriptContext *ctx) // 0079 u16 *coins_ptr = Save_PlayerData_GetCoinsAddr(ctx->fieldSystem->saveData); u16 amount = ScriptGetVar(ctx); - GiveCoins(coins_ptr, amount); + Coins_Add(coins_ptr, amount); return FALSE; } -BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext *ctx) // 0080 - todo: TakeCoins instead? +BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext *ctx) // 0080 - todo: Coins_Subtract instead? { u16 *coins_ptr = Save_PlayerData_GetCoinsAddr(ctx->fieldSystem->saveData); u16 amount = ScriptGetVar(ctx); - TakeCoins(coins_ptr, amount); + Coins_Subtract(coins_ptr, amount); return FALSE; } @@ -73,7 +73,7 @@ BOOL ScrCmd_TakeCoinsAddress(struct ScriptContext *ctx) // 02A8 - todo: TakeCoin u16 *coins_ptr = Save_PlayerData_GetCoinsAddr(ctx->fieldSystem->saveData); u16 *amount = ScriptGetVarPointer(ctx); - TakeCoins(coins_ptr, *amount); + Coins_Subtract(coins_ptr, *amount); return FALSE; } @@ -88,7 +88,7 @@ BOOL ScrCmd_HasEnoughCoinsImmediate(struct ScriptContext *ctx) // 0274 - todo: C u16 *ret_ptr = ScriptGetVarPointer(ctx); u32 amount = ScriptReadWord(ctx); - u16 coins = CheckCoins(coins_ptr); + u16 coins = Coins_GetValue(coins_ptr); if (coins < amount) { *ret_ptr = 0; @@ -109,7 +109,7 @@ BOOL ScrCmd_HasEnoughCoinsAddress(struct ScriptContext *ctx) // 02A9 - todo: Can u16 *ret_ptr = ScriptGetVarPointer(ctx); u16 amount = *ScriptGetVarPointer(ctx); - u16 coins = CheckCoins(coins_ptr); + u16 coins = Coins_GetValue(coins_ptr); if (coins < amount) { *ret_ptr = 0; @@ -126,7 +126,7 @@ BOOL ScrCmd_CanGiveCoins(struct ScriptContext *ctx) // 0276 u16 *ret_ptr = ScriptGetVarPointer(ctx); u16 amount = ScriptGetVar(ctx); - *ret_ptr = (u16)CanGiveCoins(coins_ptr, amount); + *ret_ptr = (u16)Coins_CanAdd(coins_ptr, amount); return FALSE; } diff --git a/include/coins.h b/include/coins.h index b9ede21a5..467758148 100644 --- a/include/coins.h +++ b/include/coins.h @@ -5,11 +5,11 @@ #define MAX_COINS 50000 -void InitCoins(u16 *coins); -void SetCoins(u16 *coins, u16 value); -u16 CheckCoins(u16 *coins); -BOOL GiveCoins(u16 *coins, u16 amount); -BOOL CanGiveCoins(u16 *coins, u16 amount); -BOOL TakeCoins(u16 *coins, u16 amount); +void Coins_Init(u16 *coins); +void Coins_SetValue(u16 *coins, u32 value); +u16 Coins_GetValue(u16 *coins); +BOOL Coins_Add(u16 *coins, u16 amount); +BOOL Coins_CanAdd(u16 *coins, u16 amount); +BOOL Coins_Subtract(u16 *coins, u16 amount); #endif // POKEDIAMOND_COINS_H