mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-07 19:51:51 +09:00
peripheral tabs on emu gui
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user