diff --git a/src/main.rs b/src/main.rs index 293af36..dc157be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,7 +44,7 @@ fn main() -> Result<(), Error> { let cartridge = Cartridge::new(cartridge)?; nes.insert_cartrige(cartridge); nes.cpu.find_pc_addr(&nes.bus); - nes.cpu.regs.pc = 0xC000; + // nes.cpu.regs.pc = 0xC000; // disassemble instructions let disasm = Disasm::disassemble(&nes.bus, 0xC000, 0xFFFF).unwrap(); diff --git a/src/nes/bus.rs b/src/nes/bus.rs index 23cd539..90aa958 100644 --- a/src/nes/bus.rs +++ b/src/nes/bus.rs @@ -106,10 +106,10 @@ impl Memory for Bus { // Ram is 3x mirrored after 0x07ff return self.ram[(addr & RAM_PHYS_RANGE[1]) as usize] } - if PPU_ADDR_RANGE[0] <= addr && addr <= PPU_ADDR_RANGE[1] { - // PPU memory is mirrored after 0x2007 to 0x3fff - return self.ram[(addr & PPU_PHYS_RANGE[1]) as usize] - } + // if PPU_ADDR_RANGE[0] <= addr && addr <= PPU_ADDR_RANGE[1] { + // // PPU memory is mirrored after 0x2007 to 0x3fff + // return self.ram[(addr & PPU_PHYS_RANGE[1]) as usize] + // } 0x0000 // generic response } @@ -123,10 +123,10 @@ impl Memory for Bus { // Ram is 3x mirrored after 07ff self.ram[(addr & RAM_PHYS_RANGE[1]) as usize] = data } - if PPU_ADDR_RANGE[0] <= addr && addr <= PPU_ADDR_RANGE[1] { - // PPU memory is mirrored after 0x2007 to 0x3fff - self.ram[(addr & PPU_PHYS_RANGE[1]) as usize] = data - } + // if PPU_ADDR_RANGE[0] <= addr && addr <= PPU_ADDR_RANGE[1] { + // // PPU memory is mirrored after 0x2007 to 0x3fff + // self.ram[(addr & PPU_PHYS_RANGE[1]) as usize] = data + // } } } diff --git a/src/nes/ppu.rs b/src/nes/ppu.rs index cd52dc2..49a0383 100644 --- a/src/nes/ppu.rs +++ b/src/nes/ppu.rs @@ -4,25 +4,37 @@ use image::{ImageBuffer, Rgba}; use rand::Rng; pub struct PPU { + pub cycle: i16, + pub scanline: i16, pub canvas_main: ImageBuffer, Vec> + } impl PPU { pub fn new() -> Self { PPU { + cycle: 0, + scanline: 0, canvas_main: ImageBuffer::new(256, 240), } } } impl Clockable for PPU { - fn clock(&mut self, bus: &mut T) { - // update random pixel + fn clock(&mut self, _bus: &mut T) { + // random noise let mut rng = rand::thread_rng(); - let x = rng.gen_range(0, self.canvas_main.width()); - let y = rng.gen_range(0, self.canvas_main.height()); - let rgba = Rgba([rng.gen_range(0,255), rng.gen_range(0,255), rng.gen_range(0,255), 255]); - self.canvas_main.put_pixel(x, y, rgba); + let x = rng.gen_range(0, 256); + let y = rng.gen_range(0, 240); + + let color = rng.gen::(); + let px = if color { + Rgba([255, 255, 255, 255]) + } else { + Rgba([0, 0, 0, 255]) + }; + + self.canvas_main.put_pixel(x as u32, y as u32, px); } }