This repository has been archived on 2026-08-27. You can view files and clone it, but cannot push or open issues or pull requests.
gopher64-netplay/src/ui/video.rs
Logan McNaughton 2e4a23c315 Initial Commit
2023-10-04 14:33:17 -06:00

41 lines
1.0 KiB
Rust

use crate::ui;
extern "C" {
pub fn vk_init(rdram_ptr: usize, rdram_size: u32);
pub fn set_sdl_window(window: usize);
pub fn rdp_update_screen() -> u8;
pub fn rdp_set_vi_register(reg: u32, value: u32);
pub fn rdp_process_commands(dpc_regs: &mut [u32; 8], SP_DMEM: &mut [u8; 8192]) -> u64;
pub fn full_sync();
}
pub fn init(ui: &mut ui::Ui, rdram_ptr: *mut u8, rdram_size: usize) {
unsafe {
set_sdl_window(ui.window.as_mut().unwrap().raw() as usize);
vk_init(rdram_ptr as usize, rdram_size as u32)
}
}
pub fn update_screen() -> u8 {
// when the window is closed, running is set to 0
let running = unsafe { rdp_update_screen() };
return running;
}
pub fn set_register(reg: u32, value: u32) {
unsafe {
rdp_set_vi_register(reg, value);
}
}
pub fn process_rdp_list(dpc_regs: &mut [u32; 8], sp_dmem: &mut [u8; 8192]) -> u64 {
let timer = unsafe { rdp_process_commands(dpc_regs, sp_dmem) };
return timer;
}
pub fn rdp_full_sync() {
unsafe {
full_sync();
}
}