Tilengine by Megamarc is a free, cross-platform software rendering engine for retro-style 2D games using tilemaps, sprites and palettes. Many oldschool tricks are supported such as palette-based animation and per-scanline raster effects. The implementation is efficient and can run well even on a Raspberry Pi.
Last month I put together nim-tilengine, allowing you to use Tilengine with the Nim programming language.
These bindings strip away all the cruft from the C API, leading to code that's shorter and more readable than even the official Python bindings, while keeping native performance!
import tilengine let engine = init(320, 180, numLayers = 4, numSprites = 128, numAnimations = 128) let map = loadTilemap("assets/map.tmx") Layer(0).setTilemap(map) createWindow() while processWindow(): drawFrame() map.delete() deleteWindow() deinit()