mirror of
https://github.com/JanNeuendorf/SVC16.git
synced 2025-06-03 01:50:18 +00:00
Replaced all arrays with Vec to avoid Stack-Overflow on Window(#14)
This commit is contained in:
parent
32d83e93d2
commit
920c9f02e6
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -548,7 +548,7 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "svc16"
|
||||
version = "1.0.0-beta1"
|
||||
version = "1.0.0-beta2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "svc16"
|
||||
version = "1.0.0-beta1"
|
||||
version = "1.0.0-beta2"
|
||||
edition = "2021"
|
||||
authors = ["Jan Neuendorf"]
|
||||
description = "An emulator for a simple virtual computer"
|
||||
|
@ -21,9 +21,9 @@ const XOR: u16 = 14;
|
||||
const SYNC: u16 = 15;
|
||||
|
||||
pub struct Engine {
|
||||
memory: [u16; MEMSIZE],
|
||||
screen_buffer: [u16; MEMSIZE],
|
||||
utility_buffer: [u16; MEMSIZE],
|
||||
memory: Vec<u16>,
|
||||
screen_buffer: Vec<u16>,
|
||||
utility_buffer: Vec<u16>,
|
||||
instruction_pointer: u16,
|
||||
pos_code_dest: u16,
|
||||
key_code_dest: u16,
|
||||
@ -46,7 +46,7 @@ impl Engine {
|
||||
T: IntoIterator<Item = u16>,
|
||||
{
|
||||
let mut iter = state.into_iter();
|
||||
let mut memory = [0_u16; MEMSIZE];
|
||||
let mut memory = vec![0; MEMSIZE];
|
||||
for i in 0..MEMSIZE {
|
||||
match iter.next() {
|
||||
Some(val) => {
|
||||
@ -59,8 +59,8 @@ impl Engine {
|
||||
}
|
||||
Self {
|
||||
memory,
|
||||
screen_buffer: [0; MEMSIZE],
|
||||
utility_buffer: [0; MEMSIZE],
|
||||
screen_buffer: vec![0; MEMSIZE],
|
||||
utility_buffer: vec![0; MEMSIZE],
|
||||
instruction_pointer: 0,
|
||||
pos_code_dest: 0,
|
||||
key_code_dest: 0,
|
||||
@ -75,18 +75,13 @@ impl Engine {
|
||||
self.set(self.pos_code_dest, pos_code);
|
||||
self.set(self.key_code_dest, key_code);
|
||||
}
|
||||
pub fn perform_sync(
|
||||
&mut self,
|
||||
pos_code: u16,
|
||||
key_code: u16,
|
||||
buffer: &mut [u16; MEMSIZE],
|
||||
) -> () {
|
||||
pub fn perform_sync(&mut self, pos_code: u16, key_code: u16, buffer: &mut Vec<u16>) -> () {
|
||||
self.sync_called = false;
|
||||
*buffer = self.screen_buffer;
|
||||
*buffer = self.screen_buffer.clone();
|
||||
self.set_input(pos_code, key_code);
|
||||
if self.expansion_triggered {
|
||||
self.expansion_triggered = false;
|
||||
self.utility_buffer = [0; MEMSIZE];
|
||||
self.utility_buffer = vec![0; MEMSIZE];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ async fn main() -> Result<()> {
|
||||
let mut cli = Cli::parse();
|
||||
print_keybinds();
|
||||
|
||||
let mut buffer = [Color::from_rgba(255, 255, 255, 255); 256 * 256];
|
||||
let mut buffer = vec![Color::from_rgba(255, 255, 255, 255); 256 * 256];
|
||||
let mut image = Image::gen_image_color(256, 256, Color::from_rgba(0, 0, 0, 255));
|
||||
let texture = Texture2D::from_image(&image);
|
||||
if cli.linear_filtering {
|
||||
@ -43,7 +43,7 @@ async fn main() -> Result<()> {
|
||||
texture.set_filter(FilterMode::Nearest);
|
||||
}
|
||||
|
||||
let mut raw_buffer = [0 as u16; 256 * 256];
|
||||
let mut raw_buffer = vec![0 as u16; 256 * 256];
|
||||
let mut engine = Engine::new(read_u16s_from_file(&cli.program)?);
|
||||
let mut paused = false;
|
||||
let mut ipf = 0;
|
||||
|
@ -40,7 +40,7 @@ fn rgb565_to_argb(rgb565: u16) -> (u8, u8, u8) {
|
||||
(r, g, b)
|
||||
}
|
||||
|
||||
pub fn update_image_buffer(imbuff: &mut [Color; RES * RES], screen: &[u16; RES * RES]) {
|
||||
pub fn update_image_buffer(imbuff: &mut Vec<Color>, screen: &Vec<u16>) {
|
||||
for i in 0..RES * RES {
|
||||
let col = rgb565_to_argb(screen[i]);
|
||||
imbuff[i] = Color {
|
||||
|
Loading…
x
Reference in New Issue
Block a user