From fc9a54122b65dbe4d6da13f4309c1060183a62ac Mon Sep 17 00:00:00 2001 From: kirjavascript Date: Sat, 11 Mar 2023 02:40:51 +0000 Subject: [PATCH] add ascii output --- emu/src/rom.rs | 4 ++++ frontend/src/app.rs | 2 +- frontend/src/debug/mod.rs | 20 ++++++++++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/emu/src/rom.rs b/emu/src/rom.rs index cb97a44..450cef4 100644 --- a/emu/src/rom.rs +++ b/emu/src/rom.rs @@ -22,6 +22,10 @@ impl ROM { ((self.read_word(addr) as u32) << 16) | self.read_word(addr + 2) as u32 } + pub fn size(&self) -> usize { + self.bytes.len() + } + pub fn read_string(&self, range: std::ops::Range) -> String { if range.end >= self.bytes.len() { return format!("end {} >= length {}", range.end, self.bytes.len()) diff --git a/frontend/src/app.rs b/frontend/src/app.rs index 465067e..cbca501 100644 --- a/frontend/src/app.rs +++ b/frontend/src/app.rs @@ -36,7 +36,7 @@ impl App { // fonts // .families - // .entry(egui::FontFamily::Monospace) + // .entry(egui::FontFamily::Proportional) // .or_default() // .push("Hack".to_string()); diff --git a/frontend/src/debug/mod.rs b/frontend/src/debug/mod.rs index 36f6102..243bab4 100644 --- a/frontend/src/debug/mod.rs +++ b/frontend/src/debug/mod.rs @@ -22,12 +22,20 @@ impl Debug { palette::palette_window(&ctx, &emu); self.vram.render(&ctx, &emu); + const ASCII: &str = r##"................................ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~................................. ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ"##; + egui::Window::new("memory") .show(ctx, |ui| { + // TODO: difference accessors + + // let tabs = [ + // (0xFFFF, &emu.core.mem.ram), + // ]; + // emu.core.mem.ram let bytes_row = 16; - let total_bytes = 0x10000; + let total_bytes = 0xFFFF; let rows = total_bytes / bytes_row; egui::ScrollArea::vertical() @@ -38,11 +46,15 @@ impl Debug { let bytes = (offset..offset+bytes_row) .enumerate() .map(|(idx, offset)| { - format!(" {:02x}", emu.core.mem.ram[idx + offset]) + format!(" {:02X}", emu.core.mem.ram[idx + offset]) }).collect::(); - - ui.label(format!("{:02x} {}", i, bytes)); + let ascii = (offset..offset+bytes_row) + .enumerate() + .map(|(idx, offset)| { + format!("{}", ASCII.chars().nth(emu.core.mem.ram[idx + offset] as _).unwrap_or('.')) + }).collect::(); + ui.monospace(format!("{:04X} {} {}", i, bytes, ascii)); } });