mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-07 11:51:49 +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))
|
||||
print(t)
|
||||
// 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,0)
|
||||
}
|
||||
|
||||
@@ -54,6 +54,10 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
|
||||
batch.projectionMatrix = camera.combined
|
||||
|
||||
|
||||
init()
|
||||
}
|
||||
|
||||
private fun init() {
|
||||
val loadedClass = Class.forName(loaderInfo.display)
|
||||
val loadedClassConstructor = loadedClass.getConstructor(vm::class.java)
|
||||
val loadedClassInstance = loadedClassConstructor.newInstance(vm)
|
||||
@@ -87,12 +91,11 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
|
||||
private var rebootRequested = false
|
||||
|
||||
private fun reboot() {
|
||||
vmRunner.close()
|
||||
coroutineJob.cancel("reboot requested")
|
||||
|
||||
vmRunner = VMRunnerFactory(vm, "js")
|
||||
coroutineJob = GlobalScope.launch {
|
||||
vmRunner.executeCommand(vm.roms[0]!!.readAll())
|
||||
}
|
||||
vm.init()
|
||||
init()
|
||||
}
|
||||
|
||||
private var updateAkku = 0.0
|
||||
@@ -121,12 +124,9 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
|
||||
renderGame(dt)
|
||||
}
|
||||
|
||||
private var latch = true
|
||||
|
||||
private fun updateGame(delta: Float) {
|
||||
if (!vm.resetDown && rebootRequested) {
|
||||
reboot()
|
||||
vm.init()
|
||||
rebootRequested = false
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,9 @@ import java.io.FileReader
|
||||
import javax.script.ScriptEngineManager
|
||||
|
||||
abstract class VMRunner(val extension: String) {
|
||||
|
||||
abstract suspend fun executeCommand(command: String)
|
||||
abstract suspend fun evalGlobal(command: String)
|
||||
|
||||
abstract fun close()
|
||||
}
|
||||
|
||||
object VMRunnerFactory {
|
||||
@@ -41,6 +40,10 @@ object VMRunnerFactory {
|
||||
override suspend fun evalGlobal(command: String) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
}
|
||||
"js" -> {
|
||||
@@ -84,6 +87,10 @@ object VMRunnerFactory {
|
||||
override suspend fun evalGlobal(command: String) {
|
||||
context.eval("js", "\"use strict\";" + sanitiseJS(command))
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
context.close(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> throw UnsupportedOperationException("Unsupported script extension: $extension")
|
||||
|
||||
Reference in New Issue
Block a user