diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-04-07 13:45:40 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-04-07 13:45:40 -0400 |
commit | a538befd555600c76cd4cd111348181c551b647c (patch) | |
tree | 646ac6f04e6de6afa747f8b5aef968d580e2b5ac /src/quest_log.c | |
parent | 6451143b3b738a2a749b83487bcb8e3fd980403e (diff) | |
parent | 31ecdcdd0a71cd0230bfa1d80b3355a60db1e93d (diff) |
Merge branch 'various_documentation' of github.com:PikalaxALT/pokefirered into various_documentation
Diffstat (limited to 'src/quest_log.c')
-rw-r--r-- | src/quest_log.c | 2884 |
1 files changed, 111 insertions, 2773 deletions
diff --git a/src/quest_log.c b/src/quest_log.c index 50904d487..1a028f19d 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -44,6 +44,7 @@ #include "constants/items.h" #include "constants/field_weather.h" #include "constants/event_object_movement.h" +#include "constants/region_map_sections.h" struct TrainerFanClub { @@ -60,22 +61,12 @@ struct TrainerFanClub struct UnkStruct_203AE94 { - u8 unk_0_0:4; - u8 unk_0_4:2; - u8 unk_0_6:2; - u8 unk_1; - u8 unk_2; - u8 unk_3; -}; - -struct QuestLogEntry -{ - u8 unk_0; - u8 unk_1; - u8 unk_2; - u8 unk_3; - u16 unk_4; - u8 unk_6; + u8 playbackSubstate:4; + u8 playingEvent:2; + u8 sceneEndMode:2; + u8 cursor; + u8 timer; + u8 overlapTimer; }; struct UnkStruct_300201C @@ -85,13 +76,6 @@ struct UnkStruct_300201C u16 value; }; -struct UnkStruct_203B044 -{ - u8 unk_0; - u8 unk_1; - u16 unk_2; -}; - u8 gQuestLogPlaybackState; u16 sNumEventsInLogEntry; struct FieldInput gQuestLogFieldInput; @@ -105,25 +89,18 @@ static EWRAM_DATA u8 sNumScenes = 0; EWRAM_DATA u8 gQuestLogState = 0; static EWRAM_DATA u16 gUnknown_203ADFC = 0; static EWRAM_DATA u8 sQuestLogHeaderWindowIds[3] = {0}; -static EWRAM_DATA u16 *gUnknown_203AE04 = NULL; -static EWRAM_DATA u16 *sEventRecordingPointer = NULL; +EWRAM_DATA u16 *gUnknown_203AE04 = NULL; +EWRAM_DATA u16 *sEventRecordingPointer = NULL; static EWRAM_DATA u16 *gUnknown_203AE0C[32] = {NULL}; static EWRAM_DATA void (* sQuestLogCB)(void) = NULL; static EWRAM_DATA u16 *gUnknown_203AE90 = NULL; -static EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; +static EWRAM_DATA struct UnkStruct_203AE94 sQuestLogCurrentScene = {0}; static EWRAM_DATA struct QuestLogEntry sQuestLogSceneRecordBuffer[32] = {0}; -static EWRAM_DATA u16 sQuestLogCursor = 0; +EWRAM_DATA u16 sQuestLogCursor = 0; static EWRAM_DATA u8 sMovementScripts[64][2] = {{0}}; static EWRAM_DATA u16 sNextStepDelay = 0; static EWRAM_DATA u16 gUnknown_203B01C = 0; static EWRAM_DATA u16 sFlagOrVarPlayhead = 0; -static EWRAM_DATA u8 sHelpMessageWindowId = 0; -static EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; -static EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0}; -static EWRAM_DATA u8 gUnknown_203B048 = 0; -static EWRAM_DATA bool8 sNewlyEnteredMap = FALSE; -static EWRAM_DATA u8 gUnknown_203B04A = 0; -static EWRAM_DATA bool8 gUnknown_203B04B = FALSE; static void QLogCB_Recording(void); static void QLogCB_Playback(void); @@ -134,34 +111,34 @@ static void BackUpTrainerRematchesToVars(void); static void BackUpMapLayoutToVar(void); static void SetGameStateAtScene(u8); static u8 TryRecordQuestLogEntrySequence(struct QuestLogEntry *); -static void sub_8110F90(u8); +static void Task_BeginQuestLogPlayback(u8); static void QuestLogPlaybackSetObjectEventTemplates(u8); -static void sub_8111368(void); +static void QLPlayback_InitOverworldState(void); static void QuestLog_GetSaneMonCounts(void); static u16 QuestLog_GetSanePartyCount(void); static u16 QuestLog_GetSaneBoxCount(void); static void sub_8111688(void); -static void sub_811175C(u8, struct QuestLogEntry *); -static void sub_81118F4(s8); +static void ReadQuestLogScriptFromSav1(u8, struct QuestLogEntry *); +static void QuestLog_BeginFadeAtEndOfScene(s8 delay); static void QuestLog_AdvancePlayhead(void); static void QuestLog_StartFinalScene(void); static void Task_RunPlaybackCB(u8); -static void sub_8111AD8(void); -static void sub_8111B80(void); -static u8 sub_8111BD4(void); +static void QuestLog_PlayCurrentEvent(void); +static void HandleShowQuestLogMessage(void); +static u8 GetQuestLogTextDisplayDuration(void); static void DrawQuestLogSceneDescription(void); static void sub_8111D90(u8); static void QuestLog_CloseTextWindow(void); static void QuestLog_SkipToEndOfPlayback(s8 delay); static void QuestLog_WaitFadeAndCancelPlayback(void); -static bool8 sub_8111F60(void); -static void sub_8111F8C(u8); +static bool8 FieldCB2_FinalScene(void); +static void Task_FinalScene_WaitFade(u8); static void Task_QuestLogScene_SavedGame(u8); static void Task_WaitAtEndOfQuestLog(u8); static void Task_EndQuestLog(u8); static bool8 sub_81121D8(u8); static void sub_811229C(void); -static void sub_8112888(u8); +static void TogglePlaybackStateForOverworldLock(u8); static void SetUpQuestLogEntry(u8, struct QuestLogEntry *, u16); static bool8 sub_8112CEC(void); static bool8 RecordHeadAtEndOfEntry(void); @@ -182,104 +159,6 @@ static bool8 sub_81137E4(u16, const u16 *); static u16 *sub_8113828(u16, const u16 *); static bool8 TrySetLinkQuestLogEvent(u16, const u16 *); static bool8 TrySetTrainerBattleQuestLogEvent(u16, const u16 *); -static void TryRecordEvent41_IncCursor(u16); -static void sub_811381C(void); -static bool8 IsQuestLogEventWithSpecialEncounterSpecies(u16, const u16 *); -static u16 *QuestLog_SkipCommand(u16 *, u16 **); -static void sub_8113ABC(const u16 *); -static bool8 sub_8113AE8(const u16 *); -static bool8 sub_8113B44(const u16 *); -static void sub_8113B88(void); -static void sub_8113B94(u16); -static void sub_8113BD8(void); -static u16 *TryRecordEvent39_NoParams(u16 *); -static u16 *sub_8113C20(u16 *, struct QuestLogEntry *); -static u16 *TryRecordEvent41(u16 *, u16); -static u16 *sub_8113C8C(u16 *, struct QuestLogEntry *); -static u16 *sub_8113CC8(u16 *, struct QuestLogEntry *); -static u16 *sub_8113D08(u16 *, struct QuestLogEntry *); -static u16 *sub_8113D48(u16 *, struct QuestLogEntry *); -static u16 *sub_8113D94(u16 *, struct QuestLogEntry *); -static u16 *BufferQuestLogData_SwitchedPartyOrder(u16 *, const u16 *); -static u16 *BufferQuestLogData_UsedItem(u16 *, const u16 *); -static u16 *BufferQuestLogData_GaveHeldItemFromPartyMenu(u16 *, const u16 *); -static u16 *BufferQuestLogData_GaveHeldItemFromBagMenu(u16 *, const u16 *); -static u16 *BufferQuestLogData_GaveHeldItemFromPC(u16 *, const u16 *); -static u16 *BufferQuestLogData_TookHeldItem(u16 *, const u16 *); -static u16 *BufferQuestLogData_SwappedHeldItem(u16 *, const u16 *); -static u16 *BufferQuestLogData_SwappedHeldItemFromPC(u16 *, const u16 *); -static u16 *BufferQuestLogData_UsedPkmnCenter(u16 *, const u16 *); -static u16 *BufferQuestLogData_LinkTraded(u16 *, const u16 *); -static u16 *BufferQuestLogData_LinkBattledSingle(u16 *, const u16 *); -static u16 *BufferQuestLogData_LinkBattledDouble(u16 *, const u16 *); -static u16 *BufferQuestLogData_LinkBattledMulti(u16 *, const u16 *); -static u16 *BufferQuestLogData_UsedUnionRoom(u16 *, const u16 *); -static u16 *BufferQuestLogData_UsedUnionRoomChat(u16 *, const u16 *); -static u16 *BufferQuestLogData_LinkTradedUnionRoom(u16 *, const u16 *); -static u16 *BufferQuestLogData_LinkBattledUnionRoom(u16 *, const u16 *); -static u16 *BufferQuestLogData_SwitchedMonsBetweenBoxes(u16 *, const u16 *); -static u16 *BufferQuestLogData_SwitchedMonsWithinBox(u16 *, const u16 *); -static u16 *BufferQuestLogData_SwitchedPartyMonForPCMon(u16 *, const u16 *); -static u16 *BufferQuestLogData_MovedMonBetweenBoxes(u16 *, const u16 *); -static u16 *BufferQuestLogData_MovedMonWithinBox(u16 *, const u16 *); -static u16 *BufferQuestLogData_WithdrewMonFromPC(u16 *, const u16 *); -static u16 *BufferQuestLogData_DepositedMonInPC(u16 *, const u16 *); -static u16 *BufferQuestLogData_SwitchedMultipleMons(u16 *, const u16 *); -static u16 *BufferQuestLogData_DepositedItemInPC(u16 *, const u16 *); -static u16 *BufferQuestLogData_WithdrewItemFromPC(u16 *, const u16 *); -static u16 *BufferQuestLogData_DefeatedGymLeader(u16 *, const u16 *); -static u16 *BufferQuestLogData_DefeatedWildMon(u16 *, const u16 *); -static u16 *BufferQuestLogData_DefeatedEliteFourMember(u16 *, const u16 *); -static u16 *BufferQuestLogData_DefeatedChampion(u16 *, const u16 *); -static u16 *BufferQuestLogData_DefeatedTrainer(u16 *, const u16 *); -static u16 *BufferQuestLogData_DepartedLocation(u16 *, const u16 *); -static u16 *BufferQuestLogData_UsedFieldMove(u16 *, const u16 *); -static u16 *BufferQuestLogData_BoughtItem(u16 *, const u16 *); -static u16 *BufferQuestLogData_SoldItem(u16 *, const u16 *); -static u16 *BufferQuestLogData_ObtainedItem(u16 *, const u16 *); -static u16 *BufferQuestLogData_ArrivedInLocation(u16 *, const u16 *); -static const u16 *BufferQuestLogText_SwitchedPartyOrder(const u16 *); -static const u16 *BufferQuestLogText_UsedItem(const u16 *); -static const u16 *BufferQuestLogText_GaveHeldItemFromPartyMenu(const u16 *); -static const u16 *BufferQuestLogText_GaveHeldItemFromBagMenu(const u16 *); -static const u16 *BufferQuestLogText_GaveHeldItemFromPC(const u16 *); -static const u16 *BufferQuestLogText_TookHeldItem(const u16 *); -static const u16 *BufferQuestLogText_SwappedHeldItem(const u16 *); -static const u16 *BufferQuestLogText_SwappedHeldItemFromPC(const u16 *); -static const u16 *BufferQuestLogText_UsedPkmnCenter(const u16 *); -static const u16 *BufferQuestLogText_LinkTraded(const u16 *); -static const u16 *BufferQuestLogText_LinkBattledSingle(const u16 *); -static const u16 *BufferQuestLogText_LinkBattledDouble(const u16 *); -static const u16 *BufferQuestLogText_LinkBattledMulti(const u16 *); -static const u16 *BufferQuestLogText_UsedUnionRoom(const u16 *); -static const u16 *BufferQuestLogText_UsedUnionRoomChat(const u16 *); -static const u16 *BufferQuestLogText_LinkTradedUnionRoom(const u16 *); -static const u16 *BufferQuestLogText_LinkBattledUnionRoom(const u16 *); -static const u16 *BufferQuestLogText_SwitchedMonsBetweenBoxes(const u16 *); -static const u16 *BufferQuestLogText_SwitchedMonsWithinBox(const u16 *); -static const u16 *BufferQuestLogText_SwitchedPartyMonForPCMon(const u16 *); -static const u16 *BufferQuestLogText_MovedMonBetweenBoxes(const u16 *); -static const u16 *BufferQuestLogText_MovedMonWithinBox(const u16 *); -static const u16 *BufferQuestLogText_WithdrewMonFromPC(const u16 *); -static const u16 *BufferQuestLogText_DepositedMonInPC(const u16 *); -static const u16 *BufferQuestLogText_SwitchedMultipleMons(const u16 *); -static const u16 *BufferQuestLogText_DepositedItemInPC(const u16 *); -static const u16 *BufferQuestLogText_WithdrewItemFromPC(const u16 *); -static const u16 *BufferQuestLogText_DefeatedGymLeader(const u16 *); -static const u16 *BufferQuestLogText_DefeatedWildMon(const u16 *); -static const u16 *BufferQuestLogText_DefeatedEliteFourMember(const u16 *); -static const u16 *BufferQuestLogText_DefeatedChampion(const u16 *); -static const u16 *BufferQuestLogText_DefeatedTrainer(const u16 *); -static const u16 *BufferQuestLogText_DepartedLocation(const u16 *); -static const u16 *BufferQuestLogText_UsedFieldMove(const u16 *); -static const u16 *BufferQuestLogText_BoughtItem(const u16 *); -static const u16 *BufferQuestLogText_SoldItem(const u16 *); -static const u16 *BufferQuestLogText_ObtainedItem(const u16 *); -static const u16 *BufferQuestLogText_ArrivedInLocation(const u16 *); -static bool8 IsSpeciesFromSpecialEncounter(u16); -static bool8 sub_81153A8(u16, const u16 *); -static bool8 sub_81153E4(u16, const u16 *); -static void BufferLinkPartnersName(u8 *); static const struct WindowTemplate sQuestLogHeaderWindowTemplates[3] = { { 0, 0, 0, 30, 2, 15, 0x0e9 }, @@ -293,7 +172,7 @@ static const u16 sUnknown_8456638[] = INCBIN_U16("graphics/unknown/unknown_84566 static const u8 sQuestLogTextLineYCoords[] = {17, 10, 3}; -void sub_8110840(void * oldPointer) +void SetQuestLogRecordAndPlaybackPointers(void * oldPointer) { ptrdiff_t offset = (void *)gSaveBlock1Ptr - oldPointer; if (gUnknown_203AE04) @@ -321,7 +200,7 @@ void ResetQuestLog(void) sEventRecordingPointer = NULL; gUnknown_203AE04 = NULL; sub_8113BD8(); - sub_81138F8(); + ResetDeferredLinkEvent(); } static void DestroySav1QuestLogEntry(u8 a0) @@ -351,7 +230,7 @@ bool8 sub_8110944(const void * a0, size_t cmdSize) return TRUE; } -static bool8 WillCommandOfSizeFitInSav1Record(u16 *cursor, size_t size) +bool8 WillCommandOfSizeFitInSav1Record(u16 *cursor, size_t size) { void * start = gSaveBlock1Ptr->questLog[sCurrentSceneNum].script; void * end = gSaveBlock1Ptr->questLog[sCurrentSceneNum].end; @@ -383,18 +262,21 @@ static void QLogCB_Recording(void) static void QLogCB_Playback(void) { - if (gUnknown_203AE94.unk_0_0 == 2) - gUnknown_203AE94.unk_0_0 = 0; + if (sQuestLogCurrentScene.playbackSubstate == 2) + sQuestLogCurrentScene.playbackSubstate = 0; - if (gUnknown_203AE94.unk_0_6 == 0) + if (sQuestLogCurrentScene.sceneEndMode == 0) { - if (gQuestLogPlaybackState || gUnknown_203AE94.unk_0_0 == 1 || (gUnknown_203AE94.unk_1 < NELEMS(gUnknown_203AE0C) && gUnknown_203AE0C[gUnknown_203AE94.unk_1] != NULL)) - sub_8111AD8(); + if (gQuestLogPlaybackState != 0 + || sQuestLogCurrentScene.playbackSubstate == 1 + || (sQuestLogCurrentScene.cursor < NELEMS(gUnknown_203AE0C) + && gUnknown_203AE0C[sQuestLogCurrentScene.cursor] != NULL)) + QuestLog_PlayCurrentEvent(); else { - gUnknown_203AE94.unk_0_6 = 2; + sQuestLogCurrentScene.sceneEndMode = 2; ScriptContext2_Enable(); - sub_81118F4(0); + QuestLog_BeginFadeAtEndOfScene(0); } } } @@ -409,13 +291,13 @@ u8 GetQuestLogStartType(void) return gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType; } -static void StartRecordingQuestLogEntry(u16 eventId) +void StartRecordingQuestLogEntry(u16 eventId) { if (sCurrentSceneNum >= QUEST_LOG_SCENE_COUNT) sCurrentSceneNum = 0; DestroySav1QuestLogEntry(sCurrentSceneNum); - sub_8113B88(); + ResetUnk203B044(); sEventRecordingPointer = gSaveBlock1Ptr->questLog[sCurrentSceneNum].script; if (IS_LINK_QL_EVENT(eventId) || eventId == QL_EVENT_DEPARTED) gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType = QL_START_WARP; @@ -565,7 +447,7 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId) if (sNumScenes != 0) { gHelpSystemEnabled = FALSE; - sub_8110F90(taskId); + Task_BeginQuestLogPlayback(taskId); DestroyTask(taskId); } else @@ -575,21 +457,21 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId) } } -static void sub_8110F90(u8 unused) +static void Task_BeginQuestLogPlayback(u8 taskId) { - gSaveBlock1Ptr->location.mapGroup = 3; - gSaveBlock1Ptr->location.mapNum = 19; + gSaveBlock1Ptr->location.mapGroup = MAP_GROUP(ROUTE1); + gSaveBlock1Ptr->location.mapNum = MAP_NUM(ROUTE1); gSaveBlock1Ptr->location.warpId = -1; sCurrentSceneNum = 0; gDisableMapMusicChangeOnMapLoad = 1; DisableWildEncounters(TRUE); - sub_8111368(); + QLPlayback_InitOverworldState(); } void sub_8110FCC(void) { - sub_811175C(sCurrentSceneNum, sQuestLogSceneRecordBuffer); - sub_8113B88(); + ReadQuestLogScriptFromSav1(sCurrentSceneNum, sQuestLogSceneRecordBuffer); + ResetUnk203B044(); SetUpQuestLogEntry(1, sQuestLogSceneRecordBuffer, 0x100); QuestLogPlaybackSetObjectEventTemplates(sCurrentSceneNum); } @@ -599,8 +481,8 @@ static bool8 FieldCB2_QuestLogStartPlaybackWithWarpExit(void) LoadPalette(stdpal_get(4), 0xF0, 0x20); SetQuestLogState(QL_STATE_PLAYBACK); FieldCB_DefaultWarpExit(); - gUnknown_203AE94 = (struct UnkStruct_203AE94){}; - gUnknown_203AE94.unk_0_0 = 2; + sQuestLogCurrentScene = (struct UnkStruct_203AE94){}; + sQuestLogCurrentScene.playbackSubstate = 2; return 1; } @@ -609,8 +491,8 @@ static bool8 FieldCB2_QuestLogStartPlaybackStandingInPlace(void) LoadPalette(stdpal_get(4), 0xF0, 0x20); SetQuestLogState(QL_STATE_PLAYBACK); FieldCB_WarpExitFadeFromBlack(); - gUnknown_203AE94 = (struct UnkStruct_203AE94){}; - gUnknown_203AE94.unk_0_0 = 2; + sQuestLogCurrentScene = (struct UnkStruct_203AE94){}; + sQuestLogCurrentScene.playbackSubstate = 2; return 1; } @@ -669,11 +551,11 @@ static void QuestLogPlaybackSetObjectEventTemplates(u8 sceneNum) SetSav1ObjectEventsFromQuestLog(questLog, gSaveBlock1Ptr->objectEventTemplates); } -void sub_8111274(u8 sceneNum, bool8 a1) +static void QLPlayback_SetInitialPlayerPosition(u8 sceneNum, bool8 isWarp) { struct WarpData sp0; - if (!a1) + if (!isWarp) { gSaveBlock1Ptr->location.mapGroup = gSaveBlock1Ptr->questLog[sceneNum].mapGroup; gSaveBlock1Ptr->location.mapNum = gSaveBlock1Ptr->questLog[sceneNum].mapNum; @@ -688,11 +570,11 @@ void sub_8111274(u8 sceneNum, bool8 a1) sp0.warpId = gSaveBlock1Ptr->questLog[sceneNum].warpId; sp0.x = gSaveBlock1Ptr->questLog[sceneNum].x; sp0.y = gSaveBlock1Ptr->questLog[sceneNum].y; - sub_8055D5C(&sp0); + Overworld_SetWarpDestinationFromWarp(&sp0); } } -static void sub_8111368(void) +static void QLPlayback_InitOverworldState(void) { gQuestLogState = QL_STATE_PLAYBACK; ResetSpecialVars(); @@ -700,16 +582,16 @@ static void sub_8111368(void) ClearPCItemSlots(); if (GetQuestLogStartType() == QL_START_NORMAL) { - sub_8111274(sCurrentSceneNum, FALSE); + QLPlayback_SetInitialPlayerPosition(sCurrentSceneNum, FALSE); gFieldCallback2 = FieldCB2_QuestLogStartPlaybackStandingInPlace; - SetMainCallback2(sub_80572A8); + SetMainCallback2(CB2_SetUpOverworldForQLPlayback); } else { - sub_8111274(sCurrentSceneNum, TRUE); + QLPlayback_SetInitialPlayerPosition(sCurrentSceneNum, TRUE); WarpIntoMap(); gFieldCallback2 = FieldCB2_QuestLogStartPlaybackWithWarpExit; - SetMainCallback2(sub_805726C); + SetMainCallback2(CB2_SetUpOverworldForQLPlaybackWithWarpExit); } } @@ -871,7 +753,7 @@ void sub_8111708(void) } } -static void sub_811175C(u8 sceneNum, struct QuestLogEntry * a1) +static void ReadQuestLogScriptFromSav1(u8 sceneNum, struct QuestLogEntry * a1) { u16 i; u16 *r4; @@ -918,9 +800,9 @@ static void sub_811175C(u8 sceneNum, struct QuestLogEntry * a1) } } -static void sub_81118F4(s8 a0) +static void QuestLog_BeginFadeAtEndOfScene(s8 delay) { - FadeScreen(FADE_TO_BLACK, a0); + FadeScreen(FADE_TO_BLACK, delay); sQuestLogCB = QuestLog_AdvancePlayhead; } @@ -932,7 +814,7 @@ static void QuestLog_AdvancePlayhead(void) if (++sCurrentSceneNum < QUEST_LOG_SCENE_COUNT && gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType != 0) { sNumScenes--; - sub_8111368(); + QLPlayback_InitOverworldState(); } else { @@ -947,14 +829,14 @@ static void QuestLog_StartFinalScene(void) ResetSpecialVars(); Save_ResetSaveCounters(); Save_LoadGameData(SAVE_NORMAL); - SetMainCallback2(sub_8057430); - gFieldCallback2 = sub_8111F60; + SetMainCallback2(CB2_EnterFieldFromQuestLog); + gFieldCallback2 = FieldCB2_FinalScene; FreeAllWindowBuffers(); gQuestLogState = QL_STATE_PLAYBACK_LAST; sQuestLogCB = NULL; } -void sub_81119C8(void) +void QuestLog_AdvancePlayhead_(void) { QuestLog_AdvancePlayhead(); } @@ -966,7 +848,7 @@ bool8 QuestLog_SchedulePlaybackCB(void (*callback)(void)) switch (gQuestLogState) { case QL_STATE_RECORDING: - QuestLog_OnInteractionWithSpecialNpc(); + QuestLog_CutRecording(); break; case QL_STATE_PLAYBACK: gQuestLogPlaybackState = 3; @@ -990,7 +872,7 @@ static void Task_RunPlaybackCB(u8 taskId) if (++data[0] == 0x7F) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gUnknown_203AE94.unk_0_6 = 2; + sQuestLogCurrentScene.sceneEndMode = 2; data[1]++; } break; @@ -1008,53 +890,53 @@ static void Task_RunPlaybackCB(u8 taskId) } } -static void sub_8111AD8(void) +static void QuestLog_PlayCurrentEvent(void) { - if (gUnknown_203AE94.unk_0_0 == 1) + if (sQuestLogCurrentScene.playbackSubstate == 1) { - if (--gUnknown_203AE94.unk_2 != 0) + if (--sQuestLogCurrentScene.timer != 0) return; - gUnknown_203AE94.unk_0_0 = 0; - gUnknown_203AE94.unk_0_4 = 1; - sub_8112888(2); + sQuestLogCurrentScene.playbackSubstate = 0; + sQuestLogCurrentScene.playingEvent = 1; + TogglePlaybackStateForOverworldLock(2); } - if (gUnknown_203AE94.unk_0_4 == 1) + if (sQuestLogCurrentScene.playingEvent == 1) { - if (++gUnknown_203AE94.unk_3 > 15) + if (++sQuestLogCurrentScene.overlapTimer > 15) { QuestLog_CloseTextWindow(); - gUnknown_203AE94.unk_0_4 = 0; - gUnknown_203AE94.unk_3 = 0; + sQuestLogCurrentScene.playingEvent = 0; + sQuestLogCurrentScene.overlapTimer = 0; } } - if (gUnknown_203AE94.unk_1 < NELEMS(gUnknown_203AE0C)) + if (sQuestLogCurrentScene.cursor < NELEMS(gUnknown_203AE0C)) { - if (sub_8113B44(gUnknown_203AE0C[gUnknown_203AE94.unk_1]) == 1) - sub_8111B80(); - else if (sub_8113AE8(gUnknown_203AE0C[gUnknown_203AE94.unk_1]) == 1) - sub_8111B80(); + if (sub_8113B44(gUnknown_203AE0C[sQuestLogCurrentScene.cursor]) == 1) + HandleShowQuestLogMessage(); + else if (sub_8113AE8(gUnknown_203AE0C[sQuestLogCurrentScene.cursor]) == 1) + HandleShowQuestLogMessage(); } } -static void sub_8111B80(void) +static void HandleShowQuestLogMessage(void) { - if (gUnknown_203AE94.unk_0_0 == 0) + if (sQuestLogCurrentScene.playbackSubstate == 0) { - gUnknown_203AE94.unk_0_0 = 1; - gUnknown_203AE94.unk_0_4 = 0; - gUnknown_203AE94.unk_3 = 0; - gUnknown_203AE94.unk_2 = sub_8111BD4(); + sQuestLogCurrentScene.playbackSubstate = 1; + sQuestLogCurrentScene.playingEvent = 0; + sQuestLogCurrentScene.overlapTimer = 0; + sQuestLogCurrentScene.timer = GetQuestLogTextDisplayDuration(); if (gUnknown_203B044.unk_2 == 0) - gUnknown_203AE94.unk_1++; - if (gUnknown_203AE94.unk_1 > 32) + sQuestLogCurrentScene.cursor++; + if (sQuestLogCurrentScene.cursor > 32) return; DrawQuestLogSceneDescription(); } - sub_8112888(1); + TogglePlaybackStateForOverworldLock(1); // lock } -static u8 sub_8111BD4(void) +static u8 GetQuestLogTextDisplayDuration(void) { u16 i; u16 count = 0; @@ -1078,38 +960,38 @@ bool8 sub_8111C2C(void) { if (gQuestLogState != QL_STATE_PLAYBACK) return FALSE; - if (gQuestLogPlaybackState == 0 || gUnknown_203AE94.unk_0_0 == 1 || gUnknown_203AE94.unk_0_0 == 2) + if (gQuestLogPlaybackState == 0 || sQuestLogCurrentScene.playbackSubstate == 1 || sQuestLogCurrentScene.playbackSubstate == 2) return TRUE; return FALSE; } void sub_8111C68(void) { - if (gUnknown_203AE94.unk_0_6 == 0) + if (sQuestLogCurrentScene.sceneEndMode == 0) { if (JOY_NEW(A_BUTTON)) { - gUnknown_203AE94.unk_0_6 = 2; + sQuestLogCurrentScene.sceneEndMode = 2; gQuestLogPlaybackState = 0; - sub_81118F4(-3); + QuestLog_BeginFadeAtEndOfScene(-3); } else if (JOY_NEW(B_BUTTON)) { - gUnknown_203AE94.unk_0_6 = 1; + sQuestLogCurrentScene.sceneEndMode = 1; gQuestLogPlaybackState = 0; QuestLog_SkipToEndOfPlayback(-3); } } } -bool8 sub_8111CD0(void) +bool8 QuestLogScenePlaybackIsEnding(void) { - if (gUnknown_203AE94.unk_0_6 != 0) + if (sQuestLogCurrentScene.sceneEndMode != 0) return TRUE; return FALSE; } -void sub_8111CF0(void) +void QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(void) { if (gQuestLogState == QL_STATE_PLAYBACK) DrawPreviouslyOnQuestHeader(sNumScenes); @@ -1193,7 +1075,7 @@ static void QuestLog_WaitFadeAndCancelPlayback(void) { if (gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType == 0) break; - sub_811175C(sCurrentSceneNum, sQuestLogSceneRecordBuffer); + ReadQuestLogScriptFromSav1(sCurrentSceneNum, sQuestLogSceneRecordBuffer); } gQuestLogPlaybackState = 0; QuestLog_StartFinalScene(); @@ -1211,16 +1093,16 @@ void sub_8111F38(u16 a0, u16 a1) CpuSet(gPlttBufferUnfaded + a0, gUnknown_203AE90 + a0, a1); } -static bool8 sub_8111F60(void) +static bool8 FieldCB2_FinalScene(void) { LoadPalette(stdpal_get(4), 0xF0, 0x20); DrawPreviouslyOnQuestHeader(0); FieldCB_WarpExitFadeFromBlack(); - CreateTask(sub_8111F8C, 0xFF); + CreateTask(Task_FinalScene_WaitFade, 0xFF); return TRUE; } -static void sub_8111F8C(u8 taskId) +static void Task_FinalScene_WaitFade(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1240,7 +1122,7 @@ static void Task_QuestLogScene_SavedGame(u8 taskId) if (!gPaletteFade.active) { - if (gUnknown_203AE94.unk_0_6 != 1) + if (sQuestLogCurrentScene.sceneEndMode != 1) { GetMapNameGeneric(gStringVar1, gMapHeader.regionMapSectionId); StringExpandPlaceholders(gStringVar4, gText_QuestLog_SavedGameAtLocation); @@ -1260,7 +1142,7 @@ static void Task_WaitAtEndOfQuestLog(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (JOY_NEW(A_BUTTON | B_BUTTON) || task->tTimer >= 127 || gUnknown_203AE94.unk_0_6 == 1) + if (JOY_NEW(A_BUTTON | B_BUTTON) || task->tTimer >= 127 || sQuestLogCurrentScene.sceneEndMode == 1) { QuestLog_CloseTextWindow(); task->tTimer = 0; @@ -1310,11 +1192,11 @@ static void Task_EndQuestLog(u8 taskId) tState++; break; default: - if (gUnknown_203AE94.unk_0_6 == 1) + if (sQuestLogCurrentScene.sceneEndMode == 1) ShowMapNamePopup(TRUE); CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400); Free(gUnknown_203AE90); - gUnknown_203AE94 = (struct UnkStruct_203AE94){}; + sQuestLogCurrentScene = (struct UnkStruct_203AE94){}; sub_80696C0(); ScriptContext2_Disable(); gTextFlags.autoScroll = FALSE; @@ -1359,7 +1241,7 @@ static void sub_811229C(void) Free(buffer); } -void sub_811231C(void) +void FinishRecordingQuestLogScene(void) { if (gQuestLogState == QL_STATE_RECORDING) { @@ -1373,7 +1255,7 @@ void sub_811231C(void) } } -void QuestLog_OnInteractionWithSpecialNpc(void) +void QuestLog_CutRecording(void) { if (gQuestLogPlaybackState != 0 && gQuestLogState == QL_STATE_RECORDING) { @@ -1414,7 +1296,7 @@ void SaveQuestLogData(void) { if (MenuHelpers_LinkSomething() != TRUE) { - QuestLog_OnInteractionWithSpecialNpc(); + QuestLog_CutRecording(); SortQuestLogInSav1(); } } @@ -1553,17 +1435,17 @@ void sub_81127F8(struct FieldInput * a0) } } -static void sub_8112888(u8 a0) +static void TogglePlaybackStateForOverworldLock(u8 a0) { switch (a0) { case 1: if (gQuestLogPlaybackState == 1) - gQuestLogPlaybackState = 3; + gQuestLogPlaybackState = 3; // Message visible, overworld locked break; case 2: if (gQuestLogPlaybackState == 3) - gQuestLogPlaybackState = 1; + gQuestLogPlaybackState = 1; // Overworld unlocked break; } } @@ -1824,2547 +1706,3 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2) } } } - - -// Probable file boundary, help_message.c below, quest_log.c above - - -const u16 gUnknown_84566A8[] = INCBIN_U16("graphics/unknown/unknown_84566a8.bin"); - -static const struct WindowTemplate sHelpMessageWindowTemplate = { - 0x00, 0, 15, 30, 5, 15, 0x008F -}; - -void MapNamePopupWindowIdSetDummy(void) -{ - sHelpMessageWindowId = 0xFF; -} - -u8 CreateHelpMessageWindow(void) -{ - if (sHelpMessageWindowId == 0xFF) - { - sHelpMessageWindowId = AddWindow(&sHelpMessageWindowTemplate); - PutWindowTilemap(sHelpMessageWindowId); - } - return sHelpMessageWindowId; -} - -void DestroyHelpMessageWindow(u8 a0) -{ - if (sHelpMessageWindowId != 0xFF) - { - FillWindowPixelBuffer(sHelpMessageWindowId, PIXEL_FILL(0)); - ClearWindowTilemap(sHelpMessageWindowId); - - if (a0) - CopyWindowToVram(sHelpMessageWindowId, a0); - - RemoveWindow(sHelpMessageWindowId); - sHelpMessageWindowId = 0xFF; - } -} - -#ifdef NONMATCHING -void sub_8112F18(u8 windowId) -{ - u8 width = GetWindowAttribute(windowId, WINDOW_WIDTH); - u8 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); - u8 *buffer = Alloc(32 * width * height); - u8 i, j; - u8 k; - - if (buffer != NULL) - { - for (i = 0; i < height; i++) - { - for (j = 0; j < width; j++) - { - if (i == 0) - k = 0; - else if (i == height - 1) - k = 14; - else - k = 5; - CpuCopy32( - (void *)gUnknown_84566A8 + 32 * k, // operand swap on "add" instruction - buffer + 32 * (i * width + j), - 32 - ); - } - } - CopyToWindowPixelBuffer(windowId, buffer, width * height * 32, 0); - Free(buffer); - } -} -#else -NAKED -void sub_8112F18(u8 windowId) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r10, r0\n" - "\tmovs r1, 0x3\n" - "\tbl GetWindowAttribute\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tmov r0, r10\n" - "\tmovs r1, 0x4\n" - "\tbl GetWindowAttribute\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tlsls r0, r7, 5\n" - "\tmuls r0, r6\n" - "\tbl Alloc\n" - "\tmov r8, r0\n" - "\tcmp r0, 0\n" - "\tbeq _08112FB8\n" - "\tmovs r5, 0\n" - "\tadds r0, r6, 0\n" - "\tmuls r0, r7\n" - "\tstr r0, [sp]\n" - "\tcmp r5, r7\n" - "\tbcs _08112FA2\n" - "_08112F5A:\n" - "\tmovs r4, 0\n" - "\tadds r1, r5, 0x1\n" - "\tmov r9, r1\n" - "\tcmp r4, r6\n" - "\tbcs _08112F98\n" - "\tsubs r3, r7, 0x1\n" - "_08112F66:\n" - "\tmovs r0, 0\n" - "\tcmp r5, 0\n" - "\tbeq _08112F74\n" - "\tmovs r0, 0x5\n" - "\tcmp r5, r3\n" - "\tbne _08112F74\n" - "\tmovs r0, 0xE\n" - "_08112F74:\n" - "\tlsls r0, 5\n" - "\tldr r1, _08112FC8 @ =gUnknown_84566A8\n" - "\tadds r0, r1, r0\n" - "\tadds r1, r5, 0\n" - "\tmuls r1, r6\n" - "\tadds r1, r4\n" - "\tlsls r1, 5\n" - "\tadd r1, r8\n" - "\tldr r2, _08112FCC @ =0x04000008\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl CpuSet\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp, 0x4]\n" - "\tcmp r4, r6\n" - "\tbcc _08112F66\n" - "_08112F98:\n" - "\tmov r1, r9\n" - "\tlsls r0, r1, 24\n" - "\tlsrs r5, r0, 24\n" - "\tcmp r5, r7\n" - "\tbcc _08112F5A\n" - "_08112FA2:\n" - "\tldr r0, [sp]\n" - "\tlsls r2, r0, 21\n" - "\tlsrs r2, 16\n" - "\tmov r0, r10\n" - "\tmov r1, r8\n" - "\tmovs r3, 0\n" - "\tbl CopyToWindowPixelBuffer\n" - "\tmov r0, r8\n" - "\tbl Free\n" - "_08112FB8:\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_08112FC8: .4byte gUnknown_84566A8\n" - "_08112FCC: .4byte 0x04000008"); -} -#endif - -static void sub_8112FD0(void) -{ - sub_8112F18(sHelpMessageWindowId); -} - -static const u8 sHelpMessageTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GREY}; - -static void PrintHelpMessageText(const u8 *text) -{ - AddTextPrinterParameterized4(sHelpMessageWindowId, 2, 2, 5, 1, 1, sHelpMessageTextColors, -1, text); -} - -void PrintTextOnHelpMessageWindow(const u8 *text, u8 mode) -{ - sub_8112FD0(); - PrintHelpMessageText(text); - if (mode) - CopyWindowToVram(sHelpMessageWindowId, mode); -} - - -// Probable file boundary, trainer_fan_club.c below, help_message.c above - - -void ResetTrainerFanClub(void) -{ - VarSet(VAR_FANCLUB_FAN_COUNTER, 0); - VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, 0); -} - -void Script_TryLoseFansFromPlayTimeAfterLinkBattle(void) -{ - TryLoseFansFromPlayTimeAfterLinkBattle(TRAINER_FAN_CLUB); -} - -static void TryLoseFansFromPlayTimeAfterLinkBattle(struct TrainerFanClub *fanClub) -{ - if (DidPlayerGetFirstFans(fanClub)) - { - TryLoseFansFromPlayTime(fanClub); - VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, gSaveBlock2Ptr->playTimeHours); - } -} - -void Script_UpdateTrainerFanClubGameClear(void) -{ - UpdateTrainerFanClubGameClear(TRAINER_FAN_CLUB); -} - -static void UpdateTrainerFanClubGameClear(struct TrainerFanClub *fanClub) -{ - if (!fanClub->gotInitialFans) - { - SetPlayerGotFirstFans(fanClub); - SetInitialFansOfPlayer(fanClub); - VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, gSaveBlock2Ptr->playTimeHours); - FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_BLACKBELT); - FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_ROCKER); - FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_WOMAN); - FlagClear(FLAG_HIDE_SAFFRON_FAN_CLUB_BEAUTY); - VarSet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 1); - } -} - -ALIGNED(4) const u8 sCounterIncrements[] = {2, 1, 2, 1}; - -static u8 TryGainNewFanFromCounter(struct TrainerFanClub *fanClub, u8 a1) -{ - if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2) - { - if (fanClub->timer + sCounterIncrements[a1] >= 20) - { - if (GetNumFansOfPlayerInTrainerFanClub(fanClub) < 3) - { - PlayerGainRandomTrainerFan(fanClub); - fanClub->timer = 0; - } - else - fanClub->timer = 20; - } - else - fanClub->timer += sCounterIncrements[a1]; - } - - return fanClub->timer; -} - - -static u8 PlayerGainRandomTrainerFan(struct TrainerFanClub *fanClub) -{ - static const u8 sFanClubMemberIds[] = - { - FANCLUB_MEMBER2, - FANCLUB_MEMBER4, - FANCLUB_MEMBER6, - FANCLUB_MEMBER1, - FANCLUB_MEMBER8, - FANCLUB_MEMBER7, - FANCLUB_MEMBER5, - FANCLUB_MEMBER3 - }; - - u8 i; - u8 idx = 0; - - for (i = 0; i < NUM_TRAINER_FAN_CLUB_MEMBERS; i++) - { - if (!(GET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i]))) - { - idx = i; - if (Random() % 2) - { - SET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i]); - return sFanClubMemberIds[i]; - } - } - } - - SET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[idx]); - return sFanClubMemberIds[idx]; -} - -static u8 PlayerLoseRandomTrainerFan(struct TrainerFanClub *fanClub) -{ - static const u8 sFanClubMemberIds[] = - { - FANCLUB_MEMBER6, - FANCLUB_MEMBER7, - FANCLUB_MEMBER4, - FANCLUB_MEMBER8, - FANCLUB_MEMBER5, - FANCLUB_MEMBER2, - FANCLUB_MEMBER1, - FANCLUB_MEMBER3 - }; - - u8 i; - u8 idx = 0; - - if (GetNumFansOfPlayerInTrainerFanClub(fanClub) == 1) - return 0; - - for (i = 0; i < NUM_TRAINER_FAN_CLUB_MEMBERS; i++) - { - if (GET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i])) - { - idx = i; - if (Random() % 2) - { - FLIP_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[i]); - return sFanClubMemberIds[i]; - } - } - } - - if (GET_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[idx])) - FLIP_TRAINER_FAN_CLUB_FLAG(sFanClubMemberIds[idx]); - - return sFanClubMemberIds[idx]; -} - -u16 Script_GetNumFansOfPlayerInTrainerFanClub(void) -{ - return GetNumFansOfPlayerInTrainerFanClub(TRAINER_FAN_CLUB); -} - -static u16 GetNumFansOfPlayerInTrainerFanClub(struct TrainerFanClub *fanClub) -{ - u8 count = 0; - u8 i; - - for (i = 0; i < NUM_TRAINER_FAN_CLUB_MEMBERS; i++) - { - if (GET_TRAINER_FAN_CLUB_FLAG(i)) - count++; - } - - return count; -} - -void Script_TryLoseFansFromPlayTime(void) -{ - TryLoseFansFromPlayTime(TRAINER_FAN_CLUB); -} - -static void TryLoseFansFromPlayTime(struct TrainerFanClub *fanClub) -{ - u8 i = 0; - u16 timer; - - if (gSaveBlock2Ptr->playTimeHours < 999) - { - while (1) - { - if (GetNumFansOfPlayerInTrainerFanClub(fanClub) < 5) - { - VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, gSaveBlock2Ptr->playTimeHours); - break; - } - if (i == NUM_TRAINER_FAN_CLUB_MEMBERS) - break; - - timer = VarGet(VAR_FANCLUB_LOSE_FAN_TIMER); - if (gSaveBlock2Ptr->playTimeHours - timer < 12) - break; - - PlayerLoseRandomTrainerFan(fanClub); - timer = VarGet(VAR_FANCLUB_LOSE_FAN_TIMER); - VarSet(VAR_FANCLUB_LOSE_FAN_TIMER, timer + 12); - i++; - } - } -} - -bool16 Script_IsFanClubMemberFanOfPlayer(void) -{ - return IsFanClubMemberFanOfPlayer(TRAINER_FAN_CLUB); -} - -static bool16 IsFanClubMemberFanOfPlayer(struct TrainerFanClub *fanClub) -{ - return GET_TRAINER_FAN_CLUB_FLAG(gSpecialVar_0x8004); -} - -static void SetInitialFansOfPlayer(struct TrainerFanClub *fanClub) -{ - SET_TRAINER_FAN_CLUB_FLAG(FANCLUB_MEMBER1); - SET_TRAINER_FAN_CLUB_FLAG(FANCLUB_MEMBER2); - SET_TRAINER_FAN_CLUB_FLAG(FANCLUB_MEMBER3); -} - -void Script_BufferFanClubTrainerName(void) -{ - u8 whichLinkTrainer = 0; - u8 whichNPCTrainer = 0; - - switch (gSpecialVar_0x8004) - { - case FANCLUB_MEMBER1: - whichNPCTrainer = 0; - whichLinkTrainer = 0; - break; - case FANCLUB_MEMBER2: - case FANCLUB_MEMBER3: - case FANCLUB_MEMBER4: - case FANCLUB_MEMBER8: - break; - case FANCLUB_MEMBER5: - whichNPCTrainer = 1; - whichLinkTrainer = 0; - break; - case FANCLUB_MEMBER6: - whichNPCTrainer = 0; - whichLinkTrainer = 1; - break; - case FANCLUB_MEMBER7: - whichNPCTrainer = 2; - whichLinkTrainer = 1; - break; - } - BufferFanClubTrainerName(&gSaveBlock2Ptr->linkBattleRecords, whichLinkTrainer, whichNPCTrainer); -} - -static void BufferFanClubTrainerName(struct LinkBattleRecords *linkRecords, u8 whichLinkTrainer, u8 whichNPCTrainer) -{ - u8 *str; - const u8 *linkTrainerName = linkRecords->entries[whichLinkTrainer].name; - if (linkTrainerName[0] == EOS) - { - switch (whichNPCTrainer) - { - case 0: - StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName); - break; - case 1: - StringCopy(gStringVar1, gText_LtSurge); - break; - case 2: - StringCopy(gStringVar1, gText_Koga); - break; - default: - StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName); - break; - } - } - else - { - str = gStringVar1; - StringCopyN(str, linkTrainerName, PLAYER_NAME_LENGTH); - str[PLAYER_NAME_LENGTH] = EOS; - if ( str[0] == EXT_CTRL_CODE_BEGIN - && str[1] == EXT_CTRL_CODE_JPN) - { - str += 2; - while (*str != EOS) - str++; - *str++ = EXT_CTRL_CODE_BEGIN; - *str++ = EXT_CTRL_CODE_ENG; - *str++ = EOS; - } - } -} - -void Special_UpdateTrainerFansAfterLinkBattle(void) -{ - UpdateTrainerFansAfterLinkBattle(TRAINER_FAN_CLUB); -} - -static void UpdateTrainerFansAfterLinkBattle(struct TrainerFanClub *fanClub) -{ - if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2) - { - TryLoseFansFromPlayTimeAfterLinkBattle(fanClub); - if (gBattleOutcome == B_OUTCOME_WON) - PlayerGainRandomTrainerFan(fanClub); - else - PlayerLoseRandomTrainerFan(fanClub); - } -} - -static bool8 DidPlayerGetFirstFans(struct TrainerFanClub *fanClub) -{ - return fanClub->gotInitialFans; -} - -void Script_SetPlayerGotFirstFans(void) -{ - SetPlayerGotFirstFans(TRAINER_FAN_CLUB); -} - -static void SetPlayerGotFirstFans(struct TrainerFanClub *fanClub) -{ - fanClub->gotInitialFans = TRUE; -} - -u8 Script_TryGainNewFanFromCounter(void) -{ - return TryGainNewFanFromCounter(TRAINER_FAN_CLUB, gSpecialVar_0x8004); -} - - -// Probable file boundary, quest_log_events.c below, trainer_fan_club.c above - - -static u16 *(*const sQuestLogStorageCBs[])(u16 *, const u16 *) = { - [QL_EVENT_0] = NULL, - [QL_EVENT_1] = NULL, - [QL_EVENT_2] = NULL, - [QL_EVENT_SWITCHED_PARTY_ORDER] = BufferQuestLogData_SwitchedPartyOrder, - [QL_EVENT_USED_ITEM] = BufferQuestLogData_UsedItem, - [QL_EVENT_GAVE_HELD_ITEM] = BufferQuestLogData_GaveHeldItemFromPartyMenu, - [QL_EVENT_GAVE_HELD_ITEM_BAG] = BufferQuestLogData_GaveHeldItemFromBagMenu, - [QL_EVENT_GAVE_HELD_ITEM_PC] = BufferQuestLogData_GaveHeldItemFromPC, - [QL_EVENT_TOOK_HELD_ITEM] = BufferQuestLogData_TookHeldItem, - [QL_EVENT_SWAPPED_HELD_ITEM] = BufferQuestLogData_SwappedHeldItem, - [QL_EVENT_SWAPPED_HELD_ITEM_PC] = BufferQuestLogData_SwappedHeldItemFromPC, - [QL_EVENT_USED_PKMN_CENTER] = BufferQuestLogData_UsedPkmnCenter, - [QL_EVENT_LINK_TRADED] = BufferQuestLogData_LinkTraded, - [QL_EVENT_LINK_BATTLED_SINGLE] = BufferQuestLogData_LinkBattledSingle, - [QL_EVENT_LINK_BATTLED_DOUBLE] = BufferQuestLogData_LinkBattledDouble, - [QL_EVENT_LINK_BATTLED_MULTI] = BufferQuestLogData_LinkBattledMulti, - [QL_EVENT_USED_UNION_ROOM] = BufferQuestLogData_UsedUnionRoom, - [QL_EVENT_USED_UNION_ROOM_CHAT] = BufferQuestLogData_UsedUnionRoomChat, - [QL_EVENT_LINK_TRADED_UNION] = BufferQuestLogData_LinkTradedUnionRoom, - [QL_EVENT_LINK_BATTLED_UNION] = BufferQuestLogData_LinkBattledUnionRoom, - [QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES] = BufferQuestLogData_SwitchedMonsBetweenBoxes, - [QL_EVENT_SWITCHED_MONS_WITHIN_BOX] = BufferQuestLogData_SwitchedMonsWithinBox, - [QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON] = BufferQuestLogData_SwitchedPartyMonForPCMon, - [QL_EVENT_MOVED_MON_BETWEEN_BOXES] = BufferQuestLogData_MovedMonBetweenBoxes, - [QL_EVENT_MOVED_MON_WITHIN_BOX] = BufferQuestLogData_MovedMonWithinBox, - [QL_EVENT_WITHDREW_MON_PC] = BufferQuestLogData_WithdrewMonFromPC, - [QL_EVENT_DEPOSITED_MON_PC] = BufferQuestLogData_DepositedMonInPC, - [QL_EVENT_SWITCHED_MULTIPLE_MONS] = BufferQuestLogData_SwitchedMultipleMons, - [QL_EVENT_DEPOSITED_ITEM_PC] = BufferQuestLogData_DepositedItemInPC, - [QL_EVENT_WITHDREW_ITEM_PC] = BufferQuestLogData_WithdrewItemFromPC, - [QL_EVENT_DEFEATED_GYM_LEADER] = BufferQuestLogData_DefeatedGymLeader, - [QL_EVENT_DEFEATED_WILD_MON] = BufferQuestLogData_DefeatedWildMon, - [QL_EVENT_DEFEATED_E4_MEMBER] = BufferQuestLogData_DefeatedEliteFourMember, - [QL_EVENT_DEFEATED_CHAMPION] = BufferQuestLogData_DefeatedChampion, - [QL_EVENT_DEFEATED_TRAINER] = BufferQuestLogData_DefeatedTrainer, - [QL_EVENT_DEPARTED] = BufferQuestLogData_DepartedLocation, - [QL_EVENT_USED_FIELD_MOVE] = BufferQuestLogData_UsedFieldMove, - [QL_EVENT_BOUGHT_ITEM] = BufferQuestLogData_BoughtItem, - [QL_EVENT_SOLD_ITEM] = BufferQuestLogData_SoldItem, - [QL_EVENT_39] = NULL, - [QL_EVENT_OBTAINED_ITEM] = BufferQuestLogData_ObtainedItem, - [QL_EVENT_41] = NULL, - [QL_EVENT_ARRIVED] = BufferQuestLogData_ArrivedInLocation -}; - -void SetQuestLogEvent(u16 eventId, const u16 *eventData) -{ - u16 *r1; - - if (eventId == QL_EVENT_DEPARTED && gUnknown_203B048 == 2) - { - sub_811381C(); - return; - } - sub_811381C(); - if (gQuestLogState == QL_STATE_PLAYBACK) - return; - - if (!IS_VALID_QL_EVENT(eventId)) - return; - - if (InQuestLogDisabledLocation() == TRUE) - return; - - if (TrySetLinkQuestLogEvent(eventId, eventData) == TRUE) - return; - - if (MenuHelpers_LinkSomething() == TRUE) - return; - - if (InUnionRoom() == TRUE) - return; - - if (TrySetTrainerBattleQuestLogEvent(eventId, eventData) == TRUE) - return; - - if (IsQuestLogEventWithSpecialEncounterSpecies(eventId, eventData) == TRUE) - return; - - if (sub_81153E4(eventId, eventData) == FALSE) - return; - - if (gQuestLogPlaybackState == 0) - { - if (sub_8113778(eventId, eventData) == TRUE) - return; - - if (eventId != QL_EVENT_DEFEATED_WILD_MON || gUnknown_203AE04 == NULL) - { - if (sub_81153A8(eventId, eventData) == FALSE) - return; - StartRecordingQuestLogEntry(eventId); - } - } - else if (eventId == QL_EVENT_OBTAINED_ITEM) - return; - - sub_8113B94(eventId); - if (eventId == QL_EVENT_DEFEATED_WILD_MON) - { - if (gUnknown_203AE04 == NULL) - { - gUnknown_203AE04 = sEventRecordingPointer; - r1 = sQuestLogStorageCBs[eventId](gUnknown_203AE04, eventData); - } - else - { - sQuestLogStorageCBs[eventId](gUnknown_203AE04, eventData); - return; - } - } - else - { - gUnknown_203AE04 = NULL; - r1 = sQuestLogStorageCBs[eventId](sEventRecordingPointer, eventData); - } - - if (r1 == NULL) - { - sub_811231C(); - r1 = sub_8113828(eventId, eventData); - if (r1 == NULL) - return; - } - - sEventRecordingPointer = r1; - if (gUnknown_203B048 == 0) - return; - sub_811231C(); -} - -static bool8 InQuestLogDisabledLocation(void) -{ - // In Trainer Tower - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_TOWER_1F) - && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_1F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_2F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_3F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_4F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_5F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_6F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_7F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_8F) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_ROOF) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_LOBBY) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_ELEVATOR))) - return TRUE; - - // In pokemon trainer fan club - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB)) - return TRUE; - - // In E-Reader house - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEVEN_ISLAND_HOUSE_ROOM1) && - (gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_HOUSE_ROOM1) - || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_HOUSE_ROOM2))) - return TRUE; - - // In elevator - if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROCKET_HIDEOUT_ELEVATOR)) - || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SILPH_CO_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SILPH_CO_ELEVATOR)) - || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_TOWER_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_ELEVATOR)) - || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR))) - return TRUE; - - return FALSE; -} - -bool8 sub_8113748(void) -{ - if (InQuestLogDisabledLocation() != TRUE) - return FALSE; - - if (gQuestLogState == QL_STATE_PLAYBACK) - return TRUE; - - if (gQuestLogState == QL_STATE_RECORDING) - QuestLog_OnInteractionWithSpecialNpc(); - - return FALSE; -} - -static bool8 sub_8113778(u16 eventId, const u16 *eventData) -{ - if (eventId == QL_EVENT_USED_FIELD_MOVE || eventId == QL_EVENT_USED_PKMN_CENTER) - return TRUE; - - if (!FlagGet(FLAG_SYS_GAME_CLEAR)) - { - if (eventId == QL_EVENT_SWITCHED_PARTY_ORDER || eventId == QL_EVENT_DEFEATED_WILD_MON || sub_81137E4(eventId, eventData) == TRUE) - return TRUE; - } - - if (!FlagGet(FLAG_SYS_CAN_LINK_WITH_RS)) - { - if (eventId == QL_EVENT_USED_ITEM - || eventId == QL_EVENT_GAVE_HELD_ITEM - || eventId == QL_EVENT_GAVE_HELD_ITEM_BAG - || eventId == QL_EVENT_GAVE_HELD_ITEM_PC - || eventId == QL_EVENT_TOOK_HELD_ITEM - || eventId == QL_EVENT_SWAPPED_HELD_ITEM - || eventId == QL_EVENT_SWAPPED_HELD_ITEM_PC - || eventId == QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON - || eventId == QL_EVENT_WITHDREW_MON_PC - || eventId == QL_EVENT_DEPOSITED_MON_PC) - return TRUE; - } - - return FALSE; -} - -static bool8 sub_81137E4(u16 eventId, const u16 *eventData) -{ - if (eventId == QL_EVENT_DEFEATED_TRAINER) - { - u8 trainerClass = gTrainers[*eventData].trainerClass; - if ( trainerClass == CLASS_RIVAL - || trainerClass == CLASS_RIVAL_2 - || trainerClass == CLASS_CHAMPION_2 - || trainerClass == CLASS_BOSS) - return FALSE; - return TRUE; - } - return FALSE; -} - -static void sub_811381C(void) -{ - gUnknown_203B048 = 0; -} - -static u16 *sub_8113828(u16 eventId, const u16 *eventData) -{ - if (sub_8113778(eventId, eventData) == TRUE) - return NULL; - - if (sub_81153A8(eventId, eventData) == FALSE) - return NULL; - - StartRecordingQuestLogEntry(eventId); - sub_8113B94(eventId); - - if (eventId == QL_EVENT_DEFEATED_WILD_MON) - gUnknown_203AE04 = sEventRecordingPointer; - else - gUnknown_203AE04 = NULL; - - return sQuestLogStorageCBs[eventId](sEventRecordingPointer, eventData); -} - -static bool8 TrySetLinkQuestLogEvent(u16 eventId, const u16 *eventData) -{ - if (!IS_LINK_QL_EVENT(eventId)) - return FALSE; - - sub_81138F8(); - gUnknown_203B024.unk_00 = eventId; - - if (eventId != QL_EVENT_USED_UNION_ROOM && eventId != QL_EVENT_USED_UNION_ROOM_CHAT) - { - if (eventId == QL_EVENT_LINK_TRADED || eventId == QL_EVENT_LINK_TRADED_UNION) - memcpy(gUnknown_203B024.unk_04, eventData, 12); - else - memcpy(gUnknown_203B024.unk_04, eventData, 24); - } - return TRUE; -} - -void sub_81138F8(void) -{ - gUnknown_203B024 = (struct UnkStruct_203B024){}; -} - -void QuestLog_StartRecordingInputsAfterDeferredEvent(void) -{ - if (gUnknown_203B024.unk_00 != QL_EVENT_0) - { - u16 *resp; - gUnknown_203B04A = 0; - StartRecordingQuestLogEntry(gUnknown_203B024.unk_00); - resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](sEventRecordingPointer, gUnknown_203B024.unk_04); - sEventRecordingPointer = resp; - sub_81138F8(); - } -} - -static bool8 TrySetTrainerBattleQuestLogEvent(u16 eventId, const u16 *eventData) -{ - if (eventId != QL_EVENT_DEFEATED_TRAINER - && eventId != QL_EVENT_DEFEATED_GYM_LEADER - && eventId != QL_EVENT_DEFEATED_E4_MEMBER - && eventId != QL_EVENT_DEFEATED_CHAMPION) - return FALSE; - - sub_81138F8(); - if (gQuestLogPlaybackState != 0 || FlagGet(FLAG_SYS_GAME_CLEAR) || sub_81137E4(eventId, eventData) != TRUE) - { - gUnknown_203B024.unk_00 = eventId; - memcpy(gUnknown_203B024.unk_04, eventData, 8); - } - return TRUE; -} - -void sub_81139BC(void) -{ - if (gUnknown_203B024.unk_00 != QL_EVENT_0) - { - u16 *resp; - if (gQuestLogPlaybackState == 0) - { - gUnknown_203B04A = 0; - StartRecordingQuestLogEntry(gUnknown_203B024.unk_00); - } - sub_8113B94(gUnknown_203B024.unk_00); - resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](sEventRecordingPointer, gUnknown_203B024.unk_04); - sEventRecordingPointer = resp; - TryRecordEvent41_IncCursor(1); - sub_81138F8(); - sub_811231C(); - } -} - -static void TryRecordEvent41_IncCursor(u16 a0) -{ - sEventRecordingPointer = TryRecordEvent41(sEventRecordingPointer, a0); - sQuestLogCursor++; -} - -static bool8 IsQuestLogEventWithSpecialEncounterSpecies(u16 eventId, const u16 *eventData) -{ - if (eventId != QL_EVENT_DEFEATED_WILD_MON) - return FALSE; - - if (IsSpeciesFromSpecialEncounter(eventData[0]) == TRUE) - return TRUE; - - if (IsSpeciesFromSpecialEncounter(eventData[1]) == TRUE) - return TRUE; - - return FALSE; -} - -static const u16 *(*const sQuestLogEventTextBufferCBs[])(const u16 *) = { - [QL_EVENT_0] = NULL, - [QL_EVENT_1] = NULL, - [QL_EVENT_2] = NULL, - [QL_EVENT_SWITCHED_PARTY_ORDER] = BufferQuestLogText_SwitchedPartyOrder, - [QL_EVENT_USED_ITEM] = BufferQuestLogText_UsedItem, - [QL_EVENT_GAVE_HELD_ITEM] = BufferQuestLogText_GaveHeldItemFromPartyMenu, - [QL_EVENT_GAVE_HELD_ITEM_BAG] = BufferQuestLogText_GaveHeldItemFromBagMenu, - [QL_EVENT_GAVE_HELD_ITEM_PC] = BufferQuestLogText_GaveHeldItemFromPC, - [QL_EVENT_TOOK_HELD_ITEM] = BufferQuestLogText_TookHeldItem, - [QL_EVENT_SWAPPED_HELD_ITEM] = BufferQuestLogText_SwappedHeldItem, - [QL_EVENT_SWAPPED_HELD_ITEM_PC] = BufferQuestLogText_SwappedHeldItemFromPC, - [QL_EVENT_USED_PKMN_CENTER] = BufferQuestLogText_UsedPkmnCenter, - [QL_EVENT_LINK_TRADED] = BufferQuestLogText_LinkTraded, - [QL_EVENT_LINK_BATTLED_SINGLE] = BufferQuestLogText_LinkBattledSingle, - [QL_EVENT_LINK_BATTLED_DOUBLE] = BufferQuestLogText_LinkBattledDouble, - [QL_EVENT_LINK_BATTLED_MULTI] = BufferQuestLogText_LinkBattledMulti, - [QL_EVENT_USED_UNION_ROOM] = BufferQuestLogText_UsedUnionRoom, - [QL_EVENT_USED_UNION_ROOM_CHAT] = BufferQuestLogText_UsedUnionRoomChat, - [QL_EVENT_LINK_TRADED_UNION] = BufferQuestLogText_LinkTradedUnionRoom, - [QL_EVENT_LINK_BATTLED_UNION] = BufferQuestLogText_LinkBattledUnionRoom, - [QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES] = BufferQuestLogText_SwitchedMonsBetweenBoxes, - [QL_EVENT_SWITCHED_MONS_WITHIN_BOX] = BufferQuestLogText_SwitchedMonsWithinBox, - [QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON] = BufferQuestLogText_SwitchedPartyMonForPCMon, - [QL_EVENT_MOVED_MON_BETWEEN_BOXES] = BufferQuestLogText_MovedMonBetweenBoxes, - [QL_EVENT_MOVED_MON_WITHIN_BOX] = BufferQuestLogText_MovedMonWithinBox, - [QL_EVENT_WITHDREW_MON_PC] = BufferQuestLogText_WithdrewMonFromPC, - [QL_EVENT_DEPOSITED_MON_PC] = BufferQuestLogText_DepositedMonInPC, - [QL_EVENT_SWITCHED_MULTIPLE_MONS] = BufferQuestLogText_SwitchedMultipleMons, - [QL_EVENT_DEPOSITED_ITEM_PC] = BufferQuestLogText_DepositedItemInPC, - [QL_EVENT_WITHDREW_ITEM_PC] = BufferQuestLogText_WithdrewItemFromPC, - [QL_EVENT_DEFEATED_GYM_LEADER] = BufferQuestLogText_DefeatedGymLeader, - [QL_EVENT_DEFEATED_WILD_MON] = BufferQuestLogText_DefeatedWildMon, - [QL_EVENT_DEFEATED_E4_MEMBER] = BufferQuestLogText_DefeatedEliteFourMember, - [QL_EVENT_DEFEATED_CHAMPION] = BufferQuestLogText_DefeatedChampion, - [QL_EVENT_DEFEATED_TRAINER] = BufferQuestLogText_DefeatedTrainer, - [QL_EVENT_DEPARTED] = BufferQuestLogText_DepartedLocation, - [QL_EVENT_USED_FIELD_MOVE] = BufferQuestLogText_UsedFieldMove, - [QL_EVENT_BOUGHT_ITEM] = BufferQuestLogText_BoughtItem, - [QL_EVENT_SOLD_ITEM] = BufferQuestLogText_SoldItem, - [QL_EVENT_39] = NULL, - [QL_EVENT_OBTAINED_ITEM] = BufferQuestLogText_ObtainedItem, - [QL_EVENT_41] = NULL, - [QL_EVENT_ARRIVED] = BufferQuestLogText_ArrivedInLocation -}; - -static const u8 sQuestLogEventCmdSizes[] = { - [QL_EVENT_0] = 0x08, - [QL_EVENT_1] = 0x08, - [QL_EVENT_2] = 0x08, - [QL_EVENT_SWITCHED_PARTY_ORDER] = 0x08, - [QL_EVENT_USED_ITEM] = 0x0a, - [QL_EVENT_GAVE_HELD_ITEM] = 0x08, - [QL_EVENT_GAVE_HELD_ITEM_BAG] = 0x08, - [QL_EVENT_GAVE_HELD_ITEM_PC] = 0x08, - [QL_EVENT_TOOK_HELD_ITEM] = 0x08, - [QL_EVENT_SWAPPED_HELD_ITEM] = 0x0a, - [QL_EVENT_SWAPPED_HELD_ITEM_PC] = 0x0a, - [QL_EVENT_USED_PKMN_CENTER] = 0x04, - [QL_EVENT_LINK_TRADED] = 0x10, - [QL_EVENT_LINK_BATTLED_SINGLE] = 0x0c, - [QL_EVENT_LINK_BATTLED_DOUBLE] = 0x0c, - [QL_EVENT_LINK_BATTLED_MULTI] = 0x1a, - [QL_EVENT_USED_UNION_ROOM] = 0x04, - [QL_EVENT_USED_UNION_ROOM_CHAT] = 0x04, - [QL_EVENT_LINK_TRADED_UNION] = 0x10, - [QL_EVENT_LINK_BATTLED_UNION] = 0x0c, - [QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES] = 0x0a, - [QL_EVENT_SWITCHED_MONS_WITHIN_BOX] = 0x0a, - [QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON] = 0x0a, - [QL_EVENT_MOVED_MON_BETWEEN_BOXES] = 0x08, - [QL_EVENT_MOVED_MON_WITHIN_BOX] = 0x08, - [QL_EVENT_WITHDREW_MON_PC] = 0x08, - [QL_EVENT_DEPOSITED_MON_PC] = 0x08, - [QL_EVENT_SWITCHED_MULTIPLE_MONS] = 0x06, - [QL_EVENT_DEPOSITED_ITEM_PC] = 0x06, - [QL_EVENT_WITHDREW_ITEM_PC] = 0x06, - [QL_EVENT_DEFEATED_GYM_LEADER] = 0x0c, - [QL_EVENT_DEFEATED_WILD_MON] = 0x0c, - [QL_EVENT_DEFEATED_E4_MEMBER] = 0x0c, - [QL_EVENT_DEFEATED_CHAMPION] = 0x0a, - [QL_EVENT_DEFEATED_TRAINER] = 0x0c, - [QL_EVENT_DEPARTED] = 0x06, - [QL_EVENT_USED_FIELD_MOVE] = 0x08, - [QL_EVENT_BOUGHT_ITEM] = 0x0e, - [QL_EVENT_SOLD_ITEM] = 0x0e, - [QL_EVENT_39] = 0x02, - [QL_EVENT_OBTAINED_ITEM] = 0x08, - [QL_EVENT_41] = 0x04, - [QL_EVENT_ARRIVED] = 0x06 -}; - -static u16 *QuestLog_SkipCommand(u16 *curPtr, u16 **prevPtr_p) -{ - u16 eventId = curPtr[0] & 0xfff; - u16 cnt = curPtr[0] >> 12; - - if (eventId == QL_EVENT_DEFEATED_CHAMPION) - cnt = 0; - - if (!IS_VALID_QL_EVENT(eventId)) - return NULL; - - *prevPtr_p = curPtr; - return sQuestLogEventCmdSizes[eventId] + (sQuestLogEventCmdSizes[eventId] - 4) * cnt + (void *)curPtr; -} - -static void sub_8113ABC(const u16 *a0) -{ - const u8 *r2 = (const u8 *)(a0 + 2); - if ((a0[0] & 0xFFF) != QL_EVENT_DEPARTED) - gUnknown_203B04A = 0; - else - gUnknown_203B04A = r2[1] + 1; -} - -static bool8 sub_8113AE8(const u16 *a0) -{ -#ifndef NONMATCHING - register const u16 *r0 asm("r0") = a0; -#else - const u16 *r0 = a0; -#endif - - if (r0 == NULL || r0[1] > sQuestLogCursor) - return FALSE; - - sQuestLogEventTextBufferCBs[a0[0] & 0xFFF](a0); - gUnknown_203B044.unk_0 = a0[0]; - gUnknown_203B044.unk_1 = (a0[0] & 0xF000) >> 12; - if (gUnknown_203B044.unk_1 != 0) - gUnknown_203B044.unk_2 = 1; - return TRUE; -} - -static bool8 sub_8113B44(const u16 *a0) -{ - if (gUnknown_203B044.unk_2 == 0) - return FALSE; - - sQuestLogEventTextBufferCBs[gUnknown_203B044.unk_0](a0); - gUnknown_203B044.unk_2++; - if (gUnknown_203B044.unk_2 > gUnknown_203B044.unk_1) - sub_8113B88(); - return TRUE; -} - -static void sub_8113B88(void) -{ - gUnknown_203B044 = (struct UnkStruct_203B044){}; -} - -static void sub_8113B94(u16 eventId) -{ - if (gUnknown_203B044.unk_0 != (u8)eventId || gUnknown_203B044.unk_2 != sQuestLogCursor) - { - gUnknown_203B044.unk_0 = eventId; - gUnknown_203B044.unk_1 = 0; - gUnknown_203B044.unk_2 = sQuestLogCursor; - } - else if (gUnknown_203B044.unk_1 < 5) - gUnknown_203B044.unk_1++; -} - -static void sub_8113BD8(void) -{ - sNewlyEnteredMap = FALSE; - gUnknown_203B04A = 0; - gUnknown_203B04B = FALSE; -} - -static u16 *TryRecordEvent39_NoParams(u16 *a0) -{ - if (!WillCommandOfSizeFitInSav1Record(a0, sQuestLogEventCmdSizes[QL_EVENT_39])) - return NULL; - a0[0] = QL_EVENT_39; - return a0 + 1; -} - -static u16 *sub_8113C20(u16 *a0, struct QuestLogEntry * a1) -{ - if (!WillCommandOfSizeFitInSav1Record(a0, sQuestLogEventCmdSizes[QL_EVENT_39])) - return NULL; - a1->unk_6 = 0xFF; - a1->unk_4 = 0; - a1->unk_0 = 0; - a1->unk_1 = 0; - a1->unk_2 = 0; - a1->unk_3 = 0; - return a0 + 1; -} - -static u16 *TryRecordEvent41(u16 *a0, u16 a1) -{ - if (!WillCommandOfSizeFitInSav1Record(a0, sQuestLogEventCmdSizes[QL_EVENT_41])) - return NULL; - a0[0] = QL_EVENT_41; - a0[1] = a1; - return a0 + 2; -} - -static u16 *sub_8113C8C(u16 *a0, struct QuestLogEntry * a1) -{ - if (!WillCommandOfSizeFitInSav1Record(a0, sQuestLogEventCmdSizes[QL_EVENT_41])) - return NULL; - a1->unk_6 = 0xFE; - a1->unk_4 = a0[1]; - a1->unk_0 = 0; - a1->unk_1 = 0; - a1->unk_2 = 0; - a1->unk_3 = 0; - return a0 + 2; -} - -static u16 *sub_8113CC8(u16 *a0, struct QuestLogEntry * a1) -{ - u8 *r6 = (u8 *)a0 + 4; - - if (!WillCommandOfSizeFitInSav1Record(a0, sQuestLogEventCmdSizes[QL_EVENT_0])) - return NULL; - a0[0] = 0; - a0[1] = a1->unk_4; - r6[0] = a1->unk_0; - r6[1] = a1->unk_1; - r6[2] = a1->unk_2; - r6[3] = a1->unk_3; - return (u16 *)(r6 + 4); -} - -static u16 *sub_8113D08(u16 *a0, struct QuestLogEntry * a1) -{ - u8 *r6 = (u8 *)a0 + 4; - - if (!WillCommandOfSizeFitInSav1Record(a0, sQuestLogEventCmdSizes[QL_EVENT_0])) - return NULL; - a1->unk_6 = 2; - a1->unk_4 = a0[1]; - a1->unk_0 = r6[0]; - a1->unk_1 = r6[1]; - a1->unk_2 = r6[2]; - a1->unk_3 = r6[3]; - return (u16 *)(r6 + 4); -} - -static u16 *sub_8113D48(u16 *a0, struct QuestLogEntry * a1) -{ - u16 *r4 = a0; - u8 *r6 = (u8 *)a0 + 4; - - if (!WillCommandOfSizeFitInSav1Record(r4, sQuestLogEventCmdSizes[QL_EVENT_2])) - return NULL; - if (a1->unk_6 == 0) - r4[0] = 2; - else - r4[0] = 1; - r4[1] = a1->unk_4; - r6[0] = a1->unk_0; - r6[1] = a1->unk_1; - r6[2] = a1->unk_2; - r6[3] = a1->unk_3; - return (u16 *)(r6 + 4); -} - -static u16 *sub_8113D94(u16 *a0, struct QuestLogEntry * a1) -{ - u16 *r5 = a0; - u8 *r6 = (u8 *)a0 + 4; - - if (!WillCommandOfSizeFitInSav1Record(r5, sQuestLogEventCmdSizes[QL_EVENT_2])) - return NULL; - if (r5[0] == 2) - a1->unk_6 = 0; - else - a1->unk_6 = 1; - a1->unk_4 = r5[1]; - a1->unk_0 = r6[0]; - a1->unk_1 = r6[1]; - a1->unk_2 = r6[2]; - a1->unk_3 = r6[3]; - return (u16 *)(r6 + 4); -} - -u16 *sub_8113DE0(u16 eventId, u16 *a1) -{ - u8 cmdSize; - u16 *r5; - u8 r4; - u8 r1; - - if (gUnknown_203B044.unk_1 == 0) - cmdSize = sQuestLogEventCmdSizes[eventId]; - else - cmdSize = sQuestLogEventCmdSizes[eventId] - 4; - if (!sub_8110944(a1, cmdSize)) - return NULL; - - r5 = (void *)a1; - - if (gUnknown_203B044.unk_1 != 0) - r5 = (void *)r5 - (gUnknown_203B044.unk_1 * cmdSize + 4); - - if (gUnknown_203B044.unk_1 == 5) - { - for (r4 = 0; r4 < 4; r4++) - { - memcpy( - (void *)r5 + (r4 * cmdSize + 4), - (void *)r5 + ((r4 + 1) * cmdSize + 4), - cmdSize - ); - } - r1 = 4; - } - else - r1 = gUnknown_203B044.unk_1; - - r5[0] = eventId + (r1 << 12); - r5[1] = sQuestLogCursor; - r5 = (void *)r5 + (r1 * cmdSize + 4); - return r5; -} - -static const u16 *sub_8113E88(u16 eventId, const u16 *eventData) -{ - eventData = (const void *)eventData + (gUnknown_203B044.unk_2 * (sQuestLogEventCmdSizes[eventId] - 4) + 4); - return eventData; -} - -static void QuestLog_GetSpeciesName(u16 species, u8 *dest, u8 stringVarId) -{ - if (dest != NULL) - { - if (species != SPECIES_EGG) - GetSpeciesName(dest, species); - else - StringCopy(dest, gText_EggNickname); - } - else - { - if (species != SPECIES_EGG) - DynamicPlaceholderTextUtil_SetPlaceholderPtr(stringVarId, gSpeciesNames[species]); - else - DynamicPlaceholderTextUtil_SetPlaceholderPtr(stringVarId, gText_EggNickname); - } -} - -static u16 *BufferQuestLogData_SwitchedPartyOrder(u16 *a0, const u16 *eventData) -{ - u16 *r2 = sub_8113DE0(QL_EVENT_SWITCHED_PARTY_ORDER, a0); - if (r2 == NULL) - return NULL; - - r2[0] = eventData[0]; - r2[1] = eventData[1]; - return r2 + 2; -} - -static const u16 *BufferQuestLogText_SwitchedPartyOrder(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_SWITCHED_PARTY_ORDER, eventData); - QuestLog_GetSpeciesName(r4[0], gStringVar1, 0); - QuestLog_GetSpeciesName(r4[1], gStringVar2, 0); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_SwitchMon1WithMon2); - r4 += 2; - return r4; -} - -static u16 *BufferQuestLogData_UsedItem(u16 *a0, const u16 *eventData) -{ - u16 *r2 = sub_8113DE0(QL_EVENT_USED_ITEM, a0); - if (r2 == NULL) - return NULL; - - r2[0] = eventData[0]; - r2[1] = eventData[2]; - r2[2] = eventData[3]; - - if (eventData[0] == ITEM_ESCAPE_ROPE) - gUnknown_203B048 = 2; - - return r2 + 3; -} - -static const u16 *BufferQuestLogText_UsedItem(const u16 *eventData) -{ - const u16 *r5 = sub_8113E88(QL_EVENT_USED_ITEM, eventData); - - switch (ItemId_GetPocket(r5[0])) - { - case POCKET_ITEMS: - case POCKET_POKE_BALLS: - case POCKET_BERRY_POUCH: - StringCopy(gStringVar1, ItemId_GetName(r5[0])); - if (r5[0] == ITEM_ESCAPE_ROPE) - { - GetMapNameGeneric(gStringVar2, (u8)r5[2]); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_UsedEscapeRope); - } - else if (r5[1] != 0xFFFF) - { - QuestLog_GetSpeciesName(r5[1], gStringVar2, 0); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_UsedItemOnMonAtThisLocation); - } - else - { - StringExpandPlaceholders(gStringVar4, gText_QuestLog_UsedTheItem); - } - break; - case POCKET_KEY_ITEMS: - StringCopy(gStringVar1, ItemId_GetName(r5[0])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_UsedTheKeyItem); - break; - case POCKET_TM_CASE: - QuestLog_GetSpeciesName(r5[1], gStringVar1, 0); - StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(r5[0])]); - if (r5[2] != 0xFFFF) - { - StringCopy(gStringVar3, gMoveNames[r5[2]]); - if (r5[0] > ITEM_TM50) - StringExpandPlaceholders(gStringVar4, gText_QuestLog_MonReplacedMoveWithHM); - else - StringExpandPlaceholders(gStringVar4, gText_QuestLog_MonReplacedMoveWithTM); - } - else - { - if (r5[0] > ITEM_TM50) - StringExpandPlaceholders(gStringVar4, gText_QuestLog_MonLearnedMoveFromHM); - else - StringExpandPlaceholders(gStringVar4, gText_QuestLog_MonLearnedMoveFromTM); - } - break; - } - return r5 + 3; -} - -u16 *BufferQuestLogData_GiveTakeHeldItem(u16 eventId, u16 *a1, const u16 *eventData) -{ - u16 *r1 = sub_8113DE0(eventId, a1); - if (r1 == NULL) - return NULL; - - r1[0] = eventData[0]; - r1[1] = eventData[2]; - return r1 + 2; -} - -static u16 *BufferQuestLogData_GaveHeldItemFromPartyMenu(u16 *a0, const u16 *eventData) -{ - return BufferQuestLogData_GiveTakeHeldItem(QL_EVENT_GAVE_HELD_ITEM, a0, eventData); -} - -static const u16 *BufferQuestLogText_GaveHeldItemFromPartyMenu(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_GAVE_HELD_ITEM, eventData); - QuestLog_GetSpeciesName(r4[1], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetName(r4[0])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_GaveMonHeldItem); - r4 += 2; - return r4; -} - -static u16 *BufferQuestLogData_GaveHeldItemFromBagMenu(u16 *a0, const u16 *eventData) -{ - return BufferQuestLogData_GiveTakeHeldItem(QL_EVENT_GAVE_HELD_ITEM_BAG, a0, eventData); -} - -static const u16 *BufferQuestLogText_GaveHeldItemFromBagMenu(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_GAVE_HELD_ITEM_BAG, eventData); - QuestLog_GetSpeciesName(r4[1], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetName(r4[0])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_GaveMonHeldItem2); - r4 += 2; - return r4; -} - -static u16 *BufferQuestLogData_GaveHeldItemFromPC(u16 *a0, const u16 *eventData) -{ - return BufferQuestLogData_GiveTakeHeldItem(QL_EVENT_GAVE_HELD_ITEM_PC, a0, eventData); -} - -static const u16 *BufferQuestLogText_GaveHeldItemFromPC(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_GAVE_HELD_ITEM_PC, eventData); - - QuestLog_GetSpeciesName(r4[1], gStringVar2, 0); - StringCopy(gStringVar1, ItemId_GetName(r4[0])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_GaveMonHeldItemFromPC); - r4 += 2; - return r4; -} - -static u16 *BufferQuestLogData_TookHeldItem(u16 *a0, const u16 *eventData) -{ - return BufferQuestLogData_GiveTakeHeldItem(QL_EVENT_TOOK_HELD_ITEM, a0, eventData); -} - -static const u16 *BufferQuestLogText_TookHeldItem(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_TOOK_HELD_ITEM, eventData); - - QuestLog_GetSpeciesName(r4[1], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetName(r4[0])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_TookHeldItemFromMon); - r4 += 2; - return r4; -} - -u16 *BufferQuestLogData_SwappedHeldItem_(u16 eventId, u16 *a1, const u16 *eventData) -{ - u16 *r1 = sub_8113DE0(eventId, a1); - if (r1 == NULL) - return NULL; - - r1[0] = eventData[0]; - r1[1] = eventData[1]; - r1[2] = eventData[2]; - return r1 + 3; -} - -static u16 *BufferQuestLogData_SwappedHeldItem(u16 *a0, const u16 *eventData) -{ - return BufferQuestLogData_SwappedHeldItem_(QL_EVENT_SWAPPED_HELD_ITEM, a0, eventData); -} - -static const u16 *BufferQuestLogText_SwappedHeldItem(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_SWAPPED_HELD_ITEM, eventData); - QuestLog_GetSpeciesName(r4[2], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetName(r4[0])); // Item taken - StringCopy(gStringVar3, ItemId_GetName(r4[1])); // Item given - StringExpandPlaceholders(gStringVar4, gText_QuestLog_SwappedHeldItemsOnMon); - r4 += 3; - return r4; -} - -static u16 *BufferQuestLogData_SwappedHeldItemFromPC(u16 *a0, const u16 *eventData) -{ - return BufferQuestLogData_SwappedHeldItem_(QL_EVENT_SWAPPED_HELD_ITEM_PC, a0, eventData); -} - -static const u16 *BufferQuestLogText_SwappedHeldItemFromPC(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_SWAPPED_HELD_ITEM_PC, eventData); - QuestLog_GetSpeciesName(r4[2], gStringVar2, 0); - StringCopy(gStringVar3, ItemId_GetName(r4[0])); - StringCopy(gStringVar1, ItemId_GetName(r4[1])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_SwappedHeldItemFromPC); - r4 += 3; - return r4; -} - -static u16 *BufferQuestLogData_UsedPkmnCenter(u16 *a0, const u16 *eventData) -{ - u16 *r4 = a0; - if (gUnknown_203B044.unk_0 == QL_EVENT_USED_PKMN_CENTER && gUnknown_203B044.unk_1 != 0) - return r4; - - if (!sub_8110944(a0, sQuestLogEventCmdSizes[QL_EVENT_USED_PKMN_CENTER])) - return NULL; - - r4[0] = QL_EVENT_USED_PKMN_CENTER; - r4[1] = sQuestLogCursor; - return r4 + 2; -} - -static const u16 *BufferQuestLogText_UsedPkmnCenter(const u16 *a0) -{ - StringExpandPlaceholders(gStringVar4, gText_QuestLog_MonsWereFullyRestoredAtCenter); - a0 += 2; - return a0; -} - -static u16 *BufferQuestLogData_LinkTraded(u16 *a0, const u16 *eventData) -{ - u16 *r4 = a0 + 4; - - a0[0] = QL_EVENT_LINK_TRADED; - a0[1] = sQuestLogCursor; - a0[2] = eventData[0]; - a0[3] = eventData[1]; - eventData += 2; - memcpy(r4, eventData, 7); - r4 += 4; - return r4; -} - -static const u16 *BufferQuestLogText_LinkTraded(const u16 *a0) -{ - const u16 *r6 = a0 + 4; - - memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); - memcpy(gStringVar1, r6, PLAYER_NAME_LENGTH); - - BufferLinkPartnersName(gStringVar1); - QuestLog_GetSpeciesName(a0[3], gStringVar2, 0); // Mon received - QuestLog_GetSpeciesName(a0[2], gStringVar3, 0); // Mon sent - StringExpandPlaceholders(gStringVar4, gText_QuestLog_TradedMon1ForPersonsMon2); - r6 += 4; - return r6; -} - -static const u8 *const sDefeatedOpponentFlavorTexts[] = { - gText_QuestLog_Handily, - gText_QuestLog_Tenaciously, - gText_QuestLog_Somehow -}; - -static const u8 *const sDefeatedChampionFlavorTexts[] = { - gText_QuestLog_Coolly, - gText_QuestLog_Somehow, - gText_QuestLog_Barely -}; - -static const u8 *const sBattleOutcomeTexts[] = { - gText_QuestLog_Win, - gText_QuestLog_Loss, - gText_QuestLog_Draw -}; - -static u16 *BufferQuestLogData_LinkBattledSingle(u16 *a0, const u16 *eventData) -{ - a0[0] = QL_EVENT_LINK_BATTLED_SINGLE; - a0[1] = sQuestLogCursor; - *((u8 *)a0 + 4) = *((const u8 *)eventData + 0); - memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH); - a0 += 6; - return a0; -} - -static const u16 *BufferQuestLogText_LinkBattledSingle(const u16 *a0) -{ - DynamicPlaceholderTextUtil_Reset(); - - memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); - memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH); - BufferLinkPartnersName(gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sBattleOutcomeTexts[((const u8 *)a0)[4]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SingleBattleWithPersonResultedInOutcome); - a0 += 6; - return a0; -} - -static u16 *BufferQuestLogData_LinkBattledDouble(u16 *a0, const u16 *eventData) -{ - a0[0] = QL_EVENT_LINK_BATTLED_DOUBLE; - a0[1] = sQuestLogCursor; - *((u8 *)a0 + 4) = *((const u8 *)eventData + 0); - memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH); - a0 += 6; - return a0; -} - -static const u16 *BufferQuestLogText_LinkBattledDouble(const u16 *a0) -{ - DynamicPlaceholderTextUtil_Reset(); - - memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); - memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH); - BufferLinkPartnersName(gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sBattleOutcomeTexts[((const u8 *)a0)[4]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DoubleBattleWithPersonResultedInOutcome); - a0 += 6; - return a0; -} - -static u16 *BufferQuestLogData_LinkBattledMulti(u16 *a0, const u16 *eventData) -{ - a0[0] = QL_EVENT_LINK_BATTLED_MULTI; - a0[1] = sQuestLogCursor; - *((u8 *)a0 + 4) = *((const u8 *)eventData + 0); - memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH); - memcpy((u8 *)a0 + 12, (const u8 *)eventData + 8, PLAYER_NAME_LENGTH); - memcpy((u8 *)a0 + 19, (const u8 *)eventData + 15, PLAYER_NAME_LENGTH); - a0 += 13; - return a0; -} - -static const u16 *BufferQuestLogText_LinkBattledMulti(const u16 *a0) -{ - DynamicPlaceholderTextUtil_Reset(); - - memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); - memset(gStringVar2, EOS, PLAYER_NAME_LENGTH + 1); - memset(gStringVar3, EOS, PLAYER_NAME_LENGTH + 1); - StringCopy7(gStringVar1, (const u8 *)a0 + 5); - StringCopy7(gStringVar2, (const u8 *)a0 + 12); - StringCopy7(gStringVar3, (const u8 *)a0 + 19); - BufferLinkPartnersName(gStringVar1); - BufferLinkPartnersName(gStringVar2); - BufferLinkPartnersName(gStringVar3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1); // partner - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2); // opponent 1 - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gStringVar3); // opponent 2 - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, sBattleOutcomeTexts[((const u8 *)a0)[4]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_MultiBattleWithPeopleResultedInOutcome); - a0 += 13; - return a0; -} - -static u16 *BufferQuestLogData_UsedUnionRoom(u16 *a0, const u16 *eventData) -{ - a0[0] = QL_EVENT_USED_UNION_ROOM; - a0[1] = sQuestLogCursor; - return a0 + 2; -} - -static const u16 *BufferQuestLogText_UsedUnionRoom(const u16 *a0) -{ - StringExpandPlaceholders(gStringVar4, gText_QuestLog_MingledInUnionRoom); - a0 += 2; - return a0; -} - -static u16 *BufferQuestLogData_UsedUnionRoomChat(u16 *a0, const u16 *eventData) -{ - a0[0] = QL_EVENT_USED_UNION_ROOM_CHAT; - a0[1] = sQuestLogCursor; - return a0 + 2; -} - -static const u16 *BufferQuestLogText_UsedUnionRoomChat(const u16 *a0) -{ - StringExpandPlaceholders(gStringVar4, gText_QuestLog_ChattedWithManyTrainers); - a0 += 2; - return a0; -} - -static u16 *BufferQuestLogData_LinkTradedUnionRoom(u16 *a0, const u16 *eventData) -{ - u8 *r4 = (u8 *)(a0 + 4); - a0[0] = QL_EVENT_LINK_TRADED_UNION; - a0[1] = sQuestLogCursor; - a0[2] = eventData[0]; - a0[3] = eventData[1]; - memcpy(r4, eventData + 2, PLAYER_NAME_LENGTH); - r4 += 8; - return (u16 *)r4; -} - -static const u16 *BufferQuestLogText_LinkTradedUnionRoom(const u16 *a0) -{ - const u8 *r6 = (const u8 *)(a0 + 4); - memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); - memcpy(gStringVar1, r6, PLAYER_NAME_LENGTH); - BufferLinkPartnersName(gStringVar1); - QuestLog_GetSpeciesName(a0[3], gStringVar2, 0); - QuestLog_GetSpeciesName(a0[2], gStringVar3, 0); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_TradedMon1ForTrainersMon2); - r6 += 8; - return (const u16 *)r6; -} - -static u16 *BufferQuestLogData_LinkBattledUnionRoom(u16 *a0, const u16 *eventData) -{ - a0[0] = QL_EVENT_LINK_BATTLED_UNION; - a0[1] = sQuestLogCursor; - *(u8 *)&a0[2] = *(const u8 *)&eventData[0]; - memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH); - a0 += 6; - return a0; -} - -static const u16 *BufferQuestLogText_LinkBattledUnionRoom(const u16 *a0) -{ - memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); - memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH); - BufferLinkPartnersName(gStringVar1); - StringCopy(gStringVar2, sBattleOutcomeTexts[*(const u8 *)&a0[2]]); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_BattledTrainerEndedInOutcome); - a0 += 6; - return a0; -} - -static u16 *BufferQuestLogData_SwitchedMonsBetweenBoxes(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - a0[1] = eventData[1]; - *((u8 *)a0 + 4) = *((const u8 *)eventData + 4); - *((u8 *)a0 + 5) = *((const u8 *)eventData + 5); - return a0 + 3; -} - -static const u16 *BufferQuestLogText_SwitchedMonsBetweenBoxes(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES, eventData); - boxIdxs = (const u8 *)eventData + 4; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0])); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, GetBoxNamePtr(boxIdxs[1])); - QuestLog_GetSpeciesName(eventData[1], NULL, 3); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SwitchedMonsBetweenBoxes); - return eventData + 3; -} - -static u16 *BufferQuestLogData_SwitchedMonsWithinBox(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_SWITCHED_MONS_WITHIN_BOX, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - a0[1] = eventData[1]; - *((u8 *)a0 + 4) = *((const u8 *)eventData + 4); - return a0 + 3; -} - -static const u16 *BufferQuestLogText_SwitchedMonsWithinBox(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_SWITCHED_MONS_WITHIN_BOX, eventData); - boxIdxs = (const u8 *)eventData + 4; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0])); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - QuestLog_GetSpeciesName(eventData[1], NULL, 2); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SwitchedMonsWithinBox); - return eventData + 3; -} - -static u16 *BufferQuestLogData_SwitchedPartyMonForPCMon(u16 *a0, const u16 *eventData) -{ - u16 *r2; - u16 *ret; - r2 = sub_8113DE0(QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON, a0); - if (r2 == NULL) - return NULL; - ret = r2 + 2; - if (*((const u8 *)eventData + 4) == TOTAL_BOXES_COUNT) - { - r2[0] = eventData[1]; - r2[1] = eventData[0]; - *((u8 *)r2 + 4) = *((const u8 *)eventData + 5); - } - else - { - r2[0] = eventData[0]; - r2[1] = eventData[1]; - *((u8 *)r2 + 4) = *((const u8 *)eventData + 4); - } - return ret + 1; -} - -static const u16 *BufferQuestLogText_SwitchedPartyMonForPCMon(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON, eventData); - boxIdxs = (const u8 *)eventData + 4; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0])); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - QuestLog_GetSpeciesName(eventData[1], NULL, 2); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SwitchedPartyMonForPCMon); - return eventData + 3; -} - -static u16 *BufferQuestLogData_MovedMonBetweenBoxes(u16 *a0, const u16 *eventData) -{ - u16 *r2; - u16 *ret; - r2 = sub_8113DE0(QL_EVENT_MOVED_MON_BETWEEN_BOXES, a0); - if (r2 == NULL) - return NULL; - r2[0] = eventData[0]; - ret = r2 + 1; - *((u8 *)ret + 0) = *((const u8 *)eventData + 4); - *((u8 *)ret + 1) = *((const u8 *)eventData + 5); - return ret + 1; -} - -static const u16 *BufferQuestLogText_MovedMonBetweenBoxes(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_MOVED_MON_BETWEEN_BOXES, eventData); - boxIdxs = (const u8 *)eventData + 2; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0])); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, GetBoxNamePtr(boxIdxs[1])); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_MovedMonToNewBox); - return (const u16 *)boxIdxs + 1; -} - -static u16 *BufferQuestLogData_MovedMonWithinBox(u16 *a0, const u16 *eventData) -{ - u16 *r2; - r2 = sub_8113DE0(QL_EVENT_MOVED_MON_WITHIN_BOX, a0); - if (r2 == NULL) - return NULL; - r2[0] = eventData[0]; - *((u8 *)r2 + 2) = *((const u8 *)eventData + 4); - return r2 + 2; -} - -static const u16 *BufferQuestLogText_MovedMonWithinBox(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_MOVED_MON_WITHIN_BOX, eventData); - boxIdxs = (const u8 *)eventData + 2; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0])); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_MovedMonWithinBox); - return (const u16 *)boxIdxs + 1; -} - -static u16 *BufferQuestLogData_WithdrewMonFromPC(u16 *a0, const u16 *eventData) -{ - u16 *r2; - r2 = sub_8113DE0(QL_EVENT_WITHDREW_MON_PC, a0); - if (r2 == NULL) - return NULL; - r2[0] = eventData[0]; - *((u8 *)r2 + 2) = *((const u8 *)eventData + 4); - return r2 + 2; -} - -static const u16 *BufferQuestLogText_WithdrewMonFromPC(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_WITHDREW_MON_PC, eventData); - boxIdxs = (const u8 *)eventData + 2; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0])); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_WithdrewMonFromPC); - return (const u16 *)boxIdxs + 1; -} - -static u16 *BufferQuestLogData_DepositedMonInPC(u16 *a0, const u16 *eventData) -{ - u16 *r2; - r2 = sub_8113DE0(QL_EVENT_DEPOSITED_MON_PC, a0); - if (r2 == NULL) - return NULL; - r2[0] = eventData[0]; - *((u8 *)r2 + 2) = *((const u8 *)eventData + 4); - return r2 + 2; -} - -static const u16 *BufferQuestLogText_DepositedMonInPC(const u16 *eventData) -{ - const u8 *boxIdxs; - eventData = sub_8113E88(QL_EVENT_DEPOSITED_MON_PC, eventData); - boxIdxs = (const u8 *)eventData + 2; - DynamicPlaceholderTextUtil_Reset(); - QuestLog_GetSpeciesName(eventData[0], NULL, 0); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetBoxNamePtr(boxIdxs[0])); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DepositedMonInPC); - return (const u16 *)boxIdxs + 1; -} - -static u16 *BufferQuestLogData_SwitchedMultipleMons(u16 *a0, const u16 *eventData) -{ - u16 *r2; - r2 = sub_8113DE0(QL_EVENT_SWITCHED_MULTIPLE_MONS, a0); - if (r2 == NULL) - return NULL; - *((u8 *)r2 + 0) = *((const u8 *)eventData + 4); - *((u8 *)r2 + 1) = *((const u8 *)eventData + 5); - return r2 + 1; -} - -static const u16 *BufferQuestLogText_SwitchedMultipleMons(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_SWITCHED_MULTIPLE_MONS, eventData); - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(*((const u8 *)r4 + 0))); - if (*((const u8 *)r4 + 0) == *((const u8 *)r4 + 1)) - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gText_QuestLog_ADifferentSpot); - else - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetBoxNamePtr(*((const u8 *)r4 + 1))); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SwitchedMultipleMons); - return r4 + 1; -} - -static u16 *BufferQuestLogData_DepositedItemInPC(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_DEPOSITED_ITEM_PC, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - return a0 + 1; -} - -static const u16 *BufferQuestLogText_DepositedItemInPC(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_DEPOSITED_ITEM_PC, eventData); - CopyItemName(r4[0], gStringVar1); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_StoredItemInPC); - return r4 + 1; -} - -static u16 *BufferQuestLogData_WithdrewItemFromPC(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_WITHDREW_ITEM_PC, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - return a0 + 1; -} - -static const u16 *BufferQuestLogText_WithdrewItemFromPC(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_WITHDREW_ITEM_PC, eventData); - CopyItemName(r4[0], gStringVar1); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_WithdrewItemFromPC); - return r4 + 1; -} - -u16 *BufferQuestLogData_DefeatedTrainer_(u16 eventId, u16 *a1, const u16 *a2) -{ - a1 = sub_8113DE0(eventId, a1); - if (a1 == NULL) - return NULL; - a1[0] = a2[1]; - a1[1] = a2[2]; - a1[2] = a2[0]; - *((u8 *)a1 + 6) = *((const u8 *)a2 + 7); - *((u8 *)a1 + 7) = *((const u8 *)a2 + 6); - return a1 + 4; -} - -static u16 *BufferQuestLogData_DefeatedGymLeader(u16 *a0, const u16 *eventData) -{ - gUnknown_203B048 = 1; - return BufferQuestLogData_DefeatedTrainer_(QL_EVENT_DEFEATED_GYM_LEADER, a0, eventData); -} - -static const u16 *BufferQuestLogText_DefeatedGymLeader(const u16 *eventData) -{ - const u8 *r6; - eventData = sub_8113E88(QL_EVENT_DEFEATED_GYM_LEADER, eventData); - r6 = (const u8 *)eventData + 6; - DynamicPlaceholderTextUtil_Reset(); - GetMapNameGeneric(gStringVar1, r6[0]); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[eventData[2]].trainerName); - QuestLog_GetSpeciesName(eventData[0], 0, 2); - QuestLog_GetSpeciesName(eventData[1], 0, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, sDefeatedOpponentFlavorTexts[r6[1]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_TookOnGymLeadersMonWithMonAndWon); - return eventData + 4; -} - -static u16 *BufferQuestLogData_DefeatedWildMon(u16 *a0, const u16 *eventData) -{ - u16 *r4 = a0; - u8 *r5 = (u8 *)a0 + 8; - if (!sub_8110944(r4, sQuestLogEventCmdSizes[QL_EVENT_DEFEATED_WILD_MON])) - return NULL; - if (r5[0] == 0 && r5[1] == 0) - { - r4[0] = QL_EVENT_DEFEATED_WILD_MON; - r4[1] = sQuestLogCursor; - } - if (eventData[0]) - r4[2] = eventData[0]; - if (eventData[1]) - r4[3] = eventData[1]; - if (eventData[0] && r5[0] != 0xFF) - r5[0]++; - if (eventData[1] && r5[1] != 0xFF) - r5[1]++; - r5[2] = *((const u8 *)eventData + 4); - return (u16 *)(r5 + 4); -} - -static const u16 *BufferQuestLogText_DefeatedWildMon(const u16 *a0) -{ - const u8 *data; - if (!sub_8110944(a0, sQuestLogEventCmdSizes[QL_EVENT_DEFEATED_WILD_MON])) - return NULL; - - data = (const u8 *)a0 + 8; - DynamicPlaceholderTextUtil_Reset(); - GetMapNameGeneric(gStringVar1, data[2]); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - QuestLog_GetSpeciesName(a0[2], NULL, 1); - ConvertIntToDecimalStringN(gStringVar2, data[0], STR_CONV_MODE_LEFT_ALIGN, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2); - QuestLog_GetSpeciesName(a0[3], NULL, 3); - ConvertIntToDecimalStringN(gStringVar3, data[1], STR_CONV_MODE_LEFT_ALIGN, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gStringVar3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gSaveBlock2Ptr->playerName); - if (data[0] == 0) - { - if (data[1] == 1) - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_CaughtWildMon); - else - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_CaughtWildMons); - } - else if (data[1] == 0) - { - if (data[0] == 1) - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DefeatedWildMon); - else - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DefeatedWildMons); - } - else if (data[0] == 1) - { - if (data[1] == 1) - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DefeatedWildMonAndCaughtWildMon); - else - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DefeatedWildMonAndCaughtWildMons); - } - else - { - if (data[1] == 1) - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DefeatedWildMonsAndCaughtWildMon); - else - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_DefeatedWildMonsAndCaughtWildMons); - } - return (const u16 *)(data + 4); -} - -static bool8 IsSpeciesFromSpecialEncounter(u16 species) -{ - switch (species) - { - case SPECIES_SNORLAX: - case SPECIES_ARTICUNO: - case SPECIES_ZAPDOS: - case SPECIES_MOLTRES: - case SPECIES_MEWTWO: - case SPECIES_LUGIA: - case SPECIES_HO_OH: - case SPECIES_DEOXYS: - return TRUE; - } - return FALSE; -} - -static u16 *BufferQuestLogData_DefeatedEliteFourMember(u16 *a0, const u16 *eventData) -{ - gUnknown_203B048 = 1; - return BufferQuestLogData_DefeatedTrainer_(QL_EVENT_DEFEATED_E4_MEMBER, a0, eventData); -} - -static const u16 *BufferQuestLogText_DefeatedEliteFourMember(const u16 *eventData) -{ - const u8 *r5; - eventData = sub_8113E88(QL_EVENT_DEFEATED_E4_MEMBER, eventData); - r5 = (const u8 *)eventData + 6; - DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gTrainers[eventData[2]].trainerName); - QuestLog_GetSpeciesName(eventData[0], NULL, 1); - QuestLog_GetSpeciesName(eventData[1], NULL, 2); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, sDefeatedOpponentFlavorTexts[r5[1]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_TookOnEliteFoursMonWithMonAndWon); - return eventData + 4; -} - -static u16 *BufferQuestLogData_DefeatedChampion(u16 *a0, const u16 *eventData) -{ - if (!sub_8110944(a0, sQuestLogEventCmdSizes[QL_EVENT_DEFEATED_CHAMPION])) - return NULL; - a0[0] = 0x2021; - a0[1] = sQuestLogCursor; - a0[2] = eventData[1]; - a0[3] = eventData[2]; - *((u8 *)a0 + 8) = *((const u8 *)eventData + 6); - gUnknown_203B048 = 1; - return a0 + 5; -} - -static const u16 *BufferQuestLogText_DefeatedChampion(const u16 *a0) -{ - const u8 *r5; - if (!sub_8110944(a0, sQuestLogEventCmdSizes[QL_EVENT_DEFEATED_CHAMPION])) - return NULL; - - r5 = (const u8 *)a0 + 8; - DynamicPlaceholderTextUtil_Reset(); - - switch (gUnknown_203B044.unk_2) - { - case 0: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gSaveBlock1Ptr->rivalName); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_PlayerBattledChampionRival); - break; - case 1: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock1Ptr->rivalName); - QuestLog_GetSpeciesName(a0[2], NULL, 1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gSaveBlock2Ptr->playerName); - QuestLog_GetSpeciesName(a0[3], NULL, 3); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_PlayerSentOutMon1RivalSentOutMon2); - break; - case 2: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sDefeatedChampionFlavorTexts[r5[0]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_WonTheMatchAsAResult); - break; - } - return (const u16 *)(r5 + 2); -} - -static u16 *BufferQuestLogData_DefeatedTrainer(u16 *a0, const u16 *eventData) -{ - gUnknown_203B048 = 1; - return BufferQuestLogData_DefeatedTrainer_(QL_EVENT_DEFEATED_TRAINER, a0, eventData); -} - -static const u16 *BufferQuestLogText_DefeatedTrainer(const u16 *eventData) -{ - const u16 *r5 = sub_8113E88(QL_EVENT_DEFEATED_TRAINER, eventData); - const u8 *r6 = (const u8 *)r5 + 6; - DynamicPlaceholderTextUtil_Reset(); - GetMapNameGeneric(gStringVar1, r6[0]); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - - if (gTrainers[r5[2]].trainerClass == CLASS_RIVAL - || gTrainers[r5[2]].trainerClass == CLASS_RIVAL_2 - || gTrainers[r5[2]].trainerClass == CLASS_CHAMPION_2) - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetExpandedPlaceholder(PLACEHOLDER_ID_RIVAL)); - else - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[r5[2]].trainerName); - - QuestLog_GetSpeciesName(r5[0], NULL, 2); - QuestLog_GetSpeciesName(r5[1], NULL, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, sDefeatedOpponentFlavorTexts[r6[1]]); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_TookOnTrainersMonWithMonAndWon); - return (const u16 *)(r6 + 2); -} - -static const u8 *const sLocationNameTexts[] = -{ - [QL_LOCATION_HOME] = gText_QuestLog_Home, - [QL_LOCATION_OAKS_LAB] = gText_QuestLog_OakResearchLab, - [QL_LOCATION_VIRIDIAN_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_LEAGUE_GATE_1] = gText_QuestLog_PokemonLeagueGate, - [QL_LOCATION_LEAGUE_GATE_2] = gText_QuestLog_PokemonLeagueGate, - [QL_LOCATION_VIRIDIAN_FOREST_1] = gText_QuestLog_ViridianForest, - [QL_LOCATION_VIRIDIAN_FOREST_2] = gText_QuestLog_ViridianForest, - [QL_LOCATION_PEWTER_MUSEUM] = gText_QuestLog_PewterMuseumOfScience, - [QL_LOCATION_PEWTER_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_MT_MOON_1] = gText_QuestLog_MtMoon, - [QL_LOCATION_MT_MOON_2] = gText_QuestLog_MtMoon, - [QL_LOCATION_CERULEAN_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_BIKE_SHOP] = gText_QuestLog_BikeShop, - [QL_LOCATION_BILLS_HOUSE] = gText_QuestLog_BillsHouse, - [QL_LOCATION_DAY_CARE] = gText_QuestLog_DayCare, - [QL_LOCATION_UNDERGROUND_PATH_1] = gText_QuestLog_UndergroundPath, - [QL_LOCATION_UNDERGROUND_PATH_2] = gText_QuestLog_UndergroundPath, - [QL_LOCATION_PKMN_FAN_CLUB] = gText_QuestLog_PokemonFanClub, - [QL_LOCATION_VERMILION_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_SS_ANNE] = gText_QuestLog_SSAnne, - [QL_LOCATION_DIGLETTS_CAVE_1] = gText_QuestLog_DiglettsCave, - [QL_LOCATION_DIGLETTS_CAVE_2] = gText_QuestLog_DiglettsCave, - [QL_LOCATION_ROCK_TUNNEL_1] = gText_QuestLog_RockTunnel, - [QL_LOCATION_ROCK_TUNNEL_2] = gText_QuestLog_RockTunnel, - [QL_LOCATION_POWER_PLANT] = gText_QuestLog_PowerPlant, - [QL_LOCATION_PKMN_TOWER] = gText_QuestLog_PokemonTower, - [QL_LOCATION_VOLUNTEER_HOUSE] = gText_QuestLog_VolunteerHouse, - [QL_LOCATION_NAME_RATERS_HOUSE] = gText_QuestLog_NameRatersHouse, - [QL_LOCATION_UNDERGROUND_PATH_3] = gText_QuestLog_UndergroundPath, - [QL_LOCATION_UNDERGROUND_PATH_4] = gText_QuestLog_UndergroundPath, - [QL_LOCATION_CELADON_DEPT_STORE] = gText_QuestLog_CeladonDeptStore, - [QL_LOCATION_CELADON_MANSION] = gText_QuestLog_CeladonMansion, - [QL_LOCATION_GAME_CORNER] = gText_QuestLog_RocketGameCorner, - [QL_LOCATION_CELADON_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_CELADON_RESTAURANT] = gText_QuestLog_Restaurant, - [QL_LOCATION_ROCKET_HIDEOUT] = gText_QuestLog_RocketHideout, - [QL_LOCATION_SAFARI_ZONE] = gText_QuestLog_SafariZone, - [QL_LOCATION_FUCHSIA_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_WARDENS_HOME] = gText_QuestLog_WardensHome, - [QL_LOCATION_FIGHTING_DOJO] = gText_QuestLog_FightingDojo, - [QL_LOCATION_SAFFRON_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_SILPH_CO] = gText_QuestLog_SilphCo, - [QL_LOCATION_SEAFOAM_ISLANDS_1] = gText_QuestLog_SeafoamIslands, - [QL_LOCATION_SEAFOAM_ISLANDS_2] = gText_QuestLog_SeafoamIslands, - [QL_LOCATION_PKMN_MANSION] = gText_QuestLog_PokemonMansion, - [QL_LOCATION_CINNABAR_GYM] = gText_QuestLog_Gym, - [QL_LOCATION_CINNABAR_LAB] = gText_QuestLog_PokemonResearchLab, - [QL_LOCATION_VICTORY_ROAD_1] = gText_QuestLog_VictoryRoad, - [QL_LOCATION_VICTORY_ROAD_2] = gText_QuestLog_VictoryRoad, - [QL_LOCATION_PKMN_LEAGUE] = gText_QuestLog_PokemonLeague, - [QL_LOCATION_CERULEAN_CAVE] = gText_QuestLog_CeruleanCave -}; - -static const u8 *const sDepartedLocationTexts[] = -{ - [QL_DEPARTED_TOWN_BUILDING] = gText_QuestLog_DepartedPlaceInTownForNextDestination, - [QL_DEPARTED_MUSEUM] = gText_QuestLog_LeftTownsLocationForNextDestination, - [QL_DEPARTED_GAME_CORNER] = gText_QuestLog_PlayedGamesAtGameCorner, - [QL_DEPARTED_HOME] = gText_QuestLog_RestedAtHome, - [QL_DEPARTED_OAKS_LAB] = gText_QuestLog_LeftOaksLab, - [QL_DEPARTED_GYM] = gText_QuestLog_GymWasFullOfToughTrainers, - [QL_DEPARTED_SAFARI_ZONE] = gText_QuestLog_HadGreatTimeInSafariZone, - [QL_DEPARTED_CAVE] = gText_QuestLog_ManagedToGetOutOfLocation, - [QL_DEPARTED_MISC_BUILDING_1] = gText_QuestLog_DepartedTheLocationForNextDestination, - [QL_DEPARTED_MISC_BUILDING_2] = gText_QuestLog_DepartedFromLocationToNextDestination -}; - -static const u8 sLocationToDepartedTextId[] = -{ - [QL_LOCATION_HOME] = QL_DEPARTED_HOME, - [QL_LOCATION_OAKS_LAB] = QL_DEPARTED_OAKS_LAB, - [QL_LOCATION_VIRIDIAN_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_LEAGUE_GATE_1] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_LEAGUE_GATE_2] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_VIRIDIAN_FOREST_1] = QL_DEPARTED_CAVE, - [QL_LOCATION_VIRIDIAN_FOREST_2] = QL_DEPARTED_CAVE, - [QL_LOCATION_PEWTER_MUSEUM] = QL_DEPARTED_MUSEUM, - [QL_LOCATION_PEWTER_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_MT_MOON_1] = QL_DEPARTED_CAVE, - [QL_LOCATION_MT_MOON_2] = QL_DEPARTED_CAVE, - [QL_LOCATION_CERULEAN_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_BIKE_SHOP] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_BILLS_HOUSE] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_DAY_CARE] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_UNDERGROUND_PATH_1] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_UNDERGROUND_PATH_2] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_PKMN_FAN_CLUB] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_VERMILION_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_SS_ANNE] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_DIGLETTS_CAVE_1] = QL_DEPARTED_CAVE, - [QL_LOCATION_DIGLETTS_CAVE_2] = QL_DEPARTED_CAVE, - [QL_LOCATION_ROCK_TUNNEL_1] = QL_DEPARTED_CAVE, - [QL_LOCATION_ROCK_TUNNEL_2] = QL_DEPARTED_CAVE, - [QL_LOCATION_POWER_PLANT] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_PKMN_TOWER] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_VOLUNTEER_HOUSE] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_NAME_RATERS_HOUSE] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_UNDERGROUND_PATH_3] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_UNDERGROUND_PATH_4] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_CELADON_DEPT_STORE] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_CELADON_MANSION] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_GAME_CORNER] = QL_DEPARTED_GAME_CORNER, - [QL_LOCATION_CELADON_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_CELADON_RESTAURANT] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_ROCKET_HIDEOUT] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_SAFARI_ZONE] = QL_DEPARTED_SAFARI_ZONE, - [QL_LOCATION_FUCHSIA_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_WARDENS_HOME] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_FIGHTING_DOJO] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_SAFFRON_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_SILPH_CO] = QL_DEPARTED_MISC_BUILDING_2, - [QL_LOCATION_SEAFOAM_ISLANDS_1] = QL_DEPARTED_CAVE, - [QL_LOCATION_SEAFOAM_ISLANDS_2] = QL_DEPARTED_CAVE, - [QL_LOCATION_PKMN_MANSION] = QL_DEPARTED_MISC_BUILDING_2, - [QL_LOCATION_CINNABAR_GYM] = QL_DEPARTED_GYM, - [QL_LOCATION_CINNABAR_LAB] = QL_DEPARTED_TOWN_BUILDING, - [QL_LOCATION_VICTORY_ROAD_1] = QL_DEPARTED_CAVE, - [QL_LOCATION_VICTORY_ROAD_2] = QL_DEPARTED_CAVE, - [QL_LOCATION_PKMN_LEAGUE] = QL_DEPARTED_MISC_BUILDING_1, - [QL_LOCATION_CERULEAN_CAVE] = QL_DEPARTED_CAVE -}; - -static const u8 gUnknown_8456C17[] = { - 0x5a, - 0x5b, - 0x5d, - 0x5e, - 0x5f, - 0x62, - 0x60, - 0x59 -}; - -static const u8 *const sUsedFieldMoveTexts[] = -{ - [FIELD_MOVE_FLASH] = gText_QuestLog_UsedFlash, - [FIELD_MOVE_CUT] = gText_QuestLog_UsedCut, - [FIELD_MOVE_FLY] = gText_QuestLog_UsedFly, - [FIELD_MOVE_STRENGTH] = gText_QuestLog_UsedStrength, - [FIELD_MOVE_SURF] = gText_QuestLog_UsedSurf, - [FIELD_MOVE_ROCK_SMASH] = gText_QuestLog_UsedRockSmash, - [FIELD_MOVE_WATERFALL] = gText_QuestLog_UsedWaterfall, - [FIELD_MOVE_TELEPORT] = gText_QuestLog_UsedTeleportToLocation, - [FIELD_MOVE_DIG] = gText_QuestLog_UsedDigInLocation, - [FIELD_MOVE_MILK_DRINK] = gText_QuestLog_UsedMilkDrink, - [FIELD_MOVE_SOFT_BOILED] = gText_QuestLog_UsedSoftboiled, - [FIELD_MOVE_SWEET_SCENT] = gText_QuestLog_UsedSweetScent -}; - -static u16 *BufferQuestLogData_DepartedLocation(u16 *a0, const u16 *eventData) -{ - u16 *r2 = sub_8113DE0(QL_EVENT_DEPARTED, a0); - if (r2 == NULL) - return NULL; - *((u8 *)r2 + 0) = *((const u8 *)eventData + 0); - if ((*((u8 *)r2 + 1) = *((const u8 *)eventData + 1)) == 0x24) - gUnknown_203B048 = 1; - return r2 + 1; -} - -static const u16 *BufferQuestLogText_DepartedLocation(const u16 *eventData) -{ - u8 r4, locationId; - const u16 *r5 = sub_8113E88(QL_EVENT_DEPARTED, eventData); - const u8 *r5_2 = (const u8 *)r5 + 0; - locationId = r5_2[1]; - GetMapNameGeneric(gStringVar1, r5_2[0]); - StringCopy(gStringVar2, sLocationNameTexts[locationId]); - if (sLocationToDepartedTextId[locationId] == QL_DEPARTED_GYM) - { - for (r4 = 0; r4 < ARRAY_COUNT(gUnknown_8456C17); r4++) - { - if (r5_2[0] != gUnknown_8456C17[r4]) - continue; - if (FlagGet(FLAG_BADGE01_GET + r4) == TRUE) - StringExpandPlaceholders(gStringVar4, gText_QuestLog_DepartedGym); - else - StringExpandPlaceholders(gStringVar4, gText_QuestLog_GymWasFullOfToughTrainers); - break; - } - if (r4 == 8) - StringExpandPlaceholders(gStringVar4, sDepartedLocationTexts[sLocationToDepartedTextId[locationId]]); - } - else - StringExpandPlaceholders(gStringVar4, sDepartedLocationTexts[sLocationToDepartedTextId[locationId]]); - - return (const u16 *)(r5_2 + 2); -} - -void sub_811539C(void) -{ - gUnknown_203B04B = TRUE; -} - -static bool8 sub_81153A8(u16 eventId, const u16 *eventData) -{ - if (eventId != QL_EVENT_DEPARTED) - { - gUnknown_203B04A = 0; - return TRUE; - } - if (gUnknown_203B04A == *((u8 *)eventData + 1) + 1) - return FALSE; - gUnknown_203B04A = *((u8 *)eventData + 1) + 1; - return TRUE; -} - -static bool8 sub_81153E4(u16 eventId, const u16 *eventData) -{ - if (eventId != QL_EVENT_DEPARTED) - return TRUE; - - if (*((u8 *)eventData + 1) == 32 && !gUnknown_203B04B) - return FALSE; - - gUnknown_203B04B = FALSE; - return TRUE; -} - -static u16 *BufferQuestLogData_UsedFieldMove(u16 *a0, const u16 *eventData) -{ - u8 *r3; - a0 = sub_8113DE0(QL_EVENT_USED_FIELD_MOVE, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - r3 = (u8 *)a0 + 2; - r3[0] = *((const u8 *)eventData + 2); - r3[1] = *((const u8 *)eventData + 3); - if (r3[0] == FIELD_MOVE_TELEPORT || r3[0] == FIELD_MOVE_DIG) - gUnknown_203B048 = 2; - else - gUnknown_203B048 = 1; - return (u16 *)(r3 + 2); -} - -static const u16 *BufferQuestLogText_UsedFieldMove(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_USED_FIELD_MOVE, eventData); - const u8 *r5 = (const u8 *)r4 + 2; - QuestLog_GetSpeciesName(r4[0], gStringVar1, 0); - if (r5[1] != 0xFF) - GetMapNameGeneric(gStringVar2, r5[1]); - - // If used Teleport, get name of destination - if (r5[0] == FIELD_MOVE_TELEPORT) - { - if (r5[1] == 0x58) - StringCopy(gStringVar3, gText_QuestLog_Home); - else - StringCopy(gStringVar3, gText_PokemonCenter); - } - - StringExpandPlaceholders(gStringVar4, sUsedFieldMoveTexts[r5[0]]); - return (const u16 *)(r5 + 2); -} - -static u16 *BufferQuestLogData_BoughtItem(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_BOUGHT_ITEM, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[2]; - a0[1] = eventData[3]; - a0[2] = *((const u32 *)eventData) >> 16; - a0[3] = *((const u32 *)eventData); - *((u8 *)a0 + 8) = *((const u8 *)eventData + 8); - *((u8 *)a0 + 9) = 1; - return a0 + 5; -} - -static const u16 *BufferQuestLogText_BoughtItem(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_BOUGHT_ITEM, eventData); - const u8 *r7 = (const u8 *)r4 + 8; - u32 r6 = (r4[2] << 16) + r4[3]; - DynamicPlaceholderTextUtil_Reset(); - GetMapNameGeneric(gStringVar1, r7[0]); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r4[0])); - if (r4[1] < 2) - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_BoughtItem); - else - { - ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_BoughtItemsIncludingItem); - } - return (const u16 *)(r7 + 2); -} - -static u16 *BufferQuestLogData_SoldItem(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_SOLD_ITEM, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[2]; - a0[1] = eventData[3]; - a0[2] = *((const u32 *)eventData) >> 16; - a0[3] = *((const u32 *)eventData); - *((u8 *)a0 + 8) = *((const u8 *)eventData + 8); - *((u8 *)a0 + 9) = *((const u8 *)eventData + 9); - return a0 + 5; -} - -static const u16 *BufferQuestLogText_SoldItem(const u16 *eventData) -{ - const u16 *r5 = sub_8113E88(QL_EVENT_SOLD_ITEM, eventData); - const u8 *r7 = (const u8 *) r5 + 8; - u32 r6 = (r5[2] << 16) + r5[3]; - DynamicPlaceholderTextUtil_Reset(); - GetMapNameGeneric(gStringVar1, r7[0]); - if (r7[1] == 0) { - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, ItemId_GetName(r5[0])); - if (r5[1] == 1) - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gText_QuestLog_JustOne); - else - { - ConvertIntToDecimalStringN(gStringVar2, r5[1], STR_CONV_MODE_LEFT_ALIGN, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gStringVar2); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar3, gText_QuestLog_Num); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gStringVar3); - } - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SoldNumOfItem); - } - else - { - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r5[0])); - ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_QuestLog_SoldItemsIncludingItem); - } - return (const u16 *)(r7 + 2); -} - -static u16 *BufferQuestLogData_ObtainedItem(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_OBTAINED_ITEM, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - *((u8 *)a0 + 2) = *((const u8 *)eventData + 2); - return a0 + 2; -} - -static const u16 *BufferQuestLogText_ObtainedItem(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_OBTAINED_ITEM, eventData); - const u8 *r5 = (const u8 *)r4 + 2; - GetMapNameGeneric(gStringVar1, r5[0]); - StringCopy(gStringVar2, ItemId_GetName(r4[0])); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_ObtainedItemInLocation); - return (const u16 *)(r5 + 2); -} - -static const u16 sQuestLogWorldMapFlags[] = -{ - FLAG_WORLD_MAP_VIRIDIAN_CITY, - FLAG_WORLD_MAP_PEWTER_CITY, - FLAG_WORLD_MAP_CERULEAN_CITY, - FLAG_WORLD_MAP_LAVENDER_TOWN, - FLAG_WORLD_MAP_VERMILION_CITY, - FLAG_WORLD_MAP_CELADON_CITY, - FLAG_WORLD_MAP_FUCHSIA_CITY, - FLAG_WORLD_MAP_CINNABAR_ISLAND, - FLAG_WORLD_MAP_INDIGO_PLATEAU_EXTERIOR, - FLAG_WORLD_MAP_SAFFRON_CITY, - FLAG_WORLD_MAP_ONE_ISLAND, - FLAG_WORLD_MAP_TWO_ISLAND, - FLAG_WORLD_MAP_THREE_ISLAND, - FLAG_WORLD_MAP_FOUR_ISLAND, - FLAG_WORLD_MAP_FIVE_ISLAND, - FLAG_WORLD_MAP_SEVEN_ISLAND, - FLAG_WORLD_MAP_SIX_ISLAND -}; - -void QuestLog_RecordEnteredMap(u16 worldMapFlag) -{ - s32 i; - - if (QL_IS_PLAYBACK_STATE) - return; - - for (i = 0; i < (int)NELEMS(sQuestLogWorldMapFlags); i++) - { - if (worldMapFlag == sQuestLogWorldMapFlags[i]) - { - if (!FlagGet(worldMapFlag)) - { - sNewlyEnteredMap = TRUE; - break; - } - else - { - sNewlyEnteredMap += 0; - sNewlyEnteredMap = FALSE; - break; - } - } - } -} - -void sub_8115798(void) -{ - u16 sp0; - if (!QL_IS_PLAYBACK_STATE) - { - if (sNewlyEnteredMap) - { - sp0 = gMapHeader.regionMapSectionId; - SetQuestLogEvent(QL_EVENT_ARRIVED, &sp0); - sNewlyEnteredMap = FALSE; - } - } -} - -static u16 *BufferQuestLogData_ArrivedInLocation(u16 *a0, const u16 *eventData) -{ - a0 = sub_8113DE0(QL_EVENT_ARRIVED, a0); - if (a0 == NULL) - return NULL; - a0[0] = eventData[0]; - return a0 + 1; -} - -static const u16 *BufferQuestLogText_ArrivedInLocation(const u16 *eventData) -{ - const u16 *r4 = sub_8113E88(QL_EVENT_ARRIVED, eventData); - GetMapNameGeneric(gStringVar1, (u8)r4[0]); - StringExpandPlaceholders(gStringVar4, gText_QuestLog_ArrivedInLocation); - return r4 + 1; -} - -static void BufferLinkPartnersName(u8 *dest) -{ - s32 i; - if (*dest++ == EXT_CTRL_CODE_BEGIN && *dest++ == EXT_CTRL_CODE_JPN) - { - for (i = 0; i < 5; i++) - { - if (*dest == EXT_CTRL_CODE_BEGIN) - break; - dest++; - } - *dest++ = EXT_CTRL_CODE_BEGIN; - *dest++ = EXT_CTRL_CODE_ENG; - *dest++ = EOS; - } -} |