mirror of
https://github.com/gopher64/gopher64.git
synced 2026-07-11 01:25:20 +02:00
fullscreen option
This commit is contained in:
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user