pmd-red/src/quick_save_read.c
2024-12-15 14:51:40 +01:00

66 lines
1.5 KiB
C

#include "global.h"
#include "globaldata.h"
#include "string_format.h"
#include "memory.h"
#include "quick_save_read.h"
#include "save.h"
static EWRAM_INIT QuickSaveRead *sQuickSaveRead = {NULL};
#include "data/quick_save_read.h"
void PrepareQuickSaveRead(u8 *dest, u32 size)
{
sQuickSaveRead = MemoryAlloc(sizeof(QuickSaveRead), 5);
sQuickSaveRead->dest = dest;
sQuickSaveRead->size = size;
sQuickSaveRead->saveValid = FALSE;
sQuickSaveRead->state = 1;
}
bool8 ReadQuickSave(void)
{
u32 stack_1;
u32 stack_2;
switch (sQuickSaveRead->state) {
case 0:
sQuickSaveRead->state = 1;
break;
case 1:
stack_1 = 16;
if (sub_8011F9C(&stack_1, sQuickSaveRead->dest, sQuickSaveRead->size) == READ_SAVE_VALID) {
sQuickSaveRead->saveValid = TRUE;
sQuickSaveRead->state = 3;
}
else {
CreateDialogueBoxAndPortrait(sSaveFailedExplanation, 0, 0, 0x301);
sQuickSaveRead->state = 2;
}
break;
case 2:
if (sub_80144A4(&stack_2) == 0)
sQuickSaveRead->state = 3;
break;
case 3:
return FALSE;
default:
break;
}
return TRUE;
}
bool8 IsQuickSaveValid(void)
{
return sQuickSaveRead->saveValid;
}
void FinishQuickSaveRead(void)
{
if (sQuickSaveRead != NULL){
MemoryFree(sQuickSaveRead);
sQuickSaveRead = 0;
}
}