OS Game Development Techniques

The OS_Game_Techniques tutorial makes the case for writing Amiga games that use the OS rather than taking over the hardware ("hardware banging"). This is critical for forward compatibility — the FutureOS rules explicitly state that hardware-banging games "will most likely no longer work at all on future Amiga models."

Why use the OS for games

  • Future chipset compatibility — planned future chipsets are not register-level compatible with AA. OS-level code survives hardware changes.
  • Easier porting — converting an OS-based 16-color ECS game to 256-color AA is easier than converting a hardware-banging one.
  • RTG compatibility — OS-based games can potentially work with retargettable graphics (RTG) cards.
  • Automatic multi-chipset support — the OS handles pre-ECS, ECS, AA, and future chips transparently.
  • System integration — CD-ROM, networks, serial ports, hard-disk install all work naturally.
  • Less code — the OS handles screen positions, scrolling, mouse movement, etc.
  • More robust — OS floppy-disk code is "far less picky about drive parameters than 99% of custom floppy I/O code."
  • Hides chipset bugs — the AA chip set has bugs that the OS hides from you.
  • ROM is faster than CHIP RAM — OS code runs from ROM; custom code competes for CHIP.
  • Debugging — tools like Enforcer and Mungwall require the OS to be running.

What the OS can't do

These limitations exist as of V40 and may affect specific game genres:

  • Scrolling individual scanlines of a viewport
  • AA color copper-list fades (copper effects per scanline)
  • Custom copper effects for timing-critical visual tricks
  • Direct hardware register access for cycle-accurate effects

If your game absolutely requires these, isolate the hardware-dependent code into small modules and use the OS for everything else (screen setup, input, audio loading, file I/O, menus, preferences).

Practical approach

Use OS calls for: - Screen setup: OpenScreenTags() with SA_DisplayID for mode selection, SA_Colors32 for 24-bit color. - Input: IDCMP messages for keyboard, mouse, joystick (gameport.device). - Graphics: BltBitMap() for hardware-accelerated blits, ClipBlit(), double buffering via AllocScreenBuffer(). - Audio: audio.device for Paula sound, or datatype sound objects for samples. - File I/O: dos.library for loading data, iffparse.library for structured data. - Menus/intro screens: GadTools for UI elements.

See Also


Sources: Commodore-Amiga, Inc., "OS Game Techniques" tutorial (1992-1993). Raw: raw/tutorials/v39-aa-features.md Updated: 2026-08-04