peripheral tabs on emu gui

This commit is contained in:
minjaesong
2023-03-25 12:01:04 +09:00
parent fd8a30f5fe
commit f1ceac0451
3 changed files with 30 additions and 7 deletions

View File

@@ -111,7 +111,7 @@ object VMSetupBroker {
try {
val argTypes = argTypess[k].parameterTypes
println("loadedClass = $className")
println("COM${index+1} loadedClass = $className")
println("trying constructor args[${k}/${argTypess.lastIndex}]: ${argTypes.joinToString { it.canonicalName }}")
val args = deviceInfo.get("args").allIntoJavaType(argTypes.tail())
@@ -140,6 +140,8 @@ object VMSetupBroker {
jsonValue?.let { deviceInfo ->
val className = deviceInfo.getString("cls")
println("CARD${index} loadedClass = $className")
val loadedClass = Class.forName(className)
val argTypes = loadedClass.declaredConstructors[0].parameterTypes
val args = deviceInfo.get("args").allIntoJavaType(argTypes.tail())

View File

@@ -8,7 +8,9 @@ import java.io.File
/**
* Created by minjaesong on 2022-07-20.
*/
open class RamBank(val vm: VM, bankCount: Int, val writable: Boolean = true) : PeriBase("ramb") {
open class RamBank(val vm: VM, bankCount: Int) : PeriBase("ramb") {
open val writable = true
val bankSize = 524288L
@@ -283,12 +285,13 @@ open class RamBank(val vm: VM, bankCount: Int, val writable: Boolean = true) : P
override fun getVM() = vm
}
open class RomBank(vm: VM, romfile: File, bankCount: Int) : RamBank(vm, bankCount, false) {
open class RomBank(vm: VM, romfile: File, bankCount: Int) : RamBank(vm, bankCount) {
init {
val bytes = romfile.readBytes()
UnsafeHelper.memcpyRaw(bytes, 0, null, mem.ptr, bytes.size.toLong())
}
override val typestring = "romb"
override val writable = false
override fun poke(addr: Long, byte: Byte) {
}

View File

@@ -421,13 +421,16 @@ class VMEmuExecutable(val windowWidth: Int, val windowHeight: Int, var panelsX:
"DUMMY" to dummyMenu
)
private val menuTabs = listOf("Profiles", "MMIO", "MMU", "COM", "Card1", "Card2", "Card3", "Card4", "Card5", "Card6", "Card7", "Setup")
private val menuTabs = listOf("Profiles", "MMIO", "MMU", "COM1", "COM2", "COM3", "COM4", "Crd1", "Crd2", "Crd3", "Crd4", "Crd5", "Crd6", "Crd7")
private val tabPos = (menuTabs + "").mapIndexed { index, _ -> 1 + menuTabs.subList(0, index).sumBy { it.length } + 2 * index }
private val tabs = arrayOf(
ProfilesMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Profiles
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // MMIO
MMUMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // MMU
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM1
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM2
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM3
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // COM4
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card1
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card2
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card3
@@ -435,10 +438,12 @@ class VMEmuExecutable(val windowWidth: Int, val windowHeight: Int, var panelsX:
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card5
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card6
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card7
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Setup
)
private var menuTabSel = 0
private val cardTabIndex = menuTabs.indexOf("Crd1")
private val comTabIndex = menuTabs.indexOf("COM1")
private var tabChangeRequested: Int? = 0 // null: not requested
// call this whenever the VM selection has changed
@@ -450,7 +455,20 @@ class VMEmuExecutable(val windowWidth: Int, val windowHeight: Int, var panelsX:
val periType = vm.peripheralTable[i].type ?: "DUMMY"
val menu = menuRepository[periType] ?: dummyMenu
menu.cardIndex = i
tabs[3 + i] = menu
tabs[cardTabIndex + i - 1] = menu
}
}
}
// call this whenever the VM selection has changed
private fun refreshComTabs() {
val vm = getCurrentlySelectedVM()?.vm
if (vm != null) {
for (i in 1..7) {
val periType = TODO() ?: "DUMMY"
val menu = menuRepository[periType] ?: dummyMenu
menu.cardIndex = i // COM will recycle cardIndex
tabs[comTabIndex + i - 1] = menu
}
}
}