pub trait AudioDevice {
fn push_sample(&mut self, sample: f32);
}
pub const NES_WIDTH: usize = 256;
pub const NES_HEIGHT: usize = 240;
const BUFFER_PIXELS: usize = NES_WIDTH * NES_HEIGHT;
pub struct PixelBuffer([u32; BUFFER_PIXELS]);
impl Default for PixelBuffer {
fn default() -> Self {
PixelBuffer([0; BUFFER_PIXELS])
}
}
impl AsRef<[u32]> for PixelBuffer {
fn as_ref(&self) -> &[u32] {
&self.0
}
}
impl PixelBuffer {
pub(crate) fn write(&mut self, x: usize, y: usize, argb: u32) {
let index = NES_WIDTH * y + x;
self.0[index] = argb;
}
}
pub trait VideoDevice {
fn blit_pixels(&mut self, pixels: &PixelBuffer);
}