From 514824252222845eebb60da5b49c132e346d60be Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 2 Dec 2021 16:14:56 +0900 Subject: [PATCH] generating paint diff from old draw cmd buf --- assets/bios/pipcode.bas | 7 ++++--- .../tsvmperipheral/WorldRadar.kt | 7 +++++-- test_assets/test_terrain.png | Bin 2060 -> 2077 bytes 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/assets/bios/pipcode.bas b/assets/bios/pipcode.bas index 6212a49..a21e4bd 100644 --- a/assets/bios/pipcode.bas +++ b/assets/bios/pipcode.bas @@ -2,11 +2,12 @@ 20 s=cput(1,"POLL") 30 if s><0 then goto 900 40 l=cget(1,0) -41 print("length: "+l+", pixels: "+l/3) -50 for i=0 to l step 3 +41 REM print("length: "+l+", pixels: "+l/3) +50 for i=0 to l-1 step 3 60 m=peek(i)*160+peek(i+1) 62 p=peek(i+2) 63 poke(-1048576-m,p) 70 next -899 end +80 REM poke(-1070977,0) +90 goto 20 900 print("Polling failed: "+s) diff --git a/src/net/torvald/terrarum/modulecomputers/tsvmperipheral/WorldRadar.kt b/src/net/torvald/terrarum/modulecomputers/tsvmperipheral/WorldRadar.kt index 37cd8ca..e9211be 100644 --- a/src/net/torvald/terrarum/modulecomputers/tsvmperipheral/WorldRadar.kt +++ b/src/net/torvald/terrarum/modulecomputers/tsvmperipheral/WorldRadar.kt @@ -77,6 +77,8 @@ class WorldRadar(pngfile: FileHandle) : BlockTransferInterface(false, true) { return sendSize } + private var oldCmdbuf = HashMap(1024) + override fun writeoutImpl(inputData: ByteArray) { val inputString = inputData.trimNull().toString(VM.CHARSET) @@ -116,8 +118,8 @@ class WorldRadar(pngfile: FileHandle) : BlockTransferInterface(false, true) { } }} - cmdbuf.keys.sorted().forEach { key -> - val value = cmdbuf[key]!!.toInt() + (oldCmdbuf.keys union cmdbuf.keys).sorted().forEach { key -> + val value = (cmdbuf[key] ?: AIR_OUT).toInt() val x = key % 256 val y = key / 256 messageComposeBuffer.write(y) @@ -125,6 +127,7 @@ class WorldRadar(pngfile: FileHandle) : BlockTransferInterface(false, true) { messageComposeBuffer.write(value) } + oldCmdbuf = cmdbuf } } } \ No newline at end of file diff --git a/test_assets/test_terrain.png b/test_assets/test_terrain.png index 45e5cf48e0e3ab5c1b85db9de5b3da0832e0d0fc..ae15ca774244a93f92e78de8e3547a356822fbbf 100644 GIT binary patch delta 1696 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 Zp8zf7vIxJV$u$4~002ovPDHLkV1hrj1u*~s