Propagate save status, type, and sector defines
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
// Exported ROM declarations
|
// Exported ROM declarations
|
||||||
|
|
||||||
void sub_8079B7C(void);
|
void ResetSaveHeap(void);
|
||||||
|
|
||||||
#endif //GUARD_RESET_SAVE_HEAP_H
|
#endif //GUARD_RESET_SAVE_HEAP_H
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -54,6 +54,11 @@ struct SaveSectionOffsets
|
|||||||
|
|
||||||
#define UNKNOWN_CHECK_VALUE 0x8012025
|
#define UNKNOWN_CHECK_VALUE 0x8012025
|
||||||
|
|
||||||
|
#define SECTOR_SAVE1(n) (n)
|
||||||
|
#define SECTOR_SAVE2(n) ((n) + NUM_SECTORS_PER_SAVE_SLOT)
|
||||||
|
#define SECTOR_HOF(n) ((n) + 2 * NUM_SECTORS_PER_SAVE_SLOT)
|
||||||
|
#define SECTOR_TTOWER(n) ((n) + 2 * NUM_SECTORS_PER_SAVE_SLOT + 2)
|
||||||
|
|
||||||
// SetSectorDamagedStatus states
|
// SetSectorDamagedStatus states
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -106,7 +111,7 @@ u8 sub_80DA40C(void);
|
|||||||
u8 sub_80DA434(void);
|
u8 sub_80DA434(void);
|
||||||
u8 sub_80DA45C(void);
|
u8 sub_80DA45C(void);
|
||||||
bool8 sub_80DA4A0(void);
|
bool8 sub_80DA4A0(void);
|
||||||
u8 Save_LoadGameData(u8 a1);
|
u8 Save_LoadGameData(u8 saveType);
|
||||||
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
|
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
|
||||||
u32 sub_8153634(u8 sector, u8* src);
|
u32 sub_8153634(u8 sector, u8* src);
|
||||||
void sub_8153688(u8 taskId);
|
void sub_8153688(u8 taskId);
|
||||||
|
|||||||
+4
-4
@@ -47,11 +47,11 @@ static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttd
|
|||||||
memset(buffer, 0, 0x1000);
|
memset(buffer, 0, 0x1000);
|
||||||
memcpy(buffer, ttdata, SEC30_SIZE);
|
memcpy(buffer, ttdata, SEC30_SIZE);
|
||||||
buffer[1] = sub_815D654();
|
buffer[1] = sub_815D654();
|
||||||
if (TryWriteSpecialSaveSection(30, buffer) != TRUE)
|
if (TryWriteSpecialSaveSection(SECTOR_TTOWER(0), buffer) != TRUE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
memset(buffer, 0, 0x1000);
|
memset(buffer, 0, 0x1000);
|
||||||
memcpy(buffer, (u8 *)ttdata + SEC30_SIZE, SEC31_SIZE);
|
memcpy(buffer, (u8 *)ttdata + SEC30_SIZE, SEC31_SIZE);
|
||||||
if (TryWriteSpecialSaveSection(31, buffer) != TRUE)
|
if (TryWriteSpecialSaveSection(SECTOR_TTOWER(1), buffer) != TRUE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -66,11 +66,11 @@ bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata)
|
|||||||
|
|
||||||
static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttdata, void * buffer)
|
static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttdata, void * buffer)
|
||||||
{
|
{
|
||||||
if (TryCopySpecialSaveSection(30, buffer) != 1)
|
if (TryCopySpecialSaveSection(SECTOR_TTOWER(0), buffer) != 1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
memcpy(ttdata + 0x000, buffer, SEC30_SIZE);
|
memcpy(ttdata + 0x000, buffer, SEC30_SIZE);
|
||||||
|
|
||||||
if (TryCopySpecialSaveSection(31, buffer) != 1)
|
if (TryCopySpecialSaveSection(SECTOR_TTOWER(1), buffer) != 1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
memcpy((u8 *)ttdata + SEC30_SIZE, buffer, SEC31_SIZE);
|
memcpy((u8 *)ttdata + SEC30_SIZE, buffer, SEC31_SIZE);
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -80,7 +80,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId);
|
|||||||
static void Task_Hof_ExitOnKeyPressed(u8 taskId);
|
static void Task_Hof_ExitOnKeyPressed(u8 taskId);
|
||||||
static void Task_Hof_HandlePaletteOnExit(u8 taskId);
|
static void Task_Hof_HandlePaletteOnExit(u8 taskId);
|
||||||
static void Task_Hof_HandleExit(u8 taskId);
|
static void Task_Hof_HandleExit(u8 taskId);
|
||||||
static void SetCallback2AfterHallOfFameDisplay(void);
|
static void SetWarpsToRollCredits(void);
|
||||||
static void Task_HofPC_CopySaveData(u8 taskId);
|
static void Task_HofPC_CopySaveData(u8 taskId);
|
||||||
static void Task_HofPC_DrawSpritesPrintText(u8 taskId);
|
static void Task_HofPC_DrawSpritesPrintText(u8 taskId);
|
||||||
static void Task_HofPC_PrintMonInfo(u8 taskId);
|
static void Task_HofPC_PrintMonInfo(u8 taskId);
|
||||||
@@ -699,11 +699,11 @@ static void Task_Hof_HandleExit(u8 taskId)
|
|||||||
if (sHofMonPtr != NULL)
|
if (sHofMonPtr != NULL)
|
||||||
FREE_AND_SET_NULL(sHofMonPtr);
|
FREE_AND_SET_NULL(sHofMonPtr);
|
||||||
|
|
||||||
SetCallback2AfterHallOfFameDisplay();
|
SetWarpsToRollCredits();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SetCallback2AfterHallOfFameDisplay(void)
|
static void SetWarpsToRollCredits(void)
|
||||||
{
|
{
|
||||||
VarSet(VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 1);
|
VarSet(VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 1);
|
||||||
FlagSet(FLAG_SPECIAL_FLAG_0x4000);
|
FlagSet(FLAG_SPECIAL_FLAG_0x4000);
|
||||||
|
|||||||
+1
-1
@@ -574,7 +574,7 @@ void c2_copyright_1(void)
|
|||||||
{
|
{
|
||||||
ResetMenuAndMonGlobals();
|
ResetMenuAndMonGlobals();
|
||||||
Save_ResetSaveCounters();
|
Save_ResetSaveCounters();
|
||||||
Save_LoadGameData(0);
|
Save_LoadGameData(SAVE_NORMAL);
|
||||||
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
||||||
Sav2_ClearSetDefault();
|
Sav2_ClearSetDefault();
|
||||||
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
||||||
|
|||||||
+2
-2
@@ -464,7 +464,7 @@ void LinkTestProcessKeyInput(void)
|
|||||||
}
|
}
|
||||||
if (JOY_NEW(R_BUTTON))
|
if (JOY_NEW(R_BUTTON))
|
||||||
{
|
{
|
||||||
TrySavingData(1);
|
TrySavingData(SAVE_LINK);
|
||||||
}
|
}
|
||||||
if (JOY_NEW(SELECT_BUTTON))
|
if (JOY_NEW(SELECT_BUTTON))
|
||||||
{
|
{
|
||||||
@@ -1581,7 +1581,7 @@ static void CB2_PrintErrorMessage(void)
|
|||||||
PlaySE(SE_PIN);
|
PlaySE(SE_PIN);
|
||||||
gWirelessCommType = 0;
|
gWirelessCommType = 0;
|
||||||
sLinkErrorBuffer.unk_06 = 0;
|
sLinkErrorBuffer.unk_06 = 0;
|
||||||
sub_8079B7C();
|
ResetSaveHeap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gWirelessCommType == 2)
|
else if (gWirelessCommType == 2)
|
||||||
|
|||||||
@@ -914,7 +914,7 @@ bool32 mevent_save_game(u8 * state)
|
|||||||
(*state)++;
|
(*state)++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
TrySavingData(0);
|
TrySavingData(SAVE_NORMAL);
|
||||||
(*state)++;
|
(*state)++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|||||||
+1
-1
@@ -1067,7 +1067,7 @@ static void QuestLog_EndPlayback(void)
|
|||||||
{
|
{
|
||||||
ResetSpecialVars();
|
ResetSpecialVars();
|
||||||
Save_ResetSaveCounters();
|
Save_ResetSaveCounters();
|
||||||
Save_LoadGameData(0);
|
Save_LoadGameData(SAVE_NORMAL);
|
||||||
SetMainCallback2(sub_8057430);
|
SetMainCallback2(sub_8057430);
|
||||||
gFieldCallback2 = sub_8111F60;
|
gFieldCallback2 = sub_8111F60;
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include "overworld.h"
|
#include "overworld.h"
|
||||||
#include "malloc.h"
|
#include "malloc.h"
|
||||||
|
|
||||||
void sub_8079B7C(void)
|
void ResetSaveHeap(void)
|
||||||
{
|
{
|
||||||
u16 imeBackup = REG_IME;
|
u16 imeBackup = REG_IME;
|
||||||
|
|
||||||
@@ -20,8 +20,8 @@ void sub_8079B7C(void)
|
|||||||
SetSaveBlocksPointers();
|
SetSaveBlocksPointers();
|
||||||
ResetMenuAndMonGlobals();
|
ResetMenuAndMonGlobals();
|
||||||
Save_ResetSaveCounters();
|
Save_ResetSaveCounters();
|
||||||
Save_LoadGameData(0);
|
Save_LoadGameData(SAVE_NORMAL);
|
||||||
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
||||||
Sav2_ClearSetDefault();
|
Sav2_ClearSetDefault();
|
||||||
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
||||||
InitHeap(gHeap, HEAP_SIZE);
|
InitHeap(gHeap, HEAP_SIZE);
|
||||||
|
|||||||
+15
-15
@@ -719,7 +719,7 @@ bool8 sub_80DA3D8(void)
|
|||||||
{
|
{
|
||||||
u8 retVal = sub_80D9AA4(0xE, gRamSaveSectionLocations);
|
u8 retVal = sub_80D9AA4(0xE, gRamSaveSectionLocations);
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(0);
|
DoSaveFailedScreen(SAVE_NORMAL);
|
||||||
if (retVal == 0xFF)
|
if (retVal == 0xFF)
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
@@ -730,7 +730,7 @@ u8 sub_80DA40C(void)
|
|||||||
{
|
{
|
||||||
sub_80D9B04(0xE, gRamSaveSectionLocations);
|
sub_80D9B04(0xE, gRamSaveSectionLocations);
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(0);
|
DoSaveFailedScreen(SAVE_NORMAL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -738,7 +738,7 @@ u8 sub_80DA434(void)
|
|||||||
{
|
{
|
||||||
sav12_xor_get(0xE, gRamSaveSectionLocations);
|
sav12_xor_get(0xE, gRamSaveSectionLocations);
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(0);
|
DoSaveFailedScreen(SAVE_NORMAL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -769,34 +769,34 @@ bool8 sub_80DA4A0(void)
|
|||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
}
|
}
|
||||||
if (gDamagedSaveSectors)
|
if (gDamagedSaveSectors)
|
||||||
DoSaveFailedScreen(1);
|
DoSaveFailedScreen(SAVE_LINK);
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 Save_LoadGameData(u8 a1)
|
u8 Save_LoadGameData(u8 saveType)
|
||||||
{
|
{
|
||||||
u8 result;
|
u8 result;
|
||||||
|
|
||||||
if (gFlashMemoryPresent != TRUE)
|
if (gFlashMemoryPresent != TRUE)
|
||||||
{
|
{
|
||||||
gSaveFileStatus = 4;
|
gSaveFileStatus = SAVE_STATUS_NO_FLASH;
|
||||||
return 0xFF;
|
return SAVE_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateSaveAddresses();
|
UpdateSaveAddresses();
|
||||||
switch (a1)
|
switch (saveType)
|
||||||
{
|
{
|
||||||
case 0:
|
case SAVE_NORMAL:
|
||||||
default:
|
default:
|
||||||
result = sub_80D9E14(0xFFFF, gRamSaveSectionLocations);
|
result = sub_80D9E14(0xFFFF, gRamSaveSectionLocations);
|
||||||
LoadSerializedGame();
|
LoadSerializedGame();
|
||||||
gSaveFileStatus = result;
|
gSaveFileStatus = result;
|
||||||
gGameContinueCallback = 0;
|
gGameContinueCallback = 0;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case SAVE_HALL_OF_FAME:
|
||||||
result = sub_80DA120(0x1C, gDecompressionBuffer, 0xF80);
|
result = sub_80DA120(SECTOR_HOF(0), gDecompressionBuffer, 0xF80);
|
||||||
if(result == 1)
|
if (result == SAVE_STATUS_OK)
|
||||||
result = sub_80DA120(0x1D, gDecompressionBuffer + 0xF80, 0xF80);
|
result = sub_80DA120(SECTOR_HOF(1), gDecompressionBuffer + 0xF80, 0xF80);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -809,7 +809,7 @@ u32 TryCopySpecialSaveSection(u8 sector, u8* dst)
|
|||||||
s32 size;
|
s32 size;
|
||||||
u8* savData;
|
u8* savData;
|
||||||
|
|
||||||
if (sector != 30 && sector != 31)
|
if (sector != SECTOR_TTOWER(0) && sector != SECTOR_TTOWER(1))
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection));
|
ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection));
|
||||||
if (*(u32*)(&gSaveDataBuffer.data[0]) != 0xB39D)
|
if (*(u32*)(&gSaveDataBuffer.data[0]) != 0xB39D)
|
||||||
@@ -830,7 +830,7 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src)
|
|||||||
u8* savData;
|
u8* savData;
|
||||||
void* savDataBuffer;
|
void* savDataBuffer;
|
||||||
|
|
||||||
if (sector != 30 && sector != 31)
|
if (sector != SECTOR_TTOWER(0) && sector != SECTOR_TTOWER(1))
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
|
|
||||||
savDataBuffer = &gSaveDataBuffer;
|
savDataBuffer = &gSaveDataBuffer;
|
||||||
|
|||||||
+1
-1
@@ -621,7 +621,7 @@ static void SetTitleScreenScene_Cry(s16 * data)
|
|||||||
SetSaveBlocksPointers();
|
SetSaveBlocksPointers();
|
||||||
ResetMenuAndMonGlobals();
|
ResetMenuAndMonGlobals();
|
||||||
Save_ResetSaveCounters();
|
Save_ResetSaveCounters();
|
||||||
Save_LoadGameData(0);
|
Save_LoadGameData(SAVE_NORMAL);
|
||||||
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
||||||
Sav2_ClearSetDefault();
|
Sav2_ClearSetDefault();
|
||||||
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
||||||
|
|||||||
Reference in New Issue
Block a user