ROLLER

May 7, 2026 ยท View on GitHub

CI LC Download

Roller logo

This project aims to implement all the functionality of the 1995 game Whiplash/Fatal Racing in a way that builds and runs on modern PCs. Where necessary, DOS-specific functions are substituted with SDL and Windows/Unix equivalents. For instruction-matching decomp, see https://github.com/FatalDecomp/ROLLER-matching

On track!

Installation

Assets from a retail copy of the game are required to run. Download the latest version of ROLLER from the releases page and extract wherever you want. On the initial launch you will be prompted to select a CD image (CUE/BIN or ISO) to extract the assets from. Press the ` key to access additional settings and the debug log.

About

Debug symbol dump generated with wdump, part of: https://github.com/open-watcom/open-watcom-v2

Useful tool in generating nice asm output with symbols from wdump applied: https://github.com/fonic/wcdatool

Directions on how to use wcdatool and get remote debugging working with open watcom: https://www.youtube.com/watch?v=bG9tEZOSrQg

Note: wdump symbol offsets do not account for DOS4GW.EXE. Load FATAL.EXE_split_dos4g_payload.exe (FATAL.EXE with DOS4GW.EXE split off, generated by wcdatool) into Ida/Ghidra to have matching symbol offsets.

Hashes of executables used for decomp:

FATAL.EXE

  • md5: 812EEE1404ECDFD87FF765281DF89720
  • SHA256: 7789768C0A6CDC213EAF7B1AD8CC125531EB3FE7C213ECCAC6188E58F428687E

FATAL.EXE_split_dos4g_payload.exe

  • md5: 05C2B0730641663133D76DD2CA552B4C
  • SHA256: A4AD4131DBBFF9884DA4687D8B579B81117E6D23525950D942DF2DF585E2A11E

External Dependencies Used:

Build

Video instructions: https://www.youtube.com/watch?v=QEDGhvvZ9XU

Clone the repository

git clone https://github.com/zizin13/roller.git
cd roller

Install prerequisites

The easiest way to install is to use mise:

mise install

Build and run the project

Using default settings

zig build run

A custom data folder

zig build -Dassets-path=/path/to/fatdata run

Testing

Rendering snapshot tests

git lfs install        # one-time, the baselines are LFS-tracked
zig build test-snapshots

Captures the indexed framebuffer of every intro replay at hand-picked ticks and runs git diff against the checked-in baselines. Any pixel change shows up as a tracked-file diff that GitHub renders as a side-by-side image diff in PRs.

On a non-canonical host (anything other than the pinned reference machine) use -Dscratch to capture into zig-out/snapshot-scratch/ without touching the LFS-tracked baselines.

See tests/snapshots/README.md for the full developer workflow (blessing intentional pixel changes, troubleshooting, etc.) and docs/adr/0001-rendering-snapshot-tests.md for the policy decisions.