libgdx update to 1.10.0 and lwjgl3

This commit is contained in:
minjaesong
2021-07-20 14:53:38 +09:00
parent 48dae50d09
commit abc466667e
74 changed files with 239 additions and 52 deletions

View File

@@ -1,8 +1,8 @@
package net.torvald.tsvm;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import net.torvald.tsvm.peripheral.*;
@@ -10,21 +10,22 @@ import net.torvald.tsvm.peripheral.*;
public class AppLoader {
public static String appTitle = "Totally Simple Virtual Machine";
public static LwjglApplicationConfiguration appConfig;
public static Lwjgl3ApplicationConfiguration appConfig;
public static int WIDTH = 810;//720;
public static int HEIGHT = 360;//480;
public static void main(String[] args) {
ShaderProgram.pedantic = false;
appConfig = new LwjglApplicationConfiguration();
appConfig.foregroundFPS = 60;
appConfig.backgroundFPS = 60;
appConfig.vSyncEnabled = false;
appConfig.useGL30 = false;
appConfig.resizable = false;
appConfig.title = appTitle;
appConfig.forceExit = true;
appConfig.width = 810;//720;
appConfig.height = 360;//480;
appConfig = new Lwjgl3ApplicationConfiguration();
appConfig.setIdleFPS(60);
appConfig.setForegroundFPS(60);
appConfig.useVsync(false);
appConfig.setResizable(false);
appConfig.setTitle(appTitle);
appConfig.setWindowedMode(WIDTH, HEIGHT);
//VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{BasicBios.INSTANCE, BasicRom.INSTANCE});
@@ -35,14 +36,14 @@ public class AppLoader {
// uncomment to target the TerranBASIC runner
//VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{TBASRelBios.INSTANCE});
EmulInstance reference = new EmulInstance(appConfig, vm, "net.torvald.tsvm.peripheral.ReferenceGraphicsAdapter", "assets/disk0");
EmulInstance reference2 = new EmulInstance(appConfig, vm, "net.torvald.tsvm.peripheral.ReferenceLikeLCD", "assets/disk0");
EmulInstance term = new EmulInstance(appConfig, vm, "net.torvald.tsvm.peripheral.Term", "assets/disk0");
EmulInstance portable = new EmulInstance(appConfig, vm, "net.torvald.tsvm.peripheral.CharacterLCDdisplay", "assets/disk0");
EmulInstance reference = new EmulInstance(vm, "net.torvald.tsvm.peripheral.ReferenceGraphicsAdapter", "assets/disk0");
EmulInstance reference2 = new EmulInstance(vm, "net.torvald.tsvm.peripheral.ReferenceLikeLCD", "assets/disk0");
EmulInstance term = new EmulInstance(vm, "net.torvald.tsvm.peripheral.Term", "assets/disk0");
EmulInstance portable = new EmulInstance(vm, "net.torvald.tsvm.peripheral.CharacterLCDdisplay", "assets/disk0");
EmulInstance wp = new EmulInstance(appConfig, vm, "net.torvald.tsvm.peripheral.WpTerm", "assets/wpdisk");
EmulInstance wp = new EmulInstance(vm, "net.torvald.tsvm.peripheral.WpTerm", "assets/wpdisk");
new LwjglApplication(new VMGUI(wp), appConfig);
new Lwjgl3Application(new VMGUI(wp), appConfig);
}
public static ShaderProgram loadShaderFromFile(String vert, String frag) {

View File

@@ -2,7 +2,6 @@ package net.torvald.tsvm
import net.torvald.UnsafeHelper
import net.torvald.tsvm.peripheral.GraphicsAdapter
import sun.nio.ch.DirectBuffer
class GraphicsJSR223Delegate(val vm: VM) {
@@ -27,13 +26,13 @@ class GraphicsJSR223Delegate(val vm: VM) {
}
}
fun loadBulk(fromAddr: Int, toAddr: Int, length: Int) {
/*fun loadBulk(fromAddr: Int, toAddr: Int, length: Int) {
getFirstGPU()?._loadbulk(fromAddr, toAddr, length)
}
fun storeBulk(fromAddr: Int, toAddr: Int, length: Int) {
getFirstGPU()?._storebulk(fromAddr, toAddr, length)
}
}*/
fun plotPixel(x: Int, y: Int, color: Int) {
getFirstGPU()?.let {
@@ -90,7 +89,7 @@ class GraphicsJSR223Delegate(val vm: VM) {
}
}
private fun GraphicsAdapter._loadbulk(fromAddr: Int, toAddr: Int, length: Int) {
/*private fun GraphicsAdapter._loadbulk(fromAddr: Int, toAddr: Int, length: Int) {
UnsafeHelper.memcpy(
vm.usermem.ptr + fromAddr,
(this.framebuffer.pixels as DirectBuffer).address() + toAddr,
@@ -104,7 +103,7 @@ class GraphicsJSR223Delegate(val vm: VM) {
vm.usermem.ptr + toAddr,
length.toLong()
)
}
}*/
private fun GraphicsAdapter._loadSprite(spriteNum: Int, ptr: Int) {
UnsafeHelper.memcpy(

View File

@@ -2,7 +2,6 @@ package net.torvald.tsvm
import com.badlogic.gdx.ApplicationAdapter
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration
import com.badlogic.gdx.graphics.*
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import kotlinx.coroutines.*
@@ -14,7 +13,6 @@ fun ByteArray.startsWith(other: ByteArray) = this.sliceArray(other.indices).cont
data class EmulInstance(
val appConfig: LwjglApplicationConfiguration,
val vm: VM,
val display: String,
val diskPath: String = "assets/disk0"
@@ -22,7 +20,6 @@ data class EmulInstance(
class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
val appConfig = loaderInfo.appConfig
val vm = loaderInfo.vm
lateinit var batch: SpriteBatch
@@ -45,10 +42,10 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
VertexAttribute.ColorUnpacked(),
VertexAttribute.TexCoords(0)
)
updateFullscreenQuad(appConfig.width, appConfig.height)
updateFullscreenQuad(AppLoader.WIDTH, AppLoader.HEIGHT)
batch = SpriteBatch()
camera = OrthographicCamera(appConfig.width.toFloat(), appConfig.height.toFloat())
camera = OrthographicCamera(AppLoader.WIDTH.toFloat(), AppLoader.HEIGHT.toFloat())
camera.setToOrtho(false)
camera.update()
batch.projectionMatrix = camera.combined
@@ -144,7 +141,7 @@ class VMGUI(val loaderInfo: EmulInstance) : ApplicationAdapter() {
}
private fun setCameraPosition(newX: Float, newY: Float) {
camera.position.set((-newX + appConfig.width / 2), (-newY + appConfig.height / 2), 0f) // deliberate integer division
camera.position.set((-newX + AppLoader.WIDTH / 2), (-newY + AppLoader.HEIGHT / 2), 0f) // deliberate integer division
camera.update()
batch.setProjectionMatrix(camera.combined)
}

View File

@@ -287,7 +287,7 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor {
}
}
override fun scrolled(p0: Int): Boolean {
override fun scrolled(p0: Float, p1: Float): Boolean {
return false
}

View File

@@ -2,8 +2,8 @@ package net.torvald.tsvm.vdc
import com.badlogic.gdx.ApplicationAdapter
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.backends.lwjgl.LwjglApplication
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration
import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.ShaderProgram
@@ -13,7 +13,7 @@ import kotlinx.coroutines.launch
import net.torvald.tsvm.*
import net.torvald.tsvm.peripheral.GraphicsAdapter
class V2kRunTest(val appConfig: LwjglApplicationConfiguration) : ApplicationAdapter() {
class V2kRunTest : ApplicationAdapter() {
val vm = VM(64.kB(), TheRealWorld(), arrayOf())
lateinit var gpu: GraphicsAdapter
@@ -40,11 +40,11 @@ class V2kRunTest(val appConfig: LwjglApplicationConfiguration) : ApplicationAdap
)
batch = SpriteBatch()
camera = OrthographicCamera(appConfig.width.toFloat(), appConfig.height.toFloat())
camera = OrthographicCamera(AppLoader.WIDTH.toFloat(), AppLoader.WIDTH.toFloat())
camera.setToOrtho(false)
camera.update()
batch.projectionMatrix = camera.combined
Gdx.gl20.glViewport(0, 0, appConfig.width, appConfig.height)
Gdx.gl20.glViewport(0, 0, AppLoader.WIDTH, AppLoader.HEIGHT)
vm.getPrintStream = { gpu.getPrintStream() }
vm.getErrorStream = { gpu.getErrorStream() }
@@ -103,15 +103,13 @@ class V2kRunTest(val appConfig: LwjglApplicationConfiguration) : ApplicationAdap
fun main() {
ShaderProgram.pedantic = false
val appConfig = LwjglApplicationConfiguration()
appConfig.foregroundFPS = 60
appConfig.backgroundFPS = 60
appConfig.vSyncEnabled = false
appConfig.useGL30 = true
appConfig.resizable = false
appConfig.title = "Videotron2K Test"
appConfig.forceExit = true
appConfig.width = 560
appConfig.height = 448
LwjglApplication(V2kRunTest(appConfig), appConfig)
val appConfig = Lwjgl3ApplicationConfiguration()
appConfig.setIdleFPS(60)
appConfig.setForegroundFPS(60)
appConfig.useVsync(false)
appConfig.setResizable(false)
appConfig.setTitle("Videotron2K Test")
appConfig.setWindowedMode(560, 448)
Lwjgl3Application(V2kRunTest(), appConfig)
}