From 8175a3c262a90ed79979a82ea0b27519a3aea382 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 4 Apr 2021 16:25:01 +0900 Subject: [PATCH] scaling of teh rendered screen --- assets/lcd2.png | Bin 0 -> 2939 bytes .../tsvm/peripheral/CharacterLCDdisplay.kt | 2 +- .../torvald/tsvm/peripheral/GraphicsAdapter.kt | 10 ++++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 assets/lcd2.png diff --git a/assets/lcd2.png b/assets/lcd2.png new file mode 100644 index 0000000000000000000000000000000000000000..9751fbba86db7423545172991a71abb30544a968 GIT binary patch literal 2939 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 literal 0 HcmV?d00001 diff --git a/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt b/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt index fb3abdf..3d2dd6e 100644 --- a/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt +++ b/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt @@ -6,7 +6,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.tsvm.VM class CharacterLCDdisplay(vm: VM) : GraphicsAdapter(vm, AdapterConfig( - "pmlcd_inverted", 480, 128, 40, 8, 249, 255, 262144L, "lcd.png", 0.7f, TEXT_TILING_SHADER_LCD, DRAW_SHADER_FRAG_LCD + "pmlcd_inverted", 240, 64, 40, 8, 249, 255, 262144L, "lcd2.png", 0.7f, TEXT_TILING_SHADER_LCD, DRAW_SHADER_FRAG_LCD, 2f ) ) { diff --git a/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt b/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt index fbc9352..61a66d4 100644 --- a/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt +++ b/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt @@ -27,7 +27,9 @@ data class AdapterConfig( val chrRomPath: String, val decay: Float, val fragShader: String, - val paletteShader: String = DRAW_SHADER_FRAG + val paletteShader: String = DRAW_SHADER_FRAG, + val drawScale: Float = 1f, + val scaleFiltered: Boolean = false, ) data class SuperGraphicsAddonConfig( @@ -755,7 +757,11 @@ open class GraphicsAdapter(val vm: VM, val config: AdapterConfig, val sgr: Super blendNormal(uiBatch) uiBatch.color = Color.WHITE - uiBatch.draw(outFBOregion[1], xoff, HEIGHT.toFloat() + yoff, WIDTH.toFloat(), -HEIGHT.toFloat()) + outFBOregion[1].texture.setFilter( + if (config.scaleFiltered) Texture.TextureFilter.Linear else Texture.TextureFilter.Nearest, + if (config.scaleFiltered) Texture.TextureFilter.Linear else Texture.TextureFilter.Nearest + ) + uiBatch.draw(outFBOregion[1], xoff, HEIGHT * config.drawScale + yoff, WIDTH * config.drawScale, -HEIGHT * config.drawScale) }