Genie Engine .SLP graphic file parser/renderer in Node.js
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
.npmignore
LICENSE
README.md
index.js
package.json

README.md

genie-slp

Genie Engine .SLP graphic file reader in Node.js

NPM

Usage Example

let fs = require('fs')

// Load a Palette file using the `jascpal` module
let Palette = require('jascpal')
let mainPalette = Palette(fs.readFileSync('palette.pal'))

// Load an SLP file and render a frame
let SLP = require('genie-slp')
let slp = SLP(fs.readFileSync('my-file.slp'))
let frame = slp.renderFrame(0, mainPalette, { player: 7 })

// Render the returned ImageData object to a PNG file
let { PNG } = require('pngjs')
let png = new PNG({
  width: frame.width,
  height: frame.height
})
png.data = Buffer.from(frame.data.buffer)
png.pack().pipe(fs.createWriteStream('my-file.png'))

API

SLP(buffer: Buffer)

Creates an SLP graphic from a buffer.

SLP#renderFrame(frameIndex: number, palette: Palette, { player: number, drawOutline: boolean }): ImageData

Renders a frame to an [ r, g, b, a ] ImageData object.

Parameters

  • frameIndex - The SLP frame ID to render.
  • palette - A colour palette: an array of [ r, g, b ] colour arrays, probably from the jascpal module.
  • options - Optionally, an object with properties:
    • player - Player colour (1-8) to use for player-specific parts. Defaults to 1 (blue).
    • drawOutline - Whether to draw an outline (used when units are behind buildings, etc). Defaults to false.

In the browser, returns an ImageData object that can be drawn to a Canvas. In node, returns a plain object with the data as a Uint8ClampedArray, the width of the frame, and the height of the frame (like the ImageData API).

Related

  • jascpal - JASC Paint Shop Pro palette file parser--these are the palette files used by the Genie engine
  • genie-drs - Read and manipulate Genie Engine .DRS file archives

License

MIT