Setting wallclock time now properly sets fakeRTC (#7860)

Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
This commit is contained in:
FosterProgramming 2025-10-19 08:45:21 +02:00 committed by GitHub
parent ddddca68e9
commit 5b2ecfe4d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 5 deletions

View File

@ -1794,6 +1794,10 @@ void CB2_NewGame(void)
SetFieldVBlankCallback();
SetMainCallback1(CB1_Overworld);
SetMainCallback2(CB2_Overworld);
#if OW_USE_FAKE_RTC
// Wall clock now track local time so we set it to 10AM to match initial wall clock time
RtcCalcLocalTimeOffset(0, 10, 0, 0);
#endif
}
void CB2_WhiteOut(void)

View File

@ -348,6 +348,7 @@ void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds)
gLocalTime.hours = hours;
gLocalTime.minutes = minutes;
gLocalTime.seconds = seconds;
FakeRtc_ManuallySetTime(gLocalTime.days, gLocalTime.hours, gLocalTime.minutes, seconds);
RtcGetInfo(&sRtc);
RtcCalcTimeDifference(&sRtc, &gSaveBlock2Ptr->localTimeOffset, &gLocalTime);
}

View File

@ -692,13 +692,13 @@ void CB2_StartWallClock(void)
DecompressDataWithHeaderVram(gWallClockStart_Tilemap, (u16 *)BG_SCREEN_ADDR(7));
taskId = CreateTask(Task_SetClock_WaitFadeIn, 0);
gTasks[taskId].tHours = 10;
gTasks[taskId].tMinutes = 0;
gTasks[taskId].tHours = gLocalTime.hours;
gTasks[taskId].tMinutes = gLocalTime.minutes;
gTasks[taskId].tMoveDir = 0;
gTasks[taskId].tPeriod = 0;
gTasks[taskId].tPeriod = gTasks[taskId].tHours / 12;
gTasks[taskId].tMoveSpeed = 0;
gTasks[taskId].tMinuteHandAngle = 0;
gTasks[taskId].tHourHandAngle = 300;
gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
spriteId = CreateSprite(&sSpriteTemplate_MinuteHand, 120, 80, 1);
gSprites[spriteId].sTaskId = taskId;