pub struct MSX<'a> { /* private fields */ }Implementations§
Source§impl<'a> MSX<'a>
impl<'a> MSX<'a>
Sourcepub fn new(cpu_z80: Z80<'a>, vdp: Rc<RefCell<Vdp<'a>>>) -> Self
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}Sourcepub fn main_loop(&mut self, frame_interval: isize, sys: &mut BaseSystem) -> f64
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}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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more