sf64/include/sf64save.h
petrie911 209b929eda
Import main, context, and option bss. Refactor headers. Some enum cleanup. (#130)
* stuff

* fixes

* addrs

* new header

* its bss time

* format and such

* fake symbols begone

* whoops forgot pragmas
2024-02-16 19:04:22 -03:00

69 lines
1.6 KiB
C

#ifndef SF64_SAVE
#define SF64_SAVE
#include "PR/ultratypes.h"
typedef struct {
/* bit 0 */ u8 unk_0 : 3;
/* bit 3 */ u8 expertMedal : 1;
/* bit 4 */ u8 expertClear : 1;
/* bit 5 */ u8 played : 1;
/* bit 6 */ u8 normalMedal : 1;
/* bit 7 */ u8 normalClear : 1;
} PlanetData; // size = 0x1
typedef struct {
/* bit 0 */ u16 unk_0 : 8;
/* bit 8 */ u16 unk_8 : 4;
/* bit C */ u16 unk_C : 1;
/* bit D */ u16 unk_D : 1;
/* bit E */ u16 unk_E : 1;
/* bit F */ u16 unk_F : 1;
} Save_SubStruct_5E; // size = 0x10
typedef struct{
/* 0x00 */ PlanetData planet[16];
/* 0x10 */ char pad10[0x4];
/* 0x14 */ u8 soundMode;
/* 0x15 */ u8 musicVolume;
/* 0x16 */ u8 voiceVolume;
/* 0x17 */ u8 sfxVolume;
/* 0x18 */ u8 unk_18[10][3];
/* 0x36 */ u8 unk_36[10];
/* 0x40 */ u8 unk_40[10];
/* 0x4A */ u16 unk_4A[10];
/* 0x5E */ Save_SubStruct_5E unk_5E[10][7];
/* 0xEA */ u8 unk_EA;
/* 0xEB */ char padEB[0x3];
/* 0xEE */ char padEE[0x10];
} SaveData; // size = 0xFE
typedef struct {
/* 0x00 */ union {
u8 raw[sizeof(SaveData)];
SaveData data;
};
/* 0xFE */ u16 checksum;
} Save; // size = 0x100
typedef struct {
/* 0x000 */ Save save;
/* 0x100 */ Save backup;
} SaveFile; // size = 0x200
s32 Save_Write(void);
s32 Save_Read(void);
void Save_ReadData(void);
void Save_WriteData(void);
s32 Save_WriteEeprom(SaveFile*);
s32 Save_ReadEeprom(SaveFile*);
extern SaveFile gSaveIOBuffer;
extern SaveFile sPrevSaveData;
extern Save gDefaultSave;
extern SaveFile gSaveFile;
#endif