Merge pull request #570 from AsparagusEduardo/pret/pr/sinjoh/coins
Some checks failed
build / build (push) Has been cancelled

Synced coins with pokeheartgold and pokeplatinum
This commit is contained in:
red031000 2025-08-31 08:43:03 +01:00 committed by GitHub
commit 51bbeabf55
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 34 additions and 33 deletions

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -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) {

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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