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