Skip to content

no42-org/multistuntcar

 
 

Repository files navigation

Multi Stunt Car

This is a fork of StuntCarRemake with two player and reworked physics for uncapped frame rate.

Play: https://retro-foundry.github.io/multistuntcar/

Current Project Layout

  • src/ - game and platform source code
  • data/ - runtime assets (tracks, sounds, bitmaps, font)
  • build/ - out-of-source native build directory
  • build-web/ - out-of-source Emscripten build directory (recommended)

Build System

Desktop/native rendering and audio use SDL2 + OpenGL + SDL_ttf. Web builds use Emscripten SDL ports.

Native Build (Windows/Linux/macOS)

cmake -S . -B build
cmake --build build

Windows Release:

cmake -S . -B build
cmake --build build --config Release

Web Build (Emscripten)

emcmake cmake -S . -B build-web
cmake --build build-web

Web multiplayer

The web build supports 2-player over WebRTC: one tab hosts (runs the game and streams the canvas), the other joins as guest (watches the stream and sends controls as player 2). A signaling server is required.

To deploy your own signaling server on Cloudflare Workers (Durable Objects), see webrtc/muttistuntcarsignal/README.md for setup, wrangler commands, and how to point the game at your worker URL.

TNT (YNY) Track Extraction Summary

The hidden TNT 8-track pack is extracted from the reference/SCR-TNT binary with tools/extract_tnt_tracks.py.

  • The script validates the source fingerprint (sha1=f6fd44dc425e367b3ce3c6af18cf07f2d7a50d7b) unless --force is used.
  • It finds the embedded piece.data.offsets table by signature, then decodes track data using the original Amiga set.road.data1 flow from the disassembly.
  • Hidden raw track blocks are decoded from these starts (hex): 0x03BE, 0x04BE, 0x0563, 0x067C, 0x074F, 0x0807, 0x0926, 0x09F3.
  • Compressed section data is expanded into the port’s standard 804-byte track format:
    • section count + start section
    • 100 x/z entries
    • 100 angle/template entries
    • 100 left y-id entries
    • 100 right y-id entries
    • 100 left overall y-shifts (word values)
    • 100 right overall y-shifts (word values)
    • standard/super boost bytes
  • Output files are written to data/Tracks/TNT/ in fixed order:
    • DizzyDescent, WittyWay, CrazyCaper, AmazingAdept
    • JerkilyJump, EvillyEpisode, TeasingTemper, RatRace
  • A manifest is written to data/Tracks/TNT/manifest.json with source hash, block offsets, and per-track SHA1/SHA256.

Original Track Pack

The Original pack currently contains Skyline Spiral, generated by tools/generate_original_tracks.py.

  • Output is written to data/Tracks/Original/SkylineSpiral.bin.
  • The route is a 46-piece loop with orange/white side panels, an outside launch ramp, right-side stutters, elevated inner switchbacks, and a staged descent back to the start.
  • Regenerate it with:
python tools/generate_original_tracks.py

Notes

About

A port of Stunt Car Remake with split screen multiplayer, widescreen and uncapped FPS support.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 45.7%
  • Assembly 28.8%
  • C 17.9%
  • HTML 5.3%
  • Python 1.2%
  • JavaScript 0.7%
  • CMake 0.4%