remove 1000ish bytes with ramscript (thx griffinR for advice)

This commit is contained in:
Evan 2020-10-06 15:36:04 -06:00 committed by ghoulslash
parent 741f62fc0b
commit ef6c4ddbb1
2 changed files with 27 additions and 1 deletions

View file

@ -15,7 +15,7 @@
#define FREE_EXTRA_SEEN_FLAGS //free up extra pokedex seen flags. Frees up 104 bytes
#define FREE_FIELD_3598 //frees up unused saveblock data. 384 bytes
#define FREE_TRAINER_HILL //frees up trainer hill data. 28 bytes
#define FREE_MYSTERY_EVENT_BUFFERS //frees up mystery event. 876 bytes
#define FREE_MYSTERY_EVENT_BUFFERS //frees up mystery event and ramScript. roughly 1880 bytes
#define FREE_MATCH_CALL //frees up match call data. 104 bytes
#define FREE_UNION_ROOM_CHAT //frees up field unk3C88. 210 bytes
#define FREE_ENIGMA_BERRY //frees up enigma berry. 52 bytes
@ -1072,7 +1072,9 @@ struct SaveBlock1
#ifndef FREE_TRAINER_HILL
/*0x3718*/ u32 trainerHillTimes[4]; //16 bytes
#endif
#ifndef FREE_MYSTERY_EVENT_BUFFERS
/*0x3728*/ struct RamScript ramScript;
#endif
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
#ifndef FREE_EXTRA_SEEN_FLAGS
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; //52 bytes

View file

@ -348,16 +348,23 @@ void TryRunOnWarpIntoMapScript(void)
u32 CalculateRamScriptChecksum(void)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
return CalcCRC16WithTable((u8*)(&gSaveBlock1Ptr->ramScript.data), sizeof(gSaveBlock1Ptr->ramScript.data));
#else
return 0;
#endif
}
void ClearRamScript(void)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
CpuFill32(0, &gSaveBlock1Ptr->ramScript, sizeof(struct RamScript));
#endif
}
bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
ClearRamScript();
@ -372,10 +379,14 @@ bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8
memcpy(scriptData->script, script, scriptSize);
gSaveBlock1Ptr->ramScript.checksum = CalculateRamScriptChecksum();
return TRUE;
#else
return FALSE;
#endif
}
const u8 *GetRamScript(u8 objectId, const u8 *script)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
gRamScriptRetAddr = NULL;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
@ -396,10 +407,14 @@ const u8 *GetRamScript(u8 objectId, const u8 *script)
gRamScriptRetAddr = script;
return scriptData->script;
}
#else
return script;
#endif
}
bool32 ValidateSavedRamScript(void)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
return FALSE;
@ -412,10 +427,14 @@ bool32 ValidateSavedRamScript(void)
if (CalculateRamScriptChecksum() != gSaveBlock1Ptr->ramScript.checksum)
return FALSE;
return TRUE;
#else
return FALSE;
#endif
}
u8 *GetSavedRamScriptIfValid(void)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (!ValidateReceivedWonderCard())
return NULL;
@ -436,11 +455,16 @@ u8 *GetSavedRamScriptIfValid(void)
{
return scriptData->script;
}
#else
return NULL;
#endif
}
void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize)
{
#ifndef FREE_MYSTERY_EVENT_BUFFERS
if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script))
scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script);
InitRamScript(script, scriptSize, 0xFF, 0xFF, 0xFF);
#endif
}