summaryrefslogtreecommitdiff
path: root/src/quest_log.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-04-07 13:45:40 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-04-07 13:45:40 -0400
commita538befd555600c76cd4cd111348181c551b647c (patch)
tree646ac6f04e6de6afa747f8b5aef968d580e2b5ac /src/quest_log.c
parent6451143b3b738a2a749b83487bcb8e3fd980403e (diff)
parent31ecdcdd0a71cd0230bfa1d80b3355a60db1e93d (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.c2884
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;
- }
-}