The best way to play Doom 64 on your N64 console. Based on Doom 64-RE. Play it as a new experience on the original N64 game, or use it a base for enhanced mods.
- Jumping/Crouching
- Freelook
- Rumble pak support
- Autoaim option
- Fly mode cheat
- Widescreen support
- Additional linedef types from Doom64EX-Plus
- More controller options
- Turok-style and Perfect Dark-style controls
- Dual analog support with two controllers
- N64 mouse support
- High resolution video modes (expansion pak required)
- Persistent saves to SRAM (no more controller pak requirement)
- Quick saves (for saving/loading during a level)
- Per-monster colored blood particles
- Enhanced HUD with text colors, weapon cycle and damage direction indicators
- Keys and key doors display on the automap
- Lots of bugfixes and optimizations
- Expanded difficulty settings
- "Hardcore!" from Complete Edition
- "Nightmare!" from PC Doom
- "Ultra-Nightmare!" inspired by Doom 2016
- "Be Merciless!" from Merciless Edition
- Custom difficulty menu for further options
- Many additional enhancements from Merciless, eXpanded and Complete editions
- Autorun option
- Map stats option
- Options to toggle bilinear filtering, dithering, interlacing, anti-aliasing
- Additional cheats: keys, noclip, lock monsters, colors, fullbright, gamma correct, music test
See also TODO.md for a list of planned future features.
A Debian-based Linux distribution is required to build. WSL on Windows will also work.
First, CrashOveride's Modern N64 SDK must be installed. Then, install these packages with apt-get:
sudo apt-get install binutils-mips-n64 gcc-mips-n64 newlib-mips-n64 n64sdk-common n64sdk makemask
The data files from the original game must be placed in the data
folder in
order to build. The required files are: DOOM64.WAD, DOOM64.WMD, DOOM64.WSD,
DOOM64.WDD. Currently these can be extracted from the original game ROM using
the d64make utility. See the d64make README for instructions on how to
install it.
d64make build /path/to/doom64.z64 -o data/DOOM64.WAD
Using the data from the 2020 Remaster is also supported, and is recommended due to its higher quality sound effects. The data must be converted by d64make to the N64 format in order to use it:
d64make build /path/to/Doom64/DOOM64.WAD -o data/DOOM64.WAD
Once the SDK packages are installed and the data is in place, the rom can be built by invoking "make":
make -j
Additional options can be provided to configure or debug the ROM:
make -j REGION=JP # Build against Japan ROM data
make -j REGION=EU # Build against Europe ROM data
make -j DEBUG=1 # Turn off optimizations and enable extra debugging features
make -j DEBUGOPT=1 # Enable extra debugging features but leave optimizations on
make -j SOUND=0 # Disable sound
make -j INTRO=0 # Skip the intro screens on boot and go straight to the menu
make -j WARP=XX # Warp to map number XX on boot
make -j WARP=XX SKILL=3 # Warp to map number XX on boot, with the specified difficulty (1-5)
make -j CHEATS=CF_GODMODE+CF_NOCLIP # Spawn with cheats enabled (see doomdef.h for more CF_ flags)
make -j USB=1 # Enable Flashcart USB Screenshot/Demo transfers
# Supports EverDrive, 64Drive, SC64
# When used with DEBUG=1, enables debug logging over USB
make -j GDB=1 # Enable GDB debugging over USB (implies DEBUG=1 and USB=1)
make -j DEBUG_DISPLAY=2 # Show debug frame counter by default (see ST_DrawDebug for more values)
make -j DEBUG_MEM=1 # Enable extra heap/stack overflow checking (slow)
make -j FORCE_NO_EXPANSION_PAK=1 # Limit RAM usage to 4MB (for testing)
make -j REQUIRE_EXPANSION_PAK=0 # Disable expansion pak requirement screen
make -j BENCHMARK_MAP_LOAD=1 # Measure all map loading times on boot
The Bear utility can be used to generate clang code completion. As of this writing, clang does not support some of the MIPS compiler flags we use. This can be worked around by removing them:
make clean && bear -- make -j DEBUG=1 && sed -iE 's/.*\(=vr4300"\|-mgp32\|-mabi=\).*//' compile_commands.json
Join the Doom 64 Discord: https://discord.gg/Ktxz8nz