Update GraphicsAdapter.kt

This commit is contained in:
CuriousTorvald
2022-12-12 19:57:43 +09:00
committed by GitHub
parent 0e0e858ee6
commit 6fedbef541

View File

@@ -287,6 +287,12 @@ open class GraphicsAdapter(private val assetsRoot: String, val vm: VM, val confi
16L -> framebufferScrollY.toByte()
17L -> framebufferScrollY.ushr(8).toByte()
18L -> (drawCallBusy.toInt() or codecBusy.toInt().shl(1)).toByte()
19L -> -1
20L -> drawCallProgramCounter.and(255).toByte()
21L -> drawCallProgramCounter.ushr(8).and(255).toByte()
in 1024L..2047L -> scanlineOffsets[addr - 1024]
in 65536L..131071L -> instArea[addr - 65536]
@@ -310,6 +316,8 @@ open class GraphicsAdapter(private val assetsRoot: String, val vm: VM, val confi
16L -> { framebufferScrollY = framebufferScrollY.and(0xFFFFFF00.toInt()).or(bi) }
17L -> { framebufferScrollY = framebufferScrollY.and(0xFFFF00FF.toInt()).or(bi shl 8) }
19L -> { if (bi != 0) compileAndRunDrawCalls() }
in 1024L..2047L -> { scanlineOffsets[addr - 1024] = byte }
in 65536L..131071L -> instArea[addr - 65536] = byte
@@ -351,11 +359,26 @@ open class GraphicsAdapter(private val assetsRoot: String, val vm: VM, val confi
}
}
private var codecBusy = false
private var drawCallSize = 0
private val drawCallBuffer = Array<DrawCall>(3640) { DrawCallEnd }
private var drawCallBusy = false
internal var drawCallProgramCounter = 0
internal var rScanline = 0
private fun compileAndRunDrawCalls() {
if (!drawCallBusy) {
drawCallBusy = true
compileWords()
// TODO on separate thread?
for (i in 0 until drawCallSize)
drawCallBuffer[i].execute(this)
drawCallBusy = false
}
}
private fun compileWords() {
drawCallSize = 0
while (true) {
@@ -2197,4 +2220,4 @@ internal fun SpriteBatch.inUse(action: () -> Unit) {
this.begin()
action()
this.end()
}
}