Zesty - a pin-accurate, cycle-accurate NES emulator written in Zig
at main 22 lines 593 B view raw
1//! NES and Famicom cartridges. 2const std = @import("std"); 3const zesty = @import("zesty.zig"); 4 5pub const Cartridge = union(enum) { 6 nrom128: Nrom128, 7 8 pub fn update(self: *Cartridge, pins: *zesty.Pins) void { 9 if (pins.romSel()) switch (self.*) { 10 inline else => |*v| v.update(pins), 11 }; 12 } 13}; 14 15pub const Nrom128 = struct { 16 rom: [0x4000]u8 = @splat(0x00), 17 18 pub fn update(self: *Nrom128, pins: *zesty.Pins) void { 19 if (pins.cpu_addr < 0x8000 or pins.cpu_rw != .read) return; 20 pins.cpu_data = self.rom[pins.cpu_addr & 0x3fff]; 21 } 22};