mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-27 12:14:20 +01:00
Fix incorrect NUM_SECTORS_PER_SLOT define
This commit is contained in:
parent
934a7e7a5d
commit
bc409baeff
@ -34,8 +34,6 @@ struct SaveSectionOffsets
|
|||||||
#define SECTOR_FOOTER_SIZE 128
|
#define SECTOR_FOOTER_SIZE 128
|
||||||
#define SECTOR_SIZE (SECTOR_DATA_SIZE + SECTOR_FOOTER_SIZE)
|
#define SECTOR_SIZE (SECTOR_DATA_SIZE + SECTOR_FOOTER_SIZE)
|
||||||
|
|
||||||
// Emerald changes this definition to be the sectors per slot.
|
|
||||||
#define NUM_SECTORS_PER_SLOT 16
|
|
||||||
#define NUM_SAVE_SLOTS 2
|
#define NUM_SAVE_SLOTS 2
|
||||||
|
|
||||||
#define UNKNOWN_CHECK_VALUE 0x8012025
|
#define UNKNOWN_CHECK_VALUE 0x8012025
|
||||||
@ -66,7 +64,7 @@ enum
|
|||||||
#define SECTOR_ID_SAVEBLOCK1_END 4
|
#define SECTOR_ID_SAVEBLOCK1_END 4
|
||||||
#define SECTOR_ID_PKMN_STORAGE_START 5
|
#define SECTOR_ID_PKMN_STORAGE_START 5
|
||||||
#define SECTOR_ID_PKMN_STORAGE_END 13
|
#define SECTOR_ID_PKMN_STORAGE_END 13
|
||||||
#define SECTOR_SAVE_SLOT_LENGTH 14
|
#define NUM_SECTORS_PER_SLOT 14
|
||||||
// Save Slot 1: 0-13; Save Slot 2: 14-27
|
// Save Slot 1: 0-13; Save Slot 2: 14-27
|
||||||
#define SECTOR_ID_HOF_1 28
|
#define SECTOR_ID_HOF_1 28
|
||||||
#define SECTOR_ID_HOF_2 29
|
#define SECTOR_ID_HOF_2 29
|
||||||
|
53
src/save.c
53
src/save.c
@ -81,7 +81,7 @@ u16 gUnknown_03006208;
|
|||||||
u16 gSaveUnusedVar;
|
u16 gSaveUnusedVar;
|
||||||
u16 gSaveFileStatus;
|
u16 gSaveFileStatus;
|
||||||
void (*gGameContinueCallback)(void);
|
void (*gGameContinueCallback)(void);
|
||||||
struct SaveSectionLocation gRamSaveSectionLocations[SECTOR_SAVE_SLOT_LENGTH];
|
struct SaveSectionLocation gRamSaveSectionLocations[NUM_SECTORS_PER_SLOT];
|
||||||
u16 gSaveUnusedVar2;
|
u16 gSaveUnusedVar2;
|
||||||
u16 gSaveAttemptStatus;
|
u16 gSaveAttemptStatus;
|
||||||
|
|
||||||
@ -92,10 +92,11 @@ void ClearSaveData(void)
|
|||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
for (i = 0; i < NUM_SECTORS_PER_SLOT; i++)
|
// Clear the full save two sectors at a time
|
||||||
|
for (i = 0; i < SECTORS_COUNT / 2; i++)
|
||||||
{
|
{
|
||||||
EraseFlashSector(i);
|
EraseFlashSector(i);
|
||||||
EraseFlashSector(i + NUM_SECTORS_PER_SLOT); // clear slot 2.
|
EraseFlashSector(i + SECTORS_COUNT / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,11 +144,11 @@ static u8 SaveWriteToFlash(u16 sectorId, const struct SaveSectionLocation *locat
|
|||||||
gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write.
|
gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write.
|
||||||
gLastSaveCounter = gSaveCounter;
|
gLastSaveCounter = gSaveCounter;
|
||||||
gLastWrittenSector++;
|
gLastWrittenSector++;
|
||||||
gLastWrittenSector = gLastWrittenSector % SECTOR_SAVE_SLOT_LENGTH; // array count save sector locations
|
gLastWrittenSector = gLastWrittenSector % NUM_SECTORS_PER_SLOT; // array count save sector locations
|
||||||
gSaveCounter++;
|
gSaveCounter++;
|
||||||
status = SAVE_STATUS_OK;
|
status = SAVE_STATUS_OK;
|
||||||
|
|
||||||
for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
|
for (i = 0; i < NUM_SECTORS_PER_SLOT; i++)
|
||||||
HandleWriteSector(i, location);
|
HandleWriteSector(i, location);
|
||||||
|
|
||||||
if (gDamagedSaveSectors != 0) // skip the damaged sector.
|
if (gDamagedSaveSectors != 0) // skip the damaged sector.
|
||||||
@ -169,8 +170,8 @@ static u8 HandleWriteSector(u16 sectorId, const struct SaveSectionLocation *loca
|
|||||||
u16 size;
|
u16 size;
|
||||||
|
|
||||||
sector = sectorId + gLastWrittenSector;
|
sector = sectorId + gLastWrittenSector;
|
||||||
sector %= SECTOR_SAVE_SLOT_LENGTH;
|
sector %= NUM_SECTORS_PER_SLOT;
|
||||||
sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
sector += NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
|
|
||||||
data = location[sectorId].data;
|
data = location[sectorId].data;
|
||||||
size = location[sectorId].size;
|
size = location[sectorId].size;
|
||||||
@ -227,7 +228,7 @@ static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *l
|
|||||||
gLastKnownGoodSector = gLastWrittenSector;
|
gLastKnownGoodSector = gLastWrittenSector;
|
||||||
gLastSaveCounter = gSaveCounter;
|
gLastSaveCounter = gSaveCounter;
|
||||||
gLastWrittenSector++;
|
gLastWrittenSector++;
|
||||||
gLastWrittenSector %= SECTOR_SAVE_SLOT_LENGTH;
|
gLastWrittenSector %= NUM_SECTORS_PER_SLOT;
|
||||||
gSaveCounter++;
|
gSaveCounter++;
|
||||||
gUnknown_03006208 = 0;
|
gUnknown_03006208 = 0;
|
||||||
gDamagedSaveSectors = 0;
|
gDamagedSaveSectors = 0;
|
||||||
@ -292,8 +293,8 @@ static u8 ClearSaveData_2(u16 sectorId, const struct SaveSectionLocation *locati
|
|||||||
u8 status;
|
u8 status;
|
||||||
|
|
||||||
sector = sectorId + gLastWrittenSector;
|
sector = sectorId + gLastWrittenSector;
|
||||||
sector %= SECTOR_SAVE_SLOT_LENGTH;
|
sector %= NUM_SECTORS_PER_SLOT;
|
||||||
sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
sector += NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
|
|
||||||
data = location[sectorId].data;
|
data = location[sectorId].data;
|
||||||
size = location[sectorId].size;
|
size = location[sectorId].size;
|
||||||
@ -362,8 +363,8 @@ static u8 sav12_xor_get(u16 sectorId, const struct SaveSectionLocation *location
|
|||||||
u16 sector;
|
u16 sector;
|
||||||
|
|
||||||
sector = sectorId + gLastWrittenSector; // no sub 1?
|
sector = sectorId + gLastWrittenSector; // no sub 1?
|
||||||
sector %= SECTOR_SAVE_SLOT_LENGTH;
|
sector %= NUM_SECTORS_PER_SLOT;
|
||||||
sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
sector += NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
|
|
||||||
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
|
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
|
||||||
{
|
{
|
||||||
@ -385,8 +386,8 @@ static u8 sub_8152CAC(u16 sectorId, const struct SaveSectionLocation *location)
|
|||||||
u16 sector;
|
u16 sector;
|
||||||
|
|
||||||
sector = sectorId + gLastWrittenSector - 1;
|
sector = sectorId + gLastWrittenSector - 1;
|
||||||
sector %= SECTOR_SAVE_SLOT_LENGTH;
|
sector %= NUM_SECTORS_PER_SLOT;
|
||||||
sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
sector += NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
|
|
||||||
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
|
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
|
||||||
{
|
{
|
||||||
@ -408,8 +409,8 @@ static u8 sub_8152D44(u16 sectorId, const struct SaveSectionLocation *location)
|
|||||||
u16 sector;
|
u16 sector;
|
||||||
|
|
||||||
sector = sectorId + gLastWrittenSector - 1; // no sub 1?
|
sector = sectorId + gLastWrittenSector - 1; // no sub 1?
|
||||||
sector %= SECTOR_SAVE_SLOT_LENGTH;
|
sector %= NUM_SECTORS_PER_SLOT;
|
||||||
sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
sector += NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
|
|
||||||
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
|
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
|
||||||
{
|
{
|
||||||
@ -447,10 +448,10 @@ static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location)
|
|||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
u16 checksum;
|
u16 checksum;
|
||||||
u16 slotOffset = SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
u16 slotOffset = NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
u16 id;
|
u16 id;
|
||||||
|
|
||||||
for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
|
for (i = 0; i < NUM_SECTORS_PER_SLOT; i++)
|
||||||
{
|
{
|
||||||
DoReadFlashWholeSection(i + slotOffset, gFastSaveSection);
|
DoReadFlashWholeSection(i + slotOffset, gFastSaveSection);
|
||||||
id = gFastSaveSection->id;
|
id = gFastSaveSection->id;
|
||||||
@ -481,7 +482,7 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
|
|||||||
u8 saveSlot2Status;
|
u8 saveSlot2Status;
|
||||||
|
|
||||||
// check save slot 1.
|
// check save slot 1.
|
||||||
for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
|
for (i = 0; i < NUM_SECTORS_PER_SLOT; i++)
|
||||||
{
|
{
|
||||||
DoReadFlashWholeSection(i, gFastSaveSection);
|
DoReadFlashWholeSection(i, gFastSaveSection);
|
||||||
if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
|
if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
|
||||||
@ -512,9 +513,9 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
|
|||||||
securityPassed = FALSE;
|
securityPassed = FALSE;
|
||||||
|
|
||||||
// check save slot 2.
|
// check save slot 2.
|
||||||
for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
|
for (i = 0; i < NUM_SECTORS_PER_SLOT; i++)
|
||||||
{
|
{
|
||||||
DoReadFlashWholeSection(i + SECTOR_SAVE_SLOT_LENGTH, gFastSaveSection);
|
DoReadFlashWholeSection(i + NUM_SECTORS_PER_SLOT, gFastSaveSection);
|
||||||
if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
|
if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
|
||||||
{
|
{
|
||||||
securityPassed = TRUE;
|
securityPassed = TRUE;
|
||||||
@ -739,7 +740,7 @@ bool8 sub_8153380(void) // trade.c
|
|||||||
|
|
||||||
bool8 sub_81533AC(void) // trade.c
|
bool8 sub_81533AC(void) // trade.c
|
||||||
{
|
{
|
||||||
u8 status = sub_81529D4(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations);
|
u8 status = sub_81529D4(NUM_SECTORS_PER_SLOT, gRamSaveSectionLocations);
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(SAVE_NORMAL);
|
DoSaveFailedScreen(SAVE_NORMAL);
|
||||||
if (status == SAVE_STATUS_ERROR)
|
if (status == SAVE_STATUS_ERROR)
|
||||||
@ -750,7 +751,7 @@ bool8 sub_81533AC(void) // trade.c
|
|||||||
|
|
||||||
bool8 sub_81533E0(void) // trade.c
|
bool8 sub_81533E0(void) // trade.c
|
||||||
{
|
{
|
||||||
sub_8152A34(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations);
|
sub_8152A34(NUM_SECTORS_PER_SLOT, gRamSaveSectionLocations);
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(SAVE_NORMAL);
|
DoSaveFailedScreen(SAVE_NORMAL);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -758,7 +759,7 @@ bool8 sub_81533E0(void) // trade.c
|
|||||||
|
|
||||||
bool8 sub_8153408(void) // trade.c
|
bool8 sub_8153408(void) // trade.c
|
||||||
{
|
{
|
||||||
sub_8152CAC(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations);
|
sub_8152CAC(NUM_SECTORS_PER_SLOT, gRamSaveSectionLocations);
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(SAVE_NORMAL);
|
DoSaveFailedScreen(SAVE_NORMAL);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -835,8 +836,8 @@ u16 GetSaveBlocksPointersBaseOffset(void)
|
|||||||
return 0;
|
return 0;
|
||||||
UpdateSaveAddresses();
|
UpdateSaveAddresses();
|
||||||
GetSaveValidStatus(gRamSaveSectionLocations);
|
GetSaveValidStatus(gRamSaveSectionLocations);
|
||||||
slotOffset = SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % NUM_SAVE_SLOTS);
|
slotOffset = NUM_SECTORS_PER_SLOT * (gSaveCounter % NUM_SAVE_SLOTS);
|
||||||
for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
|
for (i = 0; i < NUM_SECTORS_PER_SLOT; i++)
|
||||||
{
|
{
|
||||||
DoReadFlashWholeSection(i + slotOffset, gFastSaveSection);
|
DoReadFlashWholeSection(i + slotOffset, gFastSaveSection);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user