Wiki
Clone wikiagtools / Home
Atari Game Tools
This is a small collection of tools and code aimed at rapid prototyping of Atari ST/E games.
Project Features
- 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 outperform many old commercial releases
- game level components can be in C/C++, low level components are 68k
- tools for preparing & extracting art assets & palettes
- works with various distributions of Atari GCC compiler tools
- minimal external dependencies/prerequisites for setup - just a working shell & compiler!
Project Documentation: (in progress)
Engine Features:
- 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
- multiple 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
- Transparent support for compressed assets using 7 different packing modes, all CRC-wrapped
- 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
-
- built in profiler
-
- memory tracing
-
- Hatari and STEEM message logging
- Top/bottom overscan & optional colour boosting via interlaced playfields
- Dynamic screen splitting & palette changes via a copper-like 'Nickel' interface
- Support for direct draw calls where needed
[in progress] - auto asset management
[pending] - text/fonts
Tutorials:
- Gradual buildup from backgrounds through sprites to interactions & game content
Demos:
- Gradius H-SHMUP: Horizontal scrolling shmup game with entities & interactions
- 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)
Examples:
- 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
Tools:
- agtcut: asset processing/extraction tool
- agtrip: background scroll ripping tool
- agtym: YM music conversion tool
- pcs: for superpalette generation
Credits:
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.
-
Antonio for testing, input/ideas & suggestions
-
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 for debugging support
Compression support:
-
Markus Franz Xaver Johannes Oberhumer's NRV2e decompression code & pack2e compressor
-
tAt/Avena for LZSA decompression routines
-
Mr Ni! for ARJ decompression routines
-
ray/tscc for LZ77 tools & code
-
Emmanuel Marty for LZSA compressor
Updated