diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-08-12 15:19:31 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-08-12 15:19:31 -0400 |
commit | dda861d78ad47a85a54c4c6a2dd3f7e301e65fa5 (patch) | |
tree | 6b521d42b21dd9f932806ca5ef6c7a83c50a0b24 /arm9/src | |
parent | ca2af0a5d0cf80c38995dde9e4d05246c11128e7 (diff) |
Decompile unk_02046294.s --> event_data.c
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/event_data.c | 78 | ||||
-rw-r--r-- | arm9/src/party.c | 31 |
2 files changed, 93 insertions, 16 deletions
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/party.c b/arm9/src/party.c index e0eb2a93..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 *)SavArray_get(ptr, 2); } |