Atari Game Tools
This is a small collection of tools and code aimed at rapid prototyping of Atari ST/E & Falcon games.
Note: The codebase is currently focused on STE while features & APIs are added and settled down, with STF/Falcon support lagging behind.
- 50hz 2D game engine, designed to help develop/test game ideas very quickly
- full engine source + demos + examples + tutorials (all as source)
- fast enough to support a 'full release' of prototyped ideas
- game level parts in C/C++ (or 68k mix if required), low level parts in 68k
- tools for preparing & extracting art assets & palettes
- supports two different 68000 cross-assemblers: RMAC & VASM - choice configured via Makefile
- supports gcc4.6-mint, gcc6.2-brownelf, gcc7.1-brownerelf with MiNTLib or 'minimal' linking options
Project Documentation: (in progress)
- Any type of scrolling - vertical, horizontal, 4- or 8-way, fixedpoint vector, direction & speed changes.
- Work with 16x16 or 8x8 tilemaps, of any size
- Single or dual-layer tilemaps (both layers editiable in TILED, with second, transparent layer masked on top of first)
- Live-editable map layers ('mapmod' function) with optimised refresh of edited tiles for animation, doors or limited parallax
- 4 different sprite formats optimised for different scenarios (drawing speed vs. size vs. memory overhead vs. extraction time)
- All sprite methods provide clipping & automatic background clearing/restore
- Flexible Entity/AI system supports:
- spawn chaining (entities can spawn or kill entities)
- vistrigger mode (spawned into map at level load, dormant/no-overhead until entering viewport)
- plenty of example code for different kinds of behaviour
- object parent linkage & tracking
- Object Interaction system provides mechanism for collisions, triggers
- Input layer provides direct and debounced key & joystick state.
- Comprehensive tools for converting, extracting assets including maps, tiles, sprites (& related), palettes
- Edit maps in TILED editor and export to AGT in seconds
- Collision tilemaps can be created and imported separately from the main visual tilemaps
- Edit object/entity placements in TILED and export with map for direct parsing by game
- Built-in debugging features including:
- message console for errors, warnings & user info
- asserts to catch unexpected values etc.
- game object safety checks & diagnostics (bad animation frames etc.)
- debugdraw object rectangles
- memory tracing
- Hatari and STEEM message logging
- Top/bottom overscan & optional colour boosting via interlaced playfields
- Support for direct draw calls where needed
- auto asset management
- profiling tools
- Gradual buildup from backgrounds through sprites to interactions & game content
- Gradius H-SHMUP: Horizontal scrolling shmup game with entities & interactions
- Gradius HV-SHMUP: As above but with limited vertical parallax scroll added
- Isometric scroller: entities in 3D space, drawing in ISO 2D
- Alien Breed mockup: multiway scroll + solid wall interactions with 40 aliens
- Boss Core: Huge boss sprite with complex behaviour & entity event linkage
- PENDING: Xenon 1 L1 mockup with XML enemy placements & CVS collision layer imported from Tiled
- PENDING: Gradius YM demo (music track selection, tracks prepared using agtym tool)
- 8x8 scrolling 1-layer map with tile animation
- 8x8 scrolling 2-layer map with tile animation on both layers
- 16x16 scrolling 2-layer map with tile animation on both layers
- agtcut: asset processing/extraction tool
- agtrip: background scroll ripping tool
- agtym: YM music conversion tool
- pcs: for superpalette generation
Thanks to some people who contributed directly or otherwise:
ggn/kua for RMAC additions, fixes, support & testing all the things
Anima who provided the original idea for the EM sprite techniques used by AGT's EMSPR/EMXSPR formats.
XiA who provided XPRN font rendering & fonts for the new AGT console.
Sqward, & Saulot whose code the Mini C++ CRT startup is based upon.
Matt Lacey for early feedback on pre-release source & testing a MacOS environment.
Eero Tamminen's Hatari Natfeats module
Markus Franz Xaver Johannes Oberhumer's NRV2E/pack2e decompression code