adds support for showing/hiding the 3 windows
- memory - video - registers
This commit is contained in:
parent
d06bc3fd87
commit
6fe644ef46
@ -35,6 +35,7 @@ fn hello_world_window(ui: &Ui) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone)]
|
||||||
struct UiState {
|
struct UiState {
|
||||||
pub show_registers: bool,
|
pub show_registers: bool,
|
||||||
pub show_memory: bool,
|
pub show_memory: bool,
|
||||||
@ -57,16 +58,20 @@ fn main() {
|
|||||||
let mut system = Chip8Computer::default();
|
let mut system = Chip8Computer::default();
|
||||||
let mut ui_state = UiState::default();
|
let mut ui_state = UiState::default();
|
||||||
support::simple_init(file!(), move |_, ui| {
|
support::simple_init(file!(), move |_, ui| {
|
||||||
|
EmmaGui::system_controls(&mut system, &mut ui_state, ui);
|
||||||
|
|
||||||
// hello_world_window(ui);
|
if ui_state.show_registers {
|
||||||
|
EmmaGui::registers_view(&system, ui);
|
||||||
|
}
|
||||||
|
|
||||||
EmmaGui::system_controls(&mut system, ui);
|
if ui_state.show_video {
|
||||||
|
EmmaGui::video_display(&system, ui);
|
||||||
EmmaGui::registers_view(&system, ui);
|
}
|
||||||
let active_instruction = system.registers.peek_pc();
|
|
||||||
EmmaGui::hex_memory_display(system.memory.clone(), (0x100, 0x10), active_instruction as i16, ui);
|
|
||||||
EmmaGui::video_display(&system, ui);
|
|
||||||
|
|
||||||
|
if ui_state.show_memory {
|
||||||
|
let active_instruction = system.registers.peek_pc();
|
||||||
|
EmmaGui::hex_memory_display(system.memory.clone(), (0x100, 0x10), active_instruction as i16, ui);
|
||||||
|
}
|
||||||
// EmmaGui::system_memory_render(system.memory, ui);
|
// EmmaGui::system_memory_render(system.memory, ui);
|
||||||
|
|
||||||
// system.memory.gui_render(ui);
|
// system.memory.gui_render(ui);
|
||||||
|
|||||||
@ -7,9 +7,11 @@ use imgui::{Condition, ImColor32, Ui};
|
|||||||
use emmaemu::chip8::computer::Chip8Computer;
|
use emmaemu::chip8::computer::Chip8Computer;
|
||||||
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||||
use emmaemu::constants::{CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH};
|
use emmaemu::constants::{CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH};
|
||||||
|
use crate::UiState;
|
||||||
|
|
||||||
|
|
||||||
pub struct EmmaGui {}
|
pub struct EmmaGui {
|
||||||
|
}
|
||||||
|
|
||||||
const CELL_WIDTH: i32 = 5i32;
|
const CELL_WIDTH: i32 = 5i32;
|
||||||
const CELL_HEIGHT: i32 = 5i32;
|
const CELL_HEIGHT: i32 = 5i32;
|
||||||
@ -17,9 +19,10 @@ const CELL_HEIGHT: i32 = 5i32;
|
|||||||
impl EmmaGui {
|
impl EmmaGui {
|
||||||
pub fn video_display(system_to_control: &Chip8Computer, ui: &Ui) {
|
pub fn video_display(system_to_control: &Chip8Computer, ui: &Ui) {
|
||||||
// draw area size
|
// draw area size
|
||||||
let draw_area_size = ui.window_size();
|
let draw_area_size = ui.io().display_size;
|
||||||
let cell_width = draw_area_size[0] as i32 / 64;
|
let cell_width = ((draw_area_size[0] as i32 / 64) * 6) / 10;
|
||||||
let cell_height = draw_area_size[1] as i32 / 32;
|
let cell_height = ((draw_area_size[1] as i32 / 32) * 6) / 10;
|
||||||
|
|
||||||
|
|
||||||
ui.window(format!("Display {cell_width}x{cell_height}"))
|
ui.window(format!("Display {cell_width}x{cell_height}"))
|
||||||
.size([300.0, 300.0], Condition::FirstUseEver)
|
.size([300.0, 300.0], Condition::FirstUseEver)
|
||||||
@ -45,7 +48,7 @@ impl EmmaGui {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
pub fn system_controls(system_to_control: &mut Chip8Computer, ui: &Ui) {
|
pub fn system_controls(system_to_control: &mut Chip8Computer, gui_state: &mut UiState, ui: &Ui) {
|
||||||
ui.window("!!!! CONTROLS !!!!")
|
ui.window("!!!! CONTROLS !!!!")
|
||||||
.size([200.0, 200.0], Condition::FirstUseEver)
|
.size([200.0, 200.0], Condition::FirstUseEver)
|
||||||
.build(|| {
|
.build(|| {
|
||||||
@ -77,6 +80,10 @@ impl EmmaGui {
|
|||||||
println!("{}", system_to_control.dump_registers_to_string());
|
println!("{}", system_to_control.dump_registers_to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ui.checkbox("Show Memory", &mut gui_state.show_memory);
|
||||||
|
ui.checkbox("Show Video", &mut gui_state.show_video);
|
||||||
|
ui.checkbox("Show Registers", &mut gui_state.show_registers);
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1488,4 +1488,10 @@ mod test {
|
|||||||
Chip8CpuInstructions::LdVxK(0x1).execute(&mut x);
|
Chip8CpuInstructions::LdVxK(0x1).execute(&mut x);
|
||||||
assert!(matches!(x.state, WaitingForKey));
|
assert!(matches!(x.state, WaitingForKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn f6_fail_hard_test() {
|
||||||
|
let mut x = Chip8Computer::new();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user