diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7bb5d378..548e6100 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -115,12 +115,6 @@ jobs:
cmake_generator: "Visual Studio 17 2022"
cmake_generator_platform: x64
artifact_name: "yaze-windows-x64"
- - name: "Windows ARM64"
- os: windows-2022
- vcpkg_triplet: arm64-windows
- cmake_generator: "Visual Studio 17 2022"
- cmake_generator_platform: ARM64
- artifact_name: "yaze-windows-arm64"
- name: "macOS arm64"
os: macos-14
vcpkg_triplet: arm64-osx
diff --git a/scripts/generate-vs-projects.py b/scripts/generate-vs-projects.py
deleted file mode 100644
index 65539729..00000000
--- a/scripts/generate-vs-projects.py
+++ /dev/null
@@ -1,543 +0,0 @@
-#!/usr/bin/env python3
-"""
-Python script to generate proper Visual Studio project files for YAZE
-This script creates a comprehensive .vcxproj file with all necessary source files
-"""
-
-import os
-import sys
-from pathlib import Path
-
-def generate_vcxproj():
- """Generate the YAZE.vcxproj file with all source files"""
-
- # Source file lists (from CMake files)
- app_core_src = [
- "app/core/controller.cc",
- "app/emu/emulator.cc",
- "app/core/project.cc",
- "app/core/window.cc",
- "app/core/asar_wrapper.cc",
- "app/core/platform/font_loader.cc",
- "app/core/platform/clipboard.cc",
- "app/core/platform/file_dialog.cc"
- ]
-
- app_emu_src = [
- "app/emu/audio/apu.cc",
- "app/emu/audio/spc700.cc",
- "app/emu/audio/dsp.cc",
- "app/emu/audio/internal/addressing.cc",
- "app/emu/audio/internal/instructions.cc",
- "app/emu/cpu/internal/addressing.cc",
- "app/emu/cpu/internal/instructions.cc",
- "app/emu/cpu/cpu.cc",
- "app/emu/video/ppu.cc",
- "app/emu/memory/dma.cc",
- "app/emu/memory/memory.cc",
- "app/emu/snes.cc"
- ]
-
- app_editor_src = [
- "app/editor/editor_manager.cc",
- "app/editor/dungeon/dungeon_editor.cc",
- "app/editor/dungeon/dungeon_room_selector.cc",
- "app/editor/dungeon/dungeon_canvas_viewer.cc",
- "app/editor/dungeon/dungeon_object_selector.cc",
- "app/editor/dungeon/dungeon_toolset.cc",
- "app/editor/dungeon/dungeon_object_interaction.cc",
- "app/editor/dungeon/dungeon_renderer.cc",
- "app/editor/dungeon/dungeon_room_loader.cc",
- "app/editor/dungeon/dungeon_usage_tracker.cc",
- "app/editor/overworld/overworld_editor.cc",
- "app/editor/overworld/overworld_editor_manager.cc",
- "app/editor/sprite/sprite_editor.cc",
- "app/editor/music/music_editor.cc",
- "app/editor/message/message_editor.cc",
- "app/editor/message/message_data.cc",
- "app/editor/message/message_preview.cc",
- "app/editor/code/assembly_editor.cc",
- "app/editor/graphics/screen_editor.cc",
- "app/editor/graphics/graphics_editor.cc",
- "app/editor/graphics/palette_editor.cc",
- "app/editor/overworld/tile16_editor.cc",
- "app/editor/overworld/map_properties.cc",
- "app/editor/graphics/gfx_group_editor.cc",
- "app/editor/overworld/entity.cc",
- "app/editor/system/settings_editor.cc",
- "app/editor/system/command_manager.cc",
- "app/editor/system/extension_manager.cc",
- "app/editor/system/shortcut_manager.cc",
- "app/editor/system/popup_manager.cc",
- "app/test/test_manager.cc"
- ]
-
- app_gfx_src = [
- "app/gfx/arena.cc",
- "app/gfx/background_buffer.cc",
- "app/gfx/bitmap.cc",
- "app/gfx/compression.cc",
- "app/gfx/scad_format.cc",
- "app/gfx/snes_palette.cc",
- "app/gfx/snes_tile.cc",
- "app/gfx/snes_color.cc",
- "app/gfx/tilemap.cc"
- ]
-
- app_zelda3_src = [
- "app/zelda3/hyrule_magic.cc",
- "app/zelda3/overworld/overworld_map.cc",
- "app/zelda3/overworld/overworld.cc",
- "app/zelda3/screen/inventory.cc",
- "app/zelda3/screen/title_screen.cc",
- "app/zelda3/screen/dungeon_map.cc",
- "app/zelda3/sprite/sprite.cc",
- "app/zelda3/sprite/sprite_builder.cc",
- "app/zelda3/music/tracker.cc",
- "app/zelda3/dungeon/room.cc",
- "app/zelda3/dungeon/room_object.cc",
- "app/zelda3/dungeon/object_parser.cc",
- "app/zelda3/dungeon/object_renderer.cc",
- "app/zelda3/dungeon/room_layout.cc",
- "app/zelda3/dungeon/dungeon_editor_system.cc",
- "app/zelda3/dungeon/dungeon_object_editor.cc"
- ]
-
- gui_src = [
- "app/gui/modules/asset_browser.cc",
- "app/gui/modules/text_editor.cc",
- "app/gui/canvas.cc",
- "app/gui/canvas_utils.cc",
- "app/gui/enhanced_palette_editor.cc",
- "app/gui/input.cc",
- "app/gui/style.cc",
- "app/gui/color.cc",
- "app/gui/zeml.cc",
- "app/gui/theme_manager.cc",
- "app/gui/background_renderer.cc"
- ]
-
- util_src = [
- "util/bps.cc",
- "util/flag.cc",
- "util/hex.cc"
- ]
-
- # Combine all source files
- all_source_files = (
- ["yaze.cc", "app/main.cc", "app/rom.cc"] +
- app_core_src + app_emu_src + app_editor_src +
- app_gfx_src + app_zelda3_src + gui_src + util_src
- )
-
- # Header files
- header_files = [
- "incl/yaze.h",
- "incl/zelda.h",
- "src/yaze_config.h.in"
- ]
-
- # Generate the .vcxproj file content
- vcxproj_content = '''
-
-
-
- Debug
- x64
-
-
- Debug
- x86
-
-
- Debug
- ARM64
-
-
- Release
- x64
-
-
- Release
- x86
-
-
- Release
- ARM64
-
-
- RelWithDebInfo
- x64
-
-
- RelWithDebInfo
- x86
-
-
- RelWithDebInfo
- ARM64
-
-
- MinSizeRel
- x64
-
-
- MinSizeRel
- x86
-
-
- MinSizeRel
- ARM64
-
-
-
- 17.0
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}
- Win32Proj
- YAZE
- 10.0
- YAZE
- true
- true
- x86-windows
- x64-windows
- arm64-windows
-
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- true
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- true
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
-
-
- false
- $(SolutionDir)build\\bin\\$(Configuration)\\
- $(SolutionDir)build\\obj\\$(Configuration)\\
- '''
-
- # Add compiler and linker settings for all configurations
- configurations = ["Debug", "Release", "RelWithDebInfo", "MinSizeRel"]
- platforms = ["x64", "x86", "ARM64"]
-
- for config in configurations:
- for platform in platforms:
- is_debug = (config == "Debug")
- debug_flags = "_DEBUG;_CONSOLE;%(PreprocessorDefinitions)" if is_debug else "NDEBUG;_CONSOLE;%(PreprocessorDefinitions)"
- link_incremental = "true" if is_debug else "false"
- generate_debug_info = "false" if config == "MinSizeRel" else "true"
-
- vcxproj_content += f'''
-
-
- Level3
- true
- {debug_flags}
- true
- $(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\\lib;$(ProjectDir)src\\lib\\asar\\src;$(ProjectDir)src\\lib\\asar\\src\\asar;$(ProjectDir)src\\lib\\asar\\src\\asar-dll-bindings\\c;$(ProjectDir)src\\lib\\imgui;$(ProjectDir)src\\lib\\imgui_test_engine;%(AdditionalIncludeDirectories)
- stdcpp23
- true
- true
- MultiThreaded{"Debug" if is_debug else ""}DLL
-
-
- Console
- {generate_debug_info}
- {"false" if is_debug else "true"}
- {"false" if is_debug else "true"}
-
- '''
-
- # Add source files
- vcxproj_content += '''
-
-'''
- for header in header_files:
- vcxproj_content += f' \n'
-
- vcxproj_content += '''
-
-'''
- for source in all_source_files:
- vcxproj_content += f' \n'
-
- vcxproj_content += '''
-
-
-
-
-
-
-
-
-
-
-'''
-
- return vcxproj_content
-
-def generate_solution():
- """Generate the YAZE.sln file"""
- return '''Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "YAZE", "YAZE.vcxproj", "{B2C3D4E5-F6G7-8901-BCDE-F23456789012}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Debug|ARM64 = Debug|ARM64
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- Release|ARM64 = Release|ARM64
- RelWithDebInfo|x64 = RelWithDebInfo|x64
- RelWithDebInfo|x86 = RelWithDebInfo|x86
- RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
- MinSizeRel|x64 = MinSizeRel|x64
- MinSizeRel|x86 = MinSizeRel|x86
- MinSizeRel|ARM64 = MinSizeRel|ARM64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x64.ActiveCfg = Debug|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x64.Build.0 = Debug|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x86.ActiveCfg = Debug|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x86.Build.0 = Debug|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|ARM64.Build.0 = Debug|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x64.ActiveCfg = Release|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x64.Build.0 = Release|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x86.ActiveCfg = Release|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x86.Build.0 = Release|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|ARM64.ActiveCfg = Release|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|ARM64.Build.0 = Release|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x86.Build.0 = MinSizeRel|x86
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|ARM64.ActiveCfg = MinSizeRel|ARM64
- {B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|ARM64.Build.0 = MinSizeRel|ARM64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
- EndGlobalSection
-EndGlobal'''
-
-def main():
- """Main function to generate Visual Studio project files"""
- print("Generating Visual Studio project files for YAZE...")
-
- # Get the project root directory
- script_dir = Path(__file__).parent
- project_root = script_dir.parent
-
- # Generate .vcxproj file
- vcxproj_content = generate_vcxproj()
- vcxproj_path = project_root / "YAZE.vcxproj"
-
- with open(vcxproj_path, 'w', encoding='utf-8') as f:
- f.write(vcxproj_content)
-
- print(f"Generated: {vcxproj_path}")
-
- # Generate .sln file
- solution_content = generate_solution()
- solution_path = project_root / "YAZE.sln"
-
- with open(solution_path, 'w', encoding='utf-8') as f:
- f.write(solution_content)
-
- print(f"Generated: {solution_path}")
-
- print("Visual Studio project files generated successfully!")
- print("")
- print("To build:")
- print("1. Open YAZE.sln in Visual Studio 2022")
- print("2. Ensure vcpkg is installed and configured")
- print("3. Select your desired configuration (Debug/Release) and platform (x64/x86/ARM64)")
- print("4. Build the solution (Ctrl+Shift+B)")
-
-if __name__ == "__main__":
- main()
diff --git a/src/app/editor/overworld/overworld_editor.h b/src/app/editor/overworld/overworld_editor.h
index ecb6ee25..a8d66fbb 100644
--- a/src/app/editor/overworld/overworld_editor.h
+++ b/src/app/editor/overworld/overworld_editor.h
@@ -131,7 +131,7 @@ class OverworldEditor : public Editor, public gfx::GfxContext {
void DrawOverworldMapSettings();
void DrawCustomOverworldMapSettings();
- void RefreshChildMap(int i);
+ void RefreshChildMap(int map_index);
void RefreshOverworldMap();
void RefreshOverworldMapOnDemand(int map_index);
void RefreshChildMapOnDemand(int map_index);
diff --git a/src/app/emu/emulator.cc b/src/app/emu/emulator.cc
index 1b462f74..929dedd1 100644
--- a/src/app/emu/emulator.cc
+++ b/src/app/emu/emulator.cc
@@ -8,7 +8,6 @@
#include "app/emu/cpu/internal/opcodes.h"
#include "app/gui/icons.h"
#include "app/gui/input.h"
-#include "app/gui/zeml.h"
#include "imgui/imgui.h"
#include "imgui_memory_editor.h"
@@ -105,7 +104,76 @@ void Emulator::Run() {
}
}
- gui::zeml::Render(emulator_node_);
+ RenderEmulatorInterface();
+}
+
+void Emulator::RenderEmulatorInterface() {
+ if (ImGui::BeginTable("Emulator", 2, ImGuiTableFlags_Resizable | ImGuiTableFlags_ScrollY)) {
+ ImGui::TableSetupColumn("CPU");
+ ImGui::TableSetupColumn("PPU");
+ ImGui::TableHeadersRow();
+
+ // CPU Column
+ ImGui::TableNextColumn();
+
+ // CPU Register Values
+ if (ImGui::CollapsingHeader("Register Values", ImGuiTreeNodeFlags_DefaultOpen)) {
+ ImGui::BeginChild("##CpuState", ImVec2(0, 100), ImGuiChildFlags_None,
+ ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar);
+ ImGui::Columns(2, "registersColumns");
+
+ ImGui::Text("A: 0x%04X", snes_.cpu().A);
+ ImGui::Text("X: 0x%04X", snes_.cpu().X);
+ ImGui::Text("Y: 0x%04X", snes_.cpu().Y);
+ ImGui::Text("PC: 0x%04X", snes_.cpu().PC);
+ ImGui::Text("SP: 0x%02X", snes_.memory().mutable_sp());
+
+ ImGui::NextColumn();
+
+ ImGui::Text("D: 0x%04X", snes_.cpu().D);
+ ImGui::Text("DB: 0x%02X", snes_.cpu().DB);
+ ImGui::Text("PB: 0x%02X", snes_.cpu().PB);
+ ImGui::Text("PS: 0x%02X", snes_.cpu().status);
+ ImGui::Text("Cycle: %llu", snes_.mutable_cycles());
+
+ ImGui::Columns(1);
+ ImGui::EndChild();
+ }
+
+ // SPC Registers
+ if (ImGui::CollapsingHeader("SPC Registers", ImGuiTreeNodeFlags_DefaultOpen)) {
+ ImGui::BeginChild("##SpcState", ImVec2(0, 100), ImGuiChildFlags_None,
+ ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar);
+ ImGui::Columns(2, "spcRegistersColumns");
+
+ ImGui::Text("A: 0x%02X", snes_.apu().spc700().A);
+ ImGui::Text("X: 0x%02X", snes_.apu().spc700().X);
+ ImGui::Text("Y: 0x%02X", snes_.apu().spc700().Y);
+
+ ImGui::NextColumn();
+
+ ImGui::Text("PC: 0x%04X", snes_.apu().spc700().PC);
+ ImGui::Text("SP: 0x%02X", snes_.apu().spc700().SP);
+ ImGui::Text("PSW: 0x%02X", snes_.apu().spc700().FlagsToByte(snes_.apu().spc700().PSW));
+
+ ImGui::Columns(1);
+ ImGui::EndChild();
+ }
+
+ // CPU Instruction Log
+ RenderCpuInstructionLog(snes_.cpu().instruction_log_);
+
+ // PPU Column
+ ImGui::TableNextColumn();
+
+ // SNES PPU
+ RenderSnesPpu();
+
+ // Breakpoint List
+ RenderBreakpointList();
+
+ ImGui::EndTable();
+ }
}
void Emulator::RenderSnesPpu() {
@@ -132,18 +200,21 @@ void Emulator::RenderSnesPpu() {
}
void Emulator::RenderNavBar() {
- std::string navbar_layout = R"(
- BeginMenuBar {
- BeginMenu title="Options" {
- MenuItem title="Input" {}
- MenuItem title="Audio" {}
- MenuItem title="Video" {}
+ if (ImGui::BeginMenuBar()) {
+ if (ImGui::BeginMenu("Options")) {
+ if (ImGui::MenuItem("Input")) {
+ // Input options logic
}
+ if (ImGui::MenuItem("Audio")) {
+ // Audio options logic
+ }
+ if (ImGui::MenuItem("Video")) {
+ // Video options logic
+ }
+ ImGui::EndMenu();
}
- )";
-
- static auto navbar_node = gui::zeml::Parse(navbar_layout);
- gui::zeml::Render(navbar_node);
+ ImGui::EndMenuBar();
+ }
if (ImGui::Button(ICON_MD_PLAY_ARROW)) {
running_ = true;
diff --git a/src/app/emu/emulator.h b/src/app/emu/emulator.h
index 53a5d431..4ff23919 100644
--- a/src/app/emu/emulator.h
+++ b/src/app/emu/emulator.h
@@ -5,7 +5,6 @@
#include
#include "app/emu/snes.h"
-#include "app/gui/zeml.h"
#include "app/rom.h"
#include "imgui/imgui.h"
@@ -38,74 +37,7 @@ struct EmulatorKeybindings {
*/
class Emulator {
public:
- Emulator() {
- std::string emulator_layout = R"(
- Table id="Emulator" count="2" flags="Resizable|ScrollY" {
- TableSetupColumn title="CPU",
- TableSetupColumn title="PPU",
-
- TableHeadersRow,
- TableNextColumn,
-
- CollapsingHeader id="cpuState" title="Register Values" flags="DefaultOpen" {
- BeginChild id="##CpuState" size="0,100" flags="NoMove|NoScrollbar" {
- Columns id="registersColumns" count="2" {
- Text text="A: 0x%04X" data="cpu.A",
- Text text="D: 0x%04X" data="cpu.D",
- Text text="X: 0x%04X" data="cpu.X",
- Text text="DB: 0x%02X" data="cpu.DB",
- Text text="Y: 0x%04X" data="cpu.Y",
- Text text="PB: 0x%02X" data="cpu.PB",
- Text text="PC: 0x%04X" data="cpu.PC",
- Text text="PS: 0x%02X" data="cpu.status",
- Text text="SP: 0x%02X" data="cpu.SP",
- Text text="Cycle: %d" data="snes.cycle_count",
- }
- }
- }
- CollapsingHeader id="spcState" title="SPC Registers" flags="DefaultOpen" {
- BeginChild id="##SpcState" size="0,100" flags="NoMove|NoScrollbar" {
- Columns id="spcRegistersColumns" count="2" {
- Text text="A: 0x%02X" data="spc.A",
- Text text="PC: 0x%04X" data="spc.PC",
- Text text="X: 0x%02X" data="spc.X",
- Text text="SP: 0x%02X" data="spc.SP",
- Text text="Y: 0x%02X" data="spc.Y",
- Text text="PSW: 0x%02X" data="spc.PSW",
- }
- }
- }
- Function id="CpuInstructionLog",
-
- TableNextColumn,
- Function id="SnesPpu",
- Function id="BreakpointList"
- }
- )";
- const std::map data_bindings = {
- {"cpu.A", &snes_.cpu().A},
- {"cpu.D", &snes_.cpu().D},
- {"cpu.X", &snes_.cpu().X},
- {"cpu.DB", &snes_.cpu().DB},
- {"cpu.Y", &snes_.cpu().Y},
- {"cpu.PB", &snes_.cpu().PB},
- {"cpu.PC", &snes_.cpu().PC},
- {"cpu.status", &snes_.cpu().status},
- {"snes.cycle_count", &snes_.mutable_cycles()},
- {"cpu.SP", &snes_.memory().mutable_sp()},
- {"spc.A", &snes_.apu().spc700().A},
- {"spc.X", &snes_.apu().spc700().X},
- {"spc.Y", &snes_.apu().spc700().Y},
- {"spc.PC", &snes_.apu().spc700().PC},
- {"spc.SP", &snes_.apu().spc700().SP},
- {"spc.PSW", &snes_.apu().spc700().PSW}};
- emulator_node_ = gui::zeml::Parse(emulator_layout, data_bindings);
- Bind(emulator_node_.GetNode("CpuInstructionLog"),
- [&]() { RenderCpuInstructionLog(snes_.cpu().instruction_log_); });
- Bind(emulator_node_.GetNode("SnesPpu"), [&]() { RenderSnesPpu(); });
- Bind(emulator_node_.GetNode("BreakpointList"),
- [&]() { RenderBreakpointList(); });
- }
+ Emulator() = default;
void Run();
auto snes() -> Snes& { return snes_; }
@@ -121,6 +53,7 @@ class Emulator {
private:
void RenderNavBar();
void HandleEvents();
+ void RenderEmulatorInterface();
void RenderSnesPpu();
void RenderBreakpointList();
@@ -162,8 +95,6 @@ class Emulator {
std::vector rom_data_;
EmulatorKeybindings keybindings_;
-
- gui::zeml::Node emulator_node_;
};
} // namespace emu
diff --git a/src/app/gui/gui.cmake b/src/app/gui/gui.cmake
index 0a7b7c8b..60d97bfe 100644
--- a/src/app/gui/gui.cmake
+++ b/src/app/gui/gui.cmake
@@ -8,7 +8,6 @@ set(
app/gui/input.cc
app/gui/style.cc
app/gui/color.cc
- app/gui/zeml.cc
app/gui/theme_manager.cc
app/gui/background_renderer.cc
)
diff --git a/src/app/gui/zeml.cc b/src/app/gui/zeml.cc
deleted file mode 100644
index 75df05f6..00000000
--- a/src/app/gui/zeml.cc
+++ /dev/null
@@ -1,621 +0,0 @@
-
-#include "app/gui/zeml.h"
-
-#include
-#include
-#include
-#include