summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/daycare.c114
-rw-r--r--arm9/src/save_arrays.c5
2 files changed, 116 insertions, 3 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);
+}
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c
index 201a313a..96808ba6 100644
--- a/arm9/src/save_arrays.c
+++ b/arm9/src/save_arrays.c
@@ -9,11 +9,11 @@
#include "poketch.h"
#include "hall_of_fame.h"
#include "unk_020286F8.h"
+#include "daycare.h"
extern u32 FUN_0202AC20(void);
extern u32 FUN_02034D7C(void);
extern u32 Sav2_Pokedex_sizeof(void);
-extern u32 Sav2_Daycare_sizeof(void);
extern u32 FUN_020254B8(void);
extern u32 FUN_02024E64(void);
extern u32 FUN_02034D80(void);
@@ -41,7 +41,6 @@ extern u32 FUN_02013B28(void);
extern void FUN_0202AC28(void *);
extern void FUN_02034D98(void *);
extern void Sav2_Pokedex_init(void *);
-extern void Sav2_Daycare_init(void *);
extern void FUN_020254CC(void *);
extern void FUN_02024E6C(void *);
extern void FUN_02034D88(void *);
@@ -81,7 +80,7 @@ const struct SaveChunkHeader UNK_020EE700[] = {
{ 5, 0, (SAVSIZEFN)Sav2_Poketch_sizeof, (SAVINITFN)Sav2_Poketch_init },
{ 6, 0, (SAVSIZEFN)FUN_02034D7C, (SAVINITFN)FUN_02034D98 },
{ 7, 0, (SAVSIZEFN)Sav2_Pokedex_sizeof, (SAVINITFN)Sav2_Pokedex_init },
- { 8, 0, (SAVSIZEFN)Sav2_Daycare_sizeof, (SAVINITFN)Sav2_Daycare_init },
+ { 8, 0, (SAVSIZEFN)Sav2_DayCare_sizeof, (SAVINITFN)Sav2_DayCare_init },
{ 9, 0, (SAVSIZEFN)FUN_020254B8, (SAVINITFN)FUN_020254CC },
{ 10, 0, (SAVSIZEFN)FUN_02024E64, (SAVINITFN)FUN_02024E6C },
{ 11, 0, (SAVSIZEFN)FUN_02034D80, (SAVINITFN)FUN_02034D88 },