Randomize SRAM when first created
This commit is contained in:
parent
d4844a303a
commit
89dfeeeb2d
|
@ -1842,6 +1842,7 @@ dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"oneshot",
|
"oneshot",
|
||||||
"pollster",
|
"pollster",
|
||||||
|
"rand 0.9.2",
|
||||||
"rfd",
|
"rfd",
|
||||||
"rtrb",
|
"rtrb",
|
||||||
"rubato",
|
"rubato",
|
||||||
|
|
|
@ -30,6 +30,7 @@ num-derive = "0.4"
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
oneshot = "0.1"
|
oneshot = "0.1"
|
||||||
pollster = "0.4"
|
pollster = "0.4"
|
||||||
|
rand = "0.9"
|
||||||
rfd = { version = "0.15", default-features = false, features = ["xdg-portal", "async-std"]}
|
rfd = { version = "0.15", default-features = false, features = ["xdg-portal", "async-std"]}
|
||||||
rtrb = "0.3"
|
rtrb = "0.3"
|
||||||
rubato = "0.16"
|
rubato = "0.16"
|
||||||
|
|
|
@ -16,6 +16,7 @@ use anyhow::Result;
|
||||||
use atomic::Atomic;
|
use atomic::Atomic;
|
||||||
use bytemuck::NoUninit;
|
use bytemuck::NoUninit;
|
||||||
use egui_notify::Toast;
|
use egui_notify::Toast;
|
||||||
|
use rand::Rng;
|
||||||
use tracing::{error, warn};
|
use tracing::{error, warn};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -78,10 +79,21 @@ impl Cart {
|
||||||
.create(true)
|
.create(true)
|
||||||
.truncate(false)
|
.truncate(false)
|
||||||
.open(sram_path(rom_path, sim_id))?;
|
.open(sram_path(rom_path, sim_id))?;
|
||||||
sram_file.set_len(8 * 1024)?;
|
|
||||||
|
|
||||||
let mut sram = vec![];
|
let sram = if sram_file.metadata()?.len() == 0 {
|
||||||
sram_file.read_to_end(&mut sram)?;
|
// new SRAM file, randomize the contents
|
||||||
|
let mut sram = vec![0; 8 * 1024];
|
||||||
|
let mut rng = rand::rng();
|
||||||
|
for dst in sram.iter_mut().step_by(2) {
|
||||||
|
*dst = rng.random();
|
||||||
|
}
|
||||||
|
sram
|
||||||
|
} else {
|
||||||
|
let mut sram = Vec::with_capacity(8 * 1024);
|
||||||
|
sram_file.read_to_end(&mut sram)?;
|
||||||
|
sram
|
||||||
|
};
|
||||||
|
|
||||||
Ok(Cart {
|
Ok(Cart {
|
||||||
rom_path: rom_path.to_path_buf(),
|
rom_path: rom_path.to_path_buf(),
|
||||||
rom,
|
rom,
|
||||||
|
|
Loading…
Reference in New Issue