aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/gui/RamDumpWindow.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/gui/RamDumpWindow.kt')
-rw-r--r--src/main/kotlin/gui/RamDumpWindow.kt43
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())
+}
+
+