Document most of system_data.c

This commit is contained in:
Rachel 2024-10-30 15:27:37 -07:00
parent 119135dde3
commit 81b9a3c9c9
26 changed files with 264 additions and 301 deletions

View File

@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02025CCC_DECL_H
#define POKEPLATINUM_STRUCT_02025CCC_DECL_H
typedef struct UnkStruct_02025CCC_t UnkStruct_02025CCC;
#endif // POKEPLATINUM_STRUCT_02025CCC_DECL_H

View File

@ -2,7 +2,6 @@
#define POKEPLATINUM_STRUCT_0203E0FC_H
#include "struct_decls/pokedexdata_decl.h"
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_0202B370_decl.h"
#include "struct_decls/struct_0202C878_decl.h"
#include "struct_decls/struct_0202DA40_decl.h"
@ -14,11 +13,12 @@
#include "game_records.h"
#include "journal.h"
#include "savedata.h"
#include "system_data.h"
#include "trainer_info.h"
typedef struct {
UnkStruct_0202DA40 *unk_00;
UnkStruct_02025CCC *unk_04;
SystemData *unk_04;
Party *unk_08;
PCBoxes *unk_0C;
PokedexData *unk_10;

View File

@ -1,16 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02055BA8_H
#define POKEPLATINUM_STRUCT_02055BA8_H
#include <nitro/rtc.h>
typedef struct {
BOOL unk_00;
RTCDate unk_04;
RTCTime unk_14;
u32 unk_20;
s64 unk_24;
s64 unk_2C;
u32 unk_34;
} UnkStruct_02055BA8;
#endif // POKEPLATINUM_STRUCT_02055BA8_H

View File

@ -3,17 +3,17 @@
#include <dwc.h>
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_0202D750_decl.h"
#include "struct_decls/struct_0202D764_decl.h"
#include "game_options.h"
#include "savedata.h"
#include "system_data.h"
typedef struct {
UnkStruct_0202D750 *unk_00;
UnkStruct_0202D764 *unk_04;
UnkStruct_02025CCC *unk_08;
SystemData *unk_08;
SaveData *unk_0C;
Options *unk_10;
DWCUserData *unk_14;

48
include/system_data.h Normal file
View File

@ -0,0 +1,48 @@
#ifndef POKEPLATINUM_SYSTEM_DATA_H
#define POKEPLATINUM_SYSTEM_DATA_H
#include <nitro/rtc.h>
#include "savedata.h"
typedef struct GameTime {
BOOL canary;
RTCDate date;
RTCTime time;
u32 day;
s64 startTimestamp;
s64 playTimestamp;
u32 penaltyInMinutes;
} GameTime;
typedef struct SystemData {
s64 rtcOffset;
u8 macAddress[6];
u8 ownerBirthMonth;
u8 ownerBirthDayOfMonth;
GameTime gameTime;
u8 unk_48;
u8 unk_49;
s32 unk_4C;
u32 unk_50[3];
} SystemData;
int SystemData_SaveSize(void);
void SystemData_Clear(SystemData *systemData);
SystemData *SaveData_GetSystemData(SaveData *systemData);
GameTime *SaveData_GetGameTime(SaveData *saveData);
void SystemData_Init(SystemData *systemData);
BOOL SystemData_MatchesCurrentSystem(const SystemData *systemData);
BOOL SystemData_MatchesCurrentRTCOffset(const SystemData *systemData);
u8 SystemData_GetOwnerBirthMonth(const SystemData *systemData);
u8 SystemData_GetOwnerBirthDayOfMonth(const SystemData *systemData);
BOOL sub_02025D64(const SystemData *param0);
void sub_02025D6C(SystemData *param0, BOOL param1);
s32 sub_02025D74(const SystemData *param0);
void sub_02025D78(SystemData *param0, s32 param1);
void GameTime_Clear(GameTime *gameTime);
BOOL GameTime_HasPenalty(const GameTime *gameTime);
void GameTime_DecrementPenalty(GameTime *gameTime, int val);
void GameTime_StartPenalty(GameTime *gameTime);
#endif // POKEPLATINUM_SYSTEM_DATA_H

View File

@ -1,27 +0,0 @@
#ifndef POKEPLATINUM_UNK_02025CB0_H
#define POKEPLATINUM_UNK_02025CB0_H
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_defs/struct_02055BA8.h"
#include "savedata.h"
int SystemData_SaveSize(void);
void SystemData_Init(UnkStruct_02025CCC *param0);
UnkStruct_02025CCC *sub_02025CCC(SaveData *param0);
UnkStruct_02055BA8 *sub_02025CD8(SaveData *param0);
void sub_02025CE4(UnkStruct_02025CCC *param0);
BOOL sub_02025D10(const UnkStruct_02025CCC *param0);
BOOL sub_02025D40(const UnkStruct_02025CCC *param0);
u8 sub_02025D5C(const UnkStruct_02025CCC *param0);
u8 sub_02025D60(const UnkStruct_02025CCC *param0);
BOOL sub_02025D64(const UnkStruct_02025CCC *param0);
void sub_02025D6C(UnkStruct_02025CCC *param0, BOOL param1);
s32 sub_02025D74(const UnkStruct_02025CCC *param0);
void sub_02025D78(UnkStruct_02025CCC *param0, s32 param1);
void sub_02025D84(UnkStruct_02055BA8 *param0);
BOOL sub_02025DB8(const UnkStruct_02055BA8 *param0);
void sub_02025DC8(UnkStruct_02055BA8 *param0, int param1);
void sub_02025DE8(UnkStruct_02055BA8 *param0);
#endif // POKEPLATINUM_UNK_02025CB0_H

View File

@ -103,7 +103,7 @@ Static main
Object main.nef.p/src_unk_02024358.c.o
Object main.nef.p/src_savedata_save_table.c.o
Object main.nef.p/src_savedata.c.o
Object main.nef.p/src_unk_02025CB0.c.o
Object main.nef.p/src_system_data.c.o
Object main.nef.p/src_save_player.c.o
Object main.nef.p/src_trainer_info.c.o
Object main.nef.p/src_unk_0202602C.c.o

View File

@ -5,10 +5,8 @@
#include "constants/game_options.h"
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_02027854_decl.h"
#include "struct_decls/struct_0202B4A0_decl.h"
#include "struct_defs/struct_02055BA8.h"
#include "game_options.h"
#include "heap.h"
@ -20,10 +18,10 @@
#include "save_player.h"
#include "savedata.h"
#include "savedata_misc.h"
#include "system_data.h"
#include "trainer_info.h"
#include "unk_02017428.h"
#include "unk_0201D15C.h"
#include "unk_02025CB0.h"
#include "unk_02027B70.h"
#include "unk_0202B37C.h"
#include "unk_0205C980.h"
@ -129,14 +127,14 @@ static int ov57_021D0E1C(OverlayManager *param0, int *param1)
static int ov57_021D0E34(OverlayManager *param0, int *param1)
{
SaveData *v0 = ((ApplicationArgs *)OverlayManager_Args(param0))->saveData;
UnkStruct_02025CCC *v1 = sub_02025CCC(v0);
SystemData *v1 = SaveData_GetSystemData(v0);
TryLoadingSave(77, v0);
Options_SetSystemButtonMode(v0, OPTIONS_BUTTON_MODE_NORMAL);
if (!sub_02025D10(v1) || !sub_02025D40(v1)) {
sub_02025DE8(sub_02025CD8(v0));
sub_02025CE4(v1);
if (!SystemData_MatchesCurrentSystem(v1) || !SystemData_MatchesCurrentRTCOffset(v1)) {
GameTime_StartPenalty(SaveData_GetGameTime(v0));
SystemData_Init(v1);
Party_SetShayminLandForm(Party_GetFromSavedata(v0));
}
@ -158,13 +156,13 @@ static void ov57_021D0EAC(int param0, SaveData *param1, BOOL param2)
u32 v0;
UnkStruct_02027854 *v1;
TrainerInfo *v2;
UnkStruct_02055BA8 *v3;
GameTime *v3;
UnkStruct_0202B4A0 *v4;
sub_02025CE4(sub_02025CCC(param1));
SystemData_Init(SaveData_GetSystemData(param1));
v3 = sub_02025CD8(param1);
sub_02025D84(v3);
v3 = SaveData_GetGameTime(param1);
GameTime_Clear(v3);
v4 = sub_0202B4A0(param1);
sub_0202B40C(v4, 1, MTRNG_Next());

View File

@ -95,7 +95,7 @@ pokeplatinum_c = files(
'unk_02024358.c',
'savedata/save_table.c',
'savedata.c',
'unk_02025CB0.c',
'system_data.c',
'save_player.c',
'trainer_info.c',
'unk_0202602C.c',

View File

@ -4,7 +4,6 @@
#include <nitro.h>
#include <string.h>
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_0202B370_decl.h"
#include "struct_defs/struct_02017498.h"
#include "struct_defs/struct_02099F80.h"
@ -31,13 +30,13 @@
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "system_data.h"
#include "text.h"
#include "unk_0200A784.h"
#include "unk_0200F174.h"
#include "unk_02017728.h"
#include "unk_0201DBEC.h"
#include "unk_0201E3D8.h"
#include "unk_02025CB0.h"
#include "unk_0202ACE0.h"
#include "unk_020366A0.h"
#include "unk_02038FFC.h"
@ -801,11 +800,11 @@ static int ov61_0222CBF0(UnkStruct_ov61_0222C664 *param0)
{
DWCUserData *v0;
s32 v1;
UnkStruct_02025CCC *v2;
SystemData *v2;
UnkStruct_0202B370 *v3;
v3 = sub_0202B370(param0->unk_00->unk_00->unk_04);
v2 = sub_02025CCC(param0->unk_00->unk_00->unk_04);
v2 = SaveData_GetSystemData(param0->unk_00->unk_00->unk_04);
v0 = sub_0202AD28(v3);
v1 = sub_02025D74(v2);

View File

@ -15,7 +15,7 @@
#include "overlay062/struct_ov62_02241130.h"
#include "inlines.h"
#include "unk_02025CB0.h"
#include "system_data.h"
static inline BOOL inline_ov62_022411B8(UnkStruct_0208C06C *param0);
@ -33,7 +33,7 @@ void ov62_02241130(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02241130 v0;
v0.unk_00 = sub_02025D74(sub_02025CCC(param0->unk_830));
v0.unk_00 = sub_02025D74(SaveData_GetSystemData(param0->unk_830));
v0.unk_04 = 102;
v0.unk_08 = param0->unk_830;
v0.unk_0C.unk_00 = param0;

View File

@ -14,7 +14,6 @@
#include "struct_decls/struct_02030EC4_decl.h"
#include "struct_decls/struct_0207E060_decl.h"
#include "struct_decls/struct_party_decl.h"
#include "struct_defs/struct_02055BA8.h"
#include "overlay066/ov66_02231428.h"
#include "overlay066/ov66_0223177C.h"
@ -54,12 +53,12 @@
#include "save_player.h"
#include "savedata.h"
#include "strbuf.h"
#include "system_data.h"
#include "trainer_info.h"
#include "unk_020041CC.h"
#include "unk_02005474.h"
#include "unk_02014D38.h"
#include "unk_0201D15C.h"
#include "unk_02025CB0.h"
#include "unk_0202631C.h"
#include "unk_0202C858.h"
#include "unk_02030EA4.h"
@ -2312,14 +2311,14 @@ static void ov66_0222F7C8(UnkStruct_ov66_0222F6C4 *param0, SaveData *param1, u32
Party *v1;
UnkStruct_0202C878 *v2;
PokedexData *v3;
UnkStruct_02055BA8 *v4;
GameTime *v4;
{
v0 = SaveData_GetTrainerInfo(param1);
v1 = Party_GetFromSavedata(param1);
v3 = SaveData_Pokedex(param1);
v2 = sub_0202C878(param1);
v4 = sub_02025CD8(param1);
v4 = SaveData_GetGameTime(param1);
}
{
@ -2365,7 +2364,7 @@ static void ov66_0222F7C8(UnkStruct_ov66_0222F6C4 *param0, SaveData *param1, u32
param0->unk_20.unk_41 = 0xff;
param0->unk_20.unk_43 = 0;
param0->unk_20.unk_42 = GAME_VERSION;
param0->unk_20.unk_44 = v4->unk_24;
param0->unk_20.unk_44 = v4->startTimestamp;
{
int v9;

View File

@ -22,9 +22,9 @@
#include "render_window.h"
#include "strbuf.h"
#include "string_template.h"
#include "system_data.h"
#include "text.h"
#include "unk_0200F174.h"
#include "unk_02025CB0.h"
#include "unk_0202ACE0.h"
#include "unk_02030CE8.h"
#include "unk_020366A0.h"

View File

@ -30,10 +30,10 @@
#include "savedata.h"
#include "strbuf.h"
#include "string_template.h"
#include "system_data.h"
#include "text.h"
#include "unk_02005474.h"
#include "unk_0200F174.h"
#include "unk_02025CB0.h"
#include "unk_0202D05C.h"
#include "unk_02030CE8.h"
#include "unk_020366A0.h"

View File

@ -31,6 +31,7 @@
#include "savedata.h"
#include "strbuf.h"
#include "string_template.h"
#include "system_data.h"
#include "text.h"
#include "trainer_info.h"
#include "unk_020041CC.h"
@ -40,7 +41,6 @@
#include "unk_02017728.h"
#include "unk_0201DBEC.h"
#include "unk_02024358.h"
#include "unk_02025CB0.h"
#include "unk_0202631C.h"
#include "unk_0202DAB4.h"
#include "unk_020366A0.h"
@ -656,7 +656,7 @@ static BOOL ov97_0222B7DC(void *param0, int param1, UnkStruct_ov97_02237808 *par
v0->unk_34 = 1;
}
if (sub_02025D64(sub_02025CCC(v0->unk_04)) == 1) {
if (sub_02025D64(SaveData_GetSystemData(v0->unk_04)) == 1) {
v0->unk_34 = 1;
}

View File

@ -4,7 +4,6 @@
#include <string.h>
#include "struct_decls/struct_0202442C_decl.h"
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_defs/struct_0202DF40.h"
#include "overlay077/const_ov77_021D742C.h"
@ -46,6 +45,7 @@
#include "string_template.h"
#include "sys_task.h"
#include "sys_task_manager.h"
#include "system_data.h"
#include "text.h"
#include "unk_020041CC.h"
#include "unk_02005474.h"
@ -663,7 +663,7 @@ static int ov97_0222DA64(OverlayManager *param0)
static int ov97_0222DA84(OverlayManager *param0)
{
Window *v0;
UnkStruct_02025CCC *v1;
SystemData *v1;
UnkStruct_ov97_0222D04C *v2 = OverlayManager_Data(param0);
MysteryGift *v3 = SaveData_MysteryGift(v2->unk_04);

View File

@ -4,7 +4,6 @@
#include <nitro.h>
#include <string.h>
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_0202B370_decl.h"
#include "struct_defs/struct_02099F80.h"
@ -36,6 +35,7 @@
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "system_data.h"
#include "text.h"
#include "unk_02005474.h"
#include "unk_0200A784.h"
@ -43,7 +43,6 @@
#include "unk_02017728.h"
#include "unk_0201DBEC.h"
#include "unk_0201E3D8.h"
#include "unk_02025CB0.h"
#include "unk_0202ACE0.h"
#include "unk_02030CE8.h"
#include "unk_020366A0.h"
@ -1726,11 +1725,11 @@ static int ov98_02248BFC (UnkStruct_ov98_02247704 * param0)
{
DWCUserData * v0;
s32 v1;
UnkStruct_02025CCC * v2;
SystemData *v2;
UnkStruct_0202B370 * v3;
v3 = sub_0202B370(param0->unk_00->unk_04);
v2 = sub_02025CCC(param0->unk_00->unk_04);
v2 = SaveData_GetSystemData(param0->unk_00->unk_04);
v0 = sub_0202AD28(v3);
v1 = sub_02025D74(v2);

View File

@ -13,8 +13,8 @@
#include "save_player.h"
#include "savedata.h"
#include "savedata_misc.h"
#include "system_data.h"
#include "unk_02014D38.h"
#include "unk_02025CB0.h"
#include "unk_0202602C.h"
#include "unk_020261E4.h"
#include "unk_0202631C.h"
@ -46,7 +46,7 @@
#include "vars_flags.h"
const SaveTableEntry gSaveTable[] = {
{ SAVE_TABLE_ENTRY_SYSTEM, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)SystemData_SaveSize, (SaveEntryInitFunc)SystemData_Init },
{ SAVE_TABLE_ENTRY_SYSTEM, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)SystemData_SaveSize, (SaveEntryInitFunc)SystemData_Clear },
{ SAVE_TABLE_ENTRY_PLAYER, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)Player_SaveSize, (SaveEntryInitFunc)Player_Init },
{ SAVE_TABLE_ENTRY_PARTY, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)Party_SaveSize, (SaveEntryInitFunc)Party_Init },
{ SAVE_TABLE_ENTRY_BAG, SAVE_BLOCK_ID_NORMAL, (SaveEntrySizeFunc)Bag_SaveSize, (SaveEntryInitFunc)Bag_Init },

View File

@ -11,7 +11,6 @@
#include "struct_decls/pokedexdata_decl.h"
#include "struct_decls/struct_02014EC4_decl.h"
#include "struct_decls/struct_0202440C_decl.h"
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_02026218_decl.h"
#include "struct_decls/struct_02026310_decl.h"
#include "struct_decls/struct_02028430_decl.h"
@ -128,6 +127,7 @@
#include "string_template.h"
#include "sys_task.h"
#include "sys_task_manager.h"
#include "system_data.h"
#include "text.h"
#include "trainer_data.h"
#include "trainer_info.h"
@ -135,7 +135,6 @@
#include "unk_0200F174.h"
#include "unk_02014D38.h"
#include "unk_0201D15C.h"
#include "unk_02025CB0.h"
#include "unk_020261E4.h"
#include "unk_0202631C.h"
#include "unk_02028124.h"
@ -7237,11 +7236,11 @@ static BOOL ScrCmd_282(ScriptContext *ctx)
{
u16 *v0 = ScriptContext_GetVarPointer(ctx);
FieldSystem *fieldSystem = ctx->fieldSystem;
UnkStruct_02025CCC *v2;
SystemData *v2;
v2 = sub_02025CCC(ctx->fieldSystem->saveData);
v2 = SaveData_GetSystemData(ctx->fieldSystem->saveData);
if ((sub_02025D5C(v2) == sub_02055BB8(fieldSystem)) && (sub_02025D60(v2) == sub_02055BC4(fieldSystem))) {
if ((SystemData_GetOwnerBirthMonth(v2) == sub_02055BB8(fieldSystem)) && (SystemData_GetOwnerBirthDayOfMonth(v2) == sub_02055BC4(fieldSystem))) {
*v0 = 1;
} else {
*v0 = 0;
@ -7663,9 +7662,9 @@ static BOOL ScrCmd_2AA(ScriptContext *ctx)
static BOOL ScrCmd_2AC(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
UnkStruct_02025CCC *v1;
SystemData *v1;
v1 = sub_02025CCC(ctx->fieldSystem->saveData);
v1 = SaveData_GetSystemData(ctx->fieldSystem->saveData);
sub_02025D6C(v1, 1);
return 0;

125
src/system_data.c Normal file
View File

@ -0,0 +1,125 @@
#include "system_data.h"
#include "constants/savedata/save_table.h"
#include "rtc.h"
#include "savedata.h"
int SystemData_SaveSize()
{
return sizeof(SystemData);
}
void SystemData_Clear(SystemData *systemData)
{
MI_CpuClearFast(systemData, sizeof(SystemData));
GameTime_Clear(&systemData->gameTime);
}
SystemData *SaveData_GetSystemData(SaveData *systemData)
{
return SaveData_SaveTable(systemData, SAVE_TABLE_ENTRY_SYSTEM);
}
GameTime *SaveData_GetGameTime(SaveData *saveData)
{
return &SaveData_GetSystemData(saveData)->gameTime;
}
void SystemData_Init(SystemData *systemData)
{
OSOwnerInfo ownerInfo;
systemData->rtcOffset = OS_GetOwnerRtcOffset();
OS_GetMacAddress(systemData->macAddress);
OS_GetOwnerInfo(&ownerInfo);
systemData->ownerBirthMonth = ownerInfo.birthday.month;
systemData->ownerBirthDayOfMonth = ownerInfo.birthday.day;
}
BOOL SystemData_MatchesCurrentSystem(const SystemData *systemData)
{
u8 currMacAddress[6];
OS_GetMacAddress(currMacAddress);
for (int i = 0; i < 6; i++) {
if (systemData->macAddress[i] != currMacAddress[i]) {
return FALSE;
}
}
return TRUE;
}
BOOL SystemData_MatchesCurrentRTCOffset(const SystemData *systemData)
{
return OS_GetOwnerRtcOffset() == systemData->rtcOffset;
}
u8 SystemData_GetOwnerBirthMonth(const SystemData *systemData)
{
return systemData->ownerBirthMonth;
}
u8 SystemData_GetOwnerBirthDayOfMonth(const SystemData *systemData)
{
return systemData->ownerBirthDayOfMonth;
}
BOOL sub_02025D64(const SystemData *param0)
{
return param0->unk_48;
}
void sub_02025D6C(SystemData *param0, BOOL param1)
{
param0->unk_48 = param1;
}
s32 sub_02025D74(const SystemData *param0)
{
return param0->unk_4C;
}
void sub_02025D78(SystemData *param0, s32 param1)
{
if (param0->unk_4C == 0) {
param0->unk_4C = param1;
}
}
void GameTime_Clear(GameTime *gameTime)
{
gameTime->canary = TRUE;
GetCurrentDateTime(&gameTime->date, &gameTime->time);
gameTime->day = RTC_ConvertDateToDay(&gameTime->date);
gameTime->startTimestamp = RTC_ConvertDateTimeToSecond(&gameTime->date, &gameTime->time);
gameTime->playTimestamp = 0;
gameTime->penaltyInMinutes = 0;
}
BOOL GameTime_HasPenalty(const GameTime *gameTime)
{
return gameTime->penaltyInMinutes != 0;
}
void GameTime_DecrementPenalty(GameTime *gameTime, int val)
{
if (gameTime->penaltyInMinutes > 24 * 60) {
gameTime->penaltyInMinutes = 24 * 60;
}
if (gameTime->penaltyInMinutes < val) {
gameTime->penaltyInMinutes = 0;
} else {
gameTime->penaltyInMinutes -= val;
}
}
void GameTime_StartPenalty(GameTime *gameTime)
{
gameTime->penaltyInMinutes = 60 * 24;
GetCurrentDateTime(&gameTime->date, &gameTime->time);
gameTime->day = RTC_ConvertDateToDay(&gameTime->date);
}

View File

@ -1,150 +0,0 @@
#include "unk_02025CB0.h"
#include <nitro.h>
#include <string.h>
#include "struct_defs/struct_02055BA8.h"
#include "rtc.h"
#include "savedata.h"
typedef struct UnkStruct_02025CCC_t {
s64 unk_00;
u8 unk_08[6];
u8 unk_0E;
u8 unk_0F;
UnkStruct_02055BA8 unk_10;
u8 unk_48;
u8 unk_49;
s32 unk_4C;
u32 unk_50[3];
} UnkStruct_02025CCC;
int SystemData_SaveSize(void)
{
return sizeof(UnkStruct_02025CCC);
}
void SystemData_Init(UnkStruct_02025CCC *param0)
{
MI_CpuClearFast(param0, sizeof(UnkStruct_02025CCC));
sub_02025D84(&param0->unk_10);
}
UnkStruct_02025CCC *sub_02025CCC(SaveData *param0)
{
return SaveData_SaveTable(param0, 0);
}
UnkStruct_02055BA8 *sub_02025CD8(SaveData *param0)
{
UnkStruct_02025CCC *v0;
v0 = sub_02025CCC(param0);
return &v0->unk_10;
}
void sub_02025CE4(UnkStruct_02025CCC *param0)
{
OSOwnerInfo v0;
param0->unk_00 = OS_GetOwnerRtcOffset();
OS_GetMacAddress(param0->unk_08);
OS_GetOwnerInfo(&v0);
param0->unk_0E = v0.birthday.month;
param0->unk_0F = v0.birthday.day;
}
BOOL sub_02025D10(const UnkStruct_02025CCC *param0)
{
int v0;
u8 v1[6];
OS_GetMacAddress(v1);
for (v0 = 0; v0 < 6; v0++) {
if (param0->unk_08[v0] != v1[v0]) {
return 0;
}
}
return 1;
}
BOOL sub_02025D40(const UnkStruct_02025CCC *param0)
{
return OS_GetOwnerRtcOffset() == param0->unk_00;
}
u8 sub_02025D5C(const UnkStruct_02025CCC *param0)
{
return param0->unk_0E;
}
u8 sub_02025D60(const UnkStruct_02025CCC *param0)
{
return param0->unk_0F;
}
BOOL sub_02025D64(const UnkStruct_02025CCC *param0)
{
return param0->unk_48;
}
void sub_02025D6C(UnkStruct_02025CCC *param0, BOOL param1)
{
param0->unk_48 = param1;
}
s32 sub_02025D74(const UnkStruct_02025CCC *param0)
{
return param0->unk_4C;
}
void sub_02025D78(UnkStruct_02025CCC *param0, s32 param1)
{
if (param0->unk_4C == 0) {
param0->unk_4C = param1;
}
}
void sub_02025D84(UnkStruct_02055BA8 *param0)
{
param0->unk_00 = 1;
GetCurrentDateTime(&param0->unk_04, &param0->unk_14);
param0->unk_20 = RTC_ConvertDateToDay(&param0->unk_04);
param0->unk_24 = RTC_ConvertDateTimeToSecond(&param0->unk_04, &param0->unk_14);
param0->unk_2C = 0;
param0->unk_34 = 0;
}
BOOL sub_02025DB8(const UnkStruct_02055BA8 *param0)
{
if (param0->unk_34 != 0) {
return 1;
} else {
return 0;
}
}
void sub_02025DC8(UnkStruct_02055BA8 *param0, int param1)
{
if (param0->unk_34 > 24 * 60) {
param0->unk_34 = 24 * 60;
}
if (param0->unk_34 < param1) {
param0->unk_34 = 0;
} else {
param0->unk_34 -= param1;
}
}
void sub_02025DE8(UnkStruct_02055BA8 *param0)
{
param0->unk_34 = 60 * 24;
GetCurrentDateTime(&param0->unk_04, &param0->unk_14);
param0->unk_20 = RTC_ConvertDateToDay(&param0->unk_04);
}

View File

@ -3,7 +3,6 @@
#include <nitro.h>
#include <string.h>
#include "struct_decls/struct_02025CCC_decl.h"
#include "struct_decls/struct_0202C878_decl.h"
#include "struct_defs/sentence.h"
#include "struct_defs/struct_0202F298_sub1.h"
@ -16,10 +15,10 @@
#include "savedata.h"
#include "savedata_misc.h"
#include "strbuf.h"
#include "system_data.h"
#include "trainer_info.h"
#include "unk_02014A84.h"
#include "unk_02014D38.h"
#include "unk_02025CB0.h"
#include "unk_0202C858.h"
#include "unk_0205C980.h"
#include "unk_020996D0.h"
@ -43,7 +42,7 @@ void sub_02030AA0(UnkStruct_02030A80 *param0, SaveData *param1)
{
TrainerInfo *v0 = SaveData_GetTrainerInfo(param1);
UnkStruct_0202C878 *v1 = sub_0202C878(param1);
UnkStruct_02025CCC *v2 = sub_02025CCC(param1);
SystemData *v2 = SaveData_GetSystemData(param1);
const MiscSaveBlock *v3 = SaveData_MiscSaveBlockConst(param1);
int v4, v5, v6;
int v7;

View File

@ -5,14 +5,12 @@
#include "constants/overworld_weather.h"
#include "struct_defs/struct_02055BA8.h"
#include "field/field_system.h"
#include "inlines.h"
#include "map_header.h"
#include "rtc.h"
#include "unk_02025CB0.h"
#include "system_data.h"
#include "unk_020559DC.h"
static const u8 Unk_020E98F4[] = {
@ -1860,12 +1858,12 @@ int FieldSystem_GetWeather(FieldSystem *fieldSystem, int param1)
{
int v1;
UnkStruct_02055BA8 *v2 = sub_02025CD8(fieldSystem->saveData);
GameTime *v2 = SaveData_GetGameTime(fieldSystem->saveData);
v1 = DayNumberForDate(&v2->unk_04) - 1;
v1 = DayNumberForDate(&v2->date) - 1;
GF_ASSERT(v1 >= 0 && v1 < 366);
if ((v2->unk_04.month > 2) && !inline_0203A944(v2->unk_04.year)) {
if ((v2->date.month > 2) && !inline_0203A944(v2->date.year)) {
v1++;
}

View File

@ -106,10 +106,10 @@
#include "savedata.h"
#include "savedata_misc.h"
#include "strbuf.h"
#include "system_data.h"
#include "trainer_info.h"
#include "unk_02017498.h"
#include "unk_0201D15C.h"
#include "unk_02025CB0.h"
#include "unk_0202631C.h"
#include "unk_02028124.h"
#include "unk_020298BC.h"
@ -1366,7 +1366,7 @@ void sub_0203E0FC(FieldSystem *fieldSystem, int param1)
v0 = Heap_AllocFromHeapAtEnd(11, sizeof(UnkStruct_0203E0FC));
v0->unk_00 = sub_0202DA40(fieldSystem->saveData);
v0->unk_04 = sub_02025CCC(fieldSystem->saveData);
v0->unk_04 = SaveData_GetSystemData(fieldSystem->saveData);
v0->unk_08 = SaveData_SaveTable(fieldSystem->saveData, 2);
v0->unk_0C = SaveData_PCBoxes(fieldSystem->saveData);
v0->unk_10 = SaveData_Pokedex(fieldSystem->saveData);
@ -1403,7 +1403,7 @@ void *sub_0203E1AC(FieldSystem *fieldSystem, int param1, int param2)
v0->unk_00 = sub_0202D750(fieldSystem->saveData);
v0->unk_04 = sub_0202D764(fieldSystem->saveData);
v0->unk_08 = sub_02025CCC(fieldSystem->saveData);
v0->unk_08 = SaveData_GetSystemData(fieldSystem->saveData);
v0->unk_10 = SaveData_Options(fieldSystem->saveData);
v0->unk_14 = sub_0202AD28(sub_0202B370(fieldSystem->saveData));
v0->unk_0C = fieldSystem->saveData;

View File

@ -12,7 +12,6 @@
#include "struct_decls/struct_party_decl.h"
#include "struct_defs/chatot_cry.h"
#include "struct_defs/struct_0202610C.h"
#include "struct_defs/struct_02055BA8.h"
#include "struct_defs/struct_0205EC34.h"
#include "struct_defs/struct_0209C370.h"
#include "struct_defs/trainer_data.h"
@ -41,8 +40,8 @@
#include "save_player.h"
#include "savedata.h"
#include "strbuf.h"
#include "system_data.h"
#include "trainer_info.h"
#include "unk_02025CB0.h"
#include "unk_0202602C.h"
#include "unk_0202631C.h"
#include "unk_02027F84.h"
@ -264,9 +263,9 @@ void sub_020521B8(BattleParams *param0, const FieldSystem *fieldSystem, SaveData
param0->unk_128 = MapHeader_GetBattleBG(param3);
param0->unk_12C = 9;
{
UnkStruct_02055BA8 *v7 = sub_02025CD8(param2);
GameTime *v7 = SaveData_GetGameTime(param2);
param0->unk_138 = TimeOfDayForHour(v7->unk_14.hour);
param0->unk_138 = TimeOfDayForHour(v7->time.hour);
}
}

View File

@ -5,7 +5,6 @@
#include "struct_decls/struct_0202440C_decl.h"
#include "struct_decls/struct_party_decl.h"
#include "struct_defs/struct_02055BA8.h"
#include "field/field_system.h"
#include "savedata/save_table.h"
@ -16,7 +15,7 @@
#include "pokemon.h"
#include "rtc.h"
#include "script_manager.h"
#include "unk_02025CB0.h"
#include "system_data.h"
#include "unk_0202854C.h"
#include "unk_0202B37C.h"
#include "unk_0202C858.h"
@ -31,16 +30,16 @@
static void sub_02055AC0(FieldSystem *fieldSystem, s32 param1);
static void sub_02055B64(FieldSystem *fieldSystem, s32 param1, const RTCTime *param2);
static void sub_02055A14(FieldSystem *fieldSystem, UnkStruct_02055BA8 *param1, const RTCDate *param2);
static void inline_020559DC(FieldSystem *fieldSystem, UnkStruct_02055BA8 *param1, const RTCDate *param2, const RTCTime *param3);
static void sub_02055A14(FieldSystem *fieldSystem, GameTime *param1, const RTCDate *param2);
static void inline_020559DC(FieldSystem *fieldSystem, GameTime *param1, const RTCDate *param2, const RTCTime *param3);
void sub_020559DC(FieldSystem *fieldSystem)
{
RTCDate v0;
RTCTime v1;
UnkStruct_02055BA8 *v2 = sub_02025CD8(fieldSystem->saveData);
GameTime *v2 = SaveData_GetGameTime(fieldSystem->saveData);
if (v2->unk_00 == 0) {
if (v2->canary == FALSE) {
return;
}
@ -50,40 +49,40 @@ void sub_020559DC(FieldSystem *fieldSystem)
inline_020559DC(fieldSystem, v2, &v0, &v1);
}
static void sub_02055A14(FieldSystem *fieldSystem, UnkStruct_02055BA8 *param1, const RTCDate *param2)
static void sub_02055A14(FieldSystem *fieldSystem, GameTime *param1, const RTCDate *param2)
{
s32 v0;
v0 = RTC_ConvertDateToDay(param2);
if (v0 < param1->unk_20) {
param1->unk_20 = v0;
} else if (v0 > param1->unk_20) {
sub_02055AC0(fieldSystem, v0 - param1->unk_20);
param1->unk_20 = v0;
if (v0 < param1->day) {
param1->day = v0;
} else if (v0 > param1->day) {
sub_02055AC0(fieldSystem, v0 - param1->day);
param1->day = v0;
}
}
static void inline_020559DC(FieldSystem *fieldSystem, UnkStruct_02055BA8 *param1, const RTCDate *param2, const RTCTime *param3)
static void inline_020559DC(FieldSystem *fieldSystem, GameTime *param1, const RTCDate *param2, const RTCTime *param3)
{
s64 v0, v1;
s32 v2;
v0 = RTC_ConvertDateTimeToSecond(param2, param3);
v1 = RTC_ConvertDateTimeToSecond(&param1->unk_04, &param1->unk_14);
v1 = RTC_ConvertDateTimeToSecond(&param1->date, &param1->time);
if (v0 < v1) {
param1->unk_04 = *param2;
param1->unk_14 = *param3;
param1->date = *param2;
param1->time = *param3;
} else {
v2 = (v0 - v1) / 60;
if (v2 > 0) {
sub_02025DC8(param1, v2);
GameTime_DecrementPenalty(param1, v2);
sub_02055B64(fieldSystem, v2, param3);
param1->unk_04 = *param2;
param1->unk_14 = *param3;
param1->date = *param2;
param1->time = *param3;
}
}
}
@ -152,61 +151,61 @@ static void sub_02055B64(FieldSystem *fieldSystem, s32 param1, const RTCTime *pa
int sub_02055BA8(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return TimeOfDayForHour(v0->unk_14.hour);
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return TimeOfDayForHour(v0->time.hour);
}
int sub_02055BB8(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return v0->unk_04.month;
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return v0->date.month;
}
int sub_02055BC4(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return v0->unk_04.day;
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return v0->date.day;
}
int sub_02055BD0(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return v0->unk_04.week;
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return v0->date.week;
}
int sub_02055BDC(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return v0->unk_14.hour;
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return v0->time.hour;
}
int sub_02055BE8(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return v0->unk_14.minute;
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return v0->time.minute;
}
void sub_02055BF4(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
RTC_ConvertSecondToDateTime(param1, param2, v0->unk_24);
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
RTC_ConvertSecondToDateTime(param1, param2, v0->startTimestamp);
}
void sub_02055C10(const FieldSystem *fieldSystem, RTCDate *param1, RTCTime *param2)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
RTC_ConvertSecondToDateTime(param1, param2, v0->unk_2C);
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
RTC_ConvertSecondToDateTime(param1, param2, v0->playTimestamp);
}
void sub_02055C2C(const FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
v0->unk_2C = GetTimestamp();
v0->playTimestamp = GetTimestamp();
}
BOOL sub_02055C40(FieldSystem *fieldSystem)
{
UnkStruct_02055BA8 *v0 = sub_02025CD8(fieldSystem->saveData);
return sub_02025DB8(v0);
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
return GameTime_HasPenalty(v0);
}