Summary of "Building Games for Old Retro 1985 Hardware - Zippy Race Amiga Port"
Summary of “Building Games for Old Retro 1985 Hardware - Zippy Race Amiga Port”
Storyline / Game Background
The game chosen for the Amiga Omega 500 port is Zippy Race, an arcade motorcycle racing game from 1983 by IRM. Players control a motorcycle traveling from Los Angeles to New York City through five stages.
Gameplay involves:
- Overtaking cars to increase rank
- Avoiding oncoming traffic in a third-person view
- Managing fuel levels
- Earning bonus points for reaching cities without running out of fuel
The original game was ported to various 8-bit systems and later to the Sony PlayStation.
Development Goals & Challenges
The target platform is the stock Commodore Amiga 500 (Omega 500) with the original chipset (OCS), featuring:
- 7 MHz Motorola 68000 CPU
- 512 KB chip memory
- Possible 512 KB RAM expansion
The aim was to build a game that fully utilizes the Amiga’s custom hardware (Blitter, Copper, hardware sprites) without relying on accelerators or high-end expansions.
Key development decisions included:
- Avoiding high-level game engines or BASIC variants like Amos or Blitz Basic
- Writing the game mostly in C for better control and performance
- Using modern tools such as Bartman Abyss integrated with Visual Studio for debugging and profiling Amiga C/C++ programs
- Developing primarily on PC using emulators before testing on real hardware
Gameplay & Technical Highlights
Game Features
- Scrolling backgrounds
- Multiple moving cars (up to 5 on screen)
- 3D intro sequence
- HUD/status display showing score, rank, distance, and fuel gauge
Sprite Handling
- Used Amiga hardware sprites for the motorcycle to achieve zero CPU overhead
- Amiga sprites are limited to 4 colors and a maximum width of 16 pixels but can be combined to increase width and colors
- The motorcycle sprite fits in a 16x32 pixel sprite with animations for turning and crashing
Background Rendering and Scrolling
- Vertical smooth scrolling achieved using a classic Amiga hardware trick with two stacked bitmaps (double buffering)
- The screen scrolls one pixel per frame using hardware scroll registers and swapping bitplane pointers every 16 lines
- Requires managing a 320x576 pixel bitmap and distributing 40 blits over 16 frames to maintain performance
- An advanced method using the Copper co-processor could reduce blits by half but was not yet implemented
Tile Map Creation
- Tiles for the first level were manually extracted from MAME screenshots rather than using tiny 8x8 blocks
- Used the Amiga tool PowerCrawler to visually assemble and export tile maps, making the process more intuitive
HUD Implementation
- The HUD remains static and does not scroll with the background
- Achieved by rendering the HUD using hardware sprites (4 sprites wide, 64 pixels), which do not move with bitplane pointer adjustments
- Created a separate font tile sheet for the HUD and implemented string rendering functions
- HUD sprites currently render in one color but can be extended to four colors
Development Process & Tools
- Sprite extraction and color reduction done using Personal Paint on the Amiga
- Code development inspired by the YouTube series Omega Programming in C
- Used MAME emulator and MAMEim tool for sprite and tile extraction
- Debugging and profiling via Bartman Abyss Visual Studio integration
- Emphasized learning and overcoming the limitations of Amiga hardware to optimize performance
Future Work & Wrap-up
- Intro sequence, attract mode, and 3D sequences are partially implemented
- More features and refinements planned for a follow-up video in early 2026
- The developer expresses enthusiasm for retro hardware programming and invites feedback for more development videos
Key Tips & Strategies
- Utilize the Amiga’s Blitter for fast rectangular memory transfers but balance with CPU load
- Use hardware sprites for zero-overhead moving objects and HUD elements
- Implement smooth vertical scrolling by stacking two bitmaps and swapping bitplane pointers every 16 pixels
- Distribute blitting workload evenly across frames to maintain 50-60 fps
- Use native Amiga tools like PowerCrawler for tile map editing to streamline development
- Keep HUD separate from scrolling background using sprites to avoid performance issues
Featured Gamer / Developer / Sources
- Developer of this Amiga port (unnamed in subtitles)
- Developer Reassembler (known for Outrun port)
- Giza Games (arcade ports)
- Rob Smith (Amos BASIC games)
- Bartman Abyss (Visual Studio integration tool)
- YouTube series: Omega Programming in C
- Tools: MAME, MAMEim, Personal Paint, PowerCrawler
This summary captures the storyline of the game being ported, the technical challenges faced, development strategies used, and the tools and inspirations behind the project.
Category
Gaming