← All Atari Lynx projectsStunt Car Racer · Atari Lynx port
Fan project · Windows & Linux

ROM Builder

Atari ST Stunt Car Racer (Micro Style, 1989) to Atari Lynx

Unofficial fan port, work in progress.

Turn your own original Atari ST disk into a Lynx cartridge image. Tracks, graphics, tables and sounds are read from your disk image while the tool builds – the tool itself contains no game data.

Download for Windows
Pre-alpha version 0.2 (history)10.9 MBWindows 10 / 11No installation

Also for Linux: command-line version (0.24 MB, needs nothing but Python 3.8 or newer – no NumPy, runs on a Raspberry Pi) – how to use it.

How it works

1

Start the tool

Run the program – or simply drag your disk image onto it. Python or other software is not needed.

2

Select your disk image

Choose your own Stunt Car Racer disk image, or a .zip that contains one. The build takes about two minutes.

3

Play on the Lynx

The cartridge image is written next to your disk image. Play it in a Lynx emulator such as Felix or Handy, or on a real Lynx with a flash cartridge.

What the port does

All eight tracks

The Little Ramp, The Hump Back, The Stepping Stones, The Big Ramp, The High Jump, The Roller Coaster, The Ski Jump and The Draw Bridge – each with the rotatable preview the original shows before a race.

Practice mode gives you a track to yourself, with lap times and the full cockpit: rev counter, boost, damage, the crack in the windscreen, engine sound and the crane that drops you onto the track.

Races and the league

Race the computer drivers, or play the single player league of the original: 12 drivers in 4 divisions, promotion and relegation, the Super League, and a Hall of Fame with the track records.

The league, the save game, the season replay and the Hall of Fame are kept in the cartridge EEPROM, so a running season survives switching the Lynx off (flash cartridge or an emulator with EEPROM support).

Two players over ComLynx

Two Lynx, one cable, head to head: both machines run the race in step, both see the track preview before the start, and each screen shows the gap to the other car in the instrument panel.

Either machine can start the race; the other one joins by itself.

Rebuilt, not emulated

The port is written from scratch in 65C02 assembly, with a 3D renderer made for the Lynx hardware. The physics and the game logic were rebuilt from the original program and are checked step by step against the 1989 version – the same inputs give the same numbers, down to the bit.

The quirks of the original come with it, including the ones that look like mistakes.

How fast it runs

The original's game clock takes 8.33 steps per second. The Lynx has to draw the whole 3D view itself, and it does not always get there in time – so here are the numbers as they were measured, not as they would read best.

ModeMeasuredWhat it means
Practice – Classic 8.1 – 8.4 steps/s One picture per game step, as in 1989. The Stepping Stones and the Draw Bridge are the slowest.
Practice – Smooth 11.4 – 14.0 frames/s The same game speed, with an extra in-between frame whenever a step leaves the time for one. The game logic keeps its own pace either way.
Race against the computer 7.6 – 8.1 steps/s A second car to work out and to draw. Classic only.
Race over the cable 7.6 – 7.8 steps/s Both machines wait for each other, so the slower picture sets the pace for both.

Measured on the finished cartridge image in the Felix emulator, over whole laps rather than at a good moment. Practice starts in Smooth; Option 1 switches between Smooth and Classic while you drive.

On the Lynx

What you need

Your own original Stunt Car Racer disk for the Atari ST (Micro Style, 1989), as a disk image:

  • .stx (Pasti)keeps the copy protection
  • .st (plain sector image)
  • .msa (Magic Shadow Archiver)

A .zip that contains one of these also works. The builder accepts only the original release: it checks the decrypted program against a known checksum and refuses anything else.

How the disk is read: the program on the original disk is a single file and fully encrypted. The builder runs the original protection code itself, in a small 68000 interpreter written in Python, and derives the key the same way a real ST does: from checksums of the code and from the data of a special sector. With a .stx image the sector read times are checked as well, exactly as the protection does on real hardware. Nothing is patched or bypassed – the original program decrypts itself.

The builder then converts the game data and assembles the cartridge image, and checks the result against the reference build of the port.

Controls

D-padUp is the accelerator and latches, as the joystick does on the Atari; down brakes; left and right steer.
ABoost – the supply is limited and set fresh for each race, as in the original
BBrake
Option 1Switch between Classic and Smooth while you drive
Option 2Engine pitch: normal, or one octave higher for the Lynx speaker
PausePause (PAUSED on the screen). While paused: Option 2 changes the engine pitch, Option 1 leaves the race.

Second layout: with Buttons B GAS in the menu, B (inside) is the accelerator, A (outside) brakes and Up is the boost; Down does nothing, so steering never brakes by accident.

In the menu: up and down choose a line, A starts the race or changes a setting. Mode picks Practice, Race, Link or League, Buttons the layout (A BOOST as on the Atari, or B GAS), and Engine the pitch. Practice starts in Smooth. In Link mode the first machine waits for the other one.

Sound: engine, crashes and sparks as in the original, no music – the 1989 game has none either. On the Lynx II the effects sit slightly to the side of the engine.

Made by a human and an AI

The author

Had the idea and decided what the port should become, step by step: faithful to 1989 down to the quirks, the whole league rather than a demo track, two players on a cable, honest numbers instead of flattering ones. Played every build, said what was wrong, what to try, and what to leave out.

Claude, the AI

Analysed the original program, rebuilt the physics and the game logic, wrote the Lynx renderer, the sound, the league, the link code, the builder, the tests and these texts – all in 65C02 assembly, and made every change the author asked for.

Using AI is no secret here. The AI did most of the work, and fast – but the ideas, the taste and the patience to drive the same lap once more came from a human, and the game itself is Geoff Crammond's design from 1989.

Good to know

Everything happens on your PC. Nothing is sent anywhere, and the tool needs no internet connection.

A build takes about two minutes. At the end the builder says whether its result is identical to the reference build of the port – that is the cartridge image the port was tested with.

This is a pre-alpha: the port plays, but it is not finished, and details may still change.

Windows may show “Windows protected your PC” the first time, because the program is not signed. Click More info and then Run anyway.

SHA-256 of the Windows download: 3c52f768a730e3deb93d879b0c77c40a226249ee2b8562e02f9ba81fcf9b2bbc

Linux command line

Download scr-lynx-builder-0.2.pyz and run it with your disk image, for example:

python3 scr-lynx-builder-0.2.pyz "Stunt Car Racer.stx"

Without arguments it shows its help; --info FILE only says what the file contains. The cartridge image is written next to your disk image, or into the folder you name as a second argument. It needs Python 3.8 or newer and nothing else – no NumPy, no compiler. Tested on 64-bit Debian 13 on a Raspberry Pi (ARM64) with Python 3.8, 3.11 and 3.13, where a build takes about three minutes with Python 3.13 and about seven with 3.8, and gives exactly the same cartridge image as the Windows program.

SHA-256 of the Linux file: 31e7ae20930e41d4fcea546f9939c132d0b40e1bcdaefefc6f93546199aefd01

Version history

Pre-alpha v0.213 November 2026current
  • Smooth runs faster in practice: 11.4–14.0 frames per second instead of 11.0–13.6. The tyre tread is drawn once per frame, hills are moved instead of worked out again when the view only shifts, and the in-between frames reuse the distant scenery as a shifted layer.
  • Second button layout, chosen in the menu (suggested by a player): B accelerates, A brakes, Up is the boost. The default stays as on the Atari joystick.
  • The menu line View is gone: practice starts in Smooth, and Option 1 still switches while you drive.
  • More than 16 colours in the menus and in the pictures between the races: the palette changes line by line, up to 113 colours on one screen, and the pictures are scaled down from the originals by averaging. New start menu with colour gradients.
  • Game logic and the speed of the races unchanged.
Pre-alpha v0.18 November 2026
  • First version of the ROM Builder. It builds the Lynx cartridge image of the port from your own original Atari ST disk image (.stx, .st, .msa, also inside a .zip) and checks the result against the reference build of the port.
  • The port: all eight tracks with their previews, practice with lap times, races against the computer drivers, the single player league with four divisions and the Super League, and head-to-head races between two Lynx over a ComLynx cable.
  • League, save game, season replay and Hall of Fame are stored in the cartridge EEPROM.
  • Two display modes: Classic keeps one picture per game step as in 1989, Smooth adds in-between frames.
  • Written in 65C02 assembly, with a 3D renderer made for the Lynx; physics and game logic checked against the original step by step.
  • Pre-alpha: it plays, but it is not finished, and details may still change.

Feedback

Found a bug in the ROM Builder or in the Lynx game, or have an idea? Let me know.