app screen zoom

This commit is contained in:
minjaesong
2024-08-14 13:46:11 +09:00
parent dcda35fc67
commit ea0e1d9498
2 changed files with 24 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ public class AppLoader {
public static int WIDTH = 640;
public static int HEIGHT = 480;
public static float MAGN = 2f;
public static void main(String[] args) {
ShaderProgram.pedantic = false;
@@ -28,7 +29,7 @@ public class AppLoader {
appConfig.setResizable(false);
appConfig.setTitle(appTitle);
appConfig.setWindowedMode(WIDTH, HEIGHT);
appConfig.setWindowedMode(((int) (WIDTH * MAGN)), ((int) (HEIGHT * MAGN)));
HashMap<String, VMWatchdog> watchdogs = new HashMap<>();
watchdogs.put("TEVD_COMMIT", TevdPartialDomCommitWatchdog.INSTANCE);

View File

@@ -53,6 +53,7 @@ class VMGUI(val loaderInfo: EmulInstance, val viewportWidth: Int, val viewportHe
lateinit var memvwr: Memvwr
lateinit var fullscreenQuad: Mesh
lateinit var gpuFBO: FrameBuffer
lateinit var winFBO: FrameBuffer
val usememvwr = false
@@ -102,6 +103,7 @@ class VMGUI(val loaderInfo: EmulInstance, val viewportWidth: Int, val viewportHe
crtShader = loadShaderInline(CRT_POST_SHADER)
gpuFBO = FrameBuffer(Pixmap.Format.RGBA8888, viewportWidth, viewportHeight, false)
winFBO = FrameBuffer(Pixmap.Format.RGBA8888, viewportWidth, viewportHeight, false)
init()
}
@@ -247,6 +249,8 @@ class VMGUI(val loaderInfo: EmulInstance, val viewportWidth: Int, val viewportHe
private val defaultGuiBackgroundColour = Color(0x444444ff)
private fun renderGame(delta: Float) {
camera.setToOrtho(false, viewportWidth.toFloat(), viewportHeight.toFloat())
batch.projectionMatrix = camera.combined
gpuFBO.begin()
val clearCol = gpu?.getBackgroundColour() ?: defaultGuiBackgroundColour
Gdx.gl.glClearColor(clearCol.r, clearCol.g, clearCol.b, clearCol.a)
@@ -262,6 +266,9 @@ class VMGUI(val loaderInfo: EmulInstance, val viewportWidth: Int, val viewportHe
gpuFBO.end()
camera.setToOrtho(false, viewportWidth.toFloat(), viewportHeight.toFloat())
batch.projectionMatrix = camera.combined
winFBO.begin()
Gdx.gl.glClearColor(0f, 0f, 0f, 0f)
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
@@ -286,6 +293,19 @@ class VMGUI(val loaderInfo: EmulInstance, val viewportWidth: Int, val viewportHe
(viewportWidth - loaderInfo.drawWidth).div(2).toFloat() + (gpu?.config?.width ?: 0),
(viewportHeight - loaderInfo.drawHeight).div(2).toFloat())
}
winFBO.end()
camera.setToOrtho(true, viewportWidth * AppLoader.MAGN, viewportHeight * AppLoader.MAGN)
batch.projectionMatrix = camera.combined
Gdx.gl.glClearColor(0f, 0f, 0f, 0f)
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
batch.inUse {
batch.shader = null
batch.color = Color.WHITE
batch.draw(winFBO.colorBufferTexture, 0f, 0f, viewportWidth * AppLoader.MAGN, viewportHeight * AppLoader.MAGN)
}
}
private fun setCameraPosition(newX: Float, newY: Float) {
@@ -320,12 +340,14 @@ class VMGUI(val loaderInfo: EmulInstance, val viewportWidth: Int, val viewportHe
crtGradTex.texture.dispose()
crtShader.dispose()
gpuFBO.dispose()
winFBO.dispose()
vm.dispose()
System.err.println("VM disposed: ${vm.id}")
exitProcess(0)
}
companion object {
val cp437toUni = hashMapOf<Int, Char>(
0 to 32.toChar(),