diff --git a/src/debugger/debugger.cpp b/src/debugger/debugger.cpp index c7cd572c..f9e4bb37 100644 --- a/src/debugger/debugger.cpp +++ b/src/debugger/debugger.cpp @@ -13,6 +13,7 @@ // clang-format on #include "disassembly_view.h" +#include "register_view.h" #include "debugger_api.h" extern int debugger_active; @@ -173,6 +174,7 @@ Debugger* Debugger_create() { debugger->memory_view = new MemoryView(); debugger->d_view = DisassemblyView_create(debugger->capstone); + debugger->register_view = RegisterView_create(); s_debugger = debugger; @@ -218,6 +220,7 @@ static void draw_debugger_window(Debugger* self) { */ DisassemblyView_update(self->d_view, "Dummy"); + RegisterView_update(self->register_view); uae_u8* addr = memory_get_real_address(0x00c000000); self->memory_view->draw_window("Memory View", addr, 512 * 1024); diff --git a/src/debugger/debugger.h b/src/debugger/debugger.h index 1f862e26..166aa654 100644 --- a/src/debugger/debugger.h +++ b/src/debugger/debugger.h @@ -9,6 +9,7 @@ struct SDL_Window; struct SDL_Renderer; union SDL_Event; struct DisassemblyView; +struct RegisterView; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -18,6 +19,7 @@ struct Debugger { csh capstone; MemoryView* memory_view; DisassemblyView* d_view; + RegisterView* register_view; }; enum DebuggerMode { diff --git a/src/debugger/register_view.cpp b/src/debugger/register_view.cpp new file mode 100644 index 00000000..41627ae2 --- /dev/null +++ b/src/debugger/register_view.cpp @@ -0,0 +1,57 @@ +#include +#include +#include "register_view.h" +#include "sysconfig.h" +#include "sysdeps.h" +#include "options.h" +#include "memory.h" +#include "newcpu.h" + +struct RegisterView { + uint32_t dummy; +}; + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +RegisterView* RegisterView_create() { + return new RegisterView(); +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void RegisterView_update(RegisterView* self) { + static bool open = true; + + ImGuiTableFlags flags = ImGuiTableFlags_Resizable + | ImGuiTableFlags_Reorderable + | ImGuiTableFlags_Hideable + | ImGuiTableFlags_BordersOuter + | ImGuiTableFlags_BordersV; + + if (ImGui::Begin("Registers", &open, ImGuiWindowFlags_NoScrollbar)) { + if (ImGui::BeginTable("disassembly", 2, flags)) { + ImGui::TableSetupColumn("Register"); + ImGui::TableSetupColumn("Value"); + ImGui::TableHeadersRow(); + + for (int i = 0; i < 8; i++) { + ImGui::TableNextColumn(); + ImGui::Text("a%d", i); + ImGui::TableNextColumn(); + ImGui::Text("%08X", m68k_areg(regs, i)); + } + + for (int i = 0; i < 8; i++) { + ImGui::TableNextColumn(); + ImGui::Text("d%d", i); + ImGui::TableNextColumn(); + ImGui::Text("%08X", m68k_dreg(regs, i)); + } + } + + ImGui::EndTable(); + } + + ImGui::End(); +} + diff --git a/src/debugger/register_view.h b/src/debugger/register_view.h new file mode 100644 index 00000000..f71af3a3 --- /dev/null +++ b/src/debugger/register_view.h @@ -0,0 +1,8 @@ +#pragma once + +struct RegisterView; + +RegisterView* RegisterView_create(); +void RegisterView_update(RegisterView* self); +void RegisterView_destroy(RegisterView* self); +