More quest log doccing

This commit is contained in:
PikalaxALT
2020-04-06 20:43:53 -04:00
parent 0394317ae4
commit a7d74b1779
6 changed files with 106 additions and 129 deletions
-30
View File
@@ -544,42 +544,12 @@ struct QuestLogNPCData
u32 movementType:8;
};
struct UnkStruct_203B024
{
u16 unk_00;
u16 unk_02;
u16 unk_04[14];
};
union QuestLogScene
{
u8 allocation[32];
u16 ident;
};
typedef union QuestLogScene QuestLogScene;
// This name is a complete guess and may change.
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 288 // 300
#define VARS_COUNT 256
#define MAIL_COUNT (PARTY_SIZE + 10)
#define PC_MAIL_NUM(i) (PARTY_SIZE + (i))
// Declare here so that it can be recursively referenced.
union QuestLogMovement;
// Define here
union QuestLogMovement
{
u16 ident_raw;
struct {
u16 ident:12;
u16 flags:4;
} ident_struct;
};
struct QuestLogObjectEvent
{
/*0x00*/ u8 active:1;
+3 -3
View File
@@ -18,7 +18,7 @@ struct QuestLogEntry
struct UnkStruct_203B044
{
u8 unk_0;
u8 id;
u8 unk_1;
u16 unk_2;
};
@@ -34,7 +34,7 @@ extern u16 sQuestLogCursor;
void sub_8112720(u8);
void SetQuestLogEvent(u16, const u16 *);
void sub_811539C(void);
void SetQLPlayedTheSlots(void);
void QuestLog_RecordEnteredMap(u16);
u8 sub_8112CAC(void);
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
@@ -47,7 +47,7 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId);
void SaveQuestLogData(void);
void QuestLog_CutRecording(void);
u8 sub_8112CAC(void);
void sub_81138F8(void);
void ResetDeferredLinkEvent(void);
void FinishRecordingQuestLogScene(void);
void sub_81139BC(void);
void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
+1 -1
View File
@@ -952,7 +952,7 @@ static void CB2_EndRematchBattle(void)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
SetBattledTrainerFlag();
sub_810CDE8();
sub_81138F8();
ResetDeferredLinkEvent();
}
}
+20 -20
View File
@@ -65,8 +65,8 @@ struct UnkStruct_203AE94
u8 playingEvent:2;
u8 sceneEndMode:2;
u8 cursor;
u8 unk_2;
u8 unk_3;
u8 timer;
u8 overlapTimer;
};
struct UnkStruct_300201C
@@ -124,8 +124,8 @@ static void QuestLog_AdvancePlayhead(void);
static void QuestLog_StartFinalScene(void);
static void Task_RunPlaybackCB(u8);
static void QuestLog_PlayCurrentEvent(void);
static void sub_8111B80(void);
static u8 sub_8111BD4(void);
static void HandleShowQuestLogMessage(void);
static u8 GetQuestLogTextDisplayDuration(void);
static void DrawQuestLogSceneDescription(void);
static void sub_8111D90(u8);
static void QuestLog_CloseTextWindow(void);
@@ -138,7 +138,7 @@ 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);
@@ -200,7 +200,7 @@ void ResetQuestLog(void)
sEventRecordingPointer = NULL;
gUnknown_203AE04 = NULL;
sub_8113BD8();
sub_81138F8();
ResetDeferredLinkEvent();
}
static void DestroySav1QuestLogEntry(u8 a0)
@@ -894,49 +894,49 @@ static void QuestLog_PlayCurrentEvent(void)
{
if (sQuestLogCurrentScene.playbackSubstate == 1)
{
if (--sQuestLogCurrentScene.unk_2 != 0)
if (--sQuestLogCurrentScene.timer != 0)
return;
sQuestLogCurrentScene.playbackSubstate = 0;
sQuestLogCurrentScene.playingEvent = 1;
sub_8112888(2);
TogglePlaybackStateForOverworldLock(2);
}
if (sQuestLogCurrentScene.playingEvent == 1)
{
if (++sQuestLogCurrentScene.unk_3 > 15)
if (++sQuestLogCurrentScene.overlapTimer > 15)
{
QuestLog_CloseTextWindow();
sQuestLogCurrentScene.playingEvent = 0;
sQuestLogCurrentScene.unk_3 = 0;
sQuestLogCurrentScene.overlapTimer = 0;
}
}
if (sQuestLogCurrentScene.cursor < NELEMS(gUnknown_203AE0C))
{
if (sub_8113B44(gUnknown_203AE0C[sQuestLogCurrentScene.cursor]) == 1)
sub_8111B80();
HandleShowQuestLogMessage();
else if (sub_8113AE8(gUnknown_203AE0C[sQuestLogCurrentScene.cursor]) == 1)
sub_8111B80();
HandleShowQuestLogMessage();
}
}
static void sub_8111B80(void)
static void HandleShowQuestLogMessage(void)
{
if (sQuestLogCurrentScene.playbackSubstate == 0)
{
sQuestLogCurrentScene.playbackSubstate = 1;
sQuestLogCurrentScene.playingEvent = 0;
sQuestLogCurrentScene.unk_3 = 0;
sQuestLogCurrentScene.unk_2 = sub_8111BD4();
sQuestLogCurrentScene.overlapTimer = 0;
sQuestLogCurrentScene.timer = GetQuestLogTextDisplayDuration();
if (gUnknown_203B044.unk_2 == 0)
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;
@@ -1435,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;
}
}
+81 -74
View File
@@ -20,21 +20,27 @@
#include "constants/items.h"
#include "constants/region_map_sections.h"
static EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0};
struct DeferredLinkEvent
{
u16 id;
u16 ALIGNED(4) data[14];
};
static EWRAM_DATA struct DeferredLinkEvent sDeferredEvent = {0};
EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0};
static EWRAM_DATA u8 gUnknown_203B048 = 0;
static EWRAM_DATA u8 sEventShouldNotRecordSteps = 0;
static EWRAM_DATA bool8 sNewlyEnteredMap = FALSE;
static EWRAM_DATA u8 gUnknown_203B04A = 0;
static EWRAM_DATA bool8 gUnknown_203B04B = FALSE;
static EWRAM_DATA u8 sLastDepartedMap = 0;
static EWRAM_DATA bool8 sPlayedTheSlots = FALSE;
static bool8 InQuestLogDisabledLocation(void);
static bool8 sub_8113778(u16, const u16 *);
static bool8 sub_81137E4(u16, const u16 *);
static u16 *sub_8113828(u16, const u16 *);
static bool8 ShouldRegisterEvent_HandlePartyActions(u16, const u16 *);
static bool8 ShouldRegisterEvent_HandleBeatStoryTrainer(u16, const u16 *);
static u16 *ShouldRegisterEvent(u16, const u16 *);
static bool8 TrySetLinkQuestLogEvent(u16, const u16 *);
static bool8 TrySetTrainerBattleQuestLogEvent(u16, const u16 *);
static bool8 IsQuestLogEventWithSpecialEncounterSpecies(u16, const u16 *);
static void sub_8113B94(u16);
static void SetQuestLogEventToActive(u16);
static u16 *TryRecordEvent41(u16 *, u16);
static u16 *BufferQuestLogData_SwitchedPartyOrder(u16 *, const u16 *);
static u16 *BufferQuestLogData_UsedItem(u16 *, const u16 *);
@@ -113,8 +119,8 @@ 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 bool8 ShouldRegisterEvent_HandleDeparted(u16, const u16 *);
static bool8 ShouldRegisterEvent_HandleGameCorner(u16, const u16 *);
static void BufferLinkPartnersName(u8 *);
static u16 *(*const sQuestLogStorageCBs[])(u16 *, const u16 *) = {
@@ -167,7 +173,7 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
{
u16 *r1;
if (eventId == QL_EVENT_DEPARTED && gUnknown_203B048 == 2)
if (eventId == QL_EVENT_DEPARTED && sEventShouldNotRecordSteps == 2)
{
sub_811381C();
return;
@@ -197,17 +203,17 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
if (IsQuestLogEventWithSpecialEncounterSpecies(eventId, eventData) == TRUE)
return;
if (sub_81153E4(eventId, eventData) == FALSE)
if (ShouldRegisterEvent_HandleGameCorner(eventId, eventData) == FALSE)
return;
if (gQuestLogPlaybackState == 0)
{
if (sub_8113778(eventId, eventData) == TRUE)
if (ShouldRegisterEvent_HandlePartyActions(eventId, eventData) == TRUE)
return;
if (eventId != QL_EVENT_DEFEATED_WILD_MON || gUnknown_203AE04 == NULL)
{
if (sub_81153A8(eventId, eventData) == FALSE)
if (ShouldRegisterEvent_HandleDeparted(eventId, eventData) == FALSE)
return;
StartRecordingQuestLogEntry(eventId);
}
@@ -215,7 +221,7 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
else if (eventId == QL_EVENT_OBTAINED_ITEM)
return;
sub_8113B94(eventId);
SetQuestLogEventToActive(eventId);
if (eventId == QL_EVENT_DEFEATED_WILD_MON)
{
if (gUnknown_203AE04 == NULL)
@@ -238,13 +244,13 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
if (r1 == NULL)
{
FinishRecordingQuestLogScene();
r1 = sub_8113828(eventId, eventData);
r1 = ShouldRegisterEvent(eventId, eventData);
if (r1 == NULL)
return;
}
sEventRecordingPointer = r1;
if (gUnknown_203B048 == 0)
if (sEventShouldNotRecordSteps == 0)
return;
FinishRecordingQuestLogScene();
}
@@ -300,14 +306,14 @@ bool8 QuestLog_ShouldEndSceneOnMapChange(void)
return FALSE;
}
static bool8 sub_8113778(u16 eventId, const u16 *eventData)
static bool8 ShouldRegisterEvent_HandlePartyActions(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)
if (eventId == QL_EVENT_SWITCHED_PARTY_ORDER || eventId == QL_EVENT_DEFEATED_WILD_MON || ShouldRegisterEvent_HandleBeatStoryTrainer(eventId, eventData) == TRUE)
return TRUE;
}
@@ -329,7 +335,7 @@ static bool8 sub_8113778(u16 eventId, const u16 *eventData)
return FALSE;
}
static bool8 sub_81137E4(u16 eventId, const u16 *eventData)
static bool8 ShouldRegisterEvent_HandleBeatStoryTrainer(u16 eventId, const u16 *eventData)
{
if (eventId == QL_EVENT_DEFEATED_TRAINER)
{
@@ -346,19 +352,19 @@ static bool8 sub_81137E4(u16 eventId, const u16 *eventData)
void sub_811381C(void)
{
gUnknown_203B048 = 0;
sEventShouldNotRecordSteps = 0;
}
static u16 *sub_8113828(u16 eventId, const u16 *eventData)
static u16 *ShouldRegisterEvent(u16 eventId, const u16 *eventData)
{
if (sub_8113778(eventId, eventData) == TRUE)
if (ShouldRegisterEvent_HandlePartyActions(eventId, eventData) == TRUE)
return NULL;
if (sub_81153A8(eventId, eventData) == FALSE)
if (ShouldRegisterEvent_HandleDeparted(eventId, eventData) == FALSE)
return NULL;
StartRecordingQuestLogEntry(eventId);
sub_8113B94(eventId);
SetQuestLogEventToActive(eventId);
if (eventId == QL_EVENT_DEFEATED_WILD_MON)
gUnknown_203AE04 = sEventRecordingPointer;
@@ -373,34 +379,34 @@ static bool8 TrySetLinkQuestLogEvent(u16 eventId, const u16 *eventData)
if (!IS_LINK_QL_EVENT(eventId))
return FALSE;
sub_81138F8();
gUnknown_203B024.unk_00 = eventId;
ResetDeferredLinkEvent();
sDeferredEvent.id = 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);
memcpy(sDeferredEvent.data, eventData, 12);
else
memcpy(gUnknown_203B024.unk_04, eventData, 24);
memcpy(sDeferredEvent.data, eventData, 24);
}
return TRUE;
}
void sub_81138F8(void)
void ResetDeferredLinkEvent(void)
{
gUnknown_203B024 = (struct UnkStruct_203B024){};
sDeferredEvent = (struct DeferredLinkEvent){};
}
void QuestLog_StartRecordingInputsAfterDeferredEvent(void)
{
if (gUnknown_203B024.unk_00 != QL_EVENT_0)
if (sDeferredEvent.id != QL_EVENT_0)
{
u16 *resp;
gUnknown_203B04A = 0;
StartRecordingQuestLogEntry(gUnknown_203B024.unk_00);
resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](sEventRecordingPointer, gUnknown_203B024.unk_04);
sLastDepartedMap = 0;
StartRecordingQuestLogEntry(sDeferredEvent.id);
resp = sQuestLogStorageCBs[sDeferredEvent.id](sEventRecordingPointer, sDeferredEvent.data);
sEventRecordingPointer = resp;
sub_81138F8();
ResetDeferredLinkEvent();
}
}
@@ -412,30 +418,30 @@ static bool8 TrySetTrainerBattleQuestLogEvent(u16 eventId, const u16 *eventData)
&& eventId != QL_EVENT_DEFEATED_CHAMPION)
return FALSE;
sub_81138F8();
if (gQuestLogPlaybackState != 0 || FlagGet(FLAG_SYS_GAME_CLEAR) || sub_81137E4(eventId, eventData) != TRUE)
ResetDeferredLinkEvent();
if (gQuestLogPlaybackState != 0 || FlagGet(FLAG_SYS_GAME_CLEAR) || ShouldRegisterEvent_HandleBeatStoryTrainer(eventId, eventData) != TRUE)
{
gUnknown_203B024.unk_00 = eventId;
memcpy(gUnknown_203B024.unk_04, eventData, 8);
sDeferredEvent.id = eventId;
memcpy(sDeferredEvent.data, eventData, 8);
}
return TRUE;
}
void sub_81139BC(void)
{
if (gUnknown_203B024.unk_00 != QL_EVENT_0)
if (sDeferredEvent.id != QL_EVENT_0)
{
u16 *resp;
if (gQuestLogPlaybackState == 0)
{
gUnknown_203B04A = 0;
StartRecordingQuestLogEntry(gUnknown_203B024.unk_00);
sLastDepartedMap = 0;
StartRecordingQuestLogEntry(sDeferredEvent.id);
}
sub_8113B94(gUnknown_203B024.unk_00);
resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](sEventRecordingPointer, gUnknown_203B024.unk_04);
SetQuestLogEventToActive(sDeferredEvent.id);
resp = sQuestLogStorageCBs[sDeferredEvent.id](sEventRecordingPointer, sDeferredEvent.data);
sEventRecordingPointer = resp;
TryRecordEvent41_IncCursor(1);
sub_81138F8();
ResetDeferredLinkEvent();
FinishRecordingQuestLogScene();
}
}
@@ -571,9 +577,9 @@ void sub_8113ABC(const u16 *a0)
{
const u8 *r2 = (const u8 *)(a0 + 2);
if ((a0[0] & 0xFFF) != QL_EVENT_DEPARTED)
gUnknown_203B04A = 0;
sLastDepartedMap = 0;
else
gUnknown_203B04A = r2[1] + 1;
sLastDepartedMap = r2[1] + 1;
}
bool8 sub_8113AE8(const u16 *a0)
@@ -588,7 +594,7 @@ bool8 sub_8113AE8(const u16 *a0)
return FALSE;
sQuestLogEventTextBufferCBs[a0[0] & 0xFFF](a0);
gUnknown_203B044.unk_0 = a0[0];
gUnknown_203B044.id = a0[0];
gUnknown_203B044.unk_1 = (a0[0] & 0xF000) >> 12;
if (gUnknown_203B044.unk_1 != 0)
gUnknown_203B044.unk_2 = 1;
@@ -600,7 +606,7 @@ bool8 sub_8113B44(const u16 *a0)
if (gUnknown_203B044.unk_2 == 0)
return FALSE;
sQuestLogEventTextBufferCBs[gUnknown_203B044.unk_0](a0);
sQuestLogEventTextBufferCBs[gUnknown_203B044.id](a0);
gUnknown_203B044.unk_2++;
if (gUnknown_203B044.unk_2 > gUnknown_203B044.unk_1)
ResetUnk203B044();
@@ -612,11 +618,11 @@ void ResetUnk203B044(void)
gUnknown_203B044 = (struct UnkStruct_203B044){};
}
static void sub_8113B94(u16 eventId)
static void SetQuestLogEventToActive(u16 eventId)
{
if (gUnknown_203B044.unk_0 != (u8)eventId || gUnknown_203B044.unk_2 != sQuestLogCursor)
if (gUnknown_203B044.id != (u8)eventId || gUnknown_203B044.unk_2 != sQuestLogCursor)
{
gUnknown_203B044.unk_0 = eventId;
gUnknown_203B044.id = eventId;
gUnknown_203B044.unk_1 = 0;
gUnknown_203B044.unk_2 = sQuestLogCursor;
}
@@ -627,8 +633,8 @@ static void sub_8113B94(u16 eventId)
void sub_8113BD8(void)
{
sNewlyEnteredMap = FALSE;
gUnknown_203B04A = 0;
gUnknown_203B04B = FALSE;
sLastDepartedMap = 0;
sPlayedTheSlots = FALSE;
}
u16 *TryRecordEvent39_NoParams(u16 *a0)
@@ -838,7 +844,7 @@ static u16 *BufferQuestLogData_UsedItem(u16 *a0, const u16 *eventData)
r2[2] = eventData[3];
if (eventData[0] == ITEM_ESCAPE_ROPE)
gUnknown_203B048 = 2;
sEventShouldNotRecordSteps = 2;
return r2 + 3;
}
@@ -1015,7 +1021,7 @@ static const u16 *BufferQuestLogText_SwappedHeldItemFromPC(const u16 *eventData)
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)
if (gUnknown_203B044.id == QL_EVENT_USED_PKMN_CENTER && gUnknown_203B044.unk_1 != 0)
return r4;
if (!sub_8110944(a0, sQuestLogEventCmdSizes[QL_EVENT_USED_PKMN_CENTER]))
@@ -1492,7 +1498,7 @@ u16 *BufferQuestLogData_DefeatedTrainer_(u16 eventId, u16 *a1, const u16 *a2)
static u16 *BufferQuestLogData_DefeatedGymLeader(u16 *a0, const u16 *eventData)
{
gUnknown_203B048 = 1;
sEventShouldNotRecordSteps = 1;
return BufferQuestLogData_DefeatedTrainer_(QL_EVENT_DEFEATED_GYM_LEADER, a0, eventData);
}
@@ -1602,7 +1608,7 @@ static bool8 IsSpeciesFromSpecialEncounter(u16 species)
static u16 *BufferQuestLogData_DefeatedEliteFourMember(u16 *a0, const u16 *eventData)
{
gUnknown_203B048 = 1;
sEventShouldNotRecordSteps = 1;
return BufferQuestLogData_DefeatedTrainer_(QL_EVENT_DEFEATED_E4_MEMBER, a0, eventData);
}
@@ -1624,12 +1630,12 @@ static u16 *BufferQuestLogData_DefeatedChampion(u16 *a0, const u16 *eventData)
{
if (!sub_8110944(a0, sQuestLogEventCmdSizes[QL_EVENT_DEFEATED_CHAMPION]))
return NULL;
a0[0] = 0x2021;
a0[0] = QL_EVENT_DEFEATED_CHAMPION | (2 << 12);
a0[1] = sQuestLogCursor;
a0[2] = eventData[1];
a0[3] = eventData[2];
*((u8 *)a0 + 8) = *((const u8 *)eventData + 6);
gUnknown_203B048 = 1;
sEventShouldNotRecordSteps = 1;
return a0 + 5;
}
@@ -1666,7 +1672,7 @@ static const u16 *BufferQuestLogText_DefeatedChampion(const u16 *a0)
static u16 *BufferQuestLogData_DefeatedTrainer(u16 *a0, const u16 *eventData)
{
gUnknown_203B048 = 1;
sEventShouldNotRecordSteps = 1;
return BufferQuestLogData_DefeatedTrainer_(QL_EVENT_DEFEATED_TRAINER, a0, eventData);
}
@@ -1850,7 +1856,7 @@ static u16 *BufferQuestLogData_DepartedLocation(u16 *a0, const u16 *eventData)
return NULL;
*((u8 *)r2 + 0) = *((const u8 *)eventData + 0);
if ((*((u8 *)r2 + 1) = *((const u8 *)eventData + 1)) == QL_LOCATION_SAFARI_ZONE)
gUnknown_203B048 = 1;
sEventShouldNotRecordSteps = 1;
return r2 + 1;
}
@@ -1883,33 +1889,34 @@ static const u16 *BufferQuestLogText_DepartedLocation(const u16 *eventData)
return (const u16 *)(r5_2 + 2);
}
void sub_811539C(void)
void SetQLPlayedTheSlots(void)
{
gUnknown_203B04B = TRUE;
sPlayedTheSlots = TRUE;
}
static bool8 sub_81153A8(u16 eventId, const u16 *eventData)
static bool8 ShouldRegisterEvent_HandleDeparted(u16 eventId, const u16 *eventData)
{
if (eventId != QL_EVENT_DEPARTED)
{
gUnknown_203B04A = 0;
sLastDepartedMap = 0;
return TRUE;
}
if (gUnknown_203B04A == *((u8 *)eventData + 1) + 1)
if (sLastDepartedMap == *((u8 *)eventData + 1) + 1)
return FALSE;
gUnknown_203B04A = *((u8 *)eventData + 1) + 1;
sLastDepartedMap = *((u8 *)eventData + 1) + 1;
return TRUE;
}
static bool8 sub_81153E4(u16 eventId, const u16 *eventData)
static bool8 ShouldRegisterEvent_HandleGameCorner(u16 eventId, const u16 *eventData)
{
if (eventId != QL_EVENT_DEPARTED)
return TRUE;
if (*((u8 *)eventData + 1) == 32 && !gUnknown_203B04B)
// Bug: should be QL_LOCATION_GAME_CORNER + 1
if (*((u8 *)eventData + 1) == QL_LOCATION_GAME_CORNER && !sPlayedTheSlots)
return FALSE;
gUnknown_203B04B = FALSE;
sPlayedTheSlots = FALSE;
return TRUE;
}
@@ -1924,9 +1931,9 @@ static u16 *BufferQuestLogData_UsedFieldMove(u16 *a0, const u16 *eventData)
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;
sEventShouldNotRecordSteps = 2;
else
gUnknown_203B048 = 1;
sEventShouldNotRecordSteps = 1;
return (u16 *)(r3 + 2);
}
+1 -1
View File
@@ -814,7 +814,7 @@ static void MainTask_SlotsGameLoop(u8 taskId)
}
break;
case 2:
sub_811539C();
SetQLPlayedTheSlots();
sub_81409B4();
sub_8140148();
sSlotMachineState->field_06 = 0;