08-06-2023, 08:03 AM
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)