From 4217571ded11a688534febf5244a5acba2a36468 Mon Sep 17 00:00:00 2001 From: Trevor Merritt Date: Wed, 9 Oct 2024 15:16:47 -0400 Subject: [PATCH] rename to gemma add gemmaegui --- .idea/.gitignore | 5 - .idea/modules.xml | 8 - .idea/vcs.xml | 6 - 1-chip8-logo.ch8 | Bin 260 -> 0 bytes Cargo.lock | 2172 ++++++++++++++++- Cargo.toml | 5 +- coraxhard.ch8 | Bin 761 -> 0 bytes coverage.sh | 0 {emma => gemma}/Cargo.toml | 2 +- {emma => gemma}/src/bin/emma.rs | 0 {emma => gemma}/src/bin/emmagui.rs | 4 +- .../src/bin/font/text_rendering.rs | 0 {emma => gemma}/src/bin/support/clipboard.rs | 0 .../src/bin/support/emmagui_support.rs | 6 +- {emma => gemma}/src/bin/support/mod.rs | 0 {emma => gemma}/src/chip8/computer.rs | 3 + {emma => gemma}/src/chip8/cpu_states.rs | 0 {emma => gemma}/src/chip8/delay_timer.rs | 0 {emma => gemma}/src/chip8/instructions.rs | 0 {emma => gemma}/src/chip8/keypad.rs | 0 {emma => gemma}/src/chip8/registers.rs | 0 {emma => gemma}/src/chip8/sound_timer.rs | 0 {emma => gemma}/src/chip8/stack.rs | 0 {emma => gemma}/src/chip8/system_memory.rs | 0 {emma => gemma}/src/chip8/util.rs | 0 {emma => gemma}/src/chip8/video.rs | 0 {emma => gemma}/src/constants.rs | 0 {emma => gemma}/src/lib.rs | 0 {emma => gemma}/tests/computer_tests.rs | 0 gemmaegui/Cargo.toml | 9 + gemmaegui/src/bin/gemmaegui.rs | 104 + 31 files changed, 2240 insertions(+), 84 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 1-chip8-logo.ch8 delete mode 100644 coraxhard.ch8 delete mode 100644 coverage.sh rename {emma => gemma}/Cargo.toml (96%) rename {emma => gemma}/src/bin/emma.rs (100%) rename {emma => gemma}/src/bin/emmagui.rs (97%) rename {emma => gemma}/src/bin/font/text_rendering.rs (100%) rename {emma => gemma}/src/bin/support/clipboard.rs (100%) rename {emma => gemma}/src/bin/support/emmagui_support.rs (98%) rename {emma => gemma}/src/bin/support/mod.rs (100%) rename {emma => gemma}/src/chip8/computer.rs (98%) rename {emma => gemma}/src/chip8/cpu_states.rs (100%) rename {emma => gemma}/src/chip8/delay_timer.rs (100%) rename {emma => gemma}/src/chip8/instructions.rs (100%) rename {emma => gemma}/src/chip8/keypad.rs (100%) rename {emma => gemma}/src/chip8/registers.rs (100%) rename {emma => gemma}/src/chip8/sound_timer.rs (100%) rename {emma => gemma}/src/chip8/stack.rs (100%) rename {emma => gemma}/src/chip8/system_memory.rs (100%) rename {emma => gemma}/src/chip8/util.rs (100%) rename {emma => gemma}/src/chip8/video.rs (100%) rename {emma => gemma}/src/constants.rs (100%) rename {emma => gemma}/src/lib.rs (100%) rename {emma => gemma}/tests/computer_tests.rs (100%) create mode 100644 gemmaegui/Cargo.toml create mode 100644 gemmaegui/src/bin/gemmaegui.rs diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 4644b2a..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/1-chip8-logo.ch8 b/1-chip8-logo.ch8 deleted file mode 100644 index 19c5cf30f469f86fce62351b46c5a68454d93429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmZR0kjR+8u_)kze1gEDcpxdUC=W;~EUE>P8jE^>q`{)u7vvKKfT~sjc>;@e0!fKQ zCxE2FqU%6XW6?7pX|U+)1$iMqekKrLV34;jeDL(aiv_$|8X6i53=%tbSXkKaXOLXF zci~(H1|C^iMqb&ujK?)KHPsmye*8Ii3u8sE(r%6T-=WO zB430%IN=}%-f$3y8ywuvo1TM%pmG)L;!wZuHIdwsy!^iJeeZi8Y1Hfz`(>9K@0jT6 z!|O0RNqYC-4?fHN>YzR>IW4yh2PX;q{E|Ryv>`f8hE+JsBzo9_7^MzJxpZwQSKv68 z@uDNMo>ky;Zm(q)%3daM;}zBJHTqWvH-;tHU%Jg!%MhE4Vwk;y`jt8{%MfWy+9$Lf zw8&|BEPQ0;XOZubyLGP>Zdh&V3u}rh4~ z-Xwf_Zr4%fo1tU1T4$p+IGsJU*@iaj!t~5}$>7ZyWoww7PmS{EW>a@-e&@G?lPfj#wF^yMUuo*7 z_cLXvRn&@9rJxwm71ZSfsot_%Wqwo6^gD|DL)^u Self{ + Self::default() + } pub fn dump_keypad_to_string(&self) -> String { self.keypad.format_as_string() diff --git a/emma/src/chip8/cpu_states.rs b/gemma/src/chip8/cpu_states.rs similarity index 100% rename from emma/src/chip8/cpu_states.rs rename to gemma/src/chip8/cpu_states.rs diff --git a/emma/src/chip8/delay_timer.rs b/gemma/src/chip8/delay_timer.rs similarity index 100% rename from emma/src/chip8/delay_timer.rs rename to gemma/src/chip8/delay_timer.rs diff --git a/emma/src/chip8/instructions.rs b/gemma/src/chip8/instructions.rs similarity index 100% rename from emma/src/chip8/instructions.rs rename to gemma/src/chip8/instructions.rs diff --git a/emma/src/chip8/keypad.rs b/gemma/src/chip8/keypad.rs similarity index 100% rename from emma/src/chip8/keypad.rs rename to gemma/src/chip8/keypad.rs diff --git a/emma/src/chip8/registers.rs b/gemma/src/chip8/registers.rs similarity index 100% rename from emma/src/chip8/registers.rs rename to gemma/src/chip8/registers.rs diff --git a/emma/src/chip8/sound_timer.rs b/gemma/src/chip8/sound_timer.rs similarity index 100% rename from emma/src/chip8/sound_timer.rs rename to gemma/src/chip8/sound_timer.rs diff --git a/emma/src/chip8/stack.rs b/gemma/src/chip8/stack.rs similarity index 100% rename from emma/src/chip8/stack.rs rename to gemma/src/chip8/stack.rs diff --git a/emma/src/chip8/system_memory.rs b/gemma/src/chip8/system_memory.rs similarity index 100% rename from emma/src/chip8/system_memory.rs rename to gemma/src/chip8/system_memory.rs diff --git a/emma/src/chip8/util.rs b/gemma/src/chip8/util.rs similarity index 100% rename from emma/src/chip8/util.rs rename to gemma/src/chip8/util.rs diff --git a/emma/src/chip8/video.rs b/gemma/src/chip8/video.rs similarity index 100% rename from emma/src/chip8/video.rs rename to gemma/src/chip8/video.rs diff --git a/emma/src/constants.rs b/gemma/src/constants.rs similarity index 100% rename from emma/src/constants.rs rename to gemma/src/constants.rs diff --git a/emma/src/lib.rs b/gemma/src/lib.rs similarity index 100% rename from emma/src/lib.rs rename to gemma/src/lib.rs diff --git a/emma/tests/computer_tests.rs b/gemma/tests/computer_tests.rs similarity index 100% rename from emma/tests/computer_tests.rs rename to gemma/tests/computer_tests.rs diff --git a/gemmaegui/Cargo.toml b/gemmaegui/Cargo.toml new file mode 100644 index 0000000..d59bc8a --- /dev/null +++ b/gemmaegui/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "gemmaegui" +version = "0.1.0" +edition = "2021" + +[dependencies] +gemmaemu = { path = "../gemma" } +egui = "0.29.1" +eframe = "0.29.1" diff --git a/gemmaegui/src/bin/gemmaegui.rs b/gemmaegui/src/bin/gemmaegui.rs new file mode 100644 index 0000000..481b441 --- /dev/null +++ b/gemmaegui/src/bin/gemmaegui.rs @@ -0,0 +1,104 @@ + +use eframe::egui; +use egui::Ui; +use gemmaemu::chip8::computer::Chip8Computer; + +struct EmmaEGuiState { + pub display_video: bool, + pub display_memory: bool, + pub display_registers: bool +} + +impl Default for EmmaEGuiState { + fn default() -> Self { + Self { display_video: true, + display_memory: true, + display_registers: true } + } +} + +fn controls_view(mut system: &mut Chip8Computer, state: &mut EmmaEGuiState, ui: &mut Ui) { + if ui.button("Step").clicked() { + system.step_system(); + } + if ui.button("Start").clicked() { + println!("Start"); + } + if ui.button("Stop").clicked() { + println!("STOP"); + + } + if ui.button("Reset").clicked() { + + } + + ui.checkbox(&mut state.display_memory, "Display Memory"); + ui.checkbox(&mut state.display_video, "Display Video"); + ui.checkbox(&mut state.display_registers, "Display Registers"); + +} + +fn registers_view(system: &Chip8Computer, ui:& mut Ui) { + ui.label(format!("V0-7: {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} ", + system.registers.peek(0x00), + system.registers.peek(0x01), + system.registers.peek(0x02), + system.registers.peek(0x03), + system.registers.peek(0x04), + system.registers.peek(0x05), + system.registers.peek(0x06), + system.registers.peek(0x07) +)); +ui.label(format!("V8-F: {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} {:02x} ", + system.registers.peek(0x08), + system.registers.peek(0x09), + system.registers.peek(0x0A), + system.registers.peek(0x0B), + system.registers.peek(0x0C), + system.registers.peek(0x0D), + system.registers.peek(0x0E), + system.registers.peek(0x0F) +)); +ui.label(format!("PC: {:04x}\tI: {:04x}" , system.registers.peek_pc(), system.registers.peek_i())); +} + +fn video_view(system: &Chip8Computer, ui: &mut Ui) { + ui.label("Video goes here"); +} + +fn memory_view(system: &Chip8Computer, ui: &mut Ui) { + ui.label("Memory View"); +} + + +fn main() -> eframe::Result { + println!("Taxation is Theft"); + + let options = eframe::NativeOptions { + viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]), + ..Default::default() + }; + + let mut state = EmmaEGuiState::default(); + let mut computer = Chip8Computer::new(); + + eframe::run_simple_native("EGUI Emma", options, move |ctx, _frame| { + egui::CentralPanel::default().show(ctx, |ui| { + ui.heading("Gemma"); + + controls_view(&mut computer, &mut state, ui); + + if state.display_memory { + memory_view(&computer, ui); + } + + if state.display_video { + video_view(&computer, ui); + } + + if state.display_registers { + registers_view(&computer, ui); + } + }); + }) +}