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]
|
||||
members = ["emma"]
|
||||
members = ["gemma", "gemmaegui"]
|
||||
resolver = "2"
|
||||
|
||||
|
||||
BIN
coraxhard.ch8
BIN
coraxhard.ch8
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "emmaemu"
|
||||
name = "gemmaemu"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
autobenches = true
|
||||
@ -1,7 +1,7 @@
|
||||
use std::default::Default;
|
||||
use std::fs::DirEntry;
|
||||
use std::time::Instant;
|
||||
use emmaemu::{
|
||||
use gemmaemu::{
|
||||
chip8::computer::Chip8Computer,
|
||||
constants::{CHIP8_MEMORY_SIZE, CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH},
|
||||
};
|
||||
@ -9,7 +9,7 @@ use imgui::*;
|
||||
use ratatui::symbols::half_block;
|
||||
use sys::{ImColor, ImVec2, ImVector_ImU32};
|
||||
use rand::random;
|
||||
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||
use gemmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||
use support::emmagui_support::EmmaGui;
|
||||
mod support;
|
||||
|
||||
@ -5,9 +5,9 @@ use std::thread::sleep;
|
||||
use std::time::Duration;
|
||||
use imgui::{Condition, ImColor32, Ui};
|
||||
use log::debug;
|
||||
use emmaemu::chip8::computer::Chip8Computer;
|
||||
use emmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||
use emmaemu::constants::{CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH};
|
||||
use gemmaemu::chip8::computer::Chip8Computer;
|
||||
use gemmaemu::chip8::system_memory::Chip8SystemMemory;
|
||||
use gemmaemu::constants::{CHIP8_VIDEO_HEIGHT, CHIP8_VIDEO_WIDTH};
|
||||
use crate::UiState;
|
||||
|
||||
|
||||
@ -41,6 +41,9 @@ impl Default for Chip8Computer {
|
||||
}
|
||||
|
||||
impl Chip8Computer {
|
||||
pub fn reset(&mut self) -> Self{
|
||||
Self::default()
|
||||
}
|
||||
|
||||
pub fn dump_keypad_to_string(&self) -> 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