dreamcast · #cruisn-usa 1 min read

Cruis'n USA DC: the arcade, not the N64

Cruis'n USA on the Dreamcast: a silver car approaches the Golden Gate Bridge past road barriers, palm trees and a cypress.

This is not a port of the Nintendo 64 version of Cruis'n USA. The starting point is the original arcade code, the program that ran on Midway's V-Unit hardware, which has been made public. The idea is to bring the arcade game itself to the Dreamcast, with its own graphics, sound and handling, rather than adapt the home conversion.

I naively thought it would be simpler than it is. The arcade's main processor is a Texas Instruments TMS320C31, a DSP that has nothing in common with the Dreamcast's SH-4, so its code can't just run: it first ran through an interpreter, and then through a static recompiler that translates the C31 code into C, checked against the interpreter so both behave the same. The 3D is just as different. The arcade prepares its scenes for its own polygon hardware, so the routines that transform vertices and send polygons have to be rewritten natively for the PowerVR, and the textures converted on the fly. Sound comes from a separate DCS board; for now, the game's sounds are pre-rendered with MAME into a sound bank that the Dreamcast plays back following the same DCS commands the game sends.

Cruis'n USA on the Dreamcast: a red sports car races down a desert highway under a cloudy sky, in 10th place.

Four days in, it boots on the console and runs races with sound, saves the arcade's settings to the VMU (whose screen also shows your position and speed), supports the Jump Pack, and is being tested on real hardware, which has already turned up its own set of hangs and glitches. The big fight ahead is speed: getting a frame rate that feels like the arcade.