From 53414cb8bbf4e9b78ceba93ebd3682a86bae5bb5 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 16 Sep 2024 16:15:30 -0300 Subject: [PATCH] Form changes and evolutions happen based on fake RTC --- include/clock.h | 1 + include/overworld.h | 2 +- include/rtc.h | 2 +- src/clock.c | 5 ++--- src/overworld.c | 3 ++- src/rtc.c | 10 ++-------- 6 files changed, 9 insertions(+), 14 deletions(-) diff --git a/include/clock.h b/include/clock.h index 0cfd3db9ed..95d0929950 100644 --- a/include/clock.h +++ b/include/clock.h @@ -5,5 +5,6 @@ void InitTimeBasedEvents(void); void DoTimeBasedEvents(void); +void FormChangeTimeUpdate(); #endif // GUARD_CLOCK_H diff --git a/include/overworld.h b/include/overworld.h index 5805bb8d6b..2e6bb8a922 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -141,7 +141,7 @@ void CleanupOverworldWindowsAndTilemaps(void); bool32 IsOverworldLinkActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); -u8 UpdateTimeOfDay(void); +void UpdateTimeOfDay(void); bool8 MapHasNaturalLight(u8 mapType); void UpdateAltBgPalettes(u16 palettes); void UpdatePalettesWithTime(u32); diff --git a/include/rtc.h b/include/rtc.h index bf8ff9aa93..c60e63deb1 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -18,7 +18,7 @@ #define RTC_ERR_FLAG_MASK 0x0FF0 //Morning and evening don't exist in Gen 3 -#if OW_TIMES_OF_DAY == GEN_3 +#if OW_TIMES_OF_DAY <= GEN_3 #define MORNING_HOUR_BEGIN 0 #define MORNING_HOUR_END 0 diff --git a/src/clock.c b/src/clock.c index 54c9422bbe..f9cfee4ad4 100644 --- a/src/clock.c +++ b/src/clock.c @@ -1,4 +1,5 @@ #include "global.h" +#include "clock.h" #include "event_data.h" #include "rtc.h" #include "time_events.h" @@ -15,7 +16,6 @@ static void UpdatePerDay(struct Time *localTime); static void UpdatePerMinute(struct Time *localTime); -static void FormChangeTimeUpdate(); void InitTimeBasedEvents(void) { @@ -72,12 +72,11 @@ static void UpdatePerMinute(struct Time *localTime) { BerryTreeTimeUpdate(minutes); gSaveBlock2Ptr->lastBerryTreeUpdate = *localTime; - FormChangeTimeUpdate(); } } } -static void FormChangeTimeUpdate() +void FormChangeTimeUpdate() { s32 i; for (i = 0; i < PARTY_SIZE; i++) diff --git a/src/overworld.c b/src/overworld.c index 889b35effc..de3bc00ff2 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1538,7 +1538,7 @@ const struct BlendSettings gTimeOfDayBlend[] = [TIME_NIGHT] = {.coeff = 10, .blendColor = TINT_NIGHT, .isTint = TRUE}, }; -u8 UpdateTimeOfDay(void) +void UpdateTimeOfDay(void) { s32 hours, minutes; RtcCalcLocalTime(); @@ -1697,6 +1697,7 @@ static void OverworldBasic(void) }; gTimeUpdateCounter = 0; UpdateTimeOfDay(); + FormChangeTimeUpdate(); if (cachedBlend.time0 != currentTimeBlend.time0 || cachedBlend.time1 != currentTimeBlend.time1 || cachedBlend.weight != currentTimeBlend.weight) diff --git a/src/rtc.c b/src/rtc.c index 5ccafec621..9ec96350c8 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -4,6 +4,7 @@ #include "strings.h" #include "text.h" #include "fake_rtc.h" +#include "overworld.h" // iwram bss static u16 sErrorStatus; @@ -327,14 +328,7 @@ bool8 IsBetweenHours(s32 hours, s32 begin, s32 end) u8 GetTimeOfDay(void) { - RtcCalcLocalTime(); - if (IsBetweenHours(gLocalTime.hours, MORNING_HOUR_BEGIN, MORNING_HOUR_END)) - return TIME_MORNING; - else if (IsBetweenHours(gLocalTime.hours, EVENING_HOUR_BEGIN, EVENING_HOUR_END)) - return TIME_EVENING; - else if (IsBetweenHours(gLocalTime.hours, NIGHT_HOUR_BEGIN, NIGHT_HOUR_END)) - return TIME_NIGHT; - return TIME_DAY; + return gTimeOfDay; } void RtcInitLocalTimeOffset(s32 hour, s32 minute)