better delay handling 2

This commit is contained in:
minjaesong
2024-08-12 02:20:28 +09:00
parent 96012eea52
commit 2dae1e9839
3 changed files with 24 additions and 15 deletions

View File

@@ -2,7 +2,10 @@ package net.torvald.tsvm.peripheral
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Gdx
import com.badlogic.gdx.files.FileHandle 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.Gdx2DPixmap
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion 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.Disposable
import com.badlogic.gdx.utils.GdxRuntimeException import com.badlogic.gdx.utils.GdxRuntimeException
import net.torvald.UnsafeHelper import net.torvald.UnsafeHelper
import net.torvald.UnsafePtr
import net.torvald.terrarum.DefaultGL32Shaders import net.torvald.terrarum.DefaultGL32Shaders
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.toUint import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.toUint
import net.torvald.tsvm.* 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 net.torvald.tsvm.peripheral.GraphicsAdapter.Companion.DRAW_SHADER_FRAG
import java.io.InputStream import java.io.InputStream
import java.io.OutputStream import java.io.OutputStream
import java.lang.IllegalArgumentException
import kotlin.experimental.and import kotlin.experimental.and
import kotlin.math.floor 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 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) 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 protected var slpcnt = 0L
open fun applyDelay() {
@SuppressWarnings("inline")
internal inline fun applyDelay() {
if (sleepMillis == 0L && sleepNanos == 0) return
applyDelay0()
} }
internal fun applyDelay0() { protected fun applyDelay0() {
slpcnt += sleepMillis * 1000000L + sleepNanos slpcnt += sleepMillis * 1000000L + sleepNanos
val millis = slpcnt / 1000000L val millis = slpcnt / 1000000L

View File

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

View File

@@ -2,13 +2,11 @@ package net.torvald.tsvm.peripheral
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.GL20 import com.badlogic.gdx.graphics.GL20
import com.badlogic.gdx.graphics.Texture
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.graphics.glutils.FrameBuffer
import net.torvald.tsvm.VM import net.torvald.tsvm.VM
import net.torvald.tsvm.kB import net.torvald.tsvm.kB
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
import kotlin.math.floor
open class TexticsAdapterBase(assetsRoot: String, vm: VM, config: AdapterConfig) : GraphicsAdapter(assetsRoot, vm, config) { 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? { override fun peek(addr: Long): Byte? {
return when (addr) { return when (addr) {
in 0 until 250972 -> (-1).toByte() in 0 until 250972 -> (-1).toByte()