MSX

Struct MSX 

Source
pub struct MSX<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> MSX<'a>

Source

pub fn new(cpu_z80: Z80<'a>, vdp: Rc<RefCell<Vdp<'a>>>) -> Self

Examples found in repository?
examples/rsmsx.rs (lines 161-167)
136fn main() -> Result<(), Box<dyn std::error::Error>> {
137    log::set_logger(&MY_LOGGER).unwrap();
138    log::set_max_level(LevelFilter::Debug);
139
140    let args: std::vec::Vec<_> = std::env::args().skip(1).collect();
141    match MyArgs::from_args(args.iter().map(|x| x.as_str())) {
142        Ok(mut args) => {
143            if args.system_rom.is_empty() {
144                args.system_rom = SYSTEM_ROM_FILE.to_string();
145            }
146            let base_scale = 2.0;
147            let scale_magnifier = 2.0;
148            let mut sys = BaseSystem::new(base_scale * scale_magnifier);
149            let ppi = Rc::new(RefCell::new(PPI::new()));
150            let mut memory = Memory::new(ppi.clone());
151            memory.load_bios_basic(&args.system_rom);
152            if !args.cart.is_empty() {
153                memory.load_rom(&args.cart, 1, &args.mtype);
154            }
155            let psg = PSG::new(SoundType::Normal, Some(&mut sys));
156            let vdp = Rc::new(RefCell::new(Vdp::new(GraphicsType::Normal, args.quality)));
157            let ports = Ports::new(vdp.clone(), ppi.clone(), psg);
158            let mut cpu_z80 = Z80::new(memory, ports);
159            cpu_z80.set_hook(Rc::new(RefCell::new(SampleHook::new())));
160            cpu_z80.reboot();
161            let mut msx = MSX::new(
162                cpu_z80,
163                vdp.clone(),
164                // memory.clone(),
165                // ppi.clone(),
166                // psg.clone(),
167            );
168
169            let avg_fps = msx.main_loop(args.frame_interval as isize, &mut sys);
170            // let avg_fps = msx.main_loop(args.frame_interval as isize).await;
171            log::info!("Avg FPS: {:.2}", avg_fps);
172        }
173        Err(err) => println!("err={:?}", err),
174    }
175    Ok(())
176}
Source

pub fn main_loop(&mut self, frame_interval: isize, sys: &mut BaseSystem) -> f64

Examples found in repository?
examples/rsmsx.rs (line 169)
136fn main() -> Result<(), Box<dyn std::error::Error>> {
137    log::set_logger(&MY_LOGGER).unwrap();
138    log::set_max_level(LevelFilter::Debug);
139
140    let args: std::vec::Vec<_> = std::env::args().skip(1).collect();
141    match MyArgs::from_args(args.iter().map(|x| x.as_str())) {
142        Ok(mut args) => {
143            if args.system_rom.is_empty() {
144                args.system_rom = SYSTEM_ROM_FILE.to_string();
145            }
146            let base_scale = 2.0;
147            let scale_magnifier = 2.0;
148            let mut sys = BaseSystem::new(base_scale * scale_magnifier);
149            let ppi = Rc::new(RefCell::new(PPI::new()));
150            let mut memory = Memory::new(ppi.clone());
151            memory.load_bios_basic(&args.system_rom);
152            if !args.cart.is_empty() {
153                memory.load_rom(&args.cart, 1, &args.mtype);
154            }
155            let psg = PSG::new(SoundType::Normal, Some(&mut sys));
156            let vdp = Rc::new(RefCell::new(Vdp::new(GraphicsType::Normal, args.quality)));
157            let ports = Ports::new(vdp.clone(), ppi.clone(), psg);
158            let mut cpu_z80 = Z80::new(memory, ports);
159            cpu_z80.set_hook(Rc::new(RefCell::new(SampleHook::new())));
160            cpu_z80.reboot();
161            let mut msx = MSX::new(
162                cpu_z80,
163                vdp.clone(),
164                // memory.clone(),
165                // ppi.clone(),
166                // psg.clone(),
167            );
168
169            let avg_fps = msx.main_loop(args.frame_interval as isize, &mut sys);
170            // let avg_fps = msx.main_loop(args.frame_interval as isize).await;
171            log::info!("Avg FPS: {:.2}", avg_fps);
172        }
173        Err(err) => println!("err={:?}", err),
174    }
175    Ok(())
176}
Source

pub fn cpu_frame(&mut self)

Auto Trait Implementations§

§

impl<'a> Freeze for MSX<'a>

§

impl<'a> !RefUnwindSafe for MSX<'a>

§

impl<'a> !Send for MSX<'a>

§

impl<'a> !Sync for MSX<'a>

§

impl<'a> Unpin for MSX<'a>

§

impl<'a> !UnwindSafe for MSX<'a>

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> 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> Same for T

Source§

type Output = T

Should always be Self
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.