diff --git a/src/core/bus/GamePak.zig b/src/core/bus/GamePak.zig index b75d934..7bfde15 100644 --- a/src/core/bus/GamePak.zig +++ b/src/core/bus/GamePak.zig @@ -505,8 +505,8 @@ pub const Clock = struct { cpu.sched.push(.RealTimeClock, 1 << 24); // Every Second } - pub fn updateTime(self: *This) void { - self.cpu.sched.push(.RealTimeClock, 1 << 24); // Reschedule + pub fn updateTime(self: *This, late: u64) void { + self.cpu.sched.push(.RealTimeClock, (1 << 24) -| late); // Reschedule const now = DateTime.now(); self.year = toBcd(u8, @intCast(u8, now.date.year - 2000)); diff --git a/src/core/scheduler.zig b/src/core/scheduler.zig index af6989c..4c96c3b 100644 --- a/src/core/scheduler.zig +++ b/src/core/scheduler.zig @@ -66,7 +66,7 @@ pub const Scheduler = struct { if (device.kind != .Rtc or device.ptr == null) return; const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), device.ptr.?)); - clock.updateTime(); + clock.updateTime(late); }, .FrameSequencer => cpu.bus.apu.tickFrameSequencer(late), .SampleAudio => cpu.bus.apu.sampleAudio(late),