rename to gemma
add gemmaegui
This commit is contained in:
parent
067164c657
commit
4217571ded
5
.idea/.gitignore
generated
vendored
5
.idea/.gitignore
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/trevors_chip8_toy.iml" filepath="$PROJECT_DIR$/.idea/trevors_chip8_toy.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
BIN
1-chip8-logo.ch8
BIN
1-chip8-logo.ch8
Binary file not shown.
2172
Cargo.lock
generated
2172
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
members = ["emma"]
|
members = ["gemma", "gemmaegui"]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
BIN
coraxhard.ch8
BIN
coraxhard.ch8
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "emmaemu"
|
name = "gemmaemu"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
autobenches = true
|
autobenches = true
|
||||||
@ -1,7 +1,7 @@
|
|||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
use std::fs::DirEntry;
|
use std::fs::DirEntry;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use emmaemu::{
|
use gemmaemu::{
|
||||||
chip8::computer::Chip8Computer,
|
chip8::computer::Chip8Computer,
|
||||||
constants::{CHIP8_MEMORY_SIZE, CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH},
|
constants::{CHIP8_MEMORY_SIZE, CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH},
|
||||||
};
|
};
|
||||||
@ -9,7 +9,7 @@ use imgui::*;
|
|||||||
use ratatui::symbols::half_block;
|
use ratatui::symbols::half_block;
|
||||||
use sys::{ImColor, ImVec2, ImVector_ImU32};
|
use sys::{ImColor, ImVec2, ImVector_ImU32};
|
||||||
use rand::random;
|
use rand::random;
|
||||||
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
use gemmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||||
use support::emmagui_support::EmmaGui;
|
use support::emmagui_support::EmmaGui;
|
||||||
mod support;
|
mod support;
|
||||||
|
|
||||||
@ -5,9 +5,9 @@ use std::thread::sleep;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use imgui::{Condition, ImColor32, Ui};
|
use imgui::{Condition, ImColor32, Ui};
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use emmaemu::chip8::computer::Chip8Computer;
|
use gemmaemu::chip8::computer::Chip8Computer;
|
||||||
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
use gemmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||||
use emmaemu::constants::{CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH};
|
use gemmaemu::constants::{CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH};
|
||||||
use crate::UiState;
|
use crate::UiState;
|
||||||
|
|
||||||
|
|
||||||
@ -41,6 +41,9 @@ impl Default for Chip8Computer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Chip8Computer {
|
impl Chip8Computer {
|
||||||
|
pub fn reset(&mut self) -> Self{
|
||||||
|
Self::default()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn dump_keypad_to_string(&self) -> String {
|
pub fn dump_keypad_to_string(&self) -> String {
|
||||||
self.keypad.format_as_string()
|
self.keypad.format_as_string()
|
||||||
9
gemmaegui/Cargo.toml
Normal file
9
gemmaegui/Cargo.toml
Normal file
@ -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"
|
||||||
104
gemmaegui/src/bin/gemmaegui.rs
Normal file
104
gemmaegui/src/bin/gemmaegui.rs
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user