auto savefile padding

This commit is contained in:
Reonu
2021-07-15 01:06:52 +01:00
parent ba670dcdd1
commit c2ebc5a01e
3 changed files with 14 additions and 5 deletions

View File

@@ -28,6 +28,6 @@ ALIGNED8 u8 gGfxSPTaskStack[SP_DRAM_STACK_SIZE8];
// 0xc00 bytes for f3dex, 0x900 otherwise
ALIGNED8 u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];
// 0x200 bytes
ALIGNED8 struct SaveBuffer gSaveBuffer;
struct SaveBuffer __attribute__ ((aligned (8))) gSaveBuffer;
// 0x190a0 bytes
struct GfxPool gGfxPools[2];

View File

@@ -20,7 +20,7 @@
#define MENU_DATA_MAGIC 0x4849
#define SAVE_FILE_MAGIC 0x4441
STATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, "eeprom buffer size must match");
//STATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, "eeprom buffer size must match");
extern struct SaveBuffer gSaveBuffer;

View File

@@ -8,7 +8,14 @@
#include "course_table.h"
#define EEPROM_SIZE 0x200
#if defined(SRAM)
#define EEPROM_SIZE 0x8000
#elif defined(EEP16K)
#define EEPROM_SIZE 0x800
#else
#define EEPROM_SIZE 0x200
#endif
#define NUM_SAVE_FILES 4
struct SaveBlockSignature
@@ -55,13 +62,13 @@ struct MainMenuSaveData
#ifdef VERSION_EU
u16 language;
#define SUBTRAHEND 8
#define SUBTRAHEND 10
#else
#define SUBTRAHEND 6
#endif
// Pad to match the EEPROM size of 0x200 (10 bytes on JP/US, 8 bytes on EU)
u8 filler[EEPROM_SIZE / 2 - SUBTRAHEND - NUM_SAVE_FILES * (4 + sizeof(struct SaveFile))];
//u8 filler[EEPROM_SIZE / 2 - SUBTRAHEND - NUM_SAVE_FILES * (4 + sizeof(struct SaveFile))];
struct SaveBlockSignature signature;
};
@@ -74,6 +81,8 @@ struct SaveBuffer
struct MainMenuSaveData menuData[2];
};
STATIC_ASSERT(sizeof(struct SaveBuffer) <= EEPROM_SIZE, "ERROR: Save struct too big for specified save type");
extern u8 gLastCompletedCourseNum;
extern u8 gLastCompletedStarNum;
extern s8 sUnusedGotGlobalCoinHiScore;