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