mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-11 07:14:04 +09:00
peripheral tabs on emu gui
This commit is contained in:
@@ -111,7 +111,7 @@ object VMSetupBroker {
|
|||||||
try {
|
try {
|
||||||
val argTypes = argTypess[k].parameterTypes
|
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 }}")
|
println("trying constructor args[${k}/${argTypess.lastIndex}]: ${argTypes.joinToString { it.canonicalName }}")
|
||||||
|
|
||||||
val args = deviceInfo.get("args").allIntoJavaType(argTypes.tail())
|
val args = deviceInfo.get("args").allIntoJavaType(argTypes.tail())
|
||||||
@@ -140,6 +140,8 @@ object VMSetupBroker {
|
|||||||
jsonValue?.let { deviceInfo ->
|
jsonValue?.let { deviceInfo ->
|
||||||
val className = deviceInfo.getString("cls")
|
val className = deviceInfo.getString("cls")
|
||||||
|
|
||||||
|
println("CARD${index} loadedClass = $className")
|
||||||
|
|
||||||
val loadedClass = Class.forName(className)
|
val loadedClass = Class.forName(className)
|
||||||
val argTypes = loadedClass.declaredConstructors[0].parameterTypes
|
val argTypes = loadedClass.declaredConstructors[0].parameterTypes
|
||||||
val args = deviceInfo.get("args").allIntoJavaType(argTypes.tail())
|
val args = deviceInfo.get("args").allIntoJavaType(argTypes.tail())
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ import java.io.File
|
|||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2022-07-20.
|
* 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
|
val bankSize = 524288L
|
||||||
|
|
||||||
@@ -283,12 +285,13 @@ open class RamBank(val vm: VM, bankCount: Int, val writable: Boolean = true) : P
|
|||||||
override fun getVM() = vm
|
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 {
|
init {
|
||||||
val bytes = romfile.readBytes()
|
val bytes = romfile.readBytes()
|
||||||
UnsafeHelper.memcpyRaw(bytes, 0, null, mem.ptr, bytes.size.toLong())
|
UnsafeHelper.memcpyRaw(bytes, 0, null, mem.ptr, bytes.size.toLong())
|
||||||
}
|
}
|
||||||
override val typestring = "romb"
|
override val typestring = "romb"
|
||||||
|
override val writable = false
|
||||||
override fun poke(addr: Long, byte: Byte) {
|
override fun poke(addr: Long, byte: Byte) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -421,13 +421,16 @@ class VMEmuExecutable(val windowWidth: Int, val windowHeight: Int, var panelsX:
|
|||||||
"DUMMY" to dummyMenu
|
"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 tabPos = (menuTabs + "").mapIndexed { index, _ -> 1 + menuTabs.subList(0, index).sumBy { it.length } + 2 * index }
|
||||||
private val tabs = arrayOf(
|
private val tabs = arrayOf(
|
||||||
ProfilesMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Profiles
|
ProfilesMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Profiles
|
||||||
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // MMIO
|
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // MMIO
|
||||||
MMUMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // MMU
|
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), // Card1
|
||||||
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card2
|
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card2
|
||||||
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card3
|
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), // Card5
|
||||||
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card6
|
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card6
|
||||||
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card7
|
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Card7
|
||||||
DummyMenu(this, menuTabX, menuTabY, menuTabW, menuTabH), // Setup
|
|
||||||
)
|
)
|
||||||
private var menuTabSel = 0
|
private var menuTabSel = 0
|
||||||
|
|
||||||
|
private val cardTabIndex = menuTabs.indexOf("Crd1")
|
||||||
|
private val comTabIndex = menuTabs.indexOf("COM1")
|
||||||
|
|
||||||
private var tabChangeRequested: Int? = 0 // null: not requested
|
private var tabChangeRequested: Int? = 0 // null: not requested
|
||||||
|
|
||||||
// call this whenever the VM selection has changed
|
// 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 periType = vm.peripheralTable[i].type ?: "DUMMY"
|
||||||
val menu = menuRepository[periType] ?: dummyMenu
|
val menu = menuRepository[periType] ?: dummyMenu
|
||||||
menu.cardIndex = i
|
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