New implementation for reading/showing vram

This commit is contained in:
2025-02-15 18:33:17 -05:00
parent 75779f2b24
commit 57eebb5874
10 changed files with 508 additions and 356 deletions
+8 -15
View File
@@ -18,8 +18,8 @@ use crate::{
controller::ControllerManager,
emulator::{EmulatorClient, EmulatorCommand, SimId},
input::MappingProvider,
memory::MemoryMonitor,
persistence::Persistence,
vram::VramLoader,
window::{
AboutWindow, AppWindow, BgMapWindow, CharacterDataWindow, GameWindow, GdbServerWindow,
InputWindow,
@@ -40,11 +40,11 @@ fn load_icon() -> anyhow::Result<IconData> {
pub struct Application {
icon: Option<Arc<IconData>>,
wgpu: WgpuState,
vram: Arc<VramLoader>,
client: EmulatorClient,
proxy: EventLoopProxy<UserEvent>,
mappings: MappingProvider,
controllers: ControllerManager,
memory: MemoryMonitor,
persistence: Persistence,
viewports: HashMap<ViewportId, Viewport>,
focused: Option<ViewportId>,
@@ -62,6 +62,7 @@ impl Application {
let persistence = Persistence::new();
let mappings = MappingProvider::new(persistence.clone());
let controllers = ControllerManager::new(client.clone(), &mappings);
let memory = MemoryMonitor::new(client.clone());
{
let mappings = mappings.clone();
let proxy = proxy.clone();
@@ -70,10 +71,10 @@ impl Application {
Self {
icon,
wgpu,
vram: Arc::new(VramLoader::new(client.clone())),
client,
proxy,
mappings,
memory,
controllers,
persistence,
viewports: HashMap::new(),
@@ -89,13 +90,7 @@ impl Application {
}
self.viewports.insert(
viewport_id,
Viewport::new(
event_loop,
&self.wgpu,
self.icon.clone(),
self.vram.clone(),
window,
),
Viewport::new(event_loop, &self.wgpu, self.icon.clone(), window),
);
}
}
@@ -210,11 +205,11 @@ impl ApplicationHandler<UserEvent> for Application {
self.open(event_loop, Box::new(about));
}
UserEvent::OpenCharacterData(sim_id) => {
let vram = CharacterDataWindow::new(sim_id);
let vram = CharacterDataWindow::new(sim_id, &mut self.memory);
self.open(event_loop, Box::new(vram));
}
UserEvent::OpenBgMap(sim_id) => {
let bgmap = BgMapWindow::new(sim_id);
let bgmap = BgMapWindow::new(sim_id, &mut self.memory);
self.open(event_loop, Box::new(bgmap));
}
UserEvent::OpenDebugger(sim_id) => {
@@ -328,7 +323,6 @@ impl Viewport {
event_loop: &ActiveEventLoop,
wgpu: &WgpuState,
icon: Option<Arc<IconData>>,
vram: Arc<VramLoader>,
mut app: Box<dyn AppWindow>,
) -> Self {
let ctx = Context::default();
@@ -350,7 +344,6 @@ impl Viewport {
s.visuals.menu_rounding = Default::default();
});
egui_extras::install_image_loaders(&ctx);
ctx.add_image_loader(vram);
let wgpu_config = egui_wgpu::WgpuConfiguration {
present_mode: wgpu::PresentMode::AutoNoVsync,
@@ -374,7 +367,7 @@ impl Viewport {
let (window, state) = create_window_and_state(&ctx, event_loop, &builder, &mut painter);
egui_winit::update_viewport_info(&mut info, &ctx, &window, true);
app.on_init(painter.render_state().as_ref().unwrap());
app.on_init(&ctx, painter.render_state().as_ref().unwrap());
Self {
painter,
ctx,