summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/coins.c44
-rw-r--r--arm9/src/event_data.c78
-rw-r--r--arm9/src/igt.c50
-rw-r--r--arm9/src/main.c10
-rw-r--r--arm9/src/msgdata.c2
-rw-r--r--arm9/src/party.c33
-rw-r--r--arm9/src/pokemon.c8
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);