diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2018-07-24 20:24:58 +0100 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2018-07-24 20:24:58 +0100 |
| commit | e4e561bd94df819f4ce9487f28b1d18a8d178810 (patch) | |
| tree | 4ff6bb0d6e9afbb6cb06eeceb2dc3d538bbc5adc /src/main/kotlin/gui/RamDumpWindow.kt | |
| parent | 6acdde8f7093c0fb2e95d8dbc14dfab096b0a027 (diff) | |
| download | KGB-e4e561bd94df819f4ce9487f28b1d18a8d178810.tar.xz KGB-e4e561bd94df819f4ce9487f28b1d18a8d178810.zip | |
Add ram dump debug window
Diffstat (limited to 'src/main/kotlin/gui/RamDumpWindow.kt')
| -rw-r--r-- | src/main/kotlin/gui/RamDumpWindow.kt | 43 |
1 files changed, 43 insertions, 0 deletions
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()) +} + + |