Let sims link/unlink/reset independently
This commit is contained in:
@@ -58,6 +58,8 @@ type OnFrame = extern "C" fn(sim: *mut VB) -> c_int;
|
||||
|
||||
#[link(name = "vb")]
|
||||
extern "C" {
|
||||
#[link_name = "vbEmulate"]
|
||||
fn vb_emulate(sim: *mut VB, cycles: *mut u32) -> c_int;
|
||||
#[link_name = "vbEmulateEx"]
|
||||
fn vb_emulate_ex(sims: *mut *mut VB, count: c_uint, cycles: *mut u32) -> c_int;
|
||||
#[link_name = "vbGetCartROM"]
|
||||
@@ -202,6 +204,19 @@ impl Sim {
|
||||
unsafe { vb_set_peer(self.sim, peer.sim) };
|
||||
}
|
||||
|
||||
pub fn unlink(&mut self) {
|
||||
let peer = unsafe { vb_get_peer(self.sim) };
|
||||
if !peer.is_null() {
|
||||
unsafe { vb_set_peer(peer, ptr::null_mut()) };
|
||||
unsafe { vb_set_peer(self.sim, ptr::null_mut()) };
|
||||
}
|
||||
}
|
||||
|
||||
pub fn emulate(&mut self) {
|
||||
let mut cycles = 20_000_000;
|
||||
unsafe { vb_emulate(self.sim, &mut cycles) };
|
||||
}
|
||||
|
||||
pub fn emulate_many(sims: &mut [Sim]) {
|
||||
let mut cycles = 20_000_000;
|
||||
let count = sims.len() as c_uint;
|
||||
|
||||
Reference in New Issue
Block a user