From ef6c4ddbb11a0c7943fc9394d9dd2b1089fdfa01 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 6 Oct 2020 15:36:04 -0600 Subject: [PATCH] remove 1000ish bytes with ramscript (thx griffinR for advice) --- include/global.h | 4 +++- src/script.c | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/global.h b/include/global.h index f66f9ce6f5..391a7c37f1 100644 --- a/include/global.h +++ b/include/global.h @@ -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 diff --git a/src/script.c b/src/script.c index 726c065439..d214486a77 100644 --- a/src/script.c +++ b/src/script.c @@ -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 }