From 087f0f7942f000d90984cd28528eebe6799e6f81 Mon Sep 17 00:00:00 2001 From: Andrea Odetti Date: Sat, 5 Jun 2021 16:40:06 +0100 Subject: [PATCH] More correct visualisation of virtual and physical memory. Signed-off-by: Andrea Odetti --- source/frontends/sdl/imgui/sdlsettings.cpp | 37 +++++++++++++++++----- source/frontends/sdl/imgui/sdlsettings.h | 3 +- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/source/frontends/sdl/imgui/sdlsettings.cpp b/source/frontends/sdl/imgui/sdlsettings.cpp index 8cddb009..6c60d9fe 100644 --- a/source/frontends/sdl/imgui/sdlsettings.cpp +++ b/source/frontends/sdl/imgui/sdlsettings.cpp @@ -30,6 +30,14 @@ namespace { + struct MemoryTab + { + void * basePtr; + size_t baseAddr; + size_t length; + std::string name; + }; + void HelpMarker(const char* desc) { ImGui::TextDisabled("(?)"); @@ -804,18 +812,31 @@ namespace sa2 { if (ImGui::BeginTabBar("Memory")) { - if (ImGui::BeginTabItem("Main")) + std::vector banks; + + banks.push_back({mem, 0, _6502_MEM_LEN, "Memory"}); + banks.push_back({MemGetCxRomPeripheral(), _6502_IO_BEGIN, 4 * 1024, "Cx ROM"}); + + size_t i = 0; + void * bank; + while ((bank = MemGetBankPtr(i))) { - void * mainBase = MemGetMainPtr(0); - myMainMemoryEditor.DrawContents(mainBase, _6502_MEM_LEN); - ImGui::EndTabItem(); + const std::string name = "Bank " + std::to_string(i); + banks.push_back({bank, 0, _6502_MEM_LEN, name}); + ++i; } - if (ImGui::BeginTabItem("AUX")) + + myMemoryEditors.resize(banks.size()); + + for (i = 0; i < banks.size(); ++i) { - void * auxBase = MemGetAuxPtr(0); - myAuxMemoryEditor.DrawContents(auxBase, _6502_MEM_LEN); - ImGui::EndTabItem(); + if (ImGui::BeginTabItem(banks[i].name.c_str())) + { + myMemoryEditors[i].DrawContents(banks[i].basePtr, banks[i].length, banks[i].baseAddr); + ImGui::EndTabItem(); + } } + ImGui::EndTabBar(); } } diff --git a/source/frontends/sdl/imgui/sdlsettings.h b/source/frontends/sdl/imgui/sdlsettings.h index b43cffbe..d3920ec7 100644 --- a/source/frontends/sdl/imgui/sdlsettings.h +++ b/source/frontends/sdl/imgui/sdlsettings.h @@ -38,8 +38,7 @@ namespace sa2 uint64_t myBaseDebuggerCycles; std::unordered_map myAddressCycles; - MemoryEditor myMainMemoryEditor; - MemoryEditor myAuxMemoryEditor; + std::vector myMemoryEditors; std::vector myAudioInfo;