Wiki

Clone wiki

agtools / 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