diff --git a/include/global.h b/include/global.h index 497fb40b14..f66f9ce6f5 100644 --- a/include/global.h +++ b/include/global.h @@ -11,6 +11,24 @@ #include "constants/species.h" #include "constants/berry.h" +// free saveblock 1 defines +#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_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 +#define FREE_LINK_BATTLE_RECORDS //frees link battle record data. 88 bytes + // saveblock1 total: 1846 bytes +//free saveblock 2 defines +#define FREE_BATTLE_TOWER_E_READER //frees up battle tower e reader trainer data. 188 bytes +#define FREE_POKEMON_JUMP //frees up pokemon jump data. 16 bytes +#define FREE_RECORD_MIXING_HALL_RECORDS //frees up hall records for record mixing. 1032 bytes + // saveblock2 total: 1236 bytes + + //grand total: 3082 + // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); @@ -344,7 +362,9 @@ struct BattleFrontier /*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer; /*0x738*/ struct EmeraldBattleTowerRecord towerRecords[BATTLE_TOWER_RECORD_COUNT]; // From record mixing. /*0xBEB*/ struct BattleTowerInterview towerInterview; - /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; + #ifndef FREE_BATTLE_TOWER_E_READER + /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; //188 bytes + #endif /*0xCA8*/ u8 challengeStatus; /*0xCA9*/ u8 lvlMode:2; /*0xCA9*/ u8 challengePaused:1; @@ -484,12 +504,16 @@ struct SaveBlock2 /*0xA8*/ u32 gcnLinkFlags; // Read by Pokemon Colosseum/XD /*0xAC*/ u32 encryptionKey; /*0xB0*/ struct PlayersApprentice playerApprentice; - /*0xDC*/ struct Apprentice apprentices[APPRENTICE_COUNT]; + /*0xDC*/ struct Apprentice apprentices[APPRENTICE_COUNT]; //272 bytes /*0x1EC*/ struct BerryCrush berryCrush; - /*0x1FC*/ struct PokemonJumpRecords pokeJump; + #ifndef FREE_POKEMON_JUMP + /*0x1FC*/ struct PokemonJumpRecords pokeJump; //16 bytes + #endif /*0x20C*/ struct BerryPickingResults berryPick; + #ifndef FREE_RECORD_MIXING_HALL_RECORDS /*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing. /*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing. + #endif /*0x624*/ u16 contestLinkResults[CONTEST_CATEGORIES_COUNT][CONTESTANT_COUNT]; /*0x64C*/ struct BattleFrontier frontier; }; // sizeof=0xF2C @@ -979,11 +1003,15 @@ struct SaveBlock1 /*0x690*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; /*0x790*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; /*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT]; - /*0x988*/ u8 seen1[DEX_FLAGS_NO]; + #ifndef FREE_EXTRA_SEEN_FLAGS + /*0x988*/ u8 seen1[DEX_FLAGS_NO]; //52 bytes + #endif /*0x9BC*/ u16 berryBlenderRecords[3]; /*0x9C2*/ u8 field_9C2[6]; - /*0x9C8*/ u16 trainerRematchStepCounter; + #ifndef FREE_MATCH_CALL + /*0x9C8*/ u16 trainerRematchStepCounter; //104 bytes /*0x9CA*/ u8 trainerRematches[MAX_REMATCH_ENTRIES]; + #endif /*0xA30*/ struct ObjectEvent objectEvents[OBJECT_EVENTS_COUNT]; /*0xC70*/ struct ObjectEventTemplate objectEventTemplates[OBJECT_EVENT_TEMPLATES_COUNT]; /*0x1270*/ u8 flags[NUM_FLAG_BYTES]; @@ -1002,7 +1030,7 @@ struct SaveBlock1 /*0x2798*/ u8 decorationDolls[40]; /*0x27C0*/ u8 decorationCushions[10]; /*0x27CA*/ u8 padding_27CA[2]; - /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; + /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; //900 bytes /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; /*0x2B90*/ u16 outbreakPokemonSpecies; /*0x2B92*/ u8 outbreakLocationMapNum; @@ -1025,23 +1053,39 @@ struct SaveBlock1 /*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; /*0x2e90*/ struct ContestWinner contestWinners[NUM_CONTEST_WINNERS]; // see CONTEST_WINNER_* /*0x3030*/ struct DayCare daycare; + #ifndef FREE_LINK_BATTLE_RECORDS /*0x3150*/ struct LinkBattleRecords linkBattleRecords; + #endif /*0x31A8*/ u8 giftRibbons[GIFT_RIBBONS_COUNT]; /*0x31B3*/ struct ExternalEventData externalEventData; /*0x31C7*/ struct ExternalEventFlags externalEventFlags; /*0x31DC*/ struct Roamer roamer; - /*0x31F8*/ struct EnigmaBerry enigmaBerry; - /*0x322C*/ struct MEventBuffers unk_322C; - /*0x3598*/ u8 field_3598[0x180]; - /*0x3718*/ u32 trainerHillTimes[4]; + #ifndef FREE_ENIGMA_BERRY + /*0x31F8*/ struct EnigmaBerry enigmaBerry; //52 bytes + #endif + #ifndef FREE_MYSTERY_EVENT_BUFFERS + /*0x322C*/ struct MEventBuffers unk_322C; //876 bytes + #endif + #ifndef FREE_FIELD_3598 + /*0x3598*/ u8 field_3598[0x180]; //384 bytes + #endif + #ifndef FREE_TRAINER_HILL + /*0x3718*/ u32 trainerHillTimes[4]; //16 bytes + #endif /*0x3728*/ struct RamScript ramScript; /*0x3B14*/ struct RecordMixingGift recordMixingGift; - /*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; + #ifndef FREE_EXTRA_SEEN_FLAGS + /*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; //52 bytes + #endif /*0x3B58*/ LilycoveLady lilycoveLady; /*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20]; - /*0x3C88*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21]; - /*0x3D5A*/ u8 filler3D5A[0xA]; - /*0x3D64*/ struct SaveTrainerHill trainerHill; + #ifndef FREE_UNION_ROOM_CHAT + /*0x3C88*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21]; //210 bytes + #endif + /*0x3D5A*/ u8 filler3D5A[0xA]; //10 bytes + #ifndef FREE_TRAINER_HILL + /*0x3D64*/ struct SaveTrainerHill trainerHill; //12 bytes + #endif /*0x3D70*/ struct WaldaPhrase waldaPhrase; // sizeof: 0x3D88 }; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 263c1e7cc3..b1c9227dda 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -835,7 +835,11 @@ static bool8 ShouldUseItem(void) continue; if (item == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect; + #else + itemEffects = 0; + #endif else itemEffects = gItemEffectTable[item - ITEM_POTION]; diff --git a/src/battle_main.c b/src/battle_main.c index 9bb2268a6b..ff41baf520 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -746,6 +746,7 @@ static void SetPlayerBerryDataInBattleStruct(void) if (IsEnigmaBerryValid() == TRUE) { + #ifndef FREE_ENIGMA_BERRY for (i = 0; i < BERRY_NAME_LENGTH; i++) battleBerry->name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; battleBerry->name[i] = EOS; @@ -755,6 +756,7 @@ static void SetPlayerBerryDataInBattleStruct(void) battleBerry->holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; battleBerry->holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + #endif } else { @@ -781,6 +783,7 @@ static void SetAllPlayersBerryData(void) { if (IsEnigmaBerryValid() == TRUE) { + #ifndef FREE_ENIGMA_BERRY for (i = 0; i < BERRY_NAME_LENGTH; i++) { gEnigmaBerries[0].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; @@ -799,6 +802,7 @@ static void SetAllPlayersBerryData(void) gEnigmaBerries[2].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; gEnigmaBerries[0].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; gEnigmaBerries[2].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + #endif } else { diff --git a/src/battle_records.c b/src/battle_records.c index 5dff8e6d34..dea7d6fc63 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -225,7 +225,9 @@ static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 void ClearPlayerLinkBattleRecords(void) { + #ifndef FREE_LINK_BATTLE_RECORDS ClearLinkBattleRecords(gSaveBlock1Ptr->linkBattleRecords.entries); + #endif } static void IncTrainerCardWins(s32 battlerId) @@ -261,6 +263,7 @@ static void UpdateTrainerCardWinsLosses(s32 battlerId) void UpdatePlayerLinkBattleRecords(s32 battlerId) { + #ifndef FREE_LINK_BATTLE_RECORDS if (InUnionRoom() != TRUE) { UpdateTrainerCardWinsLosses(battlerId); @@ -271,6 +274,7 @@ void UpdatePlayerLinkBattleRecords(s32 battlerId) gBattleOutcome, battlerId); } + #endif } static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) @@ -326,6 +330,7 @@ void ShowLinkBattleRecords(void) x = GetStringCenterAlignXOffset(1, gStringVar4, 208); AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x, 1, 0, NULL); + #ifndef FREE_LINK_BATTLE_RECORDS PrintLinkBattleWinsLossesDraws(gSaveBlock1Ptr->linkBattleRecords.entries); StringExpandPlaceholders(gStringVar4, gText_WinLoseDraw); @@ -335,7 +340,7 @@ void ShowLinkBattleRecords(void) { PrintLinkBattleRecord(&gSaveBlock1Ptr->linkBattleRecords.entries[i], 7 + (i * 2), gSaveBlock1Ptr->linkBattleRecords.languages[i]); } - + #endif PutWindowTilemap(gRecordsWindowId); CopyWindowToVram(gRecordsWindowId, 3); } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 84f8efaa84..9e77c78f80 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3258,7 +3258,11 @@ static void Cmd_getexp(void) item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); if (item == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + #else + holdEffect = 0; + #endif else holdEffect = ItemId_GetHoldEffect(item); @@ -3297,7 +3301,11 @@ static void Cmd_getexp(void) item = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HELD_ITEM); if (item == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + #else + holdEffect = 0; + #endif else holdEffect = ItemId_GetHoldEffect(item); diff --git a/src/battle_setup.c b/src/battle_setup.c index cb65d25d6c..6bc4139897 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -1588,7 +1588,8 @@ static bool32 sub_80B1D94(s32 rematchTableId) static void SetRematchIdForTrainer(const struct RematchTrainer *table, u32 tableId) { s32 i; - + + #ifndef FREE_MATCH_CALL for (i = 1; i < REMATCHES_COUNT; i++) { u16 trainerId = table[tableId].trainerIds[i]; @@ -1600,13 +1601,14 @@ static void SetRematchIdForTrainer(const struct RematchTrainer *table, u32 table } gSaveBlock1Ptr->trainerRematches[tableId] = i; + #endif } static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) { s32 i; bool32 ret = FALSE; - + #ifndef FREE_MATCH_CALL for (i = 0; i <= REMATCH_SPECIAL_TRAINER_START; i++) { if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i)) @@ -1624,7 +1626,7 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u } } } - + #endif return ret; } @@ -1637,13 +1639,14 @@ void UpdateRematchIfDefeated(s32 rematchTableId) static bool32 DoesSomeoneWantRematchIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) { s32 i; - + + #ifndef FREE_MATCH_CALL for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) { if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && gSaveBlock1Ptr->trainerRematches[i] != 0) return TRUE; } - + #endif return FALSE; } @@ -1668,9 +1671,10 @@ static bool8 IsFirstTrainerIdReadyForRematch(const struct RematchTrainer *table, return FALSE; if (tableId >= MAX_REMATCH_ENTRIES) return FALSE; + #ifndef FREE_MATCH_CALL if (gSaveBlock1Ptr->trainerRematches[tableId] == 0) return FALSE; - + #endif return TRUE; } @@ -1682,9 +1686,10 @@ static bool8 IsTrainerReadyForRematch_(const struct RematchTrainer *table, u16 t return FALSE; if (tableId >= MAX_REMATCH_ENTRIES) return FALSE; + #ifndef FREE_MATCH_CALL if (gSaveBlock1Ptr->trainerRematches[tableId] == 0) return FALSE; - + #endif return TRUE; } @@ -1732,10 +1737,12 @@ static u16 GetLastBeatenRematchTrainerIdFromTable(const struct RematchTrainer *t static void ClearTrainerWantRematchState(const struct RematchTrainer *table, u16 firstBattleTrainerId) { + #ifndef FREE_MATCH_CALL s32 tableId = TrainerIdToRematchTableId(table, firstBattleTrainerId); if (tableId != -1) gSaveBlock1Ptr->trainerRematches[tableId] = 0; + #endif } static u32 GetTrainerMatchCallFlag(u32 trainerId) @@ -1793,6 +1800,7 @@ static bool32 HasAtLeastFiveBadges(void) void IncrementRematchStepCounter(void) { + #ifndef FREE_MATCH_CALL if (HasAtLeastFiveBadges()) { if (gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX) @@ -1800,20 +1808,27 @@ void IncrementRematchStepCounter(void) else gSaveBlock1Ptr->trainerRematchStepCounter++; } + #endif } static bool32 IsRematchStepCounterMaxed(void) { + #ifndef FREE_MATCH_CALL if (HasAtLeastFiveBadges() && gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX) return TRUE; else return FALSE; + #else + return FALSE; + #endif } void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum) { + #ifndef FREE_MATCH_CALL if (IsRematchStepCounterMaxed() && UpdateRandomTrainerRematches(gRematchTable, mapGroup, mapNum) == TRUE) gSaveBlock1Ptr->trainerRematchStepCounter = 0; + #endif } bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum) diff --git a/src/battle_tower.c b/src/battle_tower.c index b1e5d78172..007d13f687 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -970,9 +970,11 @@ static void SetTowerData(void) static void SetTowerBattleWon(void) { + #ifndef FREE_BATTLE_TOWER_E_READER if (gTrainerBattleOpponent_A == TRAINER_EREADER) ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer); - + #endif + // towerNumWins is never read outside this conditional if (gSaveBlock2Ptr->frontier.towerNumWins < MAX_STREAK) gSaveBlock2Ptr->frontier.towerNumWins++; @@ -1168,11 +1170,15 @@ void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId) u8 trainerObjectGfxId; SetFacilityPtrsGetLevel(); + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) { facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; } else if (trainerId == TRAINER_FRONTIER_BRAIN) + #else + if (trainerId == TRAINER_FRONTIER_BRAIN) + #endif { SetFrontierBrainObjEventGfx_2(); return; @@ -1265,11 +1271,15 @@ u8 GetBattleFacilityTrainerGfxId(u16 trainerId) u8 trainerObjectGfxId; SetFacilityPtrsGetLevel(); + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) { facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; } else if (trainerId < FRONTIER_TRAINERS_COUNT) + #else + if (trainerId < FRONTIER_TRAINERS_COUNT) + #endif { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1408,11 +1418,15 @@ u8 GetFrontierTrainerFrontSpriteId(u16 trainerId) { SetFacilityPtrsGetLevel(); + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) { return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass]; } else if (trainerId == TRAINER_FRONTIER_BRAIN) + #else + if (trainerId == TRAINER_FRONTIER_BRAIN) + #endif { return GetFrontierBrainTrainerPicIndex(); } @@ -1441,11 +1455,15 @@ u8 GetFrontierOpponentClass(u16 trainerId) u8 trainerClass = 0; SetFacilityPtrsGetLevel(); + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) { trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass]; } else if (trainerId == TRAINER_FRONTIER_BRAIN) + #else + if (trainerId == TRAINER_FRONTIER_BRAIN) + #endif { return GetFrontierBrainTrainerClass(); } @@ -1490,7 +1508,11 @@ static u8 GetFrontierTrainerFacilityClass(u16 trainerId) if (trainerId == TRAINER_EREADER) { + #ifndef FREE_BATTLE_TOWER_E_READER facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; + #else + facilityClass = 0; + #endif } else if (trainerId < FRONTIER_TRAINERS_COUNT) { @@ -1521,8 +1543,10 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId) if (trainerId == TRAINER_EREADER) { + #ifndef FREE_BATTLE_TOWER_E_READER for (i = 0; i < PLAYER_NAME_LENGTH; i++) dst[i] = gSaveBlock2Ptr->frontier.ereaderTrainer.name[i]; + #endif } else if (trainerId == TRAINER_FRONTIER_BRAIN) { @@ -1583,7 +1607,11 @@ static bool8 IsFrontierTrainerFemale(u16 trainerId) SetFacilityPtrsGetLevel(); if (trainerId == TRAINER_EREADER) { + #ifndef FREE_BATTLE_TOWER_E_READER facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; + #else + facilityClass = 0; + #endif } else if (trainerId == TRAINER_FRONTIER_BRAIN) { @@ -1652,8 +1680,10 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) } else if (trainerId == TRAINER_EREADER) { + #ifndef FREE_BATTLE_TOWER_E_READER for (i = firstMonId; i < firstMonId + 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); + #endif return; } else if (trainerId == TRAINER_FRONTIER_BRAIN) @@ -1839,8 +1869,10 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) } else if (trainerId == TRAINER_EREADER) { + #ifndef FREE_BATTLE_TOWER_E_READER for (i = firstMonId; i < firstMonId + 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); + #endif return; } else if (trainerId == TRAINER_FRONTIER_BRAIN) @@ -1934,10 +1966,14 @@ static void GetOpponentIntroSpeech(void) else trainerId = gTrainerBattleOpponent_A; + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); else if (trainerId < FRONTIER_TRAINERS_COUNT) + #else + if (trainerId < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); + #endif else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); else @@ -2039,6 +2075,7 @@ void DoSpecialTrainerBattle(void) BattleTransition_StartOnField(GetSpecialBattleTransition(12)); break; case SPECIAL_BATTLE_EREADER: + #ifndef FREE_BATTLE_TOWER_E_READER ZeroEnemyPartyMons(); for (i = 0; i < 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]); @@ -2047,6 +2084,7 @@ void DoSpecialTrainerBattle(void) CreateTask(Task_StartBattleAfterTransition, 1); PlayMapChosenOrBattleBGM(0); BattleTransition_StartOnField(GetSpecialBattleTransition(13)); + #endif break; case SPECIAL_BATTLE_DOME: gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOME; @@ -2817,6 +2855,7 @@ static void AwardBattleTowerRibbons(void) // trainer with the player's current data. static void FillEReaderTrainerWithPlayerData(void) { + #ifndef FREE_BATTLE_TOWER_E_READER struct BattleTowerEReaderTrainer *ereaderTrainer = &gSaveBlock2Ptr->frontier.ereaderTrainer; s32 i, j; @@ -2849,31 +2888,44 @@ static void FillEReaderTrainerWithPlayerData(void) ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]); SetEReaderTrainerChecksum(ereaderTrainer); + #endif } u8 GetEreaderTrainerFrontSpriteId(void) { + #ifndef FREE_BATTLE_TOWER_E_READER return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass]; + #else + return 0; + #endif } u8 GetEreaderTrainerClassId(void) { + #ifndef FREE_BATTLE_TOWER_E_READER return gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass]; + #else + return 0; + #endif } void GetEreaderTrainerName(u8 *dst) { + #ifndef FREE_BATTLE_TOWER_E_READER s32 i; for (i = 0; i < 5; i++) dst[i] = gSaveBlock2Ptr->frontier.ereaderTrainer.name[i]; - dst[i] = EOS; + #else + dst[0] = EOS; + #endif } // Checks if the saved E-Reader trainer is valid. void ValidateEReaderTrainer(void) { + #ifndef FREE_BATTLE_TOWER_E_READER u32 i; u32 checksum; struct BattleTowerEReaderTrainer *ereaderTrainer; @@ -2900,38 +2952,49 @@ void ValidateEReaderTrainer(void) ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer); gSpecialVar_Result = TRUE; } + #else + gSpecialVar_Result = FALSE; + #endif } static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) { + #ifndef FREE_BATTLE_TOWER_E_READER s32 i; ereaderTrainer->checksum = 0; for (i = 0; i < (sizeof(struct BattleTowerEReaderTrainer) - 4) / 4; i++) // - 4, because of the last field being the checksum itself. ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i]; + #endif } void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer) { + #ifndef FREE_BATTLE_TOWER_E_READER u32 i; for (i = 0; i < (sizeof(struct BattleTowerEReaderTrainer)) / 4; i++) ((u32 *)ereaderTrainer)[i] = 0; + #endif } void CopyEReaderTrainerGreeting(void) { + #ifndef FREE_BATTLE_TOWER_E_READER FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); + #endif } static void CopyEReaderTrainerFarewellMessage(void) { + #ifndef FREE_BATTLE_TOWER_E_READER if (gBattleOutcome == B_OUTCOME_DREW) gStringVar4[0] = EOS; else if (gBattleOutcome == B_OUTCOME_WON) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerWon); else FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost); + #endif } void TryHideBattleTowerReporter(void) diff --git a/src/berry.c b/src/berry.c index d56ec801ca..648df4cb98 100644 --- a/src/berry.c +++ b/src/berry.c @@ -940,20 +940,25 @@ const struct BerryTree gBlankBerryTree = {}; // unused void ClearEnigmaBerries(void) { + #ifndef FREE_ENIGMA_BERRY CpuFill16(0, &gSaveBlock1Ptr->enigmaBerry, sizeof(gSaveBlock1Ptr->enigmaBerry)); + #endif } void SetEnigmaBerry(u8 *src) { + #ifndef FREE_ENIGMA_BERRY u32 i; u8 *dest = (u8*)&gSaveBlock1Ptr->enigmaBerry; for (i = 0; i < sizeof(gSaveBlock1Ptr->enigmaBerry); i++) dest[i] = src[i]; + #endif } static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) { + #ifndef FREE_ENIGMA_BERRY u32 i; u32 checksum; u8 *dest; @@ -964,10 +969,14 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) checksum += dest[i]; return checksum; + #else + return 0; + #endif } bool32 IsEnigmaBerryValid(void) { + #ifndef FREE_ENIGMA_BERRY if (!gSaveBlock1Ptr->enigmaBerry.berry.stageDuration) return FALSE; if (!gSaveBlock1Ptr->enigmaBerry.berry.maxYield) @@ -975,12 +984,19 @@ bool32 IsEnigmaBerryValid(void) if (GetEnigmaBerryChecksum(&gSaveBlock1Ptr->enigmaBerry) != gSaveBlock1Ptr->enigmaBerry.checksum) return FALSE; return TRUE; + #else + return FALSE; + #endif } const struct Berry *GetBerryInfo(u8 berry) { if (berry == ITEM_TO_BERRY(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) + #ifndef FREE_ENIGMA_BERRY return (struct Berry*)(&gSaveBlock1Ptr->enigmaBerry.berry); + #else + return &gBerries[0]; //never reached, but will appease the compiler gods + #endif else { if (berry == BERRY_NONE || berry > ITEM_TO_BERRY(LAST_BERRY_INDEX)) diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index 5edfc120c4..f15f679286 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -392,7 +392,9 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { static u8 sub_81D38D4(void) { + #ifndef FREE_TRAINER_HILL return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256; + #endif } static bool32 Struct_EReaderTrainerHillTrainer_ValidateChecksum(struct EReaderTrainerHillTrainer *arg0) diff --git a/src/field_specials.c b/src/field_specials.c index 30503ed8d4..32a62c808e 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -129,7 +129,11 @@ static void Task_CloseBattlePikeCurtain(u8 taskId); static u8 DidPlayerGetFirstFans(void); static void SetInitialFansOfPlayer(void); static u16 PlayerGainRandomTrainerFan(void); +#ifndef FREE_LINK_BATTLE_RECORDS static void BufferFanClubTrainerName_(struct LinkBattleRecords *linkRecords, u8 a, u8 b); +#else +static void BufferFanClubTrainerName_(u8 whichLinkTrainer, u8 whichNPCTrainer); +#endif void Special_ShowDiploma(void) { @@ -4308,9 +4312,14 @@ void BufferFanClubTrainerName(void) case FANCLUB_MEMBER8: break; } + #ifndef FREE_LINK_BATTLE_RECORDS BufferFanClubTrainerName_(&gSaveBlock1Ptr->linkBattleRecords, whichLinkTrainer, whichNPCTrainer); + #else + BufferFanClubTrainerName_(whichLinkTrainer, whichNPCTrainer); + #endif } +#ifndef FREE_LINK_BATTLE_RECORDS static void BufferFanClubTrainerName_(struct LinkBattleRecords *linkRecords, u8 whichLinkTrainer, u8 whichNPCTrainer) { struct LinkBattleRecord *record = &linkRecords->entries[whichLinkTrainer]; @@ -4348,6 +4357,35 @@ static void BufferFanClubTrainerName_(struct LinkBattleRecords *linkRecords, u8 ConvertInternationalString(gStringVar1, linkRecords->languages[whichLinkTrainer]); } } +#else +static void BufferFanClubTrainerName_(u8 whichLinkTrainer, u8 whichNPCTrainer) +{ + switch (whichNPCTrainer) + { + case 0: + StringCopy(gStringVar1, gText_Wallace); + break; + case 1: + StringCopy(gStringVar1, gText_Steven); + break; + case 2: + StringCopy(gStringVar1, gText_Brawly); + break; + case 3: + StringCopy(gStringVar1, gText_Winona); + break; + case 4: + StringCopy(gStringVar1, gText_Phoebe); + break; + case 5: + StringCopy(gStringVar1, gText_Glacia); + break; + default: + StringCopy(gStringVar1, gText_Wallace); + break; + } +} +#endif void UpdateTrainerFansAfterLinkBattle(void) { diff --git a/src/frontier_util.c b/src/frontier_util.c index 491aef9367..c40533e551 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -1696,9 +1696,13 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) switch (whichText) { case FRONTIER_BEFORE_TEXT: + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); else if (trainerId == TRAINER_FRONTIER_BRAIN) + #else + if (trainerId == TRAINER_FRONTIER_BRAIN) + #endif CopyFrontierBrainText(FALSE); else if (trainerId < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); @@ -1708,11 +1712,15 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) BufferApprenticeChallengeText(trainerId - TRAINER_RECORD_MIXING_APPRENTICE); break; case FRONTIER_PLAYER_LOST_TEXT: + #ifndef FREE_BATTLE_TOWER_E_READER if (trainerId == TRAINER_EREADER) { FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost); } else if (trainerId == TRAINER_FRONTIER_BRAIN) + #else + if (trainerId == TRAINER_FRONTIER_BRAIN) + #endif { CopyFrontierBrainText(FALSE); } @@ -1738,7 +1746,9 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) case FRONTIER_PLAYER_WON_TEXT: if (trainerId == TRAINER_EREADER) { + #ifndef FREE_BATTLE_TOWER_E_READER FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerWon); + #endif } else if (trainerId == TRAINER_FRONTIER_BRAIN) { @@ -2268,6 +2278,7 @@ static void Print2PRecord(s32 position, s32 x, s32 y, struct RankingHall2P *hall static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvlMode) { + #ifndef FREE_RECORD_MIXING_HALL_RECORDS s32 i, j; struct RankingHall1P record1P[4]; struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords)); @@ -2298,10 +2309,12 @@ static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvl } free(playerHallRecords); + #endif } static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode) { + #ifndef FREE_RECORD_MIXING_HALL_RECORDS s32 i, j; struct RankingHall2P record2P[4]; struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords)); @@ -2332,6 +2345,7 @@ static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode) } free(playerHallRecords); + #endif } static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) @@ -2381,6 +2395,7 @@ void ScrollRankingHallRecordsWindow(void) void ClearRankingHallRecords(void) { + #ifndef FREE_RECORD_MIXING_HALL_RECORDS s32 i, j, k; // UB: Passing 0 as a pointer instead of a pointer holding a value of 0. @@ -2415,6 +2430,7 @@ void ClearRankingHallRecords(void) gSaveBlock2Ptr->hallRecords2P[j][k].winStreak = 0; } } + #endif } void SaveGameFrontier(void) diff --git a/src/gym_leader_rematch.c b/src/gym_leader_rematch.c index efe874894c..611a157e8f 100644 --- a/src/gym_leader_rematch.c +++ b/src/gym_leader_rematch.c @@ -46,6 +46,7 @@ static void UpdateGymLeaderRematchFromArray(const u16 *data, size_t size, u32 ma s32 lowestRematchIndex = 5; u32 i; s32 rematchIndex; + #ifndef FREE_MATCH_CALL for (i = 0; i < size; i++) { if (!gSaveBlock1Ptr->trainerRematches[data[i]]) @@ -89,6 +90,7 @@ static void UpdateGymLeaderRematchFromArray(const u16 *data, size_t size, u32 ma } } } + #endif } static s32 GetRematchIndex(u32 trainerIdx) diff --git a/src/match_call.c b/src/match_call.c index fd0db630c4..bda0111f62 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1453,7 +1453,9 @@ static void Task_SpinPokenavIcon(u8 taskId) static bool32 TrainerIsEligibleForRematch(int matchCallId) { + #ifndef FREE_MATCH_CALL return gSaveBlock1Ptr->trainerRematches[matchCallId] > 0; + #endif } static u16 GetRematchTrainerLocation(int matchCallId) diff --git a/src/mevent2.c b/src/mevent2.c index d2c0208583..3aa254af0e 100755 --- a/src/mevent2.c +++ b/src/mevent2.c @@ -24,34 +24,46 @@ static void sub_801BA8C(u32 a0, u32 a1, u32 *a2, int a3); void sub_801AFD8(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS CpuFill32(0, &gSaveBlock1Ptr->unk_322C, sizeof(gSaveBlock1Ptr->unk_322C)); sub_801B180(); InitQuestionnaireWords(); + #endif } struct WonderNews *GetSavedWonderNews(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS return &gSaveBlock1Ptr->unk_322C.wonderNews.data; + #endif } struct WonderCard *GetSavedWonderCard(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS return &gSaveBlock1Ptr->unk_322C.wonderCard.data; + #endif } struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS return &gSaveBlock1Ptr->unk_322C.buffer_310.data; + #endif } struct MysteryEventStruct *sub_801B044(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS return &gSaveBlock1Ptr->unk_322C.unk_340; + #endif } u16 *GetQuestionnaireWordsPtr(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS return gSaveBlock1Ptr->unk_322C.questionnaireWords; + #endif } void DestroyWonderNews(void) @@ -61,6 +73,7 @@ void DestroyWonderNews(void) bool32 sub_801B078(const struct WonderNews *src) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS if (!sub_801B114(src)) return FALSE; @@ -68,15 +81,19 @@ bool32 sub_801B078(const struct WonderNews *src) gSaveBlock1Ptr->unk_322C.wonderNews.data = *src; gSaveBlock1Ptr->unk_322C.wonderNews.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderNews.data, sizeof(struct WonderNews)); return TRUE; + #else + return FALSE; + #endif } bool32 ValidateReceivedWonderNews(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderNews.data, sizeof(struct WonderNews)) != gSaveBlock1Ptr->unk_322C.wonderNews.crc) return FALSE; if (!sub_801B114(&gSaveBlock1Ptr->unk_322C.wonderNews.data)) return FALSE; - + #endif return TRUE; } @@ -90,17 +107,20 @@ static bool32 sub_801B114(const struct WonderNews *data) bool32 WonderNews_Test_Unk_02(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS const struct WonderNews *data = &gSaveBlock1Ptr->unk_322C.wonderNews.data; if (data->unk_02 == 0) return FALSE; - + #endif return TRUE; } static void s_DestroyWonderNews(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->unk_322C.wonderNews.data)); gSaveBlock1Ptr->unk_322C.wonderNews.crc = 0; + #endif } static void sub_801B180(void) @@ -111,6 +131,7 @@ static void sub_801B180(void) bool32 sub_801B1A4(const u8 *src) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS const u8 *r5 = (const u8 *)&gSaveBlock1Ptr->unk_322C.wonderNews.data; u32 i; if (!ValidateReceivedWonderNews()) @@ -121,12 +142,13 @@ bool32 sub_801B1A4(const u8 *src) if (r5[i] != src[i]) return FALSE; } - + #endif return TRUE; } void DestroyWonderCard(void) { + #ifndef FREE_BATTLE_TOWER_E_READER sub_801B330(); sub_801B368(); sub_801B9F8(); @@ -134,6 +156,7 @@ void DestroyWonderCard(void) ClearMysteryEventFlags(); ClearMysteryEventVars(); ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer); + #endif } bool32 sub_801B21C(const struct WonderCard *data) @@ -143,24 +166,27 @@ bool32 sub_801B21C(const struct WonderCard *data) if (!sub_801B2CC(data)) return FALSE; + #ifndef FREE_MYSTERY_EVENT_BUFFERS DestroyWonderCard(); memcpy(&gSaveBlock1Ptr->unk_322C.wonderCard.data, data, sizeof(struct WonderCard)); gSaveBlock1Ptr->unk_322C.wonderCard.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderCard.data, sizeof(struct WonderCard)); r2 = &gSaveBlock1Ptr->unk_322C.buffer_310.data; r1 = &gSaveBlock1Ptr->unk_322C.wonderCard.data; r2->unk_06 = r1->unk_02; + #endif return TRUE; } bool32 ValidateReceivedWonderCard(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS if (gSaveBlock1Ptr->unk_322C.wonderCard.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderCard.data, sizeof(struct WonderCard))) return FALSE; if (!sub_801B2CC(&gSaveBlock1Ptr->unk_322C.wonderCard.data)) return FALSE; if (!ValidateSavedRamScript()) return FALSE; - + #endif return TRUE; } @@ -182,30 +208,36 @@ static bool32 sub_801B2CC(const struct WonderCard *data) bool32 WonderCard_Test_Unk_08_6(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS const struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data; if (data->unk_08_6 == 0) return FALSE; - + #endif return TRUE; } static void sub_801B330(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS CpuFill32(0, &gSaveBlock1Ptr->unk_322C.wonderCard.data, sizeof(struct WonderCard)); gSaveBlock1Ptr->unk_322C.wonderCard.crc = 0; + #endif } static void sub_801B368(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS CpuFill32(0, sav1_get_mevent_buffer_2(), 18 *sizeof(u16)); gSaveBlock1Ptr->unk_322C.buffer_310.crc = 0; + #endif } u16 GetWonderCardFlagID(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS if (ValidateReceivedWonderCard()) return gSaveBlock1Ptr->unk_322C.wonderCard.data.unk_00; - + #endif return 0; } @@ -302,16 +334,20 @@ static int sub_801B4CC(void) struct WonderCard *data; if (!ValidateReceivedWonderCard()) return 0; - + #ifndef FREE_MYSTERY_EVENT_BUFFERS data = &gSaveBlock1Ptr->unk_322C.wonderCard.data; if (data->unk_08_0 != 1) return 0; return sub_801B438(&gSaveBlock1Ptr->unk_322C.buffer_310.data, data->unk_09); + #else + return 0; + #endif } bool32 sub_801B508(const u16 *data) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS struct WonderCard *buffer = &gSaveBlock1Ptr->unk_322C.wonderCard.data; int size = buffer->unk_09; int i; @@ -330,7 +366,7 @@ bool32 sub_801B508(const u16 *data) return TRUE; } } - + #endif return FALSE; } @@ -364,6 +400,7 @@ void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1) data->unk_14 = 0; } + #ifndef FREE_MYSTERY_EVENT_BUFFERS for (i = 0; i < NUM_QUESTIONNAIRE_WORDS; i++) data->unk_16[i] = gSaveBlock1Ptr->unk_322C.questionnaireWords[i]; @@ -374,6 +411,7 @@ void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1) memcpy(data->unk_5C, RomHeaderGameCode, 4); data->unk_60 = RomHeaderSoftwareVersion; + #endif } bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1) @@ -461,6 +499,7 @@ u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(const struct MEventStruct_Unk144 static void sub_801B7D8(u32 command) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data; if (data->unk_08_0 == 2) { @@ -491,10 +530,12 @@ static void sub_801B7D8(u32 command) *dest = 999; } } + #endif } u16 mevent_081445C0(u32 command) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS switch (command) { case GET_CARD_BATTLES_WON_INTERNAL: @@ -544,6 +585,7 @@ u16 mevent_081445C0(u32 command) } AGB_ASSERT(0); + #endif return 0; } @@ -554,6 +596,7 @@ void ResetReceivedWonderCardFlag(void) bool32 MEventHandleReceivedWonderCard(u16 a0) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS gUnknown_02022C70 = FALSE; if (a0 == 0) return FALSE; @@ -565,11 +608,13 @@ bool32 MEventHandleReceivedWonderCard(u16 a0) return FALSE; gUnknown_02022C70 = TRUE; + #endif return TRUE; } void RecordIdOfWonderCardSenderByEventType(u32 a0, u32 a1) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS if (gUnknown_02022C70) { switch (a0) @@ -587,11 +632,14 @@ void RecordIdOfWonderCardSenderByEventType(u32 a0, u32 a1) AGB_ASSERT(0); } } + #endif } static void sub_801B9F8(void) { + #ifndef FREE_MYSTERY_EVENT_BUFFERS CpuFill32(0, gSaveBlock1Ptr->unk_322C.unk_344, sizeof(gSaveBlock1Ptr->unk_322C.unk_344)); + #endif } static bool32 sub_801BA24(u32 a0, u32 *a1, int size) diff --git a/src/mevent_client.c b/src/mevent_client.c index 9a62bf18ed..d03f6d6c35 100644 --- a/src/mevent_client.c +++ b/src/mevent_client.c @@ -219,8 +219,10 @@ static u32 mainseq_4(struct mevent_client * svr) InitRamScript_NoObjectEvent(svr->recvBuffer, 1000); break; case 18: + #ifndef FREE_BATTLE_TOWER_E_READER memcpy(&gSaveBlock2Ptr->frontier.ereaderTrainer, svr->recvBuffer, 0xbc); ValidateEReaderTrainer(); + #endif break; case 21: memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 176eab7fc6..2a461bfa7b 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -218,6 +218,7 @@ bool8 MEScrCmd_runscript(struct ScriptContext *ctx) bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) { + #ifndef FREE_ENIGMA_BERRY u8 *str; const u8 *message; bool32 haveBerry = IsEnigmaBerryValid(); @@ -250,7 +251,7 @@ bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1); else ctx->data[2] = 1; - + #endif return FALSE; } diff --git a/src/party_menu.c b/src/party_menu.c index 7b77a10670..1c5f057e0e 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4221,7 +4221,11 @@ static bool8 IsHPRecoveryItem(u16 item) const u8 *effect; if (item == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY effect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + #else + effect = 0; + #endif else effect = gItemEffectTable[item - ITEM_POTION]; @@ -4538,7 +4542,11 @@ void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task) u16 item = gSpecialVar_ItemId; if (item == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY effect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + #else + effect = 0; + #endif else effect = gItemEffectTable[item - ITEM_POTION]; @@ -5180,7 +5188,11 @@ u8 GetItemEffectType(u16 item) // Read the item's effect properties. if (item == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + #else + itemEffect = 0; + #endif else itemEffect = gItemEffectTable[item - ITEM_POTION]; diff --git a/src/pokedex.c b/src/pokedex.c index 558c27083e..14a04230ca 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1516,8 +1516,10 @@ void ResetPokedex(void) { gSaveBlock2Ptr->pokedex.owned[i] = 0; gSaveBlock2Ptr->pokedex.seen[i] = 0; + #ifndef FREE_EXTRA_SEEN_FLAGS gSaveBlock1Ptr->seen1[i] = 0; gSaveBlock1Ptr->seen2[i] = 0; + #endif } } @@ -4253,6 +4255,7 @@ s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) case FLAG_GET_SEEN: if (gSaveBlock2Ptr->pokedex.seen[index] & mask) { + #ifndef FREE_EXTRA_SEEN_FLAGS if ((gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask) && (gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask)) retVal = 1; @@ -4263,11 +4266,15 @@ s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) gSaveBlock1Ptr->seen2[index] &= ~mask; retVal = 0; } + #else + retVal = 1; + #endif } break; case FLAG_GET_CAUGHT: if (gSaveBlock2Ptr->pokedex.owned[index] & mask) { + #ifndef FREE_EXTRA_SEEN_FLAGS if ((gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock2Ptr->pokedex.seen[index] & mask) && (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask) && (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask)) @@ -4280,12 +4287,17 @@ s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) gSaveBlock1Ptr->seen2[index] &= ~mask; retVal = 0; } + #else + retVal = 1; + #endif } break; case FLAG_SET_SEEN: gSaveBlock2Ptr->pokedex.seen[index] |= mask; + #ifndef FREE_EXTRA_SEEN_FLAGS gSaveBlock1Ptr->seen1[index] |= mask; gSaveBlock1Ptr->seen2[index] |= mask; + #endif break; case FLAG_SET_CAUGHT: gSaveBlock2Ptr->pokedex.owned[index] |= mask; diff --git a/src/pokemon.c b/src/pokemon.c index e28fba1b48..582ea45611 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4696,7 +4696,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (gMain.inBattle) holdEffect = gEnigmaBerries[gBattlerInMenuId].holdEffect; else + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + #else + holdEffect = 0; + #endif } else { @@ -4737,7 +4741,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (gMain.inBattle) itemEffect = gEnigmaBerries[gActiveBattler].itemEffect; else + #ifndef FREE_ENIGMA_BERRY itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + #else + itemEffect = 0; + #endif } else { @@ -5379,7 +5387,11 @@ u8 *UseStatIncreaseItem(u16 itemId) if (gMain.inBattle) itemEffect = gEnigmaBerries[gBattlerInMenuId].itemEffect; else + #ifndef FREE_ENIGMA_BERRY itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + #else + itemEffect = 0; + #endif } else { @@ -5440,7 +5452,11 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem) u8 holdEffect; if (heldItem == ITEM_ENIGMA_BERRY) + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + #else + holdEffect = 0; + #endif else holdEffect = ItemId_GetHoldEffect(heldItem); @@ -5807,7 +5823,11 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if (gMain.inBattle) holdEffect = gEnigmaBerries[0].holdEffect; else + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + #else + holdEffect = 0; + #endif } else { @@ -5900,7 +5920,11 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies) if (gMain.inBattle) holdEffect = gEnigmaBerries[0].holdEffect; else + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + #else + holdEffect = 0; + #endif } else { diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index a1b7d36aad..ff6367de97 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -4094,11 +4094,14 @@ static bool32 RecvPacket_MemberStateToMember(struct PokemonJump_Player *player, static struct PokemonJumpRecords *GetPokeJumpRecords(void) { + #ifndef FREE_POKEMON_JUMP return &gSaveBlock2Ptr->pokeJump; + #endif } void ResetPokemonJumpRecords(void) { + #ifndef FREE_POKEMON_JUMP struct PokemonJumpRecords *records = GetPokeJumpRecords(); records->jumpsInRow = 0; records->bestJumpScore = 0; @@ -4106,10 +4109,12 @@ void ResetPokemonJumpRecords(void) records->gamesWithMaxPlayers = 0; records->unused2 = 0; records->unused1 = 0; + #endif } static bool32 TryUpdateRecords(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow) { + #ifndef FREE_POKEMON_JUMP struct PokemonJumpRecords *records = GetPokeJumpRecords(); bool32 newRecord = FALSE; @@ -4121,13 +4126,18 @@ static bool32 TryUpdateRecords(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRo records->excellentsInRow = excellentsInRow, newRecord = TRUE; return newRecord; + #else + return FALSE; + #endif } static void IncrementGamesWithMaxPlayers(void) { + #ifndef FREE_POKEMON_JUMP struct PokemonJumpRecords *records = GetPokeJumpRecords(); if (records->gamesWithMaxPlayers < 9999) records->gamesWithMaxPlayers++; + #endif } void ShowPokemonJumpRecords(void) @@ -4207,6 +4217,7 @@ static void Task_ShowPokemonJumpRecords(u8 taskId) static void PrintRecordsText(u16 windowId, int width) { + #ifndef FREE_POKEMON_JUMP int i, x; int recordNums[3]; struct PokemonJumpRecords *records = GetPokeJumpRecords(); @@ -4227,6 +4238,7 @@ static void PrintRecordsText(u16 windowId, int width) AddTextPrinterParameterized(windowId, 1, gStringVar1, x, 25 + (i * 16), TEXT_SPEED_FF, NULL); } PutWindowTilemap(windowId); + #endif } static void TruncateToFirstWordOnly(u8 *str) diff --git a/src/pokenav_match_call_1.c b/src/pokenav_match_call_1.c index fb44aaa876..ded39b3ce9 100755 --- a/src/pokenav_match_call_1.c +++ b/src/pokenav_match_call_1.c @@ -312,6 +312,7 @@ u16 GetMatchCallMapSec(int index) bool32 ShouldDrawRematchPokeballIcon(int index) { + #ifndef FREE_MATCH_CALL struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN); if (!state->matchCallEntries[index].isSpecialTrainer) index = state->matchCallEntries[index].headerId; @@ -322,6 +323,9 @@ bool32 ShouldDrawRematchPokeballIcon(int index) return FALSE; return gSaveBlock1Ptr->trainerRematches[index] != 0; + #else + return FALSE; + #endif } int GetMatchCallTrainerPic(int index) @@ -465,6 +469,7 @@ int GetIndexDeltaOfNextCheckPageUp(int index) bool32 unref_sub_81CB16C(void) { + #ifndef FREE_MATCH_CALL int i; for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) @@ -482,12 +487,13 @@ bool32 unref_sub_81CB16C(void) return TRUE; } } - + #endif return FALSE; } static bool32 sub_81CB1D0(void) { + #ifndef FREE_MATCH_CALL struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN); int selection = GetSelectedPokenavListIndex(); if (!state->matchCallEntries[selection].isSpecialTrainer) @@ -510,6 +516,6 @@ static bool32 sub_81CB1D0(void) } } } - + #endif return FALSE; } diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 6610dcb803..ad36696ad4 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -842,14 +842,22 @@ static bool32 MatchCall_IsRematchable_NPC(match_call_t matchCall) static bool32 MatchCall_IsRematchable_Trainer(match_call_t matchCall) { + #ifndef FREE_MATCH_CALL if (matchCall.trainer->rematchTableIdx >= REMATCH_ELITE_FOUR_ENTRIES) return FALSE; return gSaveBlock1Ptr->trainerRematches[matchCall.trainer->rematchTableIdx] ? TRUE : FALSE; + #else + return FALSE; + #endif } static bool32 MatchCall_IsRematchable_Wally(match_call_t matchCall) { + #ifndef FREE_MATCH_CALL return gSaveBlock1Ptr->trainerRematches[matchCall.wally->rematchTableIdx] ? TRUE : FALSE; + #else + return FALSE; + #endif } static bool32 MatchCall_IsRematchable_Rival(match_call_t matchCall) @@ -1004,6 +1012,7 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *textDa static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_data_t *textData, u16 idx, u8 *dest) { + #ifndef FREE_MATCH_CALL u32 i; for (i = 0; textData[i].text != NULL; i++) { @@ -1037,6 +1046,7 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d StringExpandPlaceholders(dest, textData[i].text); } + #endif } void MatchCall_GetNameAndDesc(u32 idx, const u8 **desc, const u8 **name) diff --git a/src/pokenav_menu_handler_2.c b/src/pokenav_menu_handler_2.c index eea8131a96..5e853adaf9 100644 --- a/src/pokenav_menu_handler_2.c +++ b/src/pokenav_menu_handler_2.c @@ -324,6 +324,7 @@ static bool32 PlayerHasTrainerRematches(void) { s32 i; + #ifndef FREE_MATCH_CALL for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) { if (GetMatchTableMapSectionId(i) == gMapHeader.regionMapSectionId @@ -331,6 +332,7 @@ static bool32 PlayerHasTrainerRematches(void) && gSaveBlock1Ptr->trainerRematches[i]) return TRUE; } + #endif return FALSE; } diff --git a/src/record_mixing.c b/src/record_mixing.c index bb19fad743..77ed4dfab2 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -1167,6 +1167,7 @@ static void ReceiveApprenticeData(struct Apprentice *mixApprentice, size_t recor static void sub_80E8578(struct RecordMixingHallRecords *dst, void *hallRecords, size_t recordSize, u32 arg3, s32 linkPlayerCount) { + #ifndef FREE_RECORD_MIXING_HALL_RECORDS s32 i, j, k, l; s32 var_68; @@ -1232,6 +1233,7 @@ static void sub_80E8578(struct RecordMixingHallRecords *dst, void *hallRecords, dst->hallRecords2P[j][k + 3] = gUnknown_03001168[k]->twoPlayers[j]; } } + #endif } static void sub_80E8880(struct RankingHall1P *arg0, struct RankingHall1P *arg1) @@ -1286,6 +1288,7 @@ static void sub_80E88CC(struct RankingHall2P *arg0, struct RankingHall2P *arg1) static void sub_80E8924(struct RecordMixingHallRecords *arg0) { + #ifndef FREE_RECORD_MIXING_HALL_RECORDS s32 i, j; for (i = 0; i < HALL_FACILITIES_COUNT; i++) @@ -1295,10 +1298,12 @@ static void sub_80E8924(struct RecordMixingHallRecords *arg0) } for (j = 0; j < 2; j++) sub_80E88CC(gSaveBlock2Ptr->hallRecords2P[j], arg0->hallRecords2P[j]); + #endif } static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t recordSize, u32 arg2) { + #ifndef FREE_RECORD_MIXING_HALL_RECORDS u8 linkPlayerCount = GetLinkPlayerCount(); struct RecordMixingHallRecords *largeStructPtr = AllocZeroed(sizeof(struct RecordMixingHallRecords)); @@ -1306,6 +1311,7 @@ static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, siz sub_80E8924(largeStructPtr); Free(largeStructPtr); + #endif } static void sub_80E89F8(struct RecordMixingDayCareMail *dst) diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 3bc6c970b5..33e0000d78 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -288,9 +288,11 @@ void ResetTrainerHillResults(void) gSaveBlock2Ptr->frontier.savedGame = 0; gSaveBlock2Ptr->frontier.unk_EF9 = 0; + #ifndef FREE_TRAINER_HILL gSaveBlock1Ptr->trainerHill.bestTime = 0; for (i = 0; i < 4; i++) SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME); + #endif } static u8 GetFloorId(void) @@ -341,7 +343,9 @@ void InitTrainerHillBattleStruct(void) } sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; } + #ifndef FREE_TRAINER_HILL SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); + #endif FreeDataStruct(); } @@ -353,6 +357,7 @@ void FreeTrainerHillBattleStruct(void) static void SetUpDataStruct(void) { + #ifndef FREE_TRAINER_HILL if (sHillData == NULL) { sHillData = AllocZeroed(sizeof(*sHillData)); @@ -360,6 +365,7 @@ static void SetUpDataStruct(void) CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor)); TrainerHillDummy(); } + #endif } static void FreeDataStruct(void) @@ -398,6 +404,7 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId) static void TrainerHillStartChallenge(void) { TrainerHillDummy(); + #ifndef FREE_TRAINER_HILL if (!ReadTrainerHillAndValidate()) gSaveBlock1Ptr->trainerHill.field_3D6E_0f = 1; else @@ -412,10 +419,12 @@ static void TrainerHillStartChallenge(void) gSaveBlock2Ptr->frontier.trainerFlags = 0; gBattleOutcome = 0; gSaveBlock1Ptr->trainerHill.receivedPrize = 0; + #endif } static void GetOwnerState(void) { + #ifndef FREE_TRAINER_HILL ClearTrainerHillVBlankCounter(); gSpecialVar_Result = 0; if (gSaveBlock1Ptr->trainerHill.spokeToOwner) @@ -424,10 +433,12 @@ static void GetOwnerState(void) gSpecialVar_Result++; gSaveBlock1Ptr->trainerHill.spokeToOwner = TRUE; + #endif } static void GiveChallengePrize(void) { + #ifndef FREE_TRAINER_HILL u16 itemId = GetPrizeItemId(); if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) @@ -445,12 +456,14 @@ static void GiveChallengePrize(void) { gSpecialVar_Result = 1; } + #endif } // If bestTime > timer, the challenge was completed faster and its a new record // Otherwise the owner says it was a slow time and to complete it faster next time static void CheckFinalTime(void) { + #ifndef FREE_TRAINER_HILL if (gSaveBlock1Ptr->trainerHill.checkedFinalTime) { gSpecialVar_Result = 2; @@ -467,10 +480,12 @@ static void CheckFinalTime(void) } gSaveBlock1Ptr->trainerHill.checkedFinalTime = TRUE; + #endif } static void TrainerHillResumeTimer(void) { + #ifndef FREE_TRAINER_HILL if (!gSaveBlock1Ptr->trainerHill.spokeToOwner) { if (gSaveBlock1Ptr->trainerHill.timer >= HILL_MAX_TIME) @@ -478,15 +493,19 @@ static void TrainerHillResumeTimer(void) else SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); } + #endif } static void TrainerHillSetPlayerLost(void) { + #ifndef FREE_TRAINER_HILL gSaveBlock1Ptr->trainerHill.hasLost = TRUE; + #endif } static void TrainerHillGetChallengeStatus(void) { + #ifndef FREE_TRAINER_HILL if (gSaveBlock1Ptr->trainerHill.hasLost) { // The player lost their last match. @@ -504,12 +523,13 @@ static void TrainerHillGetChallengeStatus(void) // Continue playing. gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_NORMAL; } + #endif } static void BufferChallengeTime(void) { s32 total, minutes, secondsWhole, secondsFraction; - + #ifndef FREE_TRAINER_HILL total = gSaveBlock1Ptr->trainerHill.timer; if (total >= HILL_MAX_TIME) total = HILL_MAX_TIME; @@ -523,6 +543,7 @@ static void BufferChallengeTime(void) ConvertIntToDecimalStringN(gStringVar1, minutes, STR_CONV_MODE_RIGHT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar2, secondsWhole, STR_CONV_MODE_RIGHT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar3, secondsFraction, STR_CONV_MODE_LEADING_ZEROS, 2); + #endif } // Returns TRUE if all 4 floors are used @@ -555,6 +576,7 @@ static void GetInEReaderMode(void) bool8 InTrainerHillChallenge(void) { + #ifndef FREE_TRAINER_HILL if (VarGet(VAR_TRAINER_HILL_IS_ACTIVE) == 0) return FALSE; else if (gSaveBlock1Ptr->trainerHill.spokeToOwner) @@ -563,6 +585,7 @@ bool8 InTrainerHillChallenge(void) return TRUE; else return FALSE; + #endif } static void IsTrainerHillChallengeActive(void) @@ -587,7 +610,7 @@ void PrintOnTrainerHillRecordsWindow(void) { s32 i, x, y; u32 total, minutes, secondsWhole, secondsFraction; - + #ifndef FREE_TRAINER_HILL SetUpDataStruct(); FillWindowPixelBuffer(0, PIXEL_FILL(0)); x = GetStringCenterAlignXOffset(1, gText_TimeBoard, 0xD0); @@ -616,6 +639,7 @@ void PrintOnTrainerHillRecordsWindow(void) PutWindowTilemap(0); CopyWindowToVram(0, 3); FreeDataStruct(); + #endif } // Leftover from Fire Red / Leaf Green as in these games, @@ -982,16 +1006,20 @@ bool32 OnTrainerHillEReaderChallengeFloor(void) static void GetChallengeWon(void) { + #ifndef FREE_TRAINER_HILL if (gSaveBlock1Ptr->trainerHill.hasLost) gSpecialVar_Result = FALSE; else gSpecialVar_Result = TRUE; + #endif } static void TrainerHillSetTag(void) { + #ifndef FREE_TRAINER_HILL gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005; gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005]; + #endif } static u8 GetPrizeListId(bool8 maxTrainers) @@ -1034,6 +1062,7 @@ static u16 GetPrizeItemId(void) else i = GetPrizeListId(FALSE); + #ifndef FREE_TRAINER_HILL if (gSaveBlock1Ptr->trainerHill.tag == HILL_TAG_EXPERT) i = (i + 1) % NUM_TRAINER_HILL_PRIZE_LISTS; @@ -1051,6 +1080,7 @@ static u16 GetPrizeItemId(void) id = 4; else id = 5; + #endif return prizeList[id]; } diff --git a/src/tv.c b/src/tv.c index 691b343d81..e434758188 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1386,6 +1386,7 @@ void PutFanClubSpecialOnTheAir(void) StringCopy(show->fanClubSpecial.idolName, name); tv_store_id_2x(show); show->fanClubSpecial.language = gGameLanguage; + #ifndef FREE_LINK_BATTLE_RECORDS if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->linkBattleRecords.languages[0] == LANGUAGE_JAPANESE) { show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE; @@ -1394,6 +1395,12 @@ void PutFanClubSpecialOnTheAir(void) { show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->linkBattleRecords.languages[0]; } + #else + if (show->fanClubSpecial.language == LANGUAGE_JAPANESE) + { + show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE; + } + #endif } void ContestLiveUpdates_Init(u8 round1Placing) @@ -2455,8 +2462,10 @@ bool8 ShouldHideFanClubInterviewer(void) if (gSpecialVar_Result == TRUE) return TRUE; + #ifndef FREE_LINK_BATTLE_RECORDS if (gSaveBlock1Ptr->linkBattleRecords.entries[0].name[0] == EOS) return TRUE; + #endif return FALSE; } diff --git a/src/union_room_chat.c b/src/union_room_chat.c index 3733abe1e9..4d26461096 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -904,8 +904,10 @@ static void InitUnionRoomChat(struct UnionRoomChat *chat) chat->exitType = 0; chat->changedRegisteredTexts = FALSE; PrepareSendBuffer_Null(chat->sendMessageBuffer); + #ifndef FREE_UNION_ROOM_CHAT for (i = 0; i < UNION_ROOM_KB_ROW_COUNT; i++) - StringCopy(chat->registeredTexts[i], gSaveBlock1Ptr->registeredTexts[i]); + StringCopy(unionRoomChat->registeredTexts[i], gSaveBlock1Ptr->registeredTexts[i]); + #endif } static void FreeUnionRoomChat(void) @@ -1737,9 +1739,11 @@ static void ResetMessageEntryBuffer(void) static void SaveRegisteredTexts(void) { + #ifndef FREE_UNION_ROOM_CHAT int i; for (i = 0; i < UNION_ROOM_KB_ROW_COUNT; i++) StringCopy(gSaveBlock1Ptr->registeredTexts[i], sChat->registeredTexts[i]); + #endif } static u8 *GetRegisteredTextByRow(int row) @@ -1983,6 +1987,7 @@ static u8 *GetChatHostName(void) void InitUnionRoomChatRegisteredTexts(void) { + #ifndef FREE_UNION_ROOM_CHAT StringCopy(gSaveBlock1Ptr->registeredTexts[0], gText_Hello); StringCopy(gSaveBlock1Ptr->registeredTexts[1], gText_Pokemon2); StringCopy(gSaveBlock1Ptr->registeredTexts[2], gText_Trade); @@ -1993,6 +1998,7 @@ void InitUnionRoomChatRegisteredTexts(void) StringCopy(gSaveBlock1Ptr->registeredTexts[7], gText_YaySmileEmoji); StringCopy(gSaveBlock1Ptr->registeredTexts[8], gText_ThankYou); StringCopy(gSaveBlock1Ptr->registeredTexts[9], gText_ByeBye); + #endif } #define tState data[0]