Tiny Arcade Game Engine (T.A.G.E)
A 2D game engine written for the TinyArcade platform ( https://www.tiny-circuits.com and https://www.kickstarter.com/projects/kenburns/tiny-arcade-a-retro-tiny-playable-game-cabinet )
- It supports rendering of sprites and tile maps.
- It is running in 16 bit mode for the screen, so RGB565 color format
- It supports alpha blending for both sprites and tile maps
- Scanline rendering - The engine doesn't have a full screen buffer in memory at once, but only the buffer for a scan line. This is to save on the 32 KB SRAM
- Mirroring - Each rendered scan line can be blitted to any number of lines on the screen. For example the 10 bottom lines on the screen can display the 10 lines above, but upside down, to achieve a mirroring affect, like games used to do on the Amiga ( See The Killing Game Show on the Amiga for reference, http://s.uvlist.net/l/y2009/05/58753.jpg )
- The concept of game object keep track of individual .. well .. objects in the game, such as the player, enemies, NPC's, bullets, etc. Things that move independantly of each other and of the tiled background
- There is a camera that can pan around on the tile background and on game objects. Game objects always relate to the camera, and not the screen
- Mix multiple channels of sound effects into one
- Currently playback in mono at 11025 Hz
- Simple 16:16 fixed point class with some operators
- Simple 2D vector based on the fixed point class, with some operators
- GenerateSine - Generate a sine table
- png2tilefest - Takes a PNG file and generate a tile bank in C code, that can be included in the built executable
- tmx2c - Takes a TMX file ( http://www.mapeditor.org ) and generate a tile map in C code, that can be included in the built executable. Will also generate a scene file, so game objects placed via Tiled can be spawned.
- png2c - Takes a PNG file and generate a RGB565 image in C code, that can be included in the built executable
TAGE is built using the TinyScreen library and SdFat library. They can be found here:
https://github.com/MagnusRunesson/TinyCircuits-TinyScreen_Lib