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 & Falcon games.

Note: The codebase is currently focused on STE while features & APIs are added and settled down, with STF/Falcon support lagging behind.

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 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)

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
  • 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

[in progress]
- auto asset management

[pending]
- text/fonts
- profiling tools

Tutorials:

  • Gradual buildup from backgrounds through sprites to interactions & game content

Demos:

  • 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)

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.

  • 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

Updated