Skip to content

Latest commit

ย 

History

378 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Kamo64

Kamo64 is an experimental Nintendo 64 emulator with low-level emulation (LLE) and dynamic recompilation (JIT).

screenshot

Features

  • 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

Build

Prerequisites

  • Little-endian host (x86-64 / similar)
  • C++20 compiler
  • CMake 3.16 or later
  • SDL2
  • Vulkan

We support Windows, macOS, and Linux.

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 . --parallel

zenity (or kdialog) is used for the GUI Open ROM dialog. Without it, open a ROM via the command line or Recents.

Windows

  1. Install a Vulkan-capable GPU driver and the Vulkan SDK (glslc is required to compile src/app/shaders).
  2. Download SDL2 from https://github.com/libsdl-org/SDL/releases and extract it.
  3. Set the SDL2_DIR environment variable to the location where you extracted the SDL2 development package.
  4. 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

macOS

  1. Install Homebrew if needed, then:
brew install cmake sdl2 molten-vk shaderc
  1. 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 . --parallel

If you already cloned without --recursive:

git submodule update --init --recursive

Notes:

  • Vulkan is provided via MoltenVK (Metal backend).
  • CPU dynarec (--jit) is x86-64 only. On Apple Silicon, use --no-jit (cached interpreter).

Run

./kamo64[.exe]

See ./kamo64 --help for available options.

Test

You can run the test suite with CTest:

# In build directory
ctest -C Debug

Contributing

We do not currently accept pull requests that add new features. Bug reports/fixes and new tests are very welcome ๐Ÿ˜€. See CONTRIBUTING.md.

Related Projects

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

Acknowledgements

License

See LICENSE.

"Nintendo 64" is a registered trademark of Nintendo Co., Ltd.

About

Low-level Nintendo64 emulator ๐ŸŒ

Resources

Contributing

Stars

30 stars

Watchers

16 watching

Forks

Releases

Packages

Contributors

Languages