nes-ppu 0.1.0

A NES graphics emulator with a generic pluggable interface.
Documentation

A NES graphics emulator with a Rust interface.

This library provides a generic interface for a NES graphics emulator that mimics the interface provided on the actual system. In addition, this library also provides some conveniences not present on the NES in order to make programming more ergonomic.

use nes_ppu::Ppu;
# use nes_ppu::*;
# struct NesMemoryMapper;
# struct Buffer;
# impl Mapper for NesMemoryMapper {
#     fn read(&mut self, addr: u16) -> u8 { todo!() }
#     fn write(&mut self, addr: u16, value: u8) {}
# }
#
# impl PixelBuffer for Buffer {
#     fn set_color(&mut self, x: u8, y: u8, c: u8, emphasis: ColorEmphasis) {}
# }
#
# impl NesMemoryMapper {
#     fn new() -> Self { NesMemoryMapper }
# }
# impl Buffer {
#     fn new() -> Self { Buffer }
# }

fn main_loop() {
let mut ppu = Ppu::new();

// example types not provided by this library
let mut mapper = NesMemoryMapper::new();
let mut pixel_buf = Buffer::new();

loop {
// run main game logic here

ppu.tick_to_next_sprite_0_hit(&mut mapper, &mut pixel_buf);
// add sprite 0 hit raster effect here

ppu.tick_to_next_vblank(&mut mapper, &mut pixel_buf);
// render pixel buffer to screen here
}
}