Home

Awesome

dgb-n64

Experimental low-level N64 emulator written in C and a bit of C++.

Still under heavy development and not ready for prime time. Compatibility is not high and performance is not great (yet.)

The goals of this project are to create a low-level emulator with good compatibility, while learning a lot along the way.

Build Documentation Status

Mario Face

Download

As the emulator is still in heavy development, there are no stable releases. The files linked below are built automatically every time code is pushed to this repository.

There may be problems. Feel free to open an issue if you find one!

You'll need a fast CPU and a modern GPU that supports Vulkan 1.1.

Links

Goals

Features

Limitations & TODOs

Building

For Linux:

  1. Install dependencies: SDL2, Vulkan, dbus, and optionally Capstone
  2. Run the following commands:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

For Windows:

  1. Install dependencies: Visual Studio 2019 with the clang workload, vcpkg, CMake.
  2. Run the following commands, replacing the vcpkg path with where you installed it:
vcpkg install sdl2[vulkan]:x64-windows
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -T clangcl -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake ..
cmake --build . --config Release

Running

Run with no parameters to use the default settings and load your ROM using the GUI, or run with options:

./n64 [OPTION]... [FILE]
n64, a dgb n64 emulator

  -v, --verbose             enables verbose output, repeat up to 4 times for more verbosity
  -h, --help                Display this help message
  -i, --interpreter         Force the use of the interpreter
  -m, --movie               Load movie (Mupen64Plus .m64 format)
  -p, --pif                 Load PIF ROM

https://github.com/Dillonb/n64

Progress

CPU

An interpreter and a basic dynamic recompiler are available, able to be switched at launch time with a command line flag.

The dynamic recompiler currently only supports x86_64.

RSP

Reasonably complete, enough for most games to run.

Hardware-verified over the EverDrive 64's USB port using rsp-recorder.

Still greatly in need of optimization.

RDP

Very early stage. parallel-rdp by Themaister is integrated to provide RDP functionality in the meantime.

Credits

Libraries Used