diff --git a/ModuleComputers/lib/TerrarumTSVM.jar b/ModuleComputers/lib/TerrarumTSVM.jar index 66a962382..e3e47ad26 100644 Binary files a/ModuleComputers/lib/TerrarumTSVM.jar and b/ModuleComputers/lib/TerrarumTSVM.jar differ diff --git a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt index 0162a3716..6f9f9b111 100644 --- a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt +++ b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt @@ -19,6 +19,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas import net.torvald.tsvm.* +import net.torvald.tsvm.peripheral.AdapterConfig import net.torvald.tsvm.peripheral.GraphicsAdapter import net.torvald.tsvm.peripheral.ReferenceGraphicsAdapter import net.torvald.tsvm.peripheral.VMProgramRom @@ -28,11 +29,15 @@ import net.torvald.tsvm.peripheral.VMProgramRom */ class FixtureHomeComputer : FixtureBase { - private val vm = VM(0x200000, TheRealWorld(), arrayOf( + // TODO: write serialiser for TSVM && allow mods to have their own serialiser + private val vm = VM(ModMgr.getGdxFile("dwarventech", "bios").path(), 0x200000, TheRealWorld(), arrayOf( VMProgramRom(ModMgr.getGdxFile("dwarventech", "bios/tsvmbios.js").path()) )) - private val vmRunner: VMRunner - private val coroutineJob: Job + @Transient private lateinit var vmRunner: VMRunner + @Transient private lateinit var coroutineJob: Job + + @Transient private var vmStarted = false + @Transient private lateinit var disposableObj: Disposable constructor() : super( BlockBox(BlockBox.NO_COLLISION, 1, 1), @@ -49,7 +54,7 @@ class FixtureHomeComputer : FixtureBase { actorValue[AVKey.BASEMASS] = 20.0 - val gpu = ReferenceGraphicsAdapter(ModMgr.getGdxFile("dwarventech", "gui").path(), vm) + val gpu = GraphicsAdapter(ModMgr.getGdxFile("dwarventech", "gui").path(), vm, GRAPHICSCONFIG) // vm.getIO().blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, ...)) vm.peripheralTable[1] = PeripheralEntry( @@ -64,23 +69,66 @@ class FixtureHomeComputer : FixtureBase { vm.getInputStream = { gpu.getInputStream() } (mainUI as UIHomeComputer).vm = vm - + (mainUI as UIHomeComputer).fixture = this vmRunner = VMRunnerFactory(ModMgr.getGdxFile("dwarventech", "bios").path(), vm, "js") - coroutineJob = GlobalScope.launch { - vmRunner.executeCommand(vm.roms[0]!!.readAll()) - } + } + + fun startVM() { + if (!vmStarted) { + vmStarted = true + + coroutineJob = GlobalScope.launch { + vmRunner.executeCommand(vm.roms[0]!!.readAll()) + } + + disposableObj = Disposable { + vmRunner.close() + coroutineJob.cancel("fixture disposal") + vm.dispose() + } + INGAME.disposables.add(disposableObj) + } + } + + fun stopVM() { + if (vmStarted) { + vmStarted = false - INGAME.disposables.add(Disposable { vmRunner.close() coroutineJob.cancel("fixture disposal") vm.dispose() - }) + + INGAME.disposables.remove(disposableObj) + } } override fun reload() { super.reload() + val gpu = GraphicsAdapter(ModMgr.getGdxFile("dwarventech", "gui").path(), vm, GRAPHICSCONFIG) +// vm.getIO().blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, ...)) + + vm.peripheralTable[1] = PeripheralEntry( + gpu, + GraphicsAdapter.VRAM_SIZE, + 16, + 0 + ) + + vm.getPrintStream = { gpu.getPrintStream() } + vm.getErrorStream = { gpu.getErrorStream() } + vm.getInputStream = { gpu.getInputStream() } + (mainUI as UIHomeComputer).vm = vm + (mainUI as UIHomeComputer).fixture = this + vmRunner = VMRunnerFactory(ModMgr.getGdxFile("dwarventech", "bios").path(), vm, "js") + } + + companion object { + val GRAPHICSCONFIG = AdapterConfig( + "crt_color", + 560, 448, 80, 32, 253, 255, 256 shl 10, "FontROM7x14.tga", 0.0f, GraphicsAdapter.TEXT_TILING_SHADER_COLOUR + ) } } @@ -99,6 +147,7 @@ internal class UIHomeComputer : UICanvas( private var camera: OrthographicCamera internal lateinit var vm: VM + internal lateinit var fixture: FixtureHomeComputer init { batch = FlippingSpriteBatch() @@ -138,6 +187,7 @@ internal class UIHomeComputer : UICanvas( } override fun doOpening(delta: Float) { + fixture.startVM() } override fun doClosing(delta: Float) { diff --git a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameitems/ItemWearableWorldRadar.kt b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameitems/ItemWearableWorldRadar.kt index 689555f31..d345c4f99 100644 --- a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameitems/ItemWearableWorldRadar.kt +++ b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameitems/ItemWearableWorldRadar.kt @@ -42,7 +42,7 @@ class ItemWearableWorldRadar(originalID: String) : GameItem(originalID) { override var baseToolSize: Double? = baseMass - private val vm = VM(73728, TheRealWorld(), arrayOf( + private val vm = VM(ModMgr.getGdxFile("dwarventech", "bios").path(), 73728, TheRealWorld(), arrayOf( VMProgramRom(ModMgr.getGdxFile("dwarventech", "bios/pipboot.rom").path()), VMProgramRom(ModMgr.getGdxFile("dwarventech", "bios/pipcode.bas").path()) )) diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/devanagari_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/devanagari_variable.tga index 212502704..713762c8c 100644 --- a/assets/graphics/fonts/terrarum-sans-bitmap/devanagari_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/devanagari_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eacf036aa84ccfb1b400e7a2098daf7e15ba7a1ecce2049b750b5edcfb2e5f8d +oid sha256:a0c83740b9077381925fb57175f57b74424b42627796cc4e628b16cbe6e41a10 size 1474578 diff --git a/assets/mods/dwarventech/bios/tsvmbios.js b/assets/mods/dwarventech/bios/tsvmbios.js index 36224914a..49ebac6a4 100644 --- a/assets/mods/dwarventech/bios/tsvmbios.js +++ b/assets/mods/dwarventech/bios/tsvmbios.js @@ -1,83 +1,21 @@ + +let len = 560*448; +let pcnt = (system.maxmem() / len)|0; +if (pcnt < 2) { + printerrln("Not enought RAM on the system to test!"); + return; +} +let c = 0; +print("Rendering plane "); +for (c = 0; c < pcnt; c++) { + print(`${c} `); + for (let i = 0; i < len; i++) { + sys.poke(c*len + i, c * ((256/pcnt)|0) + 1); + } +} +println("Let's see how fast DMA really is!"); +c = 0; while (1) { -con.reset_graphics();con.curs_set(0);con.clear(); -graphics.resetPalette();graphics.setBackground(0,0,0); - -let logo = gzip.decomp(base64.atob("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")); - - - -// display logo in mundane, true-to-msx way -graphics.setFramebufferScroll(0,-164); -// hide entire framebuffer with black text to hide the slow image drawing -con.color_pair(0,0); -for(let i=0;i<2560;i++)graphics.putSymbolAt(1+(i/80)|0,1+(i%80),239); -// draw logo -for(let i=0;i=tlen)break; -graphics.setFramebufferScroll(0,-((1.0-tdiff/tlen)*164)|0);} - - -// show how much ram is there -con.color_pair(239,14); -let vramstr="VIDEO RAM : 256 Kbytes"; -let uramstr=` USER RAM : ${system.maxmem()>>>10} Kbytes`; -con.move(20,(80-vramstr.length)/2);println(vramstr); -con.move(21,(80-uramstr.length)/2);println(uramstr); - -/////////////////////////////////////////////////////////////////////////////// - - -// probe bootable device - -/*var _BIOS = {}; - -// Syntax: [Port, Drive-number] -// Port #0-3: Serial port 1-4 -// #4+ : Left for future extension -// Drive-number always starts at 1 -_BIOS.FIRST_BOOTABLE_PORT = [0,1]; // ah screw it - -Object.freeze(_BIOS);*/ - -/////////////////////////////////////////////////////////////////////////////// - -// make user wait around because why not - -tmr = sys.nanoTime(); -while (sys.nanoTime() - tmr < 2147483648) sys.spin(); -// clear screen -graphics.clearPixels(255);con.color_pair(239,255); -con.clear();con.move(1,1); - -/////////////////////////////////////////////////////////////////////////////// - -// load a bootsector using 'LOADBOOT' -let portNumber = 0; -let driveStatus = 0; -while (portNumber < 4) { - if (com.areYouThere(portNumber)) { - com.sendMessage(portNumber, "LOADBOOT"); - driveStatus = com.getStatusCode(portNumber); - if (driveStatus == 0) break; - } - portNumber += 1; -} -if (portNumber < 4) { -// eval(com.fetchResponse(portNumber).trimNull()); - // using Function() so that BIOS variables won't get leaked in - {Function("\"use strict\";var _BIOS={};_BIOS.FIRST_BOOTABLE_PORT=[0,1];Object.freeze(_BIOS);"+com.fetchResponse(portNumber).trimNull())()}; - break; -} -else { - printerrln("No bootable medium found."); -} - + dma.ramToFrame(len * c, 0, len); + c = (c + 1) % pcnt; } \ No newline at end of file diff --git a/assets/mods/dwarventech/gui/FontROM7x14.png b/assets/mods/dwarventech/gui/FontROM7x14.png deleted file mode 100644 index 1ce24f818..000000000 --- a/assets/mods/dwarventech/gui/FontROM7x14.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6bc2330ab69294b7958d10eb1b47f1d5a5e54f3c4f84a71a2cf75407ec8a510 -size 3701 diff --git a/assets/mods/dwarventech/gui/FontROM7x14.tga b/assets/mods/dwarventech/gui/FontROM7x14.tga new file mode 100644 index 000000000..0c72b73a5 --- /dev/null +++ b/assets/mods/dwarventech/gui/FontROM7x14.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f593e1e1fd2f6e2e729560d7630b9f785be20a5bce34c46890bc0716ec4e204 +size 100370 diff --git a/assets/mods/dwarventech/metadata.properties b/assets/mods/dwarventech/metadata.properties index 9942430ab..bcf84fdf0 100644 --- a/assets/mods/dwarventech/metadata.properties +++ b/assets/mods/dwarventech/metadata.properties @@ -6,5 +6,5 @@ entrypoint=net.torvald.terrarum.modulecomputers.EntryPoint releasedate=2021-12-03 version=0.3.0 jar=ModuleComputers.jar -jarhash=b2d50cc10693885f060a5825a4fb2be2993b461bae2e58b4a4900fa169ec898f +jarhash=384E6650960E9D044055C5BAFE4C941398B688C3809FA6733B06DDB92A746CFA dependency=basegame 0.3.0 diff --git a/lib/TerrarumSansBitmap.jar b/lib/TerrarumSansBitmap.jar index 426ef8530..4fb4ae116 100644 Binary files a/lib/TerrarumSansBitmap.jar and b/lib/TerrarumSansBitmap.jar differ diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt index dae8ab1d6..d8fc45003 100644 --- a/src/net/torvald/terrarum/ModMgr.kt +++ b/src/net/torvald/terrarum/ModMgr.kt @@ -218,7 +218,7 @@ object ModMgr { val hash = digester.digest(File(jarFilePath).readBytes()).joinToString("","","") { it.toInt().and(255).toString(16).uppercase().padStart(2,'0') } if (jarHash != hash) { - println("Hash expected: $jarHash, got: $hash") + printdbg(this, "Hash expected: $jarHash, got: $hash") throw IllegalStateException("Module Jarfile hash mismatch") } diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 287aa54b4..8b654b0d4 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -144,7 +144,10 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { val SIZE_NORMAL = Point2i(9000, 2250) val SIZE_LARGE = Point2i(13500, 2970) val SIZE_HUGE = Point2i(22500, 4500) - val WORLDSIZE = arrayOf(SIZE_SMALL, SIZE_NORMAL, SIZE_LARGE, SIZE_HUGE) + val WORLDSIZE = if (App.IS_DEVELOPMENT_BUILD) + arrayOf(Point2i(2880, 1350), SIZE_SMALL, SIZE_NORMAL, SIZE_LARGE, SIZE_HUGE) + else + arrayOf(SIZE_SMALL, SIZE_NORMAL, SIZE_LARGE, SIZE_HUGE) val worldgenThreadExecutor = ThreadExecutor() } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIIMEConfig.kt similarity index 99% rename from src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIIMEConfig.kt index ddd940b2c..fdaeb9db9 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardInputConfig.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIIMEConfig.kt @@ -16,7 +16,7 @@ import net.torvald.terrarum.ui.* /** * Created by minjaesong on 2021-11-10. */ -class UIKeyboardInputConfig(remoCon: UIRemoCon?) : UICanvas() { +class UIIMEConfig(remoCon: UIRemoCon?) : UICanvas() { override var width = 480 override var height = 600 @@ -179,7 +179,7 @@ class UIKeyboardInputConfig(remoCon: UIRemoCon?) : UICanvas() { // title // TODO only when text input using gamepad is supported, and even then, use text spinner -// val title = Lang["MENU_CONTROLS_KEYBOARD"] +// val title = Lang["MENU_LABEL_IME"] // App.fontGame.draw(batch, title, drawX.toFloat() + (width - App.fontGame.getWidth(title)) / 2, drawY.toFloat()) batch.color = Color.WHITE @@ -230,7 +230,7 @@ class UIKeyboardInputConfig(remoCon: UIRemoCon?) : UICanvas() { * @param key LibGDX keycode. Set it to `null` to "disable" the key. Also see [com.badlogic.gdx.Input.Keys] */ private class UIItemInputKeycap( - val parent: UIKeyboardInputConfig, + val parent: UIIMEConfig, initialX: Int, initialY: Int, val key: Int?, diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt index c8cb0c6d1..3fa9d732f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt @@ -32,7 +32,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { private val gameMenu = arrayOf( "MENU_IO_SAVE_GAME", "MENU_OPTIONS_CONTROLS", - "MENU_CONTROLS_KEYBOARD", + "MENU_LABEL_IME", "MENU_LABEL_LANGUAGE", "MENU_LABEL_QUIT", ) @@ -77,7 +77,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { private val savingUI = UIItemSaving(this, (width - UIItemSaving.WIDTH) / 2, (height - UIItemSaving.HEIGHT) / 2) private val keyConfigUI = UIKeyboardControlPanel(null) private val languageUI = UITitleLanguage(null) - private val keyboardSetupUI = UIKeyboardInputConfig(null) + private val keyboardSetupUI = UIIMEConfig(null) private var oldScreen = 0 private var screen = 0 diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt index a00b282d0..72ad6706f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIKeyboardControlPanel.kt @@ -9,7 +9,6 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.App import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.DefaultConfig -import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.ui.* @@ -270,7 +269,7 @@ private class UIItemKeycap( this.posX = initialX + parent.kbx this.posY = initialY + parent.kby } - else if (parent is UIKeyboardInputConfig) { + else if (parent is UIIMEConfig) { this.posX = initialX + parent.kbx this.posY = initialY + parent.kby } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UINewWorld.kt b/src/net/torvald/terrarum/modulebasegame/ui/UINewWorld.kt index ee6ee02a8..c817c1162 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UINewWorld.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UINewWorld.kt @@ -44,7 +44,7 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() { private val radioCellWidth = 100 private val inputWidth = 340 - private val radioX = (width - (radioCellWidth * 4 + 9)) / 2 + private val radioX = (width - (radioCellWidth * (if (App.IS_DEVELOPMENT_BUILD) 5 else 4) + 9)) / 2 private val inputX = width - inputWidth private val sizeSelY = 186 + 40 @@ -53,12 +53,22 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() { private val sizeSelector = UIItemInlineRadioButtons(this, drawX + radioX, drawY + sizeSelY, radioCellWidth, - listOf( - { Lang["CONTEXT_DESCRIPTION_SMALL"] }, - { Lang["MENU_SETTING_MEDIUM"] }, // ;p - { Lang["CONTEXT_DESCRIPTION_BIG"] }, - { Lang["CONTEXT_DESCRIPTION_HUGE"] } - )) + if (App.IS_DEVELOPMENT_BUILD) + listOf( + { Lang["CONTEXT_DESCRIPTION_TINY"] }, + { Lang["CONTEXT_DESCRIPTION_SMALL"] }, + { Lang["MENU_SETTING_MEDIUM"] }, // ;p + { Lang["CONTEXT_DESCRIPTION_BIG"] }, + { Lang["CONTEXT_DESCRIPTION_HUGE"] } + ) + else + listOf( + { Lang["CONTEXT_DESCRIPTION_SMALL"] }, + { Lang["MENU_SETTING_MEDIUM"] }, // ;p + { Lang["CONTEXT_DESCRIPTION_BIG"] }, + { Lang["CONTEXT_DESCRIPTION_HUGE"] } + ) + ) private val rng = HQRNG() @@ -125,7 +135,7 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() { // App.fontUITitle.draw(batch, titlestr, drawX + (width - App.fontGame.getWidth(titlestr)).div(2).toFloat(), titleTextPosY.toFloat()) // draw size previews - val texture = tex[sizeSelector.selection] + val texture = tex[sizeSelector.selection.coerceAtMost(tex.lastIndex)] val tx = drawX + (width - texture.regionWidth) / 2 val ty = drawY + (160 - texture.regionHeight) / 2 batch.draw(texture, tx.toFloat(), ty.toFloat()) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt index 1f6051bba..a1a38addd 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt @@ -16,7 +16,7 @@ object UITitleRemoConYaml { - MENU_OPTIONS - MENU_LABEL_GRAPHICS : net.torvald.terrarum.modulebasegame.ui.UIGraphicsControlPanel - MENU_OPTIONS_CONTROLS : net.torvald.terrarum.modulebasegame.ui.UIKeyboardControlPanel - - MENU_CONTROLS_KEYBOARD : net.torvald.terrarum.modulebasegame.ui.UIKeyboardInputConfig + - MENU_LABEL_IME : net.torvald.terrarum.modulebasegame.ui.UIIMEConfig - MENU_LABEL_LANGUAGE : net.torvald.terrarum.modulebasegame.ui.UITitleLanguage - MENU_MODULES : net.torvald.terrarum.ModOptionsHost - MENU_LABEL_RETURN+WRITETOCONFIG diff --git a/src/net/torvald/terrarum/ui/UICanvas.kt b/src/net/torvald/terrarum/ui/UICanvas.kt index e7ca72540..94bc017af 100644 --- a/src/net/torvald/terrarum/ui/UICanvas.kt +++ b/src/net/torvald/terrarum/ui/UICanvas.kt @@ -53,6 +53,7 @@ import kotlin.math.roundToInt * ... * endClosing() * ``` + * NOTE: show/hide is a UICanvas function, while do/endSomething() is UIHandler function. * * Created by minjaesong on 2015-12-31. */