Virtua Racing Deluxe Enhanced

Virtua Racing Deluxe Enhanced is a port of Virtua Racing Deluxe for Sega 32X with higher resolution, frame rate, and extended draw distance.

README

Virtua Racing Deluxe Enhanced

English | 繁體中文

This project is built on the PicoDrive emulator and runs the original Sega 32X version of Virtua Racing Deluxe with enhanced graphics.

Unofficial project. Not affiliated with or endorsed by SEGA. Virtua Racing is a trademark of SEGA. No ROMs or ROM-derived data are included. Non-commercial use only.

Features

Using high-level emulation (HLE), the 3D scene is reconstructed from data sent by the 68000 CPU to the 32X's SH2 processors and rendered on the GPU.

  • Higher resolution: Adjustable rendering resolution with optional MSAA.
  • Higher frame rate: Smoother motion with frame rates beyond the original 20 FPS.
  • Widescreen: Choose between the original 4:3 and an expanded 16:9.
  • Extended draw distance: See farther with less scenery pop-in.
  • In-game menu: Adjust settings at any time.

In game In-game settings menu

Left: enhanced graphics. Right: settings menu.

Video on YouTube

Video on YouTube (click to play).

ROM

This project does not provide any ROM.

Supported version:

ItemValue
VersionVirtua Racing Deluxe (USA)
SHA-118dfdeb50780c2623e60a6587d7ed701a1cf81f1
CRC327896b62e

Starting the game

Download a prebuilt release from the Releases page, and have your own ROM ready. If you prefer to build the executable yourself rather than use the prebuilt binary, see how-to-build.md for instructions.

macOS
  • Requires an Apple Silicon Mac (M1 or later).

  • Install SDL2 using Homebrew: brew install sdl2

  • Open Terminal, navigate to the folder containing vrde, and run:

    ./vrde "Virtua Racing Deluxe (USA).32x"
    
  • The program is unsigned, so macOS may block it. Go to System Settings → Privacy & Security and select "Open Anyway".

Windows
  • Requires 64-bit Windows 10 or later.
  • Keep vrde.exe and SDL2.dll in the same folder, and drag the ROM file onto vrde.exe to start.
  • The executable is unsigned and Windows may block it. Select "More info" → "Run anyway".
Linux

A Makefile is provided. See how-to-build.md for how to build the binary.

Controls

KeyFunction
Arrow keysD-pad
A / S / DPad A / B / C (B is the throttle in a race)
Z / X / CSix-button pad X / Y / Z (change the view in a race)
FStart
1View: enhanced (default) / original / side by side (original | enhanced)
2Resolution: window resolution (default) / 1x / 2x / 4x
3MSAA: on (default) / off
4Vertices: floating-point projection (default) / the original integer projection
5Dither: blended (default) / the original dithering
6Framerate: 20 FPS / 30 FPS / 40 FPS / 60 FPS / display refresh rate (default)
7Aspect: 16:9 (default) / the original 4:3
8Far view: extended with haze (default) / extended / original
9Level of detail: off (default) / on (distant opponents use simpler models, as in the original)
OSave the current emulator state to vrde.mds (single slot; overwrites the previous save)
PLoad the saved state from vrde.mds
EscOpen the pause menu. Use the arrow keys and Enter to change settings, save or load a state, or quit. Press Esc again to resume
Alt+EnterToggle fullscreen (borderless, at the desktop resolution)

Game controllers are supported, including Xbox, PlayStation, Switch Pro, and other SDL-supported controllers.

Face buttons are mapped by physical position to approximate the Mega Drive six-button layout: A, B, and C correspond to the left, bottom, and right buttons, while Z corresponds to the top button.

XboxPlayStationSwitch ProMaps to
D-pad, left sticksamesameD-pad
X (left), left trigger□, L2Y, ZLPad A
A (bottom), right trigger✕, R2B, ZRPad B
B (right)○APad C
LB, RBL1, R1L, RSix-button pad X, Y
Y (top)△XSix-button pad Z
StartOptions+Start
Back (or Guide)Share / Create (or PS)− (or Home)Menu

In the menu, the right button changes the selected setting and the bottom button closes the menu, whichever controller is used.

Folders

PathContents
src/This project's code
tools/Research tools: SH2 disassembler, polygon redrawing from SH2 memory access logs, layer splitting
docs/How to build
third_party/picodrive/PicoDrive. Every change is marked VRDE:

Credits

  • notaz and irixxxx: PicoDrive.
  • matiaszanolli: sega-vr-disasm, a disassembly of the game used as a reference.
  • FAME Motorola 68000 Emulation Library by Oscar Orallo (oscar@m68k.com).
  • CZ80 by Stéphane Dallongeville; the SH2 core from MAME.
  • AI-assisted development.

License

This project's own code and documents are under the terms in LICENSE: non-commercial use only, the same terms as PicoDrive.

Third-party licenses

This project includes code from PicoDrive at commit 8b5e91bc92c02a838188da410ccd82f79424ad6a, located in third_party/picodrive/.

PicoDrive is distributed under a non-commercial license. See third_party/picodrive/COPYING for the full terms. Its components (the FAME 68000 core, CZ80, the SH2 interpreter from MAME and others) keep their own terms.

Any redistribution or modification of these components must comply with their respective license terms.