diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/coins.c | 44 | ||||
-rw-r--r-- | arm9/src/event_data.c | 78 | ||||
-rw-r--r-- | arm9/src/igt.c | 50 | ||||
-rw-r--r-- | arm9/src/main.c | 10 | ||||
-rw-r--r-- | arm9/src/msgdata.c | 2 | ||||
-rw-r--r-- | arm9/src/party.c | 33 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 8 |
7 files changed, 198 insertions, 27 deletions
diff --git a/arm9/src/coins.c b/arm9/src/coins.c new file mode 100644 index 00000000..80efb768 --- /dev/null +++ b/arm9/src/coins.c @@ -0,0 +1,44 @@ +#include "global.h" +#include "coins.h" + +#pragma thumb on + +void InitCoins(u16 * coins) +{ + *coins = 0; +} + +void SetCoins(u16 * coins, u16 value) +{ + GF_ASSERT(value <= MAX_COINS); + *coins = value; +} + +u16 CheckCoins(u16 * coins) +{ + return *coins; +} + +BOOL GiveCoins(u16 * coins, u16 amount) +{ + if (*coins >= MAX_COINS) + return FALSE; + *coins += amount; + if (*coins > MAX_COINS) + *coins = MAX_COINS; + return TRUE; +} + +BOOL CanGiveCoins(u16 * coins, u16 amount) +{ + + return (u32)(amount + *coins) <= MAX_COINS; +} + +BOOL TakeCoins(u16 * coins, u16 amount) +{ + if (*coins < amount) + return FALSE; + *coins -= amount; + return TRUE; +} diff --git a/arm9/src/event_data.c b/arm9/src/event_data.c new file mode 100644 index 00000000..cf33b201 --- /dev/null +++ b/arm9/src/event_data.c @@ -0,0 +1,78 @@ +#include "global.h" +#include "save_block_2.h" +#include "event_data.h" + +#pragma thumb on + +u8 UNK_021C5A14[8]; + +u8 * GetFlagAddr(struct ScriptState * state, u16 flag_id); + +u32 SavArray_Flags_sizeof(void) +{ + return sizeof(struct ScriptState); +} + +void SavArray_Flags_init(struct ScriptState * state) +{ + memset(state, 0, sizeof(struct ScriptState)); +} + +struct ScriptState * SavArray_Flags_get(struct SaveBlock2 * sav2) +{ + return (struct ScriptState *)SavArray_get(sav2, 4); +} + +BOOL CheckFlagInArray(struct ScriptState * state, u16 flag_id) +{ + u8 * ptr = GetFlagAddr(state, flag_id); + if (ptr != NULL) + { + int mask = 1 << (flag_id % 8); + if (*ptr & mask) + return TRUE; + } + return FALSE; +} + +void SetFlagInArray(struct ScriptState * state, u16 flag_id) +{ + u8 * ptr = GetFlagAddr(state, flag_id); + if (ptr != NULL) + { + int mask = 1 << (flag_id % 8); + *ptr |= mask; + } +} + +void ClearFlagInArray(struct ScriptState * state, u16 flag_id) +{ + u8 * ptr = GetFlagAddr(state, flag_id); + if (ptr != NULL) + { + int mask = 1 << (flag_id % 8); + *ptr &= 0xFF ^ mask; + } +} + +u8 * GetFlagAddr(struct ScriptState * state, u16 flag_id) +{ + if (flag_id == 0) + return 0; + if (flag_id < 0x4000) + { + GF_ASSERT((flag_id / 8) < 364); + return &state->flags[flag_id / 8]; + } + else + { + GF_ASSERT(((flag_id - 0x4000) / 8) < 8); + return &UNK_021C5A14[(flag_id - 0x4000) / 8]; + } +} + +u16 * GetVarAddr(struct ScriptState * state, u16 var_id) +{ + GF_ASSERT((var_id - 0x4000) < 288); + return &state->vars[var_id - 0x4000]; +} diff --git a/arm9/src/igt.c b/arm9/src/igt.c new file mode 100644 index 00000000..843ef396 --- /dev/null +++ b/arm9/src/igt.c @@ -0,0 +1,50 @@ +#include "global.h" +#include "igt.h" + +#pragma thumb on + +void InitIGT(struct IGT * igt) +{ + igt->hours = 0; + igt->minutes = 0; + igt->seconds = 0; +} + +void AddIGTSeconds(struct IGT * igt, u32 to_add) +{ + u32 hours, minutes, seconds; + if (igt->hours == 999 && igt->minutes == 59 && igt->seconds == 59) + return; + seconds = (u32)(igt->seconds + to_add); + minutes = (u32)igt->minutes; + hours = (u32)igt->hours; + if (seconds > 59) + { + minutes += seconds / 60; + seconds %= 60; + if (minutes > 59) + { + hours += minutes / 60; + minutes %= 60; + if (hours >= 999) + { + hours = 999; + minutes = 59; + seconds = 59; + } + } + } + igt->hours = (u16)hours; + igt->minutes = (u8)minutes; + igt->seconds = (u8)seconds; +} + +u16 GetIGTHours(struct IGT * igt) +{ + return igt->hours; +} + +u8 GetIGTMinutes(struct IGT * igt) +{ + return igt->minutes; +} diff --git a/arm9/src/main.c b/arm9/src/main.c index ac2d9ca9..3de65c45 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -6,7 +6,7 @@ #include "PAD_pad.h" #include "main.h" #include "poke_overlay.h" -#include "options.h" +#include "save_block_2.h" #include "sound.h" FS_EXTERN_OVERLAY(MODULE_52); @@ -32,12 +32,12 @@ extern void FUN_02022294(void); extern void FUN_0201259C(void); extern void FUN_02002C14(void); extern void FUN_02002C50(int, int); -extern struct UnkStruct_021C59C8 * FUN_0202254C(void); -extern u32 FUN_02029EF8(struct UnkStruct_021C59C8 *); +extern struct SaveBlock2 * FUN_0202254C(void); +extern u32 FUN_02029EF8(struct SaveBlock2 *); extern void FUN_02020AFC(void); extern int FUN_020337E8(int); extern void FUN_02034188(int, int); -extern int FUN_020227FC(struct UnkStruct_021C59C8 *); +extern int FUN_020227FC(struct SaveBlock2 *); extern void FUN_02089D90(int); extern void FUN_0200A2AC(void); extern void FUN_02015E30(void); @@ -74,7 +74,7 @@ THUMB_FUNC void NitroMain(void) FUN_02002C50(3, 3); gBacklightTop.unk18 = -1; gBacklightTop.unk20 = FUN_0202254C(); - InitSoundData(FUN_02029EF8(gBacklightTop.unk20), LoadPlayerDataAddress(gBacklightTop.unk20)); + InitSoundData(FUN_02029EF8(gBacklightTop.unk20), Sav2_PlayerData_GetOptionsAddr(gBacklightTop.unk20)); FUN_02020AFC(); if (FUN_020337E8(3) == 3) FUN_02034188(3, 0); diff --git a/arm9/src/msgdata.c b/arm9/src/msgdata.c index e90c7122..13d1a9da 100644 --- a/arm9/src/msgdata.c +++ b/arm9/src/msgdata.c @@ -360,7 +360,7 @@ struct String * ReadMsgData_ExpandPlaceholders(u32 * a0, struct MsgData * msgDat r5 = NewString_ReadMsgData(msgData, msgno); if (r5 != NULL) { - FUN_0200B7B8(a0, r4, r5); + StringExpandPlaceholders(a0, r4, r5); ret = StringDup(r4, a3); String_dtor(r5); } diff --git a/arm9/src/party.c b/arm9/src/party.c index d7799fe2..1b9c505f 100644 --- a/arm9/src/party.c +++ b/arm9/src/party.c @@ -1,42 +1,41 @@ #include "global.h" #include "party.h" #include "heap.h" -#include "proto.h" #pragma thumb on -void FUN_0206B8C0(struct PlayerParty * party); -void FUN_0206B8CC(struct PlayerParty * party, int count); +void SavArray_Party_init(struct PlayerParty * party); +void InitPartyWithMaxSize(struct PlayerParty * party, int count); -u32 FUN_0206B8A4(void) +u32 SavArray_Party_sizeof(void) { return sizeof(struct PlayerParty); } -struct PlayerParty * FUN_0206B8AC(u32 heap_id) +struct PlayerParty * SavArray_Party_alloc(u32 heap_id) { struct PlayerParty * ret = (struct PlayerParty *)AllocFromHeap(heap_id, sizeof(struct PlayerParty)); - FUN_0206B8C0(ret); + SavArray_Party_init(ret); return ret; } -void FUN_0206B8C0(struct PlayerParty * party) +void SavArray_Party_init(struct PlayerParty * party) { - FUN_0206B8CC(party, PARTY_SIZE); + InitPartyWithMaxSize(party, PARTY_SIZE); } -void FUN_0206B8CC(struct PlayerParty * party, int count) +void InitPartyWithMaxSize(struct PlayerParty * party, int count) { int i; GF_ASSERT(count <= PARTY_SIZE); memset(party, 0, sizeof(struct PlayerParty)); party->curCount = 0; party->maxCount = count; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) ZeroMonData(&party->mons[i]); } -BOOL FUN_0206B900(struct PlayerParty * party, struct Pokemon * pokemon) +BOOL AddMonToParty(struct PlayerParty * party, struct Pokemon * pokemon) { if (party->curCount >= party->maxCount) return FALSE; @@ -45,7 +44,7 @@ BOOL FUN_0206B900(struct PlayerParty * party, struct Pokemon * pokemon) return TRUE; } -BOOL FUN_0206B938(struct PlayerParty * party, int pos) +BOOL RemoveMonFromParty(struct PlayerParty * party, int pos) { int i; @@ -77,7 +76,7 @@ struct Pokemon * GetPartyMonByIndex(struct PlayerParty * party, int pos) return &party->mons[pos]; } -void FUN_0206B9DC(struct PlayerParty * party, int pos, struct Pokemon * pokemon) +void ReplacePartySlotWithMon(struct PlayerParty * party, int pos, struct Pokemon * pokemon) { int r2; GF_ASSERT(pos >= 0); @@ -88,7 +87,7 @@ void FUN_0206B9DC(struct PlayerParty * party, int pos, struct Pokemon * pokemon) party->curCount += r2; } -BOOL FUN_0206BA38(struct PlayerParty * party, int pos1, int pos2) +BOOL SwapSlotsInParty(struct PlayerParty * party, int pos1, int pos2) { struct Pokemon * buffer; GF_ASSERT(pos1 >= 0); @@ -105,7 +104,7 @@ BOOL FUN_0206BA38(struct PlayerParty * party, int pos1, int pos2) return FALSE; } -void FUN_0206BAD0(struct PlayerParty * src, struct PlayerParty * dest) +void CopyPlayerParty(struct PlayerParty * src, struct PlayerParty * dest) { *dest = *src; } @@ -121,7 +120,7 @@ BOOL PartyHasMon(struct PlayerParty * party, u16 species) return i != party->curCount; } -struct PlayerParty * FUN_0206BB1C(void * ptr) +struct PlayerParty * SavArray_PlayerParty_get(struct SaveBlock2 * ptr) { - return (struct PlayerParty *)FUN_02022610(ptr, 2); + return (struct PlayerParty *)SavArray_get(ptr, 2); } diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index eb51d5fb..05df8811 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -3676,13 +3676,13 @@ BOOL FUN_0206A998(struct Pokemon * pokemon) return IsPokemonLegendaryOrMythical(species); } -BOOL FUN_0206A9AC(struct BoxPokemon * boxmon, struct SaveBlock2 * sb2, u32 heap_id) +BOOL FUN_0206A9AC(struct BoxPokemon * boxmon, struct PlayerData * sb2, u32 heap_id) { - u32 myId = FUN_020239BC(sb2); + u32 myId = PlayerProfile_GetTrainerID(sb2); u32 otId = GetBoxMonData(boxmon, MON_DATA_OTID, NULL); - u32 myGender = FUN_020239CC(sb2); + u32 myGender = PlayerProfile_GetTrainerGender(sb2); u32 otGender = GetBoxMonData(boxmon, MON_DATA_MET_GENDER, NULL); - struct String * r7 = FUN_020239A0(sb2, heap_id); + struct String * r7 = PlayerProfile_GetPlayerName_NewString(sb2, heap_id); struct String * r6 = String_ctor(OT_NAME_LENGTH + 1, heap_id); BOOL ret = FALSE; GetBoxMonData(boxmon, MON_DATA_OT_NAME_2, r6); |