#![allow(dead_code)]
use ppu::PPU;
use mos6502::CPU;
use cartridge::MirrorType;
use controller::Controller;
use core::cell::RefCell;
use core::ptr::null_mut;
pub trait VMem {
fn read(&self, addr: u16) -> u8;
fn write(&mut self, addr: u16, data: u8);
}
pub struct CPUMemory<'a> {
sram: [u8; 2048],
ppu: *mut PPU<'a>,
cpu: *mut CPU<'a>,
mapper: &'a RefCell<&'a mut VMem>,
ctl1: Option<&'a Controller>,
ctl2: Option<&'a Controller>
}
impl<'a> CPUMemory<'a> {
pub