mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-12 14:11:50 +09:00
libgdx update to 1.10.0 and lwjgl3
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user