2023-08-15 18:21:19 +02:00
|
|
|
#ifndef Z64SRAM_H
|
|
|
|
#define Z64SRAM_H
|
|
|
|
|
|
|
|
#include "ultra64/ultratypes.h"
|
|
|
|
|
2025-02-19 05:54:39 -05:00
|
|
|
struct FileSelectState;
|
|
|
|
struct GameState;
|
|
|
|
|
2024-08-12 00:07:48 -07:00
|
|
|
typedef struct SramContext {
|
2023-08-15 18:21:19 +02:00
|
|
|
/* 0x00 */ u8* readBuff;
|
|
|
|
} SramContext; // size = 0x4
|
|
|
|
|
|
|
|
#define SRAM_SIZE 0x8000
|
|
|
|
#define SRAM_HEADER_SIZE 0x10
|
|
|
|
|
2024-08-12 00:07:48 -07:00
|
|
|
typedef enum SramHeaderField {
|
2023-08-15 18:21:19 +02:00
|
|
|
/* 0x00 */ SRAM_HEADER_SOUND,
|
2025-02-15 16:36:19 -08:00
|
|
|
/* 0x01 */ SRAM_HEADER_Z_TARGET,
|
2023-08-15 18:21:19 +02:00
|
|
|
/* 0x02 */ SRAM_HEADER_LANGUAGE,
|
2025-01-17 03:56:22 -08:00
|
|
|
/* 0x03 */ SRAM_HEADER_MAGIC // must be the value in `sSramDefaultHeader` for save to be considered valid
|
2023-08-15 18:21:19 +02:00
|
|
|
} SramHeaderField;
|
|
|
|
|
2025-02-19 05:54:39 -05:00
|
|
|
void Sram_InitNewSave(void);
|
|
|
|
void Sram_InitDebugSave(void);
|
|
|
|
void Sram_OpenSave(SramContext* sramCtx);
|
|
|
|
void Sram_WriteSave(SramContext* sramCtx);
|
|
|
|
void Sram_VerifyAndLoadAllSaves(struct FileSelectState* fileSelect, SramContext* sramCtx);
|
|
|
|
void Sram_InitSave(struct FileSelectState* fileSelect, SramContext* sramCtx);
|
|
|
|
void Sram_EraseSave(struct FileSelectState* fileSelect, SramContext* sramCtx);
|
|
|
|
void Sram_CopySave(struct FileSelectState* fileSelect, SramContext* sramCtx);
|
|
|
|
void Sram_WriteSramHeader(SramContext* sramCtx);
|
|
|
|
void Sram_InitSram(struct GameState* gameState, SramContext* sramCtx);
|
|
|
|
void Sram_Alloc(struct GameState* gameState, SramContext* sramCtx);
|
2025-02-24 20:55:55 -05:00
|
|
|
void Sram_Init(struct GameState* play, SramContext* sramCtx);
|
2025-02-19 05:54:39 -05:00
|
|
|
|
2023-08-15 18:21:19 +02:00
|
|
|
#endif
|