CartridgeMemory

Struct CartridgeMemory 

Source
pub struct CartridgeMemory {
    pub prg_ram: Vec<u8>,
    pub prg_rom: Vec<u8>,
    pub chr_ram: Vec<u8>,
    pub chr_rom: Vec<u8>,
    pub nametable_arrangement: NametableArrangement,
}
Expand description

Contains all memory in the cartridge that isn’t mapper-specific.

Contains PRG/CHR ROM/RAM. Does not contain any latches, banks, or dividers used by mappers.

Fields§

§prg_ram: Vec<u8>

Program RAM (PRG RAM) of the cartridge

§prg_rom: Vec<u8>

Program ROM (PRG ROM) of the cartridge

§chr_ram: Vec<u8>

Character RAM (CHR RAM) of the cartridge

§chr_rom: Vec<u8>

Character ROM (CHR ROM) of the cartridge

§nametable_arrangement: NametableArrangement

Nametable arrangement of the cartridge, read when parsing the file. May be changed by the mapper, use Mapper::nametable_arrangement to get the current nametable arrangement being used

Implementations§

Source§

impl CartridgeMemory

Source

pub fn read_chr(&self, addr: usize) -> u8

Read a byte from CHR ROM or (if CHR ROM is empty) CHR RAM.

This is really a convience function, since most cartridges either are all CHR ROM or CHR RAM. So this could be interpreted as just “Read CHR from whatever format the cartridge using”

Source

pub fn write_chr(&mut self, addr: usize, value: u8)

Write a byte to CHR RAM, if present.

Source

pub fn read_prg_ram(&self, addr: usize) -> u8

Read a byte from PRG RAM

Read from the PRG RAM on the cartridge, wrapping around the end if addr is too large

Source

pub fn write_prg_ram(&mut self, addr: usize, value: u8)

Write a byte to PRG RAM

Write to PRG RAM, wrapping around the end if addr is too large

Source

pub fn read_prg_rom(&self, addr: usize) -> u8

Read a byte from PRG ROM

Read from PRG ROM, wrapping around the end if addr is too large

Trait Implementations§

Source§

impl Clone for CartridgeMemory

Source§

fn clone(&self) -> CartridgeMemory

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'de> Deserialize<'de> for CartridgeMemory

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for CartridgeMemory

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,