From 147f6ac9ec1e4d6c2469df52c286a56832f6a690 Mon Sep 17 00:00:00 2001 From: Rekai Musuka Date: Fri, 21 Oct 2022 05:12:30 -0300 Subject: [PATCH] Revert "chore: tick on memory access instead of 1cpi" This reverts commit 7f555095f2c49cbb06bca9fc2fd6cdee05a1b2cd. --- src/Bus.zig | 16 ++-------------- src/emu.zig | 6 +++--- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/src/Bus.zig b/src/Bus.zig index a805fec..a1eec70 100644 --- a/src/Bus.zig +++ b/src/Bus.zig @@ -27,8 +27,6 @@ tim: Timers, iwram: Iwram, ewram: Ewram, -sched: *Scheduler, - io: Io, pub fn init(alloc: Allocator, sched: *Scheduler, rom_path: []const u8, bios_path: ?[]const u8, save_path: ?[]const u8) !Self { @@ -42,7 +40,6 @@ pub fn init(alloc: Allocator, sched: *Scheduler, rom_path: []const u8, bios_path .dma = DmaControllers.init(), .tim = Timers.init(sched), .io = Io.init(), - .sched = sched, }; } @@ -55,8 +52,6 @@ pub fn deinit(self: Self) void { } pub fn read32(self: *const Self, addr: u32) u32 { - self.sched.tick += 1; - return switch (addr) { // General Internal Memory 0x0000_0000...0x0000_3FFF => self.bios.get32(addr), @@ -79,7 +74,7 @@ pub fn read32(self: *const Self, addr: u32) u32 { } pub fn write32(self: *Self, addr: u32, word: u32) void { - self.sched.tick += 1; + // TODO: write32 can write to GamePak Flash switch (addr) { // General Internal Memory @@ -97,8 +92,6 @@ pub fn write32(self: *Self, addr: u32, word: u32) void { } pub fn read16(self: *const Self, addr: u32) u16 { - self.sched.tick += 1; - return switch (addr) { // General Internal Memory 0x0000_0000...0x0000_3FFF => self.bios.get16(addr), @@ -121,8 +114,7 @@ pub fn read16(self: *const Self, addr: u32) u16 { } pub fn write16(self: *Self, addr: u32, halfword: u16) void { - self.sched.tick += 1; - + // TODO: write16 can write to GamePak Flash switch (addr) { // General Internal Memory 0x0200_0000...0x02FF_FFFF => self.ewram.set16(addr & 0x3FFFF, halfword), @@ -140,8 +132,6 @@ pub fn write16(self: *Self, addr: u32, halfword: u16) void { } pub fn read8(self: *const Self, addr: u32) u8 { - self.sched.tick += 1; - return switch (addr) { // General Internal Memory 0x0000_0000...0x0000_3FFF => self.bios.get8(addr), @@ -165,8 +155,6 @@ pub fn read8(self: *const Self, addr: u32) u8 { } pub fn write8(self: *Self, addr: u32, byte: u8) void { - self.sched.tick += 1; - switch (addr) { // General Internal Memory 0x0200_0000...0x02FF_FFFF => self.ewram.set8(addr & 0x3FFFF, byte), diff --git a/src/emu.zig b/src/emu.zig index fd34689..2ff3990 100644 --- a/src/emu.zig +++ b/src/emu.zig @@ -43,9 +43,9 @@ pub fn run(kind: RunKind, quit: *Atomic(bool), fps: *FpsAverage, sched: *Schedul } pub fn runFrame(sched: *Scheduler, cpu: *Arm7tdmi, bus: *Bus) void { - const frame_end = sched.tick + cycles_per_frame; - - while (sched.tick < frame_end) { + var cycles: u64 = 0; + while (cycles < cycles_per_frame) : (cycles += 1) { + sched.tick += 1; _ = cpu.step(); while (sched.tick >= sched.nextTimestamp()) {