Kamo64 is an experimental Nintendo 64 emulator with low-level emulation (LLE) and dynamic recompilation (JIT).
- Low-level emulation (LLE) of N64 hardware
- Full CPU JIT support (x86-64 only)
- RSP emulation with SIMD extensions
- Graphic rendering with GPU acceleration (Parallel-RDP)
- Internal resolution upscaling
- Frame interpolation
- Full audio support
- Full controller support
- Save data support
- Little-endian host (x86-64 / similar)
- C++20 compiler
- CMake 3.16 or later
- SDL2
- Vulkan
We support Windows, macOS, and Linux.
sudo apt install cmake g++ libsdl2-dev libvulkan-dev glslc zenity
git clone --recursive git@github.com:kmc-jp/kamo64.git
cd kamo64
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --parallelzenity (or kdialog) is used for the GUI Open ROM dialog. Without it, open a ROM via the command line or Recents.
- Install a Vulkan-capable GPU driver and the Vulkan SDK (
glslcis required to compilesrc/app/shaders). - Download SDL2 from https://github.com/libsdl-org/SDL/releases and extract it.
- Set the
SDL2_DIRenvironment variable to the location where you extracted the SDL2 development package. - Run the following commands:
git clone --recursive git@github.com:kmc-jp/kamo64.git
cd kamo64
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release --parallel- Install Homebrew if needed, then:
brew install cmake sdl2 molten-vk shaderc- Clone and build:
git clone --recursive git@github.com:kmc-jp/kamo64.git
cd kamo64
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --parallelIf you already cloned without --recursive:
git submodule update --init --recursiveNotes:
- Vulkan is provided via MoltenVK (Metal backend).
- CPU dynarec (
--jit) is x86-64 only. On Apple Silicon, use--no-jit(cached interpreter).
./kamo64[.exe]See ./kamo64 --help for available options.
You can run the test suite with CTest:
# In build directory
ctest -C DebugWe do not currently accept pull requests that add new features. Bug reports/fixes and new tests are very welcome ๐. See CONTRIBUTING.md.
This project was heavily inspired by the following projects โค๏ธ.
- Project64: N64 Emulator
- Simple64: Accurate N64 Emulator
- n64: experimental low-level n64 emulator
- Kaizen: Experimental Nintendo 64 emulator
- n64-tests by Dillon: CPU test ROMs
- parallel-RDP by Themaister: Vulkan RDP implementation
See LICENSE.
"Nintendo 64" is a registered trademark of Nintendo Co., Ltd.
