add FREE_MYSTERY_EVENT_BUFFERS functionality

This commit is contained in:
cawtds 2025-03-20 23:12:04 +01:00
parent 230195b036
commit a9eb83c4e5
2 changed files with 26 additions and 0 deletions

View File

@ -852,7 +852,9 @@ struct SaveBlock1
#endif //FREE_MYSTERY_GIFT
/*0x????*/ u8 dexSeen[DEX_FLAGS_NO];
u8 dexCaught[DEX_FLAGS_NO];
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
/*0x361C*/ struct RamScript ramScript;
#endif //FREE_MYSTERY_EVENT_BUFFERS
/*0x3A08*/ struct RecordMixingGift recordMixingGift; // unused
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH + 1];
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];

View File

@ -494,16 +494,23 @@ void TryRunOnWarpIntoMapScript(void)
u32 CalculateRamScriptChecksum(void)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
return CalcCRC16WithTable((u8 *)(&gSaveBlock1Ptr->ramScript.data), sizeof(gSaveBlock1Ptr->ramScript.data));
#else
return 0;
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
void ClearRamScript(void)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
CpuFill32(0, &gSaveBlock1Ptr->ramScript, sizeof(struct RamScript));
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
ClearRamScript();
@ -518,10 +525,14 @@ bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objec
memcpy(scriptData->script, script, scriptSize);
gSaveBlock1Ptr->ramScript.checksum = CalculateRamScriptChecksum();
return TRUE;
#else
return FALSE;
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
const u8 *GetRamScript(u8 objectId, const u8 *script)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
gRamScriptRetAddr = NULL;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
@ -542,10 +553,14 @@ const u8 *GetRamScript(u8 objectId, const u8 *script)
gRamScriptRetAddr = script;
return scriptData->script;
}
#else
return script;
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
bool32 ValidateRamScript(void)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
return FALSE;
@ -558,10 +573,14 @@ bool32 ValidateRamScript(void)
if (CalculateRamScriptChecksum() != gSaveBlock1Ptr->ramScript.checksum)
return FALSE;
return TRUE;
#else
return FALSE;
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
u8 *GetSavedRamScriptIfValid(void)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (!ValidateSavedWonderCard())
return NULL;
@ -582,13 +601,18 @@ u8 *GetSavedRamScriptIfValid(void)
{
return scriptData->script;
}
#else
return NULL;
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize)
{
#if FREE_MYSTERY_EVENT_BUFFERS == FALSE
if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script))
scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script);
InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), 0xFF);
#endif //FREE_MYSTERY_EVENT_BUFFERS
}
bool8 LoadTrainerObjectScript(void)