mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-09 22:54:03 +09:00
RESET button works now
This commit is contained in:
@@ -27,7 +27,7 @@ con.mvaddch(y+1,1+x*8+7-b,imgc[(imgh[y][x]>>b&1)<<1|imgl[y][x]>>b&1])
|
|||||||
con.move(8,1+(40-t.length>>1))
|
con.move(8,1+(40-t.length>>1))
|
||||||
print(t)
|
print(t)
|
||||||
// wait arbitrary time
|
// wait arbitrary time
|
||||||
for (let b=0;b<system.maxmem()*10;b++) {
|
for (let b=0;b<333333;b++) {
|
||||||
sys.poke(0,(Math.random()*255)|0)
|
sys.poke(0,(Math.random()*255)|0)
|
||||||
sys.poke(0,0)
|
sys.poke(0,0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
|
|||||||
batch.projectionMatrix = camera.combined
|
batch.projectionMatrix = camera.combined
|
||||||
|
|
||||||
|
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun init() {
|
||||||
val loadedClass = Class.forName(loaderInfo.display)
|
val loadedClass = Class.forName(loaderInfo.display)
|
||||||
val loadedClassConstructor = loadedClass.getConstructor(vm::class.java)
|
val loadedClassConstructor = loadedClass.getConstructor(vm::class.java)
|
||||||
val loadedClassInstance = loadedClassConstructor.newInstance(vm)
|
val loadedClassInstance = loadedClassConstructor.newInstance(vm)
|
||||||
@@ -87,12 +91,11 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
|
|||||||
private var rebootRequested = false
|
private var rebootRequested = false
|
||||||
|
|
||||||
private fun reboot() {
|
private fun reboot() {
|
||||||
|
vmRunner.close()
|
||||||
coroutineJob.cancel("reboot requested")
|
coroutineJob.cancel("reboot requested")
|
||||||
|
|
||||||
vmRunner = VMRunnerFactory(vm, "js")
|
vm.init()
|
||||||
coroutineJob = GlobalScope.launch {
|
init()
|
||||||
vmRunner.executeCommand(vm.roms[0]!!.readAll())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private var updateAkku = 0.0
|
private var updateAkku = 0.0
|
||||||
@@ -121,12 +124,9 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
|
|||||||
renderGame(dt)
|
renderGame(dt)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var latch = true
|
|
||||||
|
|
||||||
private fun updateGame(delta: Float) {
|
private fun updateGame(delta: Float) {
|
||||||
if (!vm.resetDown && rebootRequested) {
|
if (!vm.resetDown && rebootRequested) {
|
||||||
reboot()
|
reboot()
|
||||||
vm.init()
|
|
||||||
rebootRequested = false
|
rebootRequested = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ import java.io.FileReader
|
|||||||
import javax.script.ScriptEngineManager
|
import javax.script.ScriptEngineManager
|
||||||
|
|
||||||
abstract class VMRunner(val extension: String) {
|
abstract class VMRunner(val extension: String) {
|
||||||
|
|
||||||
abstract suspend fun executeCommand(command: String)
|
abstract suspend fun executeCommand(command: String)
|
||||||
abstract suspend fun evalGlobal(command: String)
|
abstract suspend fun evalGlobal(command: String)
|
||||||
|
abstract fun close()
|
||||||
}
|
}
|
||||||
|
|
||||||
object VMRunnerFactory {
|
object VMRunnerFactory {
|
||||||
@@ -41,6 +40,10 @@ object VMRunnerFactory {
|
|||||||
override suspend fun evalGlobal(command: String) {
|
override suspend fun evalGlobal(command: String) {
|
||||||
TODO("Not yet implemented")
|
TODO("Not yet implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun close() {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"js" -> {
|
"js" -> {
|
||||||
@@ -84,6 +87,10 @@ object VMRunnerFactory {
|
|||||||
override suspend fun evalGlobal(command: String) {
|
override suspend fun evalGlobal(command: String) {
|
||||||
context.eval("js", "\"use strict\";" + sanitiseJS(command))
|
context.eval("js", "\"use strict\";" + sanitiseJS(command))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun close() {
|
||||||
|
context.close(true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> throw UnsupportedOperationException("Unsupported script extension: $extension")
|
else -> throw UnsupportedOperationException("Unsupported script extension: $extension")
|
||||||
|
|||||||
Reference in New Issue
Block a user