mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
various fixes
This commit is contained in:
Binary file not shown.
@@ -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) {
|
||||
|
||||
@@ -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())
|
||||
))
|
||||
|
||||
Binary file not shown.
@@ -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<logo.length;i++){graphics.plotPixel(i%560,95+(i/560)|0,logo[i])}
|
||||
// cover up bottom part with text characters (!)
|
||||
graphics.setBackground(0,4,15);con.color_pair(14,255);
|
||||
for(let y=1;y<19;y++)for(let x=1;x<81;x++)graphics.putSymbolAt(y,x,32);
|
||||
for(let x=1;x<81;x++)graphics.putSymbolAt(19,x,220);
|
||||
for(let y=20;y<33;y++)for(let x=1;x<81;x++)graphics.putSymbolAt(y,x,219);
|
||||
// scroll up
|
||||
let tmr=sys.nanoTime();
|
||||
let tlen=1073741824;
|
||||
while(1){let tdiff=sys.nanoTime()-tmr;if(tdiff>=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;
|
||||
}
|
||||
Binary file not shown.
BIN
assets/mods/dwarventech/gui/FontROM7x14.tga
LFS
Normal file
BIN
assets/mods/dwarventech/gui/FontROM7x14.tga
LFS
Normal file
Binary file not shown.
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -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")
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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?,
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user