Hello,
Tilengine is a free, cross-platform graphics library designed to follow the working principles of the 2D graphics chips found in video game systems of the 80s and 90s, known collectively as VDP (Video Display Processor). It works with a fixed set of background layers composed of tilesets and tilemaps, and a fixed set of sprites. Instead of drawing to a whole framebuffer and then blitting to screen, you control de properties of the layers and the sprites, and then the rendering algorithm draws sequentially full scanlines from top to bottom. With a callback that acts as a virtual horizontal blanking interrupt, you can modify the attributes of objetcs between scanlines, opening the door to a wide array of so-called raster effects. These effects were at the core of many high profile arcade and console games of the 16-bit era.
Tilengine has all the features found ond different VDPs: scaling sprites of Sega' SuperScaler arcade board, affine transformed backgrounds and blending effects of the Super Nintendo, and unlimited tilesets, tilemaps, map size and color palettes (which were quite limited on real hardware)
It is available for the Raspberry Pi (as well as Windows, Linux and android). The core API is C language, but has bindings for Python, C# (Mono 2.0) and Java. Performance in Pi 3 is quite good, but I haven't tested it on other models.
I've created Tilengine for two reasons: as an easy and fun way to program retro graphics on modern hardware, and as an educational tool: to show how 2D graphics systems work, how they were programmed, and how creative use of raster effects allowed for impressive graphics on seemingly limited hardware. Raspberry Pi is an educational tool and I think Tilengine suits its philosophy.
Please check the website and youtube channel
Enjoy!