mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-12 15:44:05 +09:00
better delay handling 2
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user