feat: Enhance emulator UI and performance features

- Added new UI components for the emulator, including dedicated panels for CPU and APU debugging, improving user interaction and debugging capabilities.
- Implemented a caching mechanism for rendered objects in the DungeonCanvasViewer to optimize performance and reduce rendering time.
- Updated the CMake configuration to include new UI source files, ensuring proper organization and build management.
- Enhanced the theme manager with improved color definitions for better visibility and consistency across the UI.
- Refactored the emulator interface to delegate rendering tasks to the UI layer, streamlining the codebase and improving maintainability.
This commit is contained in:
scawful
2025-10-08 23:38:20 -04:00
parent d2dab43358
commit b5ec0cb637
10 changed files with 1025 additions and 900 deletions

View File

@@ -39,6 +39,7 @@ class Emulator {
auto snes() -> Snes& { return snes_; }
auto running() const -> bool { return running_; }
void set_running(bool running) { running_ = running; }
// Audio backend access
audio::IAudioBackend* audio_backend() { return audio_backend_.get(); }
@@ -49,10 +50,22 @@ class Emulator {
auto wanted_samples() const -> int { return wanted_samples_; }
void set_renderer(gfx::IRenderer* renderer) { renderer_ = renderer; }
// Render access
gfx::IRenderer* renderer() { return renderer_; }
void* ppu_texture() { return ppu_texture_; }
// Turbo mode
bool turbo_mode() const { return turbo_mode_; }
void set_turbo_mode(bool turbo) { turbo_mode_ = turbo; }
// Debugger access
BreakpointManager& breakpoint_manager() { return breakpoint_manager_; }
debug::DisassemblyViewer& disassembly_viewer() { return disassembly_viewer_; }
input::InputManager& input_manager() { return input_manager_; }
bool is_debugging() const { return debugging_; }
void set_debugging(bool debugging) { debugging_ = debugging; }
bool is_initialized() const { return initialized_; }
bool is_snes_initialized() const { return snes_initialized_; }
// AI Agent Integration API
bool IsEmulatorReady() const { return snes_.running() && !rom_data_.empty(); }