/Gadolinium

Experimental Nintendo 64 emulator

Primary LanguageC++

Gadolinium

CodeFactor build

Rewrite of my Nintendo 64 emulator "shibumi".

Mario's face

Pre-built binaries

Release
Windows
Linux

Build instructions:

First clone the repository: git clone --recursive https://github.com/SimoneN64/Gadolinium

Windows

This build uses Visual Studio with Vcpkg and Clang-cl

Dependencies:

  • CMake 3.20 or higher
  • SDL2 (install it by making sure that you're choosing the "vulkan" extension of the package and the x64-windows triplet: vcpkg install sdl2[vulkan]:x64-windows)
  • fmtlib (install it by making sure that you're choosing the x64-windows triplet: vcpkg install fmt:x64-windows)
  • nlohmann-json (install it by making sure that you're choosing the x64-windows triplet: vcpkg install nlohmann-json:x64-windows)
cd path/to/gadolinium
mkdir build
cd build
cmake -T clangcl -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -S ../src
cmake --build . --config Release

Linux

Dependencies:

  • GCC or Clang with C++17 support
  • CMake 3.20 or higher
  • SDL2
  • fmtlib
  • Vulkan API (including the validation layers) + SPIR-V tools
  • nlohmann-json
cd path/to/gadolinium
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -S ../src
cmake --build . --config Release

Running:

./path/to/gadolinium [ROM] [Mupen Movie]

Your GPU needs to support Vulkan 1.1+, because the RDP is implemented via ParaLLEl-RDP.

Roadmap

  • Full R4300i emulation
  • Full RCP emulation
  • Full TLB emulation
  • Full joybus emulation (but it's not configurable by the user at the moment)
  • Qt or wxWidgets for native GUI (keeping ImGui as opt-in).
  • JIT, with support for x86_64 and ARM (using an IR).
  • Debug tools: disassembly, breakpoints, single-step and memory editor
  • TAS tools
    • TAS replay (using Mupen's format)
    • Frame-advance
    • TAS input
    • Recording (using Mupen's format)
    • Save-states
    • Rewind
  • Cheat support
  • Allow to optionally pass a PIF image for the boot process (it's exclusively HLE'd at the moment)

This list will probably grow with time!

Special thanks: