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
Share this summary
Is the summary off?
If you think the summary is inaccurate, you can reprocess it with the latest model.