From 2dae1e9839ddbe3055b77cd5b52981f81a17ab47 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 12 Aug 2024 02:20:28 +0900 Subject: [PATCH] better delay handling 2 --- .../tsvm/peripheral/GraphicsAdapter.kt | 20 +++++++------------ .../tsvm/peripheral/RemoteGraphicsAdapter.kt | 13 ++++++++++++ .../torvald/tsvm/peripheral/TexticsAdapter.kt | 6 ++++-- 3 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 tsvm_core/src/net/torvald/tsvm/peripheral/RemoteGraphicsAdapter.kt diff --git a/tsvm_core/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt b/tsvm_core/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt index a7c2516..78acb52 100644 --- a/tsvm_core/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt +++ b/tsvm_core/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt @@ -2,7 +2,10 @@ package net.torvald.tsvm.peripheral import com.badlogic.gdx.Gdx import com.badlogic.gdx.files.FileHandle -import com.badlogic.gdx.graphics.* +import com.badlogic.gdx.graphics.Color +import com.badlogic.gdx.graphics.GL20 +import com.badlogic.gdx.graphics.Pixmap +import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.Gdx2DPixmap import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion @@ -11,17 +14,12 @@ import com.badlogic.gdx.math.Matrix4 import com.badlogic.gdx.utils.Disposable import com.badlogic.gdx.utils.GdxRuntimeException import net.torvald.UnsafeHelper -import net.torvald.UnsafePtr import net.torvald.terrarum.DefaultGL32Shaders import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.toUint import net.torvald.tsvm.* -import net.torvald.tsvm.FBM -import net.torvald.tsvm.LoadShader -import net.torvald.tsvm.kB import net.torvald.tsvm.peripheral.GraphicsAdapter.Companion.DRAW_SHADER_FRAG import java.io.InputStream import java.io.OutputStream -import java.lang.IllegalArgumentException import kotlin.experimental.and import kotlin.math.floor @@ -49,7 +47,7 @@ data class SuperGraphicsAddonConfig( ) class ReferenceGraphicsAdapter(assetsRoot: String, vm: VM) : GraphicsAdapter(assetsRoot, vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT) -class ReferenceGraphicsAdapter2(assetsRoot: String, vm: VM) : GraphicsAdapter(assetsRoot, vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT, SuperGraphicsAddonConfig(2)) +class ReferenceGraphicsAdapter2(assetsRoot: String, vm: VM) : RemoteGraphicsAdapter(assetsRoot, vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT, SuperGraphicsAddonConfig(2)) class ReferenceLikeLCD(assetsRoot: String, vm: VM) : GraphicsAdapter(assetsRoot, vm, GraphicsAdapter.DEFAULT_CONFIG_PMLCD) /** @@ -257,14 +255,10 @@ open class GraphicsAdapter(private val assetsRoot: String, val vm: VM, val confi protected var slpcnt = 0L - - @SuppressWarnings("inline") - internal inline fun applyDelay() { - if (sleepMillis == 0L && sleepNanos == 0) return - applyDelay0() + open fun applyDelay() { } - internal fun applyDelay0() { + protected fun applyDelay0() { slpcnt += sleepMillis * 1000000L + sleepNanos val millis = slpcnt / 1000000L diff --git a/tsvm_core/src/net/torvald/tsvm/peripheral/RemoteGraphicsAdapter.kt b/tsvm_core/src/net/torvald/tsvm/peripheral/RemoteGraphicsAdapter.kt new file mode 100644 index 0000000..a06e5b9 --- /dev/null +++ b/tsvm_core/src/net/torvald/tsvm/peripheral/RemoteGraphicsAdapter.kt @@ -0,0 +1,13 @@ +package net.torvald.tsvm.peripheral + +import net.torvald.tsvm.VM + +/** + * Created by minjaesong on 2024-08-12. + */ +open class RemoteGraphicsAdapter(assetsRoot: String, vm: VM, config: AdapterConfig, sgr: SuperGraphicsAddonConfig = SuperGraphicsAddonConfig()) : GraphicsAdapter(assetsRoot, vm, config, sgr) { + + override fun applyDelay() { + applyDelay0() + } +} \ No newline at end of file diff --git a/tsvm_core/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt b/tsvm_core/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt index 7c4ba1d..8c8f881 100644 --- a/tsvm_core/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt +++ b/tsvm_core/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt @@ -2,13 +2,11 @@ package net.torvald.tsvm.peripheral import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.GL20 -import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.FrameBuffer import net.torvald.tsvm.VM import net.torvald.tsvm.kB import kotlin.math.absoluteValue -import kotlin.math.floor open class TexticsAdapterBase(assetsRoot: String, vm: VM, config: AdapterConfig) : GraphicsAdapter(assetsRoot, vm, config) { @@ -26,6 +24,10 @@ open class TexticsAdapterBase(assetsRoot: String, vm: VM, config: AdapterConfig) ) } + override fun applyDelay() { + applyDelay0() + } + override fun peek(addr: Long): Byte? { return when (addr) { in 0 until 250972 -> (-1).toByte()