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 {
|
||||
pub show_registers: bool,
|
||||
pub show_memory: bool,
|
||||
@ -57,16 +58,20 @@ fn main() {
|
||||
let mut system = Chip8Computer::default();
|
||||
let mut ui_state = UiState::default();
|
||||
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);
|
||||
|
||||
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_video {
|
||||
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);
|
||||
|
||||
// system.memory.gui_render(ui);
|
||||
|
||||
@ -7,9 +7,11 @@ use imgui::{Condition, ImColor32, Ui};
|
||||
use emmaemu::chip8::computer::Chip8Computer;
|
||||
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||
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_HEIGHT: i32 = 5i32;
|
||||
@ -17,9 +19,10 @@ const CELL_HEIGHT: i32 = 5i32;
|
||||
impl EmmaGui {
|
||||
pub fn video_display(system_to_control: &Chip8Computer, ui: &Ui) {
|
||||
// draw area size
|
||||
let draw_area_size = ui.window_size();
|
||||
let cell_width = draw_area_size[0] as i32 / 64;
|
||||
let cell_height = draw_area_size[1] as i32 / 32;
|
||||
let draw_area_size = ui.io().display_size;
|
||||
let cell_width = ((draw_area_size[0] as i32 / 64) * 6) / 10;
|
||||
let cell_height = ((draw_area_size[1] as i32 / 32) * 6) / 10;
|
||||
|
||||
|
||||
ui.window(format!("Display {cell_width}x{cell_height}"))
|
||||
.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 !!!!")
|
||||
.size([200.0, 200.0], Condition::FirstUseEver)
|
||||
.build(|| {
|
||||
@ -77,6 +80,10 @@ impl EmmaGui {
|
||||
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);
|
||||
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