RESET button works now

This commit is contained in:
minjaesong
2021-04-24 09:46:15 +09:00
parent 14ffc294e3
commit 07136a46d9
3 changed files with 17 additions and 10 deletions

View File

@@ -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)
}

View File

@@ -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
}

View File

@@ -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")