Implement multiplayer #2

Merged
SonicSwordcane merged 21 commits from multiplayer into main 2024-11-30 00:31:10 +00:00
2 changed files with 4 additions and 13 deletions
Showing only changes of commit 63cb7a4835 - Show all commits

@ -1 +1 @@
Subproject commit 7e31fbd5824d612e26a176aa2946497cfb2aa02e
Subproject commit bc864644f791e17d0060a60ebf1eea938bcf80af

View File

@ -64,8 +64,6 @@ extern "C" {
fn vb_emulate_ex(sims: *mut *mut VB, count: c_uint, cycles: *mut u32) -> c_int;
#[link_name = "vbGetCartROM"]
fn vb_get_cart_rom(sim: *mut VB, size: *mut u32) -> *mut c_void;
#[link_name = "vbGetPeer"]
fn vb_get_peer(sim: *mut VB) -> *mut VB;
#[link_name = "vbGetPixels"]
fn vb_get_pixels(
sim: *mut VB,
@ -205,12 +203,8 @@ impl 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;
@ -292,11 +286,8 @@ impl Drop for Sim {
// SAFETY: we made this pointer ourselves, we can for sure free it
unsafe { drop(Box::from_raw(ptr)) };
// If we're linked to another sim, unlink them from ourselves.
let peer = unsafe { vb_get_peer(self.sim) };
if !peer.is_null() {
unsafe { vb_set_peer(peer, ptr::null_mut()) };
}
// If we're linked to another sim, unlink from them.
unsafe { vb_set_peer(self.sim, ptr::null_mut()) };
let len = unsafe { vb_size_of() }.div_ceil(4);
// SAFETY: the sim's memory originally came from a Vec<u64>