fullscreen option

This commit is contained in:
Logan McNaughton
2023-10-12 18:11:08 -06:00
parent 2a077ae048
commit 86326683bd
4 changed files with 28 additions and 13 deletions
+1
View File
@@ -12,6 +12,7 @@ governor = "0.6"
sevenz-rust = "0.5"
sha2 = "0.10"
sdl2-sys = { git = "https://github.com/Rust-SDL2/rust-sdl2.git" }
clap = { version = "4.4", features = ["derive"] }
[dependencies.sdl2]
git = "https://github.com/Rust-SDL2/rust-sdl2.git"
+13 -4
View File
@@ -1,9 +1,18 @@
#![feature(round_ties_even)]
use std::env;
use std::fs;
use std::io::Read;
mod device;
mod ui;
use clap::Parser;
/// N64 emulator
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
game: Option<String>,
#[arg(short, long)]
fullscreen: bool,
}
fn swap_rom(contents: Vec<u8>) -> Vec<u8> {
let test = u32::from_be_bytes(contents[0..4].try_into().unwrap());
@@ -32,8 +41,8 @@ fn swap_rom(contents: Vec<u8>) -> Vec<u8> {
}
fn main() {
let args: Vec<String> = env::args().collect();
let file_path = std::path::Path::new(&args[1]);
let args = Args::parse();
let file_path = std::path::Path::new(args.game.as_ref().unwrap());
let mut contents = vec![];
if file_path.extension().unwrap().to_ascii_lowercase() == "zip" {
let zip_file = fs::File::open(file_path).unwrap();
@@ -90,7 +99,7 @@ fn main() {
let (rdram_ptr, rdram_size) = device::rdram::init(&mut device);
ui::audio::init(&mut device.ui, 33600);
ui::video::init(&mut device.ui, rdram_ptr, rdram_size);
ui::video::init(&mut device.ui, rdram_ptr, rdram_size, args.fullscreen);
device::mi::init(&mut device);
device::pif::init(&mut device);
+1 -8
View File
@@ -21,13 +21,6 @@ impl Ui {
let sdl_context = sdl2::init().unwrap();
let video_subsystem = sdl_context.video().unwrap();
let audio_subsystem = sdl_context.audio().unwrap();
let window = video_subsystem
.window("gopher64", 640, 480)
.position_centered()
.vulkan()
.resizable()
.build()
.unwrap();
Ui {
save_type: vec![],
game_name: String::new(),
@@ -47,7 +40,7 @@ impl Ui {
sdl_context: Some(sdl_context),
video_subsystem: Some(video_subsystem),
audio_subsystem: Some(audio_subsystem),
window: Some(window),
window: None,
audio_device: None,
}
}
+13 -1
View File
@@ -9,7 +9,19 @@ extern "C" {
pub fn full_sync();
}
pub fn init(ui: &mut ui::Ui, rdram_ptr: *mut u8, rdram_size: usize) {
pub fn init(ui: &mut ui::Ui, rdram_ptr: *mut u8, rdram_size: usize, fullscreen: bool) {
let mut builder = ui
.video_subsystem
.as_ref()
.unwrap()
.window("gopher64", 640, 480);
builder.position_centered().vulkan();
if fullscreen {
builder.fullscreen();
} else {
builder.resizable();
}
ui.window = Some(builder.build().unwrap());
unsafe {
set_sdl_window(ui.window.as_mut().unwrap().raw() as usize);
vk_init(rdram_ptr as usize, rdram_size as u32)