diff --git a/include/journal.h b/include/journal.h index 32df201109..2209e6c92a 100644 --- a/include/journal.h +++ b/include/journal.h @@ -1,7 +1,7 @@ #ifndef POKEPLATINUM_JOURNAL_H #define POKEPLATINUM_JOURNAL_H -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "trainer_info.h" #include "savedata.h" @@ -36,8 +36,8 @@ void * sub_0202BE00(u8 param0, u16 param1, u32 param2); void * sub_0202BE14(u32 param0); void * sub_0202BE20(u32 param0); void * sub_0202BE2C(u32 param0, u32 param1); -void * sub_0202BE4C(const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u8 param3, u32 param4); -void * sub_0202BECC(const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u8 param3, u32 param4); +void * sub_0202BE4C(const PlayTime * playTime, u16 param1, u8 param2, u8 param3, u32 param4); +void * sub_0202BECC(const PlayTime * playTime, u16 param1, u8 param2, u8 param3, u32 param4); void * sub_0202BF4C(u16 param0, u16 param1, u32 param2); void * sub_0202BFCC(u16 * param0, u8 param1, u8 param2, u32 param3); void * sub_0202C00C(u16 * param0, u8 param1, u8 param2, u32 param3); diff --git a/include/play_time.h b/include/play_time.h new file mode 100644 index 0000000000..3dcf93c438 --- /dev/null +++ b/include/play_time.h @@ -0,0 +1,16 @@ +#ifndef POKEPLATINUM_PLAYTIME_H +#define POKEPLATINUM_PLAYTIME_H + +typedef struct PlayTime { + u16 hours; + u8 minutes; + u8 seconds; +} PlayTime; + +void PlayTime_Init(PlayTime *playTime); +void PlayTime_Increment(PlayTime *playTime, u32 seconds); +u16 PlayTime_GetHours(const PlayTime *playTime); +u8 PlayTime_GetMinutes(const PlayTime *playTime); +u8 PlayTime_GetSeconds(const PlayTime *playTime); + +#endif // POKEPLATINUM_PLAYTIME_H diff --git a/include/struct_decls/struct_02025E5C_decl.h b/include/struct_decls/struct_02025E5C_decl.h deleted file mode 100644 index f3fb598274..0000000000 --- a/include/struct_decls/struct_02025E5C_decl.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02025E5C_DECL_H -#define POKEPLATINUM_STRUCT_02025E5C_DECL_H - -typedef struct UnkStruct_02025E5C_t UnkStruct_02025E5C; - -#endif // POKEPLATINUM_STRUCT_02025E5C_DECL_H diff --git a/include/struct_defs/struct_02025E5C.h b/include/struct_defs/struct_02025E5C.h deleted file mode 100644 index 648834fd3a..0000000000 --- a/include/struct_defs/struct_02025E5C.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02025E5C_H -#define POKEPLATINUM_STRUCT_02025E5C_H - -typedef struct UnkStruct_02025E5C_t { - u16 unk_00; - u8 unk_02; - u8 unk_03; -} UnkStruct_02025E5C; - -#endif // POKEPLATINUM_STRUCT_02025E5C_H diff --git a/include/struct_defs/struct_0203E234.h b/include/struct_defs/struct_0203E234.h index cbb53d3e02..4553b991b0 100644 --- a/include/struct_defs/struct_0203E234.h +++ b/include/struct_defs/struct_0203E234.h @@ -1,14 +1,14 @@ #ifndef POKEPLATINUM_STRUCT_0203E234_H #define POKEPLATINUM_STRUCT_0203E234_H -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "trainer_info.h" #include "struct_decls/struct_party_decl.h" typedef struct { const TrainerInfo * unk_00; const Party * unk_04; - const UnkStruct_02025E5C * unk_08; + const PlayTime * playTime; } UnkStruct_0203E234; #endif // POKEPLATINUM_STRUCT_0203E234_H diff --git a/include/struct_defs/struct_02072014.h b/include/struct_defs/struct_02072014.h index 3e7f344ec3..ee6858e96e 100644 --- a/include/struct_defs/struct_02072014.h +++ b/include/struct_defs/struct_02072014.h @@ -1,7 +1,7 @@ #ifndef POKEPLATINUM_STRUCT_02072014_H #define POKEPLATINUM_STRUCT_02072014_H -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "struct_defs/struct_02072014_sub1.h" typedef struct { @@ -17,14 +17,14 @@ typedef struct { u8 unk_05; u8 padding_06[2]; u16 unk_08[8]; - const UnkStruct_02025E5C * unk_18; + const PlayTime *playTime; u32 unk_1C; u32 unk_20; u32 unk_24; u16 unk_28; - u16 unk_2A; + u16 playTimeHours; u16 unk_2C; - u8 unk_2E; + u8 playTimeMinutes; u8 unk_2F; u8 unk_30; u8 unk_31; diff --git a/include/unk_02017428.h b/include/unk_02017428.h index c35c147886..ac92092911 100644 --- a/include/unk_02017428.h +++ b/include/unk_02017428.h @@ -1,10 +1,10 @@ #ifndef POKEPLATINUM_UNK_02017428_H #define POKEPLATINUM_UNK_02017428_H -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" void sub_02017428(void); -void sub_02017434(UnkStruct_02025E5C * param0); +void sub_02017434(PlayTime *playTime); void sub_02017458(void); #endif // POKEPLATINUM_UNK_02017428_H diff --git a/include/unk_02025E08.h b/include/unk_02025E08.h index 47080cf6e3..644139be56 100644 --- a/include/unk_02025E08.h +++ b/include/unk_02025E08.h @@ -2,7 +2,7 @@ #define POKEPLATINUM_UNK_02025E08_H #include "struct_decls/struct_02025E0C_decl.h" -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "trainer_info.h" #include "game_options.h" #include "savedata.h" @@ -12,6 +12,6 @@ void Player_Init(UnkStruct_02025E0C * param0); TrainerInfo * SaveData_GetTrainerInfo(SaveData * param0); Options * SaveData_Options(SaveData * param0); u16 * sub_02025E50(SaveData * param0); -UnkStruct_02025E5C * sub_02025E5C(SaveData * param0); +PlayTime * SaveData_GetPlayTime(SaveData * param0); #endif // POKEPLATINUM_UNK_02025E08_H diff --git a/include/unk_0202CBE4.h b/include/unk_0202CBE4.h deleted file mode 100644 index 50bdc6686f..0000000000 --- a/include/unk_0202CBE4.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef POKEPLATINUM_UNK_0202CBE4_H -#define POKEPLATINUM_UNK_0202CBE4_H - -#include "struct_decls/struct_02025E5C_decl.h" - -void sub_0202CBE4(UnkStruct_02025E5C * param0); -void sub_0202CBF0(UnkStruct_02025E5C * param0, u32 param1); -u16 sub_0202CC58(const UnkStruct_02025E5C * param0); -u8 sub_0202CC5C(const UnkStruct_02025E5C * param0); -u8 sub_0202CC60(const UnkStruct_02025E5C * param0); - -#endif // POKEPLATINUM_UNK_0202CBE4_H diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index df3507e8bc..bdb2847e95 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -126,7 +126,7 @@ Static main Object main.nef.p/src_unk_0202C7FC.c.o Object main.nef.p/src_unk_0202C858.c.o Object main.nef.p/src_unk_0202C9F4.c.o - Object main.nef.p/src_unk_0202CBE4.c.o + Object main.nef.p/src_play_time.c.o Object main.nef.p/src_unk_0202CC64.c.o Object main.nef.p/src_unk_0202CD50.c.o Object main.nef.p/src_unk_0202D05C.c.o diff --git a/src/journal.c b/src/journal.c index def2b7c26b..16a4ea8428 100644 --- a/src/journal.c +++ b/src/journal.c @@ -1,7 +1,6 @@ #include #include -#include "struct_decls/struct_02025E5C_decl.h" #include "trainer_info.h" #include "savedata.h" @@ -16,7 +15,7 @@ #include "savedata.h" #include "trainer_info.h" #include "journal.h" -#include "unk_0202CBE4.h" +#include "play_time.h" #include "map_header.h" typedef struct Journal_t { @@ -802,7 +801,7 @@ static UnkStruct_0202BE38 * sub_0202BE38 (u32 param0) return v0; } -void * sub_0202BE4C (const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u8 param3, u32 param4) +void * sub_0202BE4C (const PlayTime *playTime, u16 param1, u8 param2, u8 param3, u32 param4) { UnkStruct_0202BE38 * v0; u8 v1; @@ -814,7 +813,7 @@ void * sub_0202BE4C (const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u v0->unk_01_6 = param2; v0->unk_01_2 = param3; - v1 = sub_0202CC5C(param0) / 10; + v1 = PlayTime_GetMinutes(playTime) / 10; if ((v1 == 0) || (v1 == 2) || (v1 == 4)) { v0->unk_01_0 = 0; @@ -827,7 +826,7 @@ void * sub_0202BE4C (const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u return v0; } -void * sub_0202BECC (const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u8 param3, u32 param4) +void * sub_0202BECC (const PlayTime *playTime, u16 param1, u8 param2, u8 param3, u32 param4) { UnkStruct_0202BE38 * v0; u8 v1; @@ -839,7 +838,7 @@ void * sub_0202BECC (const UnkStruct_02025E5C * param0, u16 param1, u8 param2, u v0->unk_01_6 = param2; v0->unk_01_2 = param3; - v1 = sub_0202CC5C(param0) / 10; + v1 = PlayTime_GetMinutes(playTime) / 10; if ((v1 == 1) || (v1 == 3) || (v1 == 5)) { v0->unk_01_0 = 0; diff --git a/src/meson.build b/src/meson.build index 1163d0578f..2757322b5d 100644 --- a/src/meson.build +++ b/src/meson.build @@ -116,7 +116,7 @@ pokeplatinum_c = files( 'unk_0202C7FC.c', 'unk_0202C858.c', 'unk_0202C9F4.c', - 'unk_0202CBE4.c', + 'play_time.c', 'unk_0202CC64.c', 'unk_0202CD50.c', 'unk_0202D05C.c', diff --git a/src/overlay005/ov5_021E1D20.c b/src/overlay005/ov5_021E1D20.c index 191f0f95b4..dee2fc2837 100644 --- a/src/overlay005/ov5_021E1D20.c +++ b/src/overlay005/ov5_021E1D20.c @@ -4,7 +4,6 @@ #include "message.h" #include "struct_decls/struct_02018340_decl.h" #include "strbuf.h" -#include "struct_decls/struct_02025E5C_decl.h" #include "trainer_info.h" #include "struct_decls/pokedexdata_decl.h" #include "savedata.h" @@ -27,7 +26,7 @@ #include "unk_02025E08.h" #include "trainer_info.h" #include "unk_0202631C.h" -#include "unk_0202CBE4.h" +#include "play_time.h" #include "unk_020366A0.h" #include "map_header.h" #include "field_overworld_state.h" @@ -39,7 +38,7 @@ typedef struct { int unk_00; int unk_04; TrainerInfo * unk_08; - UnkStruct_02025E5C * unk_0C; + PlayTime *playTime; } UnkStruct_ov5_021E1D20; struct UnkStruct_ov5_021E1FF4_t { @@ -87,7 +86,7 @@ static void ov5_021E1D20 (UnkStruct_ov5_021E1D20 * param0, const FieldSystem * f } param0->unk_08 = SaveData_GetTrainerInfo(v0); - param0->unk_0C = sub_02025E5C(v0); + param0->playTime = SaveData_GetPlayTime(v0); } static void ov5_021E1D6C (StringTemplate * strTemplate, const UnkStruct_ov5_021E1D20 * param1) @@ -110,7 +109,7 @@ static void ov5_021E1D6C (StringTemplate * strTemplate, const UnkStruct_ov5_021E } StringTemplate_SetNumber(strTemplate, 3, param1->unk_00, v0, v1, 1); - v2 = sub_0202CC58(param1->unk_0C); + v2 = PlayTime_GetHours(param1->playTime); if (v2 >= 100) { v0 = 3; @@ -124,7 +123,7 @@ static void ov5_021E1D6C (StringTemplate * strTemplate, const UnkStruct_ov5_021E } StringTemplate_SetNumber(strTemplate, 4, v2, v0, v1, 1); - StringTemplate_SetNumber(strTemplate, 5, sub_0202CC5C(param1->unk_0C), 2, 2, 1); + StringTemplate_SetNumber(strTemplate, 5, PlayTime_GetMinutes(param1->playTime), 2, 2, 1); } static int ov5_021E1E10 (const UnkStruct_ov5_021E1D20 * param0) diff --git a/src/overlay057/ov57_021D0D80.c b/src/overlay057/ov57_021D0D80.c index cfdeccaa76..474248b908 100644 --- a/src/overlay057/ov57_021D0D80.c +++ b/src/overlay057/ov57_021D0D80.c @@ -105,7 +105,7 @@ static int ov57_021D0DE0 (OverlayManager * param0, int * param1) SaveData * v0 = ((UnkStruct_0203CC84 *)OverlayManager_Args(param0))->unk_08; ov57_021D0EAC(77, v0, 1); - sub_02017434(sub_02025E5C(v0)); + sub_02017434(SaveData_GetPlayTime(v0)); return 1; } @@ -139,7 +139,7 @@ static int ov57_021D0E34 (OverlayManager * param0, int * param1) Party_SetShayminLandForm(Party_GetFromSavedata(v0)); } - sub_02017434(sub_02025E5C(v0)); + sub_02017434(SaveData_GetPlayTime(v0)); return 1; } diff --git a/src/overlay061/ov61_0222B008.c b/src/overlay061/ov61_0222B008.c index ba1d57679d..cb0e8673c5 100644 --- a/src/overlay061/ov61_0222B008.c +++ b/src/overlay061/ov61_0222B008.c @@ -5,7 +5,7 @@ #include "core_sys.h" #include "strbuf.h" -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "struct_decls/struct_02029C68_decl.h" #include "struct_decls/struct_020797DC_decl.h" @@ -234,15 +234,15 @@ int ov61_0222B2B8 (UnkStruct_ov62_022349A8 * param0) int ov61_0222B2D8 (UnkStruct_ov62_022349A8 * param0, UnkStruct_02030A80 * param1, UnkStruct_ov61_0222B2D8 param2[]) { - UnkStruct_02025E5C * v0; + PlayTime * playTime; int v1; if (ov61_0222BBBC(param0) == 0) { return 0; } - v0 = sub_02025E5C(param0->unk_00); - MI_CpuCopy8(v0, ¶m0->unk_190.unk_00_val3.unk_08, sizeof(UnkStruct_ov62_0223D518_sub1_sub1)); + playTime = SaveData_GetPlayTime(param0->unk_00); + MI_CpuCopy8(playTime, ¶m0->unk_190.unk_00_val3.unk_08, sizeof(UnkStruct_ov62_0223D518_sub1_sub1)); ov61_0222AFCC(param0->unk_00, param1, ¶m0->unk_190.unk_00_val3.unk_00); for (v1 = 0; v1 < 3; v1++) { diff --git a/src/overlay062/ov62_0223CAEC.c b/src/overlay062/ov62_0223CAEC.c index 26f48f5d13..0407cdce7a 100644 --- a/src/overlay062/ov62_0223CAEC.c +++ b/src/overlay062/ov62_0223CAEC.c @@ -33,7 +33,7 @@ #include "strbuf.h" #include "unk_02023FCC.h" #include "unk_02025E08.h" -#include "unk_0202CBE4.h" +#include "play_time.h" #include "unk_0202CD50.h" #include "unk_02030A80.h" #include "unk_0208B284.h" @@ -994,9 +994,9 @@ static BOOL ov62_0223D744 (UnkStruct_0208C06C * param0) } else { { v0->unk_71C = &v0->unk_710; - v0->unk_720.unk_08.unk_00 = sub_0202CC58(sub_02025E5C(param0->unk_830)); - v0->unk_720.unk_08.unk_02 = sub_0202CC5C(sub_02025E5C(param0->unk_830)); - v0->unk_720.unk_08.unk_03 = sub_0202CC60(sub_02025E5C(param0->unk_830)); + v0->unk_720.unk_08.unk_00 = PlayTime_GetHours(SaveData_GetPlayTime(param0->unk_830)); + v0->unk_720.unk_08.unk_02 = PlayTime_GetMinutes(SaveData_GetPlayTime(param0->unk_830)); + v0->unk_720.unk_08.unk_03 = PlayTime_GetSeconds(SaveData_GetPlayTime(param0->unk_830)); v0->unk_720.unk_0C[0].unk_00 = v0->unk_71C->unk_00[0]; v0->unk_720.unk_0C[1].unk_00 = v0->unk_71C->unk_00[1]; v0->unk_720.unk_0C[2].unk_00 = v0->unk_71C->unk_00[2]; diff --git a/src/overlay071/ov71_0223C69C.c b/src/overlay071/ov71_0223C69C.c index 4f438bde6a..7189d547fc 100644 --- a/src/overlay071/ov71_0223C69C.c +++ b/src/overlay071/ov71_0223C69C.c @@ -15,7 +15,7 @@ #include "unk_02018340.h" #include "unk_0201D670.h" #include "strbuf.h" -#include "unk_0202CBE4.h" +#include "play_time.h" #include "overlay071/ov71_0223C69C.h" static void ov71_0223CD64(Window * param0, const u32 param1, const u32 param2, const u32 param3, Strbuf *param4, const u32 param5, const u8 param6, const int param7); @@ -132,12 +132,12 @@ void ov71_0223C6F0 (Window * param0, const TrainerCard * param1) u32 v7; if (param1->unk_04_1) { - StringTemplate_SetNumber(v4, 0, sub_0202CC58(param1->unk_18), 3, 1, 1); - StringTemplate_SetNumber(v4, 1, sub_0202CC5C(param1->unk_18), 2, 2, 1); + StringTemplate_SetNumber(v4, 0, PlayTime_GetHours(param1->playTime), 3, 1, 1); + StringTemplate_SetNumber(v4, 1, PlayTime_GetMinutes(param1->playTime), 2, 2, 1); MessageLoader_GetStrbuf(v1, 16, v3); } else { - StringTemplate_SetNumber(v4, 0, param1->unk_2A, 3, 1, 1); - StringTemplate_SetNumber(v4, 1, param1->unk_2E, 2, 2, 1); + StringTemplate_SetNumber(v4, 0, param1->playTimeHours, 3, 1, 1); + StringTemplate_SetNumber(v4, 1, param1->playTimeMinutes, 2, 2, 1); MessageLoader_GetStrbuf(v1, 15, v3); } @@ -552,9 +552,9 @@ void ov71_0223CDE8 (Window * param0, const TrainerCard * param1, Strbuf *param2) { int v0; - GF_ASSERT(param1->unk_18 != NULL); + GF_ASSERT(param1->playTime != NULL); - v0 = sub_0202CC58(param1->unk_18); + v0 = PlayTime_GetHours(param1->playTime); if (v0 > 999) { v0 = 999; @@ -569,8 +569,8 @@ void ov71_0223CDE8 (Window * param0, const TrainerCard * param1, Strbuf *param2) Strbuf* v4 = Strbuf_Init(32, 25); StringTemplate * v5 = StringTemplate_New((1 + 1), 32, 25); - StringTemplate_SetNumber(v5, 0, sub_0202CC58(param1->unk_18), 3, 1, 1); - StringTemplate_SetNumber(v5, 1, sub_0202CC5C(param1->unk_18), 2, 2, 1); + StringTemplate_SetNumber(v5, 0, PlayTime_GetHours(param1->playTime), 3, 1, 1); + StringTemplate_SetNumber(v5, 1, PlayTime_GetMinutes(param1->playTime), 2, 2, 1); MessageLoader_GetStrbuf(v2, 16, v4); StringTemplate_Format(v5, v3, v4); v1 = (8 * 28) - sub_02002D7C(0, v3, 0); diff --git a/src/overlay086/ov86_0223B140.c b/src/overlay086/ov86_0223B140.c index 80ee7e2703..4cb87f50fa 100644 --- a/src/overlay086/ov86_0223B140.c +++ b/src/overlay086/ov86_0223B140.c @@ -53,7 +53,7 @@ #include "unk_020218BC.h" #include "strbuf.h" #include "trainer_info.h" -#include "unk_0202CBE4.h" +#include "play_time.h" #include "pokemon.h" #include "party.h" #include "overlay086/ov86_0223B140.h" @@ -1433,8 +1433,8 @@ static void ov86_0223C72C (UnkStruct_ov86_0223B3C8 * param0) StringTemplate_SetPlayerName(param0->unk_1C44, 0, param0->unk_0C->unk_00); StringTemplate_SetNumber(param0->unk_1C44, 1, TrainerInfo_ID_LowHalf(param0->unk_0C->unk_00), 5, 2, 1); - StringTemplate_SetNumber(param0->unk_1C44, 2, sub_0202CC58(param0->unk_0C->unk_08), 3, 0, 1); - StringTemplate_SetNumber(param0->unk_1C44, 3, sub_0202CC5C(param0->unk_0C->unk_08), 2, 2, 1); + StringTemplate_SetNumber(param0->unk_1C44, 2, PlayTime_GetHours(param0->unk_0C->playTime), 3, 0, 1); + StringTemplate_SetNumber(param0->unk_1C44, 3, PlayTime_GetMinutes(param0->unk_0C->playTime), 2, 2, 1); MessageLoader_GetStrbuf(param0->unk_1C50, 13, param0->unk_1C4C); StringTemplate_Format(param0->unk_1C44, param0->unk_1C48, param0->unk_1C4C); diff --git a/src/overlay097/ov97_0222AE60.c b/src/overlay097/ov97_0222AE60.c index fb42ce0c3f..c5cf27a80d 100644 --- a/src/overlay097/ov97_0222AE60.c +++ b/src/overlay097/ov97_0222AE60.c @@ -8,7 +8,7 @@ #include "struct_decls/struct_02022550_decl.h" #include "strbuf.h" #include "struct_decls/struct_0202442C_decl.h" -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "trainer_info.h" #include "struct_decls/pokedexdata_decl.h" #include "savedata.h" @@ -52,7 +52,6 @@ #include "unk_02025E08.h" #include "trainer_info.h" #include "unk_0202631C.h" -#include "unk_0202CBE4.h" #include "unk_0202DAB4.h" #include "unk_020366A0.h" #include "unk_0209A74C.h" @@ -95,7 +94,7 @@ typedef struct { SaveData * unk_04; PokedexData * unk_08; TrainerInfo * unk_0C; - UnkStruct_02025E5C * unk_10; + PlayTime *playTime; MysteryGift * unk_14; int unk_18; int unk_1C; @@ -597,9 +596,9 @@ static BOOL ov97_0222B5C0 (void * param0, int param1, UnkStruct_ov97_02237808 * StringTemplate_SetPlayerName(v4, 0, v6->unk_0C); ov97_0222B53C(param2->unk_10, v5, v4, v7, 16, 16 * 1); - ov97_0222B590(v4, sub_0202CC58(v6->unk_10)); + ov97_0222B590(v4, PlayTime_GetHours(v6->playTime)); - StringTemplate_SetNumber(v4, 1, sub_0202CC5C(v6->unk_10), 2, 2, 1); + StringTemplate_SetNumber(v4, 1, PlayTime_GetMinutes(v6->playTime), 2, 2, 1); ov97_0222B53C(param2->unk_10, v5, v4, v7, 17, 16 * 2); StringTemplate_SetNumber(v4, 0, v6->unk_50, 1, 0, 1); @@ -996,7 +995,7 @@ static int ov97_0222BD70 (OverlayManager * param0, int * param1) v0->unk_120 = FX32_ONE * 0; v0->unk_0C = SaveData_GetTrainerInfo(v0->unk_04); v0->unk_08 = SaveData_Pokedex(v0->unk_04); - v0->unk_10 = sub_02025E5C(v0->unk_04); + v0->playTime = SaveData_GetPlayTime(v0->unk_04); v0->unk_4C = sub_02027520(v0->unk_08); v0->unk_50 = TrainerInfo_BadgeCount(v0->unk_0C); v0->unk_12C = 15; diff --git a/src/play_time.c b/src/play_time.c new file mode 100644 index 0000000000..dd5e181ffb --- /dev/null +++ b/src/play_time.c @@ -0,0 +1,64 @@ +#include + +#include "play_time.h" + +#define SECONDS_PER_MINUTE 60 +#define MINUTES_PER_HOUR 60 +#define PLAYTIME_MAX_HOURS 999 +#define PLAYTIME_MAX_MINUTES (MINUTES_PER_HOUR - 1) +#define PLAYTIME_MAX_SECONDS (SECONDS_PER_MINUTE - 1) + +void PlayTime_Init(PlayTime *playTime) +{ + playTime->hours = 0; + playTime->minutes = 0; + playTime->seconds = 0; +} + +void PlayTime_Increment(PlayTime *playTime, u32 seconds) +{ + if (playTime->hours == PLAYTIME_MAX_HOURS + && playTime->minutes == PLAYTIME_MAX_MINUTES + && playTime->seconds == PLAYTIME_MAX_SECONDS) { + return; + } + + u32 hours = playTime->hours; + u32 minutes = playTime->minutes; + u32 newSeconds = playTime->seconds + seconds; + + if (newSeconds > PLAYTIME_MAX_SECONDS) { + minutes = playTime->minutes + newSeconds / SECONDS_PER_MINUTE; + newSeconds %= SECONDS_PER_MINUTE; + + if (minutes > PLAYTIME_MAX_MINUTES) { + hours = playTime->hours + minutes / MINUTES_PER_HOUR; + minutes %= MINUTES_PER_HOUR; + + if (hours >= PLAYTIME_MAX_HOURS) { + hours = PLAYTIME_MAX_HOURS; + minutes = PLAYTIME_MAX_MINUTES; + newSeconds = PLAYTIME_MAX_SECONDS; + } + } + } + + playTime->hours = hours; + playTime->minutes = minutes; + playTime->seconds = newSeconds; +} + +u16 PlayTime_GetHours(const PlayTime *playTime) +{ + return playTime->hours; +} + +u8 PlayTime_GetMinutes(const PlayTime *playTime) +{ + return playTime->minutes; +} + +u8 PlayTime_GetSeconds(const PlayTime *playTime) +{ + return playTime->seconds; +} diff --git a/src/unk_02017428.c b/src/unk_02017428.c index 0799acb5bd..767afee815 100644 --- a/src/unk_02017428.c +++ b/src/unk_02017428.c @@ -1,29 +1,27 @@ #include #include -#include "struct_decls/struct_02025E5C_decl.h" - #include "unk_02017428.h" #include "unk_02022844.h" -#include "unk_0202CBE4.h" +#include "play_time.h" static BOOL Unk_021BF658 = 0; static u64 Unk_021BF668 = 0; static u64 Unk_021BF660 = 0; static u64 Unk_021BF670 = 0; -static UnkStruct_02025E5C * Unk_021BF65C = NULL; +static PlayTime * sPlayTime = NULL; void sub_02017428 (void) { Unk_021BF658 = 0; } -void sub_02017434 (UnkStruct_02025E5C * param0) +void sub_02017434 (PlayTime *playTime) { Unk_021BF658 = 1; Unk_021BF668 = 0; Unk_021BF660 = 0; - Unk_021BF65C = param0; + sPlayTime = playTime; Unk_021BF670 = sub_0202293C(); } @@ -33,7 +31,7 @@ void sub_02017458 (void) u64 v0 = sub_0202295C(sub_0202293C() - Unk_021BF670); if (v0 > Unk_021BF660) { - sub_0202CBF0(Unk_021BF65C, (v0 - Unk_021BF660)); + PlayTime_Increment(sPlayTime, (v0 - Unk_021BF660)); Unk_021BF660 = v0; } } diff --git a/src/unk_02025E08.c b/src/unk_02025E08.c index 0e64b9571c..5cbfa36278 100644 --- a/src/unk_02025E08.c +++ b/src/unk_02025E08.c @@ -4,20 +4,18 @@ #include "struct_decls/struct_02025E0C_decl.h" #include "savedata.h" -#include "struct_defs/struct_02025E5C.h" - #include "savedata.h" #include "unk_02025E08.h" #include "trainer_info.h" #include "game_options.h" #include "coins.h" -#include "unk_0202CBE4.h" +#include "play_time.h" struct UnkStruct_02025E0C_t { Options unk_00; TrainerInfo unk_04; u16 unk_24; - UnkStruct_02025E5C unk_26; + PlayTime playTime; }; int Player_SaveSize (void) @@ -32,7 +30,7 @@ void Player_Init (UnkStruct_02025E0C * param0) Options_Init(¶m0->unk_00); TrainerInfo_Init(¶m0->unk_04); Coins_Init(¶m0->unk_24); - sub_0202CBE4(¶m0->unk_26); + PlayTime_Init(¶m0->playTime); } TrainerInfo * SaveData_GetTrainerInfo (SaveData * param0) @@ -59,10 +57,8 @@ u16 * sub_02025E50 (SaveData * param0) return &v0->unk_24; } -UnkStruct_02025E5C * sub_02025E5C (SaveData * param0) +PlayTime *SaveData_GetPlayTime(SaveData *savedata) { - UnkStruct_02025E0C * v0; - - v0 = SaveData_SaveTable(param0, 1); - return &v0->unk_26; + UnkStruct_02025E0C *v0 = SaveData_SaveTable(savedata, 1); + return &v0->playTime; } diff --git a/src/unk_0202CBE4.c b/src/unk_0202CBE4.c deleted file mode 100644 index 8edec59b8b..0000000000 --- a/src/unk_0202CBE4.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include - -#include "struct_defs/struct_02025E5C.h" - -#include "unk_0202CBE4.h" - -void sub_0202CBE4 (UnkStruct_02025E5C * param0) -{ - param0->unk_00 = 0; - param0->unk_02 = 0; - param0->unk_03 = 0; -} - -void sub_0202CBF0 (UnkStruct_02025E5C * param0, u32 param1) -{ - u32 v0, v1, v2; - - if ((param0->unk_00 == 999) && (param0->unk_02 == 59) && (param0->unk_03 == 59)) { - return; - } - - v0 = param0->unk_00; - v1 = param0->unk_02; - v2 = param0->unk_03 + param1; - - if (v2 > 59) { - v1 = param0->unk_02 + (v2 / (59 + 1)); - v2 %= (59 + 1); - - if (v1 > 59) { - v0 = param0->unk_00 + (v1 / (59 + 1)); - v1 %= (59 + 1); - - if (v0 >= 999) { - v0 = 999; - v1 = 59; - v2 = 59; - } - } - } - - param0->unk_00 = v0; - param0->unk_02 = v1; - param0->unk_03 = v2; -} - -u16 sub_0202CC58 (const UnkStruct_02025E5C * param0) -{ - return param0->unk_00; -} - -u8 sub_0202CC5C (const UnkStruct_02025E5C * param0) -{ - return param0->unk_02; -} - -u8 sub_0202CC60 (const UnkStruct_02025E5C * param0) -{ - return param0->unk_03; -} diff --git a/src/unk_02050A74.c b/src/unk_02050A74.c index ee2156f6c8..9e4053aa21 100644 --- a/src/unk_02050A74.c +++ b/src/unk_02050A74.c @@ -985,7 +985,7 @@ static void sub_02051988 (FieldSystem * fieldSystem, BattleParams * param1) if (fieldSystem->unk_78.unk_02 >= 5) { v0 = Party_GetPokemonBySlotIndex(param1->parties[1], 0); - v3 = sub_0202BECC(sub_02025E5C(fieldSystem->saveData), Pokemon_GetValue(v0, MON_DATA_SPECIES, 0), Pokemon_GetValue(v0, MON_DATA_GENDER, 0), param1->unk_138, 11); + v3 = sub_0202BECC(SaveData_GetPlayTime(fieldSystem->saveData), Pokemon_GetValue(v0, MON_DATA_SPECIES, 0), Pokemon_GetValue(v0, MON_DATA_GENDER, 0), param1->unk_138, 11); sub_0202B758(fieldSystem->unk_9C, v3, 2); } } else if (v2 == 0x4) { @@ -993,7 +993,7 @@ static void sub_02051988 (FieldSystem * fieldSystem, BattleParams * param1) v4 = param1->unk_148; v0 = Party_GetPokemonBySlotIndex(param1->parties[v4], 0); - v3 = sub_0202BE4C(sub_02025E5C(fieldSystem->saveData), Pokemon_GetValue(v0, MON_DATA_SPECIES, 0), Pokemon_GetValue(v0, MON_DATA_GENDER, 0), param1->unk_138, 11); + v3 = sub_0202BE4C(SaveData_GetPlayTime(fieldSystem->saveData), Pokemon_GetValue(v0, MON_DATA_SPECIES, 0), Pokemon_GetValue(v0, MON_DATA_GENDER, 0), param1->unk_138, 11); sub_0202B758(fieldSystem->unk_9C, v3, 2); } diff --git a/src/unk_02052C6C.c b/src/unk_02052C6C.c index f582b0f11f..173b597c81 100644 --- a/src/unk_02052C6C.c +++ b/src/unk_02052C6C.c @@ -197,7 +197,7 @@ void sub_02052E58 (TaskManager * param0) v5->unk_00 = sub_0206A954(v3); v5->unk_04.unk_00 = SaveData_GetTrainerInfo(fieldSystem->saveData); v5->unk_04.unk_04 = Party_GetFromSavedata(fieldSystem->saveData); - v5->unk_04.unk_08 = sub_02025E5C(fieldSystem->saveData); + v5->unk_04.playTime = SaveData_GetPlayTime(fieldSystem->saveData); v5->unk_10.unk_00 = TrainerInfo_Gender(SaveData_GetTrainerInfo(fieldSystem->saveData)); v5->unk_10.unk_04 = sub_0206A954(v3); v5->unk_10.unk_08 = SaveData_Pokedex(fieldSystem->saveData); diff --git a/src/unk_02071D40.c b/src/unk_02071D40.c index 887fd71e72..dae8ac51d9 100644 --- a/src/unk_02071D40.c +++ b/src/unk_02071D40.c @@ -1,7 +1,7 @@ #include #include -#include "struct_decls/struct_02025E5C_decl.h" +#include "play_time.h" #include "trainer_info.h" #include "struct_decls/struct_0202855C_decl.h" #include "struct_decls/struct_0202C834_decl.h" @@ -21,7 +21,7 @@ #include "unk_0202631C.h" #include "unk_0202854C.h" #include "unk_0202C7FC.h" -#include "unk_0202CBE4.h" +#include "play_time.h" #include "unk_0202CD50.h" #include "unk_0203061C.h" #include "field_system.h" @@ -40,7 +40,7 @@ typedef struct { static void sub_02072014(const u8 param0, const u8 param1, const u8 param2, const u8 param3, const u8 param4, TrainerCard * param5); static void sub_02072038(const u16 param0, const u8 param1, const u16 * param2, const u32 param3, const u32 param4, const BOOL param5, const u32 param6, TrainerCard * param7); -static void sub_0207207C(const u8 param0, const UnkStruct_02025E5C * param1, const RTCDate * param2, const RTCDate * param3, const RTCTime * param4, const u8 param5, TrainerCard * param6); +static void sub_0207207C(const u8 param0, const PlayTime *playTime, const RTCDate * param2, const RTCDate * param3, const RTCTime * param4, const u8 param5, TrainerCard * param6); static void sub_02072120(const u32 param0, const u32 param1, const u32 param2, const u32 param3, const u8 * param4, TrainerCard * param5); static void sub_0207216C(TrainerInfo * param0, FieldSystem * fieldSystem, TrainerCard * param2); static BOOL sub_02072230(TaskManager * param0); @@ -70,13 +70,13 @@ void sub_02071D40 (const u8 param0, const u8 param1, const u8 param2, const u8 p RTCDate v4; RTCDate v5; RTCTime v6; - UnkStruct_02025E5C * v7; + PlayTime * playTime; - v7 = sub_02025E5C(v2); + playTime = SaveData_GetPlayTime(v2); sub_02055BF4(fieldSystem, &v4, &v6); sub_02055C10(fieldSystem, &v5, &v6); - sub_0207207C(sub_0206A954(SaveData_GetVarsFlags(fieldSystem->saveData)), v7, &v4, &v5, &v6, param1, param5); + sub_0207207C(sub_0206A954(SaveData_GetVarsFlags(fieldSystem->saveData)), playTime, &v4, &v5, &v6, param1, param5); } { @@ -182,34 +182,34 @@ static void sub_02072038 (const u16 param0, const u8 param1, const u16 * param2, param7->unk_24 = param6; } -static void sub_0207207C (const u8 param0, const UnkStruct_02025E5C * param1, const RTCDate * param2, const RTCDate * param3, const RTCTime * param4, const u8 param5, TrainerCard * param6) +static void sub_0207207C (const u8 param0, const PlayTime *playTime, const RTCDate * param2, const RTCDate * param3, const RTCTime * param4, const u8 param5, TrainerCard * trainerCard) { - param6->unk_2A = sub_0202CC58(param1); - param6->unk_2E = sub_0202CC5C(param1); - param6->unk_2F = param2->year; - param6->unk_30 = param2->month; - param6->unk_31 = param2->day; + trainerCard->playTimeHours = PlayTime_GetHours(playTime); + trainerCard->playTimeMinutes = PlayTime_GetMinutes(playTime); + trainerCard->unk_2F = param2->year; + trainerCard->unk_30 = param2->month; + trainerCard->unk_31 = param2->day; if (param0) { - param6->unk_32 = param3->year; - param6->unk_33 = param3->month; - param6->unk_34 = param3->day; - param6->unk_2C = param4->hour; - param6->unk_35 = param4->minute; + trainerCard->unk_32 = param3->year; + trainerCard->unk_33 = param3->month; + trainerCard->unk_34 = param3->day; + trainerCard->unk_2C = param4->hour; + trainerCard->unk_35 = param4->minute; } else { - param6->unk_32 = 0; - param6->unk_33 = 0; - param6->unk_34 = 0; - param6->unk_2C = 0; - param6->unk_35 = 0; + trainerCard->unk_32 = 0; + trainerCard->unk_33 = 0; + trainerCard->unk_34 = 0; + trainerCard->unk_2C = 0; + trainerCard->unk_35 = 0; } - param6->unk_04_1 = param5; + trainerCard->unk_04_1 = param5; if (param5) { - param6->unk_18 = param1; + trainerCard->playTime = playTime; } else { - param6->unk_18 = NULL; + trainerCard->playTime = NULL; } }