From e4e561bd94df819f4ce9487f28b1d18a8d178810 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Tue, 24 Jul 2018 20:24:58 +0100 Subject: Add ram dump debug window --- src/main/kotlin/gui/RamDumpWindow.kt | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/kotlin/gui/RamDumpWindow.kt (limited to 'src/main/kotlin/gui/RamDumpWindow.kt') diff --git a/src/main/kotlin/gui/RamDumpWindow.kt b/src/main/kotlin/gui/RamDumpWindow.kt new file mode 100644 index 0000000..da30162 --- /dev/null +++ b/src/main/kotlin/gui/RamDumpWindow.kt @@ -0,0 +1,43 @@ +package gui + +import glm_.vec2.Vec2 +import imgui.Cond +import imgui.ImGui +import ram.Ram + +fun paintRamDumpWindow(ram: Ram) { + with(ImGui) { + setNextWindowSize(Vec2(425, 300), Cond.FirstUseEver) + setNextWindowPos(Vec2(15, 340), Cond.FirstUseEver) + + begin("Ram dump") + + // TODO - lock range to scroll position + paintRamRange(0, 0x00FF, ram.ram) + + end() + } +} + +private fun paintRamRange(startAddress: Int, endAddress: Int, data: IntArray) { + (startAddress .. endAddress step 16).forEach { + paintLine(it, data) + } +} + +private fun paintLine(startAddress: Int, data: IntArray) { + val sb = StringBuilder() + sb.append(String.format("0x%04X: ", startAddress)) + + (0..15).forEach { + val address = startAddress + it + if(address <= (data.size-1)) { + sb.append(String.format("%02X ", data[startAddress + it])) + if(it == 7) {sb.append(" ")} + } + } + + ImGui.text(sb.toString()) +} + + -- cgit v1.2.3