summaryrefslogtreecommitdiff
path: root/arm9/src/daycare.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-08-27 08:31:38 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-08-27 08:32:50 -0400
commit04c7c3de6a47c9952d0fd66f97a19ad10569c0f6 (patch)
tree1a741b38efa1c26f3f6676c60a86276338299e5a /arm9/src/daycare.c
parent5d7b65886813e92ddd538cf8da6a43038a7cda0a (diff)
Decompile daycare
Diffstat (limited to 'arm9/src/daycare.c')
-rw-r--r--arm9/src/daycare.c114
1 files changed, 114 insertions, 0 deletions
diff --git a/arm9/src/daycare.c b/arm9/src/daycare.c
new file mode 100644
index 00000000..eff25151
--- /dev/null
+++ b/arm9/src/daycare.c
@@ -0,0 +1,114 @@
+#include "global.h"
+#include "pokemon.h"
+#include "seals.h"
+#include "save_block_2.h"
+#include "daycare.h"
+
+#pragma thumb on
+
+u32 Sav2_DayCare_sizeof(void)
+{
+ return sizeof(struct DayCare);
+}
+
+void Sav2_DayCare_init(struct DayCare * daycare)
+{
+ memset(daycare, 0, sizeof(struct DayCare));
+ ZeroBoxMonData(&daycare->mons[0].mon);
+ ZeroBoxMonData(&daycare->mons[1].mon);
+ daycare->egg_pid = 0;
+ daycare->egg_cycles = 0;
+}
+
+struct DayCareMon * Sav2_DayCare_GetMonX(struct DayCare * daycare, s32 i)
+{
+ return &daycare->mons[i];
+}
+
+struct BoxPokemon * DayCareMon_GetBoxMon(struct DayCareMon * dcmon)
+{
+ return &dcmon->mon;
+}
+
+struct DayCareMail * DayCareMon_GetExtras(struct DayCareMon * dcmon)
+{
+ return &dcmon->mail;
+}
+
+u32 DayCareMon_GetSteps(struct DayCareMon * dcmon)
+{
+ return dcmon->steps;
+}
+
+struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail)
+{
+ return &dcmail->seal;
+}
+
+u32 Sav2_DayCare_GetEggPID(struct DayCare * daycare)
+{
+ return daycare->egg_pid;
+}
+
+u8 Sav2_DayCare_GetEggCycleCounter(struct DayCare * daycare)
+{
+ return daycare->egg_cycles;
+}
+
+void DayCareMon_SetSteps(struct DayCareMon * dcmon, u32 steps)
+{
+ dcmon->steps = steps;
+}
+
+void DayCareMon_AddSteps(struct DayCareMon * dcmon, u32 steps)
+{
+ dcmon->steps += steps;
+}
+
+void Sav2_DayCare_SetEggPID(struct DayCare * daycare, u32 pid)
+{
+ daycare->egg_pid = pid;
+}
+
+void Sav2_DayCare_SetEggCycleCounter(struct DayCare * daycare, u8 count)
+{
+ daycare->egg_cycles = count;
+}
+
+BOOL Sav2_DayCare_MasudaCheck(struct DayCare * daycare)
+{
+ // Checks if the pokemon come from different countries.
+ // Uses language as a proxy for country, even though it
+ // only accounts for European languages and Japanese.
+ // If true, shiny odds are increased (see overlay 05).
+ return GetBoxMonData(&daycare->mons[0].mon, MON_DATA_GAME_LANGUAGE, NULL) != GetBoxMonData(&daycare->mons[1].mon, MON_DATA_GAME_LANGUAGE, NULL);
+}
+
+void DayCareMon_Copy(struct DayCareMon * dest, const struct DayCareMon * src)
+{
+ *dest = *src;
+}
+
+void DayCareMon_Extras_init(struct DayCareMail * mail)
+{
+ int i;
+
+ for (i = 0; i < OT_NAME_LENGTH + 1; i++)
+ mail->ot_name[i] = 0;
+ for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
+ mail->nickname[i] = 0;
+ mail->ot_name[0] = EOS;
+ mail->nickname[0] = EOS;
+}
+
+void DayCareMon_Init(struct DayCareMon * mon)
+{
+ ZeroBoxMonData(&mon->mon);
+ mon->steps = 0;
+ DayCareMon_Extras_init(&mon->mail);
+}
+
+struct DayCare * Sav2_DayCare_get(struct SaveBlock2 * sav2)
+{
+ return (struct DayCare *)SavArray_get(sav2, 8);
+}