Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
One single layer, no sprites. Pushing Tilengine to its limits?
#14
Hi, I found the code, it is quite simple. I read a binary file that contains the colors :
Code:
import std/streams
import Tilengine/Tilengine
import strutils
proc readInts(path: string): seq[uint32] =
  result = newSeq[uint32](57344) # Preallocate 100 ints
  let fs = newFileStream(path, fmRead)
  defer: fs.close()
  let read = fs.readData(result[0].addr, sizeof(uint32) * result.len)
  result.setLen(read div sizeof(int32))

var array = readInts("./byte.dat")

var engine = initEngine(256, 224, 2, 0, 0)

var palettes: array[256, TLN_Palette]

# We init palettes...
for i in 0..palettes.len - 1:
    palettes[i] = createPalette(256)
    for a in 0..255:
        discard setPaletteColor(palettes[i], a, 0, 0, 0)

for y in 0..223: # 224 scanlines
    for x in 0..255: # 256 columns
        let arr = cast[array[4, byte]](array[(y * 256) + x])
        discard setPaletteColor(palettes[y], x, arr[0], arr[1], arr[2]) 

proc rasterCallback(scanline: cint) =
    discard setLayerPalette(1, palettes[scanline])
    var color = getPaletteColor(palettes[scanline], 0)
    setBgColor(color)

setRasterCallback(  rasterCallback)

# The background that contains 256 colors, and is 256 pixels wide (one color per column)
var tilemap = loadTilemap("./assets/hicolor/gradient.tmx")
if(tilemap == nil):
    echo "ERROR"

discard setLayerTilemap(1, tilemap)

discard createWindow("", {SIZE3})
while(processWindow()):
    drawFrame(0)
Reply


Messages In This Thread
RE: One single layer, no sprites. Pushing Tilengine to its limits? - by System64 - 08-06-2023, 08:03 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)