diff --git a/8025_textonly.png b/8025_textonly.png new file mode 100644 index 0000000..094b716 Binary files /dev/null and b/8025_textonly.png differ diff --git a/lcd.png b/lcd.png new file mode 100644 index 0000000..22f9263 Binary files /dev/null and b/lcd.png differ diff --git a/src/net/torvald/tsvm/AppLoader.java b/src/net/torvald/tsvm/AppLoader.java index b4e4e4a..abda740 100644 --- a/src/net/torvald/tsvm/AppLoader.java +++ b/src/net/torvald/tsvm/AppLoader.java @@ -22,8 +22,8 @@ public class AppLoader { appConfig.resizable = false; appConfig.title = appTitle; appConfig.forceExit = true; - appConfig.width = 560; - appConfig.height = 448; + appConfig.width = 960;//560; + appConfig.height = 400;//448; // val vm = VM(64.kB(), TheRealWorld(), arrayOf(GenericBios)) diff --git a/src/net/torvald/tsvm/VMGUI.kt b/src/net/torvald/tsvm/VMGUI.kt index 597a790..c8cda99 100644 --- a/src/net/torvald/tsvm/VMGUI.kt +++ b/src/net/torvald/tsvm/VMGUI.kt @@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import kotlinx.coroutines.* import net.torvald.tsvm.CompressorDelegate.GZIP_HEADER +import net.torvald.tsvm.peripheral.CharacterLCDdisplay import net.torvald.tsvm.peripheral.GenericBios import net.torvald.tsvm.peripheral.GraphicsAdapter import net.torvald.tsvm.peripheral.TexticsAdapter @@ -33,7 +34,8 @@ class VMGUI(val vm: VM, val appConfig: LwjglApplicationConfiguration) : Applicat super.create() //gpu = TexticsAdapter(vm, theme = GraphicsAdapter.THEME_COLORCRT) - gpu = GraphicsAdapter(vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT) + //gpu = GraphicsAdapter(vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT) + gpu = CharacterLCDdisplay(vm) vm.peripheralTable[1] = PeripheralEntry( VM.PERITYPE_GPU_AND_TERM, diff --git a/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt b/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt new file mode 100644 index 0000000..779ba91 --- /dev/null +++ b/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt @@ -0,0 +1,44 @@ +package net.torvald.tsvm.peripheral + +import com.badlogic.gdx.graphics.Color +import com.badlogic.gdx.graphics.Texture +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.tsvm.VM + +class CharacterLCDdisplay(vm: VM) : GraphicsAdapter(vm, AdapterConfig( + "pmlcd_inverted", 960, 400, 80, 25, 249, 255, 262144L, "./lcd.png", 0.7f +) +) { + + private val machine = Texture("./8025_textonly.png") + + override fun peek(addr: Long): Byte? { + return when (addr) { + in 0 until 250880 -> (-1).toByte() + else -> super.peek(addr) + } + } + + override fun poke(addr: Long, byte: Byte) { + when (addr) { + in 0 until 250880 -> { /*do nothing*/ } + else -> super.poke(addr, byte) + } + } + + override fun render(delta: Float, batch: SpriteBatch, xoff: Float, yoff: Float) { + /*batch.shader = null + batch.inUse { + batch.color = Color.WHITE + batch.draw(machine, xoff, yoff) + } + super.render(delta, batch, xoff+200, yoff-200) + */ + super.render(delta, batch, xoff, yoff) + } + + override fun dispose() { + machine.dispose() + super.dispose() + } +} \ No newline at end of file diff --git a/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt b/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt index c5ee8ac..d36bbf1 100644 --- a/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt +++ b/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt @@ -569,7 +569,7 @@ open class GraphicsAdapter(val vm: VM, val config: AdapterConfig) : private var glowDecay = config.decay private var decayColor = Color(1f, 1f, 1f, 1f - glowDecay) - fun render(delta: Float, batch: SpriteBatch, x: Float, y: Float) { + open fun render(delta: Float, batch: SpriteBatch, xoff: Float, yoff: Float) { rendertex.dispose() rendertex = Texture(framebuffer, Pixmap.Format.RGBA8888, false) @@ -608,7 +608,7 @@ open class GraphicsAdapter(val vm: VM, val config: AdapterConfig) : if (theme.startsWith("pmlcd")) batch.shader.setUniformf("lcdBaseCol", LCD_BASE_COL) // draw framebuffer - batch.draw(rendertex, x, y) + batch.draw(rendertex, 0f, 0f) // draw texts or sprites @@ -712,7 +712,7 @@ open class GraphicsAdapter(val vm: VM, val config: AdapterConfig) : batch.shader = null batch.inUse { batch.color = Color.WHITE - batch.draw(outFBOs[1].colorBufferTexture, 0f, HEIGHT.toFloat(), WIDTH.toFloat(), -HEIGHT.toFloat()) + batch.draw(outFBOs[1].colorBufferTexture, xoff, HEIGHT.toFloat() - yoff, WIDTH.toFloat(), -HEIGHT.toFloat()) } @@ -1483,16 +1483,16 @@ void main() { 0 ) } +} - private fun FrameBuffer.inUse(action: () -> Unit) { - this.begin() - action() - this.end() - } +fun FrameBuffer.inUse(action: () -> Unit) { + this.begin() + action() + this.end() +} - private fun SpriteBatch.inUse(action: () -> Unit) { - this.begin() - action() - this.end() - } +fun SpriteBatch.inUse(action: () -> Unit) { + this.begin() + action() + this.end() } \ No newline at end of file